Saturday, December 29, 2007

2007: A Great Year for Software Developers

The year 2007 was generally a good year to be a software developer. There were many advances this year that made our lives as software developers easier and made us more productive. At the same time, many 2007 developments made our work more enjoyable and brought back excitement into what we do. The following list is my top ten events, announcements, or occurrences of 2007 in the software development world. It would be impossible to say what the ten biggest events in general for the software development world were in 2007, so this entry instead focuses on the biggest events for me personally. I welcome any suggestions for other major 2007 events in the feedback section.

10. Oracle Releases TopLink as Open Source (6 March 2007)

Oracle announced the release of its commercial object-relational mapping (ORM) TopLink product into the open source community as part of the Eclipse Persistence Platform. Oracle had already contributed TopLink Essentials to the open source community as the reference implementation of the Java Persistence API (JPA), but this announcement made an even more powerful JPA-compliant ORM solution available to open source users.

9. Bruce Eckel's Hybridizing Java (30 January 2007)

There were several key factors in the rapid adoption of Flex and OpenLaszlo as rich web client development platforms. This Bruce Eckel article was certainly one of those factors. In this entry, Bruce articulately outlines many of the frustrations and limitations many of us have run into trying to develop Ajax-based web applications on Java EE platforms. While others had been talking and writing about the beauty of Flex and Java EE together before this, it was this article that was the first to break my previous perceptions about Flash and caused me to really think about Flex as a potential development environment. When the entry was reprinted as How and Why Ajax, and Not Java, Became the Favored Technology for Rich Internet Applications, the article got even more coverage and I think many more developers got their first glimpse of the power of using Flex on the web client side with Java EE on the back-end. It helps when the man who thinks in Java (and C++ and Python) puts his name behind an idea.

8. Adobe Releases BlazeDS (12 December 2007)

Flex provided a compelling client-size solution for communicating with Java EE back-ends even before the BlazeDS announcement via its HTTPService and WebService support. However, there are times when communication mechanisms other than HTTP servlets or web services are desired. Previously, Adobe's Flex Data Services 2 was a commercial product available for alternative forms of communication. The BlazeDS announcement was welcome to many of us because it brought many of these server-side communication mechanisms out of the commercial only world and into the freely available and open source world. As part of this announcement, it was also announced that Action Message Format (AMF3) was being released. Additional information on these releases is available here.

7. Flash Player 9 Released for Linux (17 January 2007) [PDF]

There were several occurrences in 2007 that led to greater interest in Flash as a web platform. One of the most important characteristics of any web runtime platform is ubiquity on web browsers. Flash is a widely recognized and often downloaded platform, but Flex requires Flash 9. The announcement that the Flash 9 Player is available for Linux is an important piece of making Flash a compelling runtime environment to develop against.

6. XQuery 1.0, XPath 2.0, and XSLT 2.0 become W3C Recommendations (23 January 2007)

XQuery 1.0, XPath 2.0, and XSLT 2.0 progressed through the standardization process together and all three became W3C Recommendations early in 2007. I am particularly excited about the XQuery 1.0 progress because this means that vendors can start solidifying their XQuery implementations to a single standard. There is much to like about XQuery, but a specification is only valuable when it is a truly standardly implemented specification. Now, I am hoping that we will see Java Specification Request (JSR) 225 ("XQuery API for Java") (XQJ) finalized in 2008.

5. Oracle Releases JDeveloper 11g Technology Previews (May, September, and December 2007)

I have found that many of my colleagues do not realize that JDeveloper is a free IDE for Java, database, and many more types of development. I think part of this confusion is a result of Oracle formerly charging for JDeveloper and part of the confusion involves the whole "free beer versus free speech" and open source issue. While JDeveloper is NOT open source (not "free speech"), it is free of charge ("free beer"). I think that many developers think the only "free" (as in "free beer") Java IDEs are the two that happen to be open source ("free speech"): NetBeans and Eclipse.

I am not the only one who has observed that most Java developers are not aware that JDeveloper is freely available. Justin Kestelyn, Oracle Technology Network Editor-In-Chief, made this same observation at JavaOne 2007. This is a little surprising because it has been over two years since Oracle announced at JavaOne 2005 that JDeveloper would be free for all.

While JDeveloper supports non-Oracle products, it is especially handy when working with Java (SE and/or EE) applications that work with an Oracle database and OC4J/Oracle Application Server.

Oracle has released three "Technology Previews" of JDeveloper 11g in 2007 (Technology Preview 1 in May 2007, Technology Preview 2 in September 2007, and Technology Preview 3 on 21 December 2007). The new features associated with JDeveloper 11g Technology Preview 3 are listed here.

An interesting history of JDeveloper is available here.

Another interesting side note is that JDeveloper was the IDE of choice of the top three teams at JavaPolis 2005 Rapid Application Development (RAD) Race. Then, in JavaPolis RadRace 2006, one of the two winning teams used JDeveloper. One of the two teams to win the 2007 competition didn't use JDeveloper (but they did use Application Express).

4. OpenLaszlo 4.0 Released (19 March 2007)

Previously known as OpenLaszlo Legals, OpenLaszlo 4.0 introduced the ability to deploy OpenLaszlo applications against Flash or DHTML/Ajax environments with relatively minor code changes or even no code changes in simpler examples. OpenLaszlo features a declarative XML-based language (LZX) for coding the view/presentation in XML and uses a JavaScript subset (parts of JavaScript that do not have browser idiosyncrasies) to script behaviors and logic.

