• Post Reply Bookmark Topic Watch Topic
  • New Topic

a Very tough question: what's Java's future  RSS feed

 
Will Lee
Ranch Hand
Posts: 58
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I can't help wondering, can I still code in Java in 10 (or 5) years?
 
Paul Clapham
Sheriff
Posts: 22819
43
Eclipse IDE Firefox Browser MySQL Database
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Yes.
 
Pat Farrell
Rancher
Posts: 4686
7
Linux Mac OS X VI Editor
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
no. At least not me. All languages have a life cycle. They start, get popular, and then lose popularity. Some stay in use a very long time after their popularity peak, others are lost and forgotten.

Snobol and Smalltalk come to mind as cool languages that faded hard. Fortran and Cobol are still in use after 50 years.

But I think Java's age is showing, and its not well suited for use on AMD's new 16 core CPU.
 
Henry Wong
author
Sheriff
Posts: 23295
125
C++ Chrome Eclipse IDE Firefox Browser Java jQuery Linux VI Editor Windows
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
But I think Java's age is showing, and its not well suited for use on AMD's new 16 core CPU.


What makes this processor bad for Java?

Henry
 
Pat Farrell
Rancher
Posts: 4686
7
Linux Mac OS X VI Editor
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Henry Wong wrote:What makes this processor bad for Java?

Its not this particular processor that is bad for Java. Its Java is bad for that processor. Or, rather its that while Java has Threads, (see Henry's excellent book), its too hard.

When we had single processors, it was OK to use threads manually to allow for responsive GUI, etc.

But its just too hard (IMHO, YMMV) to manually decompose your application, fix the race conditions, etc. When commodity computers have lots of cores, mainstream developers are going to need the language/compiler/runtime system to do it for them. Its already clear with the common quad processors, going to 16 is just going to make it worse.

I don't know what the future answer will be, as writing correct parallel programs is really, really hard. But I don't see Java as the tool to do that. Perhaps Scala, perhaps something completely new.
 
Henry Wong
author
Sheriff
Posts: 23295
125
C++ Chrome Eclipse IDE Firefox Browser Java jQuery Linux VI Editor Windows
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

But its just too hard (IMHO, YMMV) to manually decompose your application, fix the race conditions, etc. When commodity computers have lots of cores, mainstream developers are going to need the language/compiler/runtime system to do it for them. Its already clear with the common quad processors, going to 16 is just going to make it worse.


I will try to answer this in two ways...

First, I'll agree that threading is a skill -- and some developers just can't seem to get the hang of it. This is why application servers are popular -- it is the application server that deals with the threads. These developers deal with their component -- and the application server scales it for all the users that access the component, and for the different components that access each other.

Basically, let the application server deal with threads....

Second, for developers that can deal with threads, Java has proven itself in this regard. I have worked on a Java application that ran on a machine with 384 processor cores -- and we kept 300 of those cores busy processing data. We probably would have kept more busy, if we had bigger thread pools...

In this case, it was the profiler that made it easier. We had the tools that helped with finding race conditions, and locate deadlocks, etc. This profiler also did a bunch of other cool stuff....

I don't know what the future answer will be, as writing correct parallel programs is really, really hard. But I don't see Java as the tool to do that. Perhaps Scala, perhaps something completely new.


I think the future is a combination of the two points that I mentioned. Application servers or framework that deal with threads. And tools that make it easy to develop and debug parallel applications. Changing the language may be possible too -- but that strikes me too much like throwing the baby out with the bath water.

Henry

PS... Thanks for the plug ...
 
Rob Spoor
Sheriff
Posts: 21133
87
Chrome Eclipse IDE Java Windows
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Pat Farrell wrote:
Henry Wong wrote:What makes this processor bad for Java?

Its not this particular processor that is bad for Java. Its Java is bad for that processor. Or, rather its that while Java has Threads, (see Henry's excellent book), its too hard.

When we had single processors, it was OK to use threads manually to allow for responsive GUI, etc.

But its just too hard (IMHO, YMMV) to manually decompose your application, fix the race conditions, etc. When commodity computers have lots of cores, mainstream developers are going to need the language/compiler/runtime system to do it for them. Its already clear with the common quad processors, going to 16 is just going to make it worse.

I don't know what the future answer will be, as writing correct parallel programs is really, really hard. But I don't see Java as the tool to do that. Perhaps Scala, perhaps something completely new.

If you see Java die out because of this, then say goodbye to C, C++, C#, etc. You can write correct parallel programs in almost any language, but for most existing languages you still have to do the hard work yourself. There may come libraries to make life easier for you but in the end it's still mostly up to the programmer.

By the way, you say that writing parallel programs is hard in Java, but with java.util.concurrent, java.util.concurrent.atomic, the executor framework and inclusion of SwingWorker it's never been easier writing parallel programs in Java.
 
Pat Farrell
Rancher
Posts: 4686
7
Linux Mac OS X VI Editor
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Rob Prime wrote:By the way, you say that writing parallel programs is hard in Java, but with java.util.concurrent, java.util.concurrent.atomic, the executor framework and inclusion of SwingWorker it's never been easier writing parallel programs in Java.

I don't have any argument, its easier than ever. But its still too hard. Its hard in any language, and much harder in procedural languages (C, C++, ObjectiveC, Java, Cobol, etc.).

We have today $500 desktops with quad processors, that AMD has announced 16 processors should surprise no one. with 32 and 64 processors clearly within a few years.

IMHO, Java isn't going to cut it. YMMV.
 
Bear Bibeault
Author and ninkuma
Marshal
Posts: 66304
152
IntelliJ IDE Java jQuery Mac Mac OS X
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
What do you see as the compelling alternative?
 
Praful Thakare
Ranch Hand
Posts: 643
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
As Rob correctly mention, Application servers and frameworks (or technologies) like ejb is better choice over writing multi threaded java program.
y not use 100 stateless session bean pool than writing one class with 100 threads?

Also what does IMHO and YMMV stands for ?
 
Pat Farrell
Rancher
Posts: 4686
7
Linux Mac OS X VI Editor
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Bear Bibeault wrote:What do you see as the compelling alternative?

Not sure who this is addressed to. But me, I don't see any compelling alternatives yet. But necessity is the mother of invention.

If you had asked five years ago, I'd say something more pure OO than Java (no int/float, etc.) but I think the OO fad has run its course. 30 years is a good run, and Smalltalk 80 was the first I worked on.
 
Pat Farrell
Rancher
Posts: 4686
7
Linux Mac OS X VI Editor
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Praful Thakare wrote:Also what does IMHO and YMMV stands for ?

Google or urban dictionary, or hacker's dictionary will define it for you. Better than us just telling you.
 
Pat Farrell
Rancher
Posts: 4686
7
Linux Mac OS X VI Editor
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Praful Thakare wrote:Application servers and frameworks (or technologies) like ejb is better

All of those things have nothing to do with Java. That Java needs them indicates that the language is not a good basis set for the problems.

I'm willing to bet that no one will be writing EJBs in ten year. Period. Other than folks supporting legacy implementations. I don't think EJB ever really worked.
 
Paul Clapham
Sheriff
Posts: 22819
43
Eclipse IDE Firefox Browser MySQL Database
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Pat Farrell wrote:Other than folks supporting legacy implementations.


And this is why I answered "yes". Millions of lines of Java code have been written and even if people stopped writing Java tomorrow -- which they won't -- there would still be the need to support that code for years to come.
 
Pat Farrell
Rancher
Posts: 4686
7
Linux Mac OS X VI Editor
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Paul Clapham wrote:And this is why I answered "yes". Millions of lines of Java code have been written and even if people stopped writing Java tomorrow -- which they won't -- there would still be the need to support that code for years to come.

By that definition, I wonder if any computer languages have actually died?

I assume that the binary machine codes of the Eniac died when the last Eniac was unplugged. But I know that there is a fair amount of PDP-10 Macro assembly language still being executed and even occasionally patched, and the last PDP-10 hardware was made in 1984. Some of the design concepts of the PDP-11 RSX operating system were included in VMS for the VAX, and NT was built by the same people, with some of the same techiniques as VMS, so it had PDP-11 RSX concepts in it. We are, of course, using a direct descendant of NT today in XP and Vista.

I've seen this question on every forum/bbs/mailing list that I'm on that touches Java. I find the whole topic silly. I expect its popular because lots of folks consider themselves as "Java developers" and worry that if Java dies, they will lose their jobs. First, as @paul says, there are millions of lines of code that will need support. Second, you should consider yourself a "professional developer" rather than a "java developer". You may just happen to use Java today, but if you are smart enough to be any good, you are smart enough to learn python, perl, pf php.

Languages change, grow, and die. Get used to it.
 
Anila Mathew
Ranch Hand
Posts: 69
Java
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Its true.

But I also think that its natural to be uncomfortable considering you have worked on this language for so long, and you kind of feel its the best so far.

For me, Java was just not a programming language- It was a platform where so many other technologies / frameworks were formed upon.

I know, it might be silly to say that I would not work on any other programming language in future, but I hope whatever comes new , will have the flexibilty and ease of learning like Java.





 
Pat Farrell
Rancher
Posts: 4686
7
Linux Mac OS X VI Editor
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Anila Mathew wrote:any other programming language in future... will have the flexibilty and ease of learning like Java.

All languages are flexible. Its been proven that you can write any system in any language. Just some languages are easier than others.

Folks in this thread have talked about a lot of things, as solutions, that are nothing close to easy to learn. EJB, Servlet servers, and frameworks are much harder to learn than the Java language itself. Java is nearly trivial, even with all the cruft that has been added over the past decade. But you can't convince me that all the EJB, DAO, and other stuff that take Java from a simple set top box implementation language to a language for enterprise implementation system, are easy to learn.
 
Christophe Verré
Sheriff
Posts: 14691
16
Eclipse IDE Ubuntu VI Editor
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Google or urban dictionary, or hacker's dictionary will define it for you. Better than us just telling you.

Please use real words. I don't understand most of these abbreviations either.
 
Pat Farrell
Rancher
Posts: 4686
7
Linux Mac OS X VI Editor
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Christophe Verré wrote: I don't understand most of these abbreviations either.

You are a bartender and you don't know what Your Mileage May Vary means? Give me a break.
 
Christophe Verré
Sheriff
Posts: 14691
16
Eclipse IDE Ubuntu VI Editor
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
My bad. The closest I know is YMCA.
 
Pat Farrell
Rancher
Posts: 4686
7
Linux Mac OS X VI Editor
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Christophe Verré wrote:My bad.
Accepted.

It means "I think this, but I could be wrong"
Its an opinion.

IMHO, in my humble opinion, means "this is my opinion, but I'm not humble
 
Bear Bibeault
Author and ninkuma
Marshal
Posts: 66304
152
IntelliJ IDE Java jQuery Mac Mac OS X
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Removed the last three exchanges. Christophe, what's with the apology? You were right.
 
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!