ONJava: 2005 Year in Reviewby Chris Adamson
You might argue that 2005 was a slow year for Java. After all, there was no major release from Sun, either of Java SE (Mustang is expected in mid-2006) or of J2EE (5.0 continues on track for an early-2006 release). As we noticed in our coverage of JavaOne 2005, the conference was one of road maps, not releases. And after an uptick last year, Java book sales are off 4 percent this year, according to BookScan data cited in a Tim O'Reilly blog entry.
Yet despite all of that, I don't think you can say Java had a "slow year." More than in years past, this has been a year when the Java world clearly extended beyond the lavender-and-gray confines of Sun, when the story was increasingly shaped by outsiders. That makes it a great time to be a Java programmer, of which there are quite a few. After all, downtick or not, O'Reilly notes that "Java is still by far the most widely used programming language, if book sales are any indication, about 2x C#, 2.5x PHP, 4x Perl, and 9x Ruby/Python."
The ascendency of rival languages to Java has been one of the most interesting stories in the Java world this year, because it's gotten Java developers talking about what they do and don't like about Java, and what they want from it. Bruce Tate's book Beyond Java is a provocative declaration that Java's time must come to an end eventually, perhaps sooner rather than later. In the ONJava article Technologies to Watch: A Look at Four That May Challenge Java's Development Dominance, Tate looked at dynamic languages, continuation servers, convention over configuration, and metaprogramming. Java developers have taken up the challenge, as many new applications, libraries, and frameworks are taking inspiration from these developments and bringing them to Java--Trails, a framework clear about its inspiration from Ruby on Rails, is one such example. The specific merits of Ruby, vis-à-vis Java, were the focus of Ruby the Rival, in which top developers and writers looked at what's happening in the Ruby world and considered its applicability to Java.
One of the things people look to ONJava for is coverage of emerging Java tools, applications, and frameworks. This year, one of our most popular articles encouraged readers to try Using Drools in Your Enterprise Java Application, in which Paul Browne showed how to use a rule engine as the business logic middle tier between the front end (JSF, Spring, etc.) and the service layer (Hibernate, DAO, etc.). Some of the "official," JCP-blessed frameworks came into their own this year, which gave us a chance to help you understand What Is a Portlet and How to Upload Files with JSF and MyFaces.
AJAX may not be a specific library, or even necessarily Java, but this approach to web client development looms large in the future of many projects that want to deliver a better user experience. Brad Neuberg's AJAX: How to Handle Bookmarks and Back Buttons offered a "Really Simple History" framework to allow single-page AJAX applications to better tolerate user navigation.
Of course, it's not just about the libraries and frameworks. Perhaps more important is the sea change of new programming styles. In 2005, we saw more genuine interest in, and results from, service-oriented architectures (SOAs). Debu Panda started with An Introduction to Service-Oriented Architecture from a Java Developer Perspective, and followed up with the essentials of Constructing Services with J2EE.
Many of the official standards lean towards RPC-like calls for web applications, but there's an alternative approach: in The REST of the Web, Jason R. Briggs made the case for the simple and clean approach of Representational STate Transfer, and showed a Java version of its ideals.
Another approach is the idea of component-based development, in which a set of classes and interfaces in a distributed environment offers an external API to meet some set of requirements. Palash Ghosh explained and demonstrated it in Java Component Development: A Conceptual Framework, and we revisited the idea in the cross-posted java.net article Component Inheritance in EJB 2.0 by David Musicant.
Finally, we took a new look at persistence strategies with Lightweight R/O Mapping, in which Norbert Ehreke showed off a framework that reverses the usual object-relational mapping, letting the result set create the class. In the same spirit, Hibernate Class Generation Using hbm2java shows how to generate Java classes from Hibernate mapping files, rather than the common practice of using XDoclet to create the mappings from the Java classes.
Pages: 1, 2