Monday, January 4, 2010

Where is Java Headed?

Welcome to 2010!

As a way to start the new year, Joel Confino, one of our architects and future blog contributor, sat down for an interview to discuss his opinions on Java's future course. As you will hear in this interview, there are more options as Java is maturing.



We will be exploring some of these alternatives through 2010 on our blog, on our podcasts (Chariot Techcasts), and at our events, especially ETE 2010 (www.phillyemergingtech.com).

4 comments:

  1. Java is more unstable? What? You should have seen it in it's 1.1 version! Having 7 versions of Java is not a bad thing. Java continues to improve, innovate, and get faster and more stable.

    So you have 5 competitor languages, so they'll each take, what, 5% of the market share, tops? That would still leave Java dominant.

    Yes, backward compatibility means Java is under a lot of weight. Yes, scripting solves a lot of problems, and Scala solves other problems, and polyglot is the way it's going as well (you are forgetting about Javascript and Actionscript and Python, etc.).

    C++ has been around for 30 years now, C for 40. They still have a far more sizeable chunk of the market than any of the newbies. Java has got a very, very long way to go before it's overtaken. Probably 30+ years - long after I'm retired.

    ReplyDelete
  2. You're right that 'unstable' isn't the right word to describe Java: unwieldy is better. I've been using Java since the 1.0 days, and the JVM has gotten faster and more stable. It is rock solid in fact, and a good runtime platform. I agree less about recent attempts to improve and innovate the Java language -- I think Java is largely playing catch-up to other languages with features like closures and generics.

    As you mentioned, continually bolting on language features while maintaining backward compatibility can only make the language implode under its own weight at some point. And look at the library bloat with things like CORBA still in there.

    I really do think Scala and Groovy are 2 serious contenders to the Java throne. They are both, in their own way, much better languages and improve on Java while being essentially Java-like and therefore easy for Java developers to migrate to. I fully expect to be writing a little bit of Scala in addition to a lot of Java in 2010. In 5 years, I expect to be writing a little bit of Java and a lot of Scala. But that's a guess.

    Javascript and Actionscript are nice, but they don't run on the JVM and I view them as client-side. Python/Jython or Ruby/JRuby are other potential contenders but the learning curve is a little more and both Jython and JRuby are always a little behind their C counterparts.

    Accurate market share data is probably impossible to get, but the data that I've seen says that Java is the most popular language (not necessarily the most lines of code which is not easy to measure).

    http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

    I think Java's popularity has peaked and the supporting data that I can find from the last couple of years supports that.

    http://radar.oreilly.com/languages_all_5yrs.png

    http://www.softwarereality.com/programming/language_lifecycles.jsp

    Anyway, good discussion! I hope I can get a Java gig in 30 years because eventually my brain is going to fill up and I won't be able to keep learning new languages.

    ReplyDelete
  3. I see Java as the "C/C++" of the JVM. It is the foundational language of the environment. Writing applications in C/C++ is usually a bad idea because the developer time is more important than CPU cycles. One aspect of Ruby and Python is that they function well as 'glue' languages for C/C++. Ruby & Python greatly improve developer productivity by reducing the lines of code needed.

    The new JVM languages, like Groovy & Scala, can fill the same role. Groovy was designed specifically for this role and it is a great 'scripting' language for the JVM. At least for me, Scala is a real wildcard. It melds OO & functional programming. In the process, it is introducing a lot of advanced features. In some sense, Groovy strips away cruft from Java while Scala simultaneously extends Java and strips away cruft. Groovy improves the productivity of Java programmers while Scala reinvents programming on the JVM.

    ReplyDelete
  4. A language like Java *can* continue to evolve substantially while maintaining backward compatibility and without "falling apart". But I understand how someone not involved in language design and implementation could believe otherwise.

    ReplyDelete