While OpenLaszlo's DHTML support has still not caught up with what it can do when deployed to Flash, it is nevertheless an amazing feat. For organizations cannot rely solely on Flash being on users' web browsers, OpenLaszlo's DHTML support may become what they need. OpenLaszlo provides a compelling alternative to using other Ajax/JavaScript frameworks and libraries. Also, OpenLaszlo has an advantage of not requiring Flash 9 (Flex does require that) and so may be more fitting for organizations whose customers may not be as likely to migrate to Flash 9 from Flash 7 or Flash 8 (the versions OpenLaszlo can deploy to). Finally, OpenLaszlo developers have already contributed to the betterment of the Ajax development community with articles and blog entries like the blog entry on dealing with web browser idiosyncrasies.

3. GlassFish v2 FCS Released (17 September 2007)

After upgrading several times to new beta releases of GlassFish v2, it was nice to have a final release to upgrade to. Since then, GlassFish v2 UR1 has been released (19 December 2007).

As the Java EE application server reference implementation, GlassFish is on the leading edge of Java EE application servers in terms of implementing Java EE 5 new features. It provides an easy-to-use web-based administrative console while still supporting command-line asdmin commands. It also provides Java EE developers with an easy way to test their Java EE applications for specification compliance. For example, I have used GlassFish to implement my first JAX-WS applications. In short, this Java EE reference implementation helps the entire Java EE development community.

2. Java SE 6 Released (11 December 2006)

Okay, I admit it, I am cheating on this one; Java SE 6 was actually released in late 2006. However, I figured that it was close enough to 2007 and its most significant impact for me was in 2007 to warrant including on this 2007 list. Also, several updates to Java SE 6 have become available during 2007.

There is much to like about Java SE 6 and I seem to run into new things I like about it at least on a monthly basis. Some of my favorite features of Java SE 6 include its built-in support for JAXB and annotations processing, its simple but satisfying String.isEmpty() method, its System.console() method and the ability to easily read user input from the console, its JAX-WS web services support, new JMX MXBeans, and its better performance. Many of the new and useful features that are now available with Java SE 6 are enumerated in What's New in Java SE 6?. Scripting for the JVM seems to be a very popular feature of this release of Java.

1. Adobe Open Sources Flex (26 April 2007) [PDF]

For me, the most significant software development event of 2007 was Adobe's open sourcing of its Flex 2 product. This, combined with Bruce Eckel's "Hybridizing Java" article (see #9 above) and the release of Flash Player 9 on major platforms (see #7 above) made Flex and Flash an obvious choice for developing Rich Internet Applications (RIAs) [or is it Rich Interactive Applications? :)] with Java EE on the back-end. Adobe's recent announcement regarding release of BlazeDS for other means of communication between Flex front-ends and Java EE back-ends solidifies this approach even more. I also really like OpenLaszlo (see #4 above) for many of the same reasons I like Flex. For me, the decision of what is the best web browser-based presentation solution for Java EE applications comes down to these two alternatives.

Honorable Mention

Listing only ten announcements of personal significance in the software development world necessarily meant bumping a few meaningful announcement or events. This section outlines some of them that didn't "make the cut," but will have the potential or even high probability of impacting many of us significantly in the future. Some of these may not have been as significant to me personally because I have not yet had the chance to use them thoroughly or because they have not yet proven themselves significant even if the potential is there currently.

The runners-up listed here are not listed in any particular order.

JavaFX (8 May 2007)

Based on F3, JavaFX was the biggest announcement of JavaOne 2007. This is saying something because JavaOne is known as a conference where major announcements are made related to the Java development community. Almost immediately, there was strong and heated discussion regarding this. Two interesting resources on this discussion are Java Champions Discuss JavaFX with Sun Microsystems and JavaFX Does Not Impress Anyone. It seems obvious that JavaFX is a response to Flash (and hence to Flex and OpenLaszlo) and Microsoft's Silverlight. Whether it will ever be able to seriously challenge them remains to be seen.

The Rise of the JVM Scripting Languages (throughout 2007)

I cheated a little bit and named the release of Java SE 6 as the second most significant software development event of 2007 to me personally. For many, the most interesting characteristic of Java SE 6 is its expanded support for languages other than Java, particularly scripting languages, to be run on the Java Virtual Machine (JVM). Martin Fowler compares two of the most popular, Groovy and JRuby, in his efficiently named entry GroovyOrJRuby. I also like the article Why Scripting Languages Matter. I really like Ruby, but I still haven't had a lot of use for a scripting language in my JVM ... yet.

Spring 2.5 Released (19 November 2007)

The Spring Framework has become so widely populated that any new significant version is likely to have a large impact on the Java SE/EE development community. Even those who don't use Spring directly, benefit from the obvious impact its had on the evolution of J2EE to Java EE. Spring has helped developers recognize the advantages of dependency injection and programming to simple Java classes rather than to complex classes implementing specific interfaces and/or inheriting from specific framework classes. Java EE has adopted many of these and other Spring-isms. I, of course, still like Spring even in my most simple Java SE applications if for no other reason than its JDBC handling.

Ruby on Rails 2.0 (7 December 2007)

⇒ New Versions of JFreeChart and Related Products (throughout 2007)

Several new versions of JFreeChart were released in 2007, including 1.0.5 (23 March 2007), 1.0.6 (15 June 2007) and 1.0.8 (23 November 2007). The Eastwood Chart Servlet project, based on JFreeChart and emulating Google Chart API, was also released in 2007 (13 December 2007). I like to use JFreeChart with OpenLaszlo and Flex, so these new versions of this free and open source (LGPL) Java charting API were welcome.

Google Collections

This extension of Java's standard collections support is only in version 0.5 (alpha) at this point, but it holds much promise.

Rejection of Microsoft Office Open XML as a Standard

Stalling of ECMAScript Edition 4 Progress

No comments: