Year in Review:Java in 2008 - What just happened(2008-12-21 19:54:58)
When high-tech history is inscribed for the ages, 2008 may be remembered as the year Java tipped from a language-centric to a platform-centric technology. Andrew Glover kicks off JavaWorld's Year in Review series with a look back over the last 12 months in Java development, when alternate languages for the JVM took center stage, new directions emerged in the enterprise space, and Sun Microsystems staked its claim on the client side -- with or without Swing.
As any student of history will tell you, understanding the past yields a better grasp of what's to come. Many significant events punctuated the year 2008 in Javadom, from the release of Java EE 6 to the JVM Languages Summit to Sun's recent announcement that it will no longer actively contribute to Swing. Most of these events are interrelated. In hindsight they stand out as bellwethers in a year where Java's evolution was defined by alternate languages and rich Internet applications.
Alternate languages for the JVM
Alternate languages running on the JVM aren't new (in fact the JVM today supports an estimated 240 languages), but they continue to grow in popularity. In 2008 they appeared to be energizing Java-based developers in especially interesting ways.
By far, one of the most exciting developments of 2008 was the snowballing growth and adoption of JRuby and Groovy, fueled by collective excitement about Ruby on Rails and Grails. These two Web frameworks have steadily freed software developers from the fetters of old, having embraced the speedier application building enabled by convention over configuration, and a lot of behind-the-scenes magic. It doesn't hurt that both frameworks and their respective languages run on the JVM and can leverage the wealth of libraries available within the Java platform.
The year also saw the emergence of two relatively new languages -- Scala and Clojure -- as well as the reemergence of the more yesteryear language Jython. Toward the end of the year Sun launched JavaFX 1.0, which includes the first Java-based language intended for rich UI development: JavaFX Script.
JVM Language Summit
One of the more intriguing events of 2008 was the inaugural JVM Language Summit, which brought together some of the brightest minds focused on language design, compilers, and JVM tools. JRuby, Groovy, Scala, and Clojure were all amply represented, and so were Fortress, PHP, Python, Jython, and Jatha (a Lisp variant). Also on the agenda were the Parrot VM, along with HotSpot, the DaVinci Machine, JavaFX, and Kawa. The subject of closures in Java also came up.
All in all, the summit was a meeting of venerable giants who collaborated and ultimately learned from one another. The keynote of the summit was attendees' commitment to the design of JVMs that will support a multitude of languages. Although it might seem odd that a bunch of brainiacs got together to discuss the esoteric details of what many of us take for granted, it highlights the realization that the future of Java programming isn't tied to the language so much as to the platform itself. In fact, this summit might have been the first time in Java's long history that a series of non-Sun engineers collaborated on what's arguably the bread and butter of Java: the runtime engine.
Joining the fray: Scala and Clojure
Two languages that appeared to gain momentum in 2008 were Scala and Clojure. They differ vastly -- Clojure is a Lisp dialect, while Scala looks almost like normal Java, but more functional. Unlike JRuby and Groovy, neither language currently has a veritable killer app to propel it into the limelight. One thing both languages do promise, however, is better concurrency handling. Articles devoted to Scala increased in 2008, with some books published and more to come (see Resources).
Groovy plus Spring
The recent acquisition of G2One (a corporate entity supporting both Groovy and Grails) by SpringSource (the corporate entity behind the Spring Framework) underscores the growing interest in alternate languages and their ability to capture market-share through innovation. The SpringSource FAQ regarding the acquisition makes the point nicely:
Lately, the resurgence of dynamic languages, and innovative Web frameworks based on these languages, have changed the landscape drastically by offering more powerful and more efficient ways to develop business applications. Groovy, Grails, and open source projects like Spring, have changed the Java ecosystem by increasing productivity and speeding the development of mission-critical applications.
News of the acquisition certainly bolsters the open source business model, also amplified by the momentous acquisition of MySQL by Sun at the beginning of the year. Moreover, it validates the notion that alternate JVM languages will continue to influence Java-based development in the coming years.
Google gives Python a boost
Google's interest in Java seemed to ebb in 2008, as it focused more on Python than Java. In April 2008, Google released the Google App Engine, which includes an application environment that notably doesn't include Java. The Google App Engine lets developers deploy Web applications that leverage Google's existing infrastructure, which relies heavily on Python. Accordingly, if you'd like to build an application that runs on Google's App Engine, you'd better write it in Python, not Java.
Sun also embraced Python more formally in 2008 by hiring two developers to add more Python and Jython support to NetBeans. Sun also added a Python Developer Center to its Sun Developer Network.
Whether or not the Google App Engine release and Sun's Python moves are related, the Python community surely saw a big uptick in adopters in 2008. Sun's decision to support Jython more formally is also eye-opening, given that the language is quite mature (having been around much longer than both Groovy and JRuby). It remains to be seen if Jython can gain the momentum to overtake Groovy and JRuby or, for that matter, Scala and Clojure.
The changing face of enterprise Java
On the enterprise Java scene, the year's developments made it abundantly clear that Java EE is no longer the only game in town. The Java EE 6 release didn't set off any fireworks, and other technologies for the enterprise aroused plenty of interest in the community.
Cheers and yawns for Java EE 6
Some pundits cheered the release of Java EE 6 in 2008, including SpringSource CEO Rod Johnson, who had declared (when the JSR came out in 2007) "Java EE 6 gets it right." The overall impact of the release, however, was a collective yawn.
One thing that stands out about JEE 6 is that it is greatly simplified compared to earlier releases of the official enterprise Java development platform. That JEE 6 was met with sighs of ennui (as opposed to the anticipation and eventual disappointment that met JEE 5) reflects a sea change in Java development: Many developers and Java-based shops have found that newer frameworks and tools -- such as Grails, Rails, Spring, Hibernate, and Tomcat -- meet their needs just as well, if not better, than the monolithic Java platform. It is telling that 2008 saw the release of only one major update to the Java platform -- Java EE 6 -- and no new core Java release. (And that the next major release is now slated for early 2010.)
OSGi gets a boost ... and so do app servers
OSGi was both a damsel in distress and one of the stars of 2008, especially following the SpringSource announcement in August that it had released its own OSGi-based application server. SpringSource dm Server most notably leverages OSGi without supporting the full Java EE specification. While OSGi isn't new, SpringSource's substantial investment lends credence to its applicability.
SpringSource comes late to the application server market, but very actively so -- compounding its release of SpringSource dm Server with SpringSource tc Server (an enterprise version of Apache Tomcat) in early December. Some have pointed out that SpringSource's sudden emergence, and differentiation from the pack, could push other vendors in this space to innovate.
What didn't happen in 2008
Android -- a software platform and operating system for mobile phones -- was one of the more exciting announcements of 2007. Despite its promise of re-igniting the mobile development platform for Java, Android's effect in 2008 was minor. This was probably due to the lack of a phone supporting the platform; the first real consumer handset came out late in the year. But with Google behind the platform and a live phone now available, Android will no doubt be back in the news in 2009.
The long-awaited JBoss AS 5 was released with little fanfare, also in early December. The overall sentiment of this release may be reflected by RedHat Middleware CTO Sacha Labourey's own announcement, entitled "AS 5.0.0: we are done. Next."
GlassFish Enterprise Server v3 Prelude was also released in late 2008, being positioned as "a lightweight platform for Web 2.0 applications." All in all, the push in late 2008 seems more toward more lightweight, modular, and configurable Web deployment platforms and away from the Java EE-certified app servers that have dominated the market for some years. This makes sense, especially in light of the collective yawn over Java EE 6.
Java developers wake up to REST
REST is another enterprise technology that made significant gains in 2008. REST represents a move toward simplicity in enterprise integration, as compared to SOAP, for example. The Restlet framework, which arguably put REST on the map for Java developers a few short years ago, saw its v1.1 release in 2008. JSR 311, which served as a REST specification for Java, also reached v1.0 in 2008.
RIA in the limelight
Within a span of a few years, the Web has transformed tremendously in favor of richly interactive applications that look and feel completely unlike the earlier generation of browser-based pageflows. Ajax, as in recent years, remains a hot topic. But 2008 also witnessed a lot of buzz around RIA frameworks such as Adobe's Flex, Microsoft's Silverlight, and toward year end, Sun's JavaFX 1.0.
Name-brand recognition for RIA
RIA frameworks aren't new, but they're gaining recognition as more consumer applications leverage them. For instance, Silverlight became a household name during the Olympics via a high-profile Web site. Adobe's marketing engine also went into overdrive in 2008, touting the flexibility and applicability of Flex and its host of enterprise development tools, including a free Eclipse plug-in. Interesting, given Adobe's past was largely defined by Flash introductions to Web sites.
Many Java developers (and some notable engineers) migrated to Flex in 2008, some finding ways to integrate slick Flex front-ends with Java EE, others abandoning the Java platform altogether. It remains to be seen, given this trend, whether JavaFX can capture the legions of Java developers who might find JavaFX Script (while declarative in nature) much closer to home than Flex's XML.
Of course, RIA as a technology also requires platforms -- one being a browser -- and in 2008, Sun pushed hard to rewrite the Java plug-in, which is the interface point whereby browsers can run Java. While some believe the applet could re-emerge as a RIA platform, clearly Sun is pushing on multiple fronts to have a RIA framework (JavaFX) and still remain a force to be reckoned with on the browser. In essence, Sun appears to be targeting both ends: if the RIA framework isn't Java related, at least the browser will be Java enabled.
Sun swings away from Swing
In late October, a shot rang out across the blogosphere regarding Sun's apparent announcement that it was pulling its support from Swing. In truth, Sun's declaration doesn't mean Swing is dead. Swing, just like all other core Java technologies, will survive for the long haul. (People still create EJBs, don't they? Applets too!). It's just that Sun is pulling back on active new features (and therefore costs) and re-prioritizing people and resources to focus on JavaFX.
In fact, Sun is showing its proverbial hand: that the future of UI development, as far as Sun sees it, is with rich Internet applications à la JavaFX. As previously noted here and elsewhere, it remains to be seen whether Sun can effectively compete in a market containing two 500-pound gorillas that have had an impressive head-start.
Past as prologue: The future of Java
The Java language seems inexorably headed toward an inflection point: it will either continue evolving on its own (as it has largely done until now) or it will begin to adopt certain features that have made functional and dynamic languages increasingly popular among Java-based developers. For the moment, the Java language appears to be on hold -- it was not updated in 2008, and some have speculated that JavaFX Script may in fact be Sun's long-term answer to the stale conundrums of the Java language syntax.
Meanwhile, Java as a platform remains strong, if not especially exciting to a community that appears hungry for new approaches. While developers continue to migrate to newer platforms -- Ruby on Rails being the most obvious example -- many more are using dynamic and functional languages on the JVM. Sun has taken steps to embrace this trend by hiring developers from the Jython and JRuby camps; SpringSource and G2One have begun the process of integrating Spring and Groovy; and the JVM Language Summit, 2008, showcased what may be the enduring legacy of the Java platform: the JVM.
I'd like to thank the following individuals whose valuable insights regarding the past year in Java helped shape this article: Ted Tanka, David Bock, Jared Richardson, John Brothers, Guillaume Laforge, Patrick Lightbody, Andres Almiray, David Hodge, Jason Huggins, Athen O'Shea, and Eric Lefevre. Thank you all for your time!
About the author
Andrew Glover is a developer, author, speaker, and entrepreneur with a passion for behavior-driven development, Continuous Integration, and Agile software development. You can keep up with him by reading The Disco Blog.