Dick Wall feels that this is a great time to be a Java Developer. After returning from vacation, he hits the highlights of the conference and then delves into serveral products of particular interest.
A couple of months ago, Gamelan was kind enough to ask me to do a report on JavaOne 2005 for them, but as I followed the conference immediately with a 10-day vacation, followed by the inevitable work crunch that follows such a break, and because so many other reporters and bloggers have already covered the 2005 JavaOne, I asked to change the focus of the article slightly to not simply re-hash what you have probably already read. The result is a brief summary of the keynotes and show, followed by several points of particular interest to me covered in more depth.
Of course, I do feel I need to mention some of the main points from the keynotes, in no particular order. These are the points that caught my attention. More complete keynote breakdowns can be found at the following sites:
It's always interesting to hear what Jonathon Schwartz is thinking. It is safe to say that I find it fascinating to see what fascinates him... His keynote had a concentration on social aspects and implications of computing, and he mentioned blogs and wikis and the impact they are having. This is particularly interesting because I hear a similar theme coming from another interest in my life—the blogging and podcasting community—and I think that Sun and Java may be well served to get more involved with that community. Certainly, Sun has some interesting products for any community that is interesting in serving large amounts of data, including but not limited to Java. Massive storage, smart indexing of metadata, Web-enabled software for creating and consuming audio and video files, as well as text all sound like areas where Sun and Java could get involved and even lead.
It was announced that the Blu-Ray platform (one of the two new "standards" for high definition DVD) would include Java as part of the standard. This allows many things not currently possible with DVDs (for example, menu selection while playing a movie rather than in a special section). This announcement piqued my interest and I will return to it later in the article.
Sun is open-sourcing their J2EE application server using the java.net Web site under the project name Glassfish. This is a bold and welcome move, probably at least partially prompted by the Apache geronimo project. When asked about harmony (the Apache open-source JVM), Schwartz was unphased, and said he welcomed any and all open source competitive projects.
Phones vs. PCs
Another interesting announcement was that the estimated number of mobile devices with Java embedded in them now outnumbered PCs with Java installed, implying that, for the first time, phones and other mobile devices are potentially a larger market than desktop software. This explained some of the focus in this and other keynotes that concentrated on the development of Java Mobile Edition software. Sun's netbeans 4.1 mobility pack and several plugins for eclipse are positioned to allow apps to be built easily in Java Mobile Edition.
IBM "re-upped" their java licensing for 11 (rather than 10) years (spinal tap jokes were, of course, employed). This was after an admission that the relationship between the two companies had been chilling for a while, and looked like an attempt by both parties to mend some bridges.
New Ultra-20 Workstation
A new inexpensive opteron workstation was also announced. Selling for either $895 outright, or alternatively free if you signed up for three years of a Sun Services subscription (with a broad selection of Sun development tools including the studio and creator tools included). This reminded me of a mobile phone plan—free hardware with service purchase—another interesting trend. The Ultra-20s are again visited later in this article.
It would not be a JavaOne keynote without a little fun—the t-shirt hurling machines (now a tradition) were variably successful but always imaginitive (a reminder that not all seemingly brilliant ideas work out). Also, Duke got a cake and ticker-tape celebration for his (or rather JavaOne's) 10th birthday.
After many years of Java 2, it was announced that the 2 would be dropped. J2EE, J2SE, and J2ME are gone, replaced by Java Platform Enterprise Edition, Java Platform Standard Edition, and Java Platform Micro Edition. With .NET 2.0 coming up soon, it is not a surprising move because the Java 2 might cause some confusion over which is more mature or has been around longer. It is hard to believe that Java 2 has been with us for the last five years despite such huge milestones as hotspot, many new language features, J2EE 1.4, EJB 2.0/2.1, and all the other progress made—many of which should have been cause of a major version increment in my opinion.
As an addendum, the major Java version is bumped to 5 (Java SE 5), and the upcoming Enterprise Edition and Mustang Java SE will be Java EE 5 and Java SE 6 respectively.
Sun is still skirting the Open Source JVM issues at present—I will not descend into politics other than to say that I can see that both sides have good points in this debate. The concessions Sun has made into licensing should go some way to quieting some of the paranoid fears of the rug being pulled out from under developers in the future. New licenses include the JDL (Java Distribution License) for commercial use of Java, JRL (Java Research License) which, as I understand, gives enthusiasts more scope to inspect and alter the JVM code. The JIUL is a last resort kind of license for internal use only—if something has to be changed in the JVM it can be, but can't be re-distributed (presumably it could be with Sun's blessing). It is intended for situations where something has to be changed for a mission-critical internal app.
Java Studio Creator, NetBeans, EJB 3.0
As you may know, Java Studio Creator is a product of particular interest to me. Along with NetBeans and EJB 3.0 these are products and standards of particularly high interest that I will re-visit in detail below, and also an indication of a new era of Sun development tools.
Scott McNeally announced in Day Two's keynote that Sun had acquired SeeBeyond—a big mover in the Enterprise Application Integration (read SOA) world. Not being terribly interested or talented in the business analysis arena, I will politely leave it to readers to figure out the significance of this.
In one of the more impressive demonstrations of Java in a large-scale deployment, Brazil now offers free healthcare to all citizens, and the system works through unique ID cards (Java Cards) with the entire backbone written in J2EE (now to be known as Java Platform Enterprise Edition). The system is also open source, allowing other countries to easily adopt it if they want.
Points of Interest
What follow are products and topics which I found particularly of interest from the 2005 JavaOne.
Java Studio Creator 2 EA
About Java Studio Creator (JSC)
Regular readers of Gamelan may notice that I have written a number of articles about Java Studio Creator. I got involved with it in late 2003, while looking for a simple and familiar option for many of our Web and VB developers to build web UIs (for which we were getting greater demand). A full J2EE-capable IDE, while perfect for architects and Java developers with years of experience, is an intimidatingly high learning curve for someone who just wants to slap a nice looking Web UI onto some existing business logic.
Java Studio Creator perfectly filled that hole when it came out in version 1.0. It allowed neophyte Java developers to get up to speed extremely quickly, provided an un-intimidating WYSIWYG environment to create Web pages, and bound to database tables, javabeans, and existing Java APIs, and in the later updates, had an early version of easy EJB client bindings as well.
Most importantly, there was a subtle but important shift in Sun's thinking when creating this tool. Instead of packing in more features, they kept to the core of simplicity and functional focus for this IDE. It was aimed exactly where it needed to be aimed.
With the new Java Studio Creator Release 2 Early Access, Sun's Creator Team has invalidated most of the work I did in these articles, and I could not be happier about that. Anything that greases the wheels to more functionality and faster development is welcome, as long as the strict functionality focus and simplicity are not lost. I believe the new R2 EA accomplishes this.
Firstly, a completely new suite of components is included. The old ones are still available but are moved to a sub-section of the palette. The new components (of which I will target a few below) share an easy theming capability. You can swap themes for an entire site built with the new components just by right-clicking on the theme you want to use and making it the default. The next build/deploy will impose a new slick look and feel which matches across all components.
Some of the new components I would like to single out are:
- Date Picker (or Popup Calendar if you prefer)—Having recently completed a project that used date pickers extensively, I am extremely happy with the inclusion. Like all the new components, the calendar looks extremely slick and professional. It also has auto-submit on change functionality.
- Improved Data Table—Another component we rely on is the Data Table. Improvements here include sorting, improved paging, and more control over the width and layout of data in the columns, as well as a wider variety of data types that can be represented in the columns.
- File upload component—Until you have needed one of these in a JSC project you don't know what a nuisance it can be to include one—now it's easy.
- Tree component—Great for navigation panels and anywhere else you might need a tree—of course it can be bound as easily as any other component in JSC.
- Other notables are, a tab set layout, validation of only parts of a page upon submission (i.e. A page can have three different sections, only one of which will be validated depending on the submit button you hit), page fragment boxes (for easier manipulation of page fragments), and an alert component. There are many more; for a complete rundown see http://developers.sun.com/prodtech/javatools/jscreator/ea/jsc2/reference/fi/components.html.
As well as this, the WYSIWYG experience has been greatly improved. I don't know whether this is due to the components, improvements in the GUI builder, or a little of both, but the result is that you have a much better idea of what a page will look like when you run the application.
There is also an AJAX component in there, a "google suggest"-like component—see the Wikipedia on AJAX—I hope this is a promise for things to come. AJAX components increase the Web UI user experience greatly (check Google maps or gmail for examples of how AJAX can help).
As well as the new components, there are a lot of important enhancements in JSC 2.
From a corporate development and architecture viewpoint:
- Integrated CVS support
- An enhanced and much more flexible page lifecycle (or at least, hooks to better be able to harness the lifecycle)
- An HTTP monitor to show you traffic to/from the server (you know when you need it, and it's a life saver)
- Improvements in EJB consumption and usage
- A task manager
I also like some of the less obvious features, such as the ability to import an existing HTML example page and start using it to drop controls on and the CSS editor.
Netbeans 4.1 based
As an aside, the new JSC 2 is based on the NetBeans 4.1 platform. This brings a number of less obvious but useful improvements in its own right, including better refactoring.
Finally, I wanted to touch on something that will be exciting for a lot of corporate developers. It is now possible to build portlets to the JSR168 specification using JSC 2. For those who do not know, portlets are a sort of encapsulated Web page that can be added into a portal along with others to make a custom layout to meet a user's requirements. They are extremely useful for report or dashboard-style Web applications.
Try it yourself
There is no need to take my word for it. You can download and try out the early access version of JSC 2. Go to http://developers.sun.com/prodtech/javatools/jscreator/ea/jsc2/index.html and sign up for the Early Access program. One hint that may save you some time is that if you are installing on Linux (and possibly Solaris), make sure you have the bc package installed before running the installer.
Netbeans 4.2 EA
In a lot of ways, NetBeans seems to be following some of the lessons learned from Java Studio Creator. The emphasis of the new 4.2 early access version again seems to be on simplifying development and improving the developer experience. Java has always had the flexibility and power; I think that this emphasis on accessibility now is exactly right. A developer wants to expend mental capacity on solving the problem, not fighting the tool. Netbeans 4.1 was a step in this direction, and NetBeans 4.2 seems to be taking it even further.
Many of you may already have heard about the new Matisse GUI builder in NetBeans 4.2. In a nutshell, Sun has introduced a new layout manager called the Natural layout manager, and added support within NetBeans for it. The result is a GUI building experience on a par with the simplest GUI builders out there, but with full resize, internationalization, and swappable look and feel support. For a brief example of Matisse, see the viewlet demo at http://www.netbeans.org/files/documents/4/475/matisse.html.
The impressive thing is that the layout will still look good no matter what look and feel or language you use. Longer or shorter text labels will not overrun other components or leave big gaps. Fatter buttons and extra eye candy in a look and feel will similarly not mess up the appearance of a frame. At present, there are still a few bugs (you can try Matisse yourself now by following these instructions) but when complete, Java will be as easy and fast to create Desktop GUIs as anything else out there (faster if you take into account the amount of resize code you normally need to write).
Again, apparently following creator queues, NetBeans has data-binding capabilities. These allow you to drag and drop fields and data elements from a number of sources (including database tables, beans, and EJBs) into a GUI, and a suitable component will be created and bound to that data element.
J2EE and the out of box experience
Netbeans, starting with 4.1, has been about the "Out of the Box Experience." The idea being that the inclusion of good J2EE EJB support and high quality GUI builder mean that simply installing the software gives you more scope for being productive than a number of competing IDEs. With many of the alternatives out there (certainly most of the free ones), it is necessary to find plugins to develop EJBs and even GUIs in some cases. This is not a huge problem, and it is an exercise I have been through a couple of times, but the ability to do so much after a quick install is very seductive, and folks who are coming from a Visual Studio world and just expect this kind of support to be there will find a lot to like in NetBeans.
To try out NetBeans, you have two options; either go for the safe and stable 4.1 version from http://www.netbeans.org/community/releases/41/index.html or download one of the developer releases of 4.2 from http://www.netbeans.info/downloads/download.php?a=n&p=1 and then you can enable the new Matisse GUI builder by following the instructions at http://www.netbeans.org/kb/articles/matisse.html.
Following the current commendable trend to make life easier for developers, there was a lot of information about and interest in EJB 3.0, the upcoming major revision of EJBs (one of the most powerful but currently most complex aspects of J2EE). The new version will use new features of the Java 5 language (mainly annotations) to simplify the creation of EJBs. It will no longer be necessary to write Deployment Descriptors, and the distinction between Home and Remote interfaces also has been removed (at least as far as the EJB creator is concerned).
EJB 3.0 will maintain backwards compatibility with EJB 2.1 (and yes, you can still write Deployment Descriptors if you want to). The upshot is that EJB 3.0 will be a much more accessible standard, without losing any of the power of EJBs. Persistence has also been overhauled, with the result that it looks a lot like Hibernate but using annotations.
I won't go much further into this subject right now because it really could be a separate article or stream of articles. Suffice to say that this is, in my opinion, another important move in the right direction. For more information on what the new EJB 3.0 specification means, have a look at http://java.sun.com/products/ejb/.
One of the announcements that I surprised myself by being interested in was that the new Blu-Ray standard for the next generation of DVD players would include an enhanced form of the J2ME platform. It got me thinking about some of the possibilities as a Java Developer.
Blu-Ray is one of two competing standards for the next generation of DVD players, the other being HD-DVD. Currently, Blu-Ray seems to have the upper hand and the inclusion of a full programming platform is extremely interesting. While the processors will (at least at first) not be powerful enough to do anything like First Person Shooters, the possibility of games naturally occurs to me. Also, Java code can execute and interact on screen even while a movie is playing (unlike current DVDs, where a separate menu screen is usually required for user interaction). While I can sit here and punch out a few ideas about how a J2ME environment could be used in a DVD player, the truth is that the most exciting possibilities will probably occur to others. Embed this kind of flexibility into anything, and someone somewhere will always blindside you with something very clever and useful. 50 gigabytes of storage is a lot to be able to play with in an application.
GPS Binding from J2ME
Unlike the Blu-Ray announcement, which was something that I had not really considered before, this announcement pleased me because this is something I have wanted for a long time.
For the last few years, most new cell phones have been built with a GPS receiver inside them. It is usually only activated for 911 calls so that emergency services have another option to locate you in case of trouble.
As a GPS enthusiast, I have often wanted to have a way to access this in other ways in my phone. I do have a handheld GPS, but the data on such a device is always limited either by what is made available by the GPS manufacturer, or what you can fit in the limited memory.
Now, a GPS in a phone has a lot more potential. Imagine using WAP to contact Google maps, send along your current location from the GPS built into the phone, and find the nearest coffee house, EB games, or anything else your heart desires. Google already works to keep these points of interest up to date. Furthermore, imagine downloading a small J2ME app that then would be capable of providing you with real-time driving or walking guidance to your chosen destination, all from your phone. I personally can't wait until I can get a hold of one of these new devices, and when they get out in sufficient quantities to interest the Googles and Yahoos to provide these kind of services.
Scripting Language Enhancements to the JVM
Another welcome announcement (at least for me) was the enhancement of future versions of the JVM to allow scripting languages to do more in the VM.
One of the oft-touted advantages of .NET is that the CLR is language agnostic, while the JVM is not. Neither of these statements is entirely true.
Although different language syntaxes can be run in the CLR, they end up looking quite similar at the end of the day because the libraries used are identical. This is not a bad thing; it is just a little misleading.
The JVM actually can do exactly the same, which surprises a lot of people and is not well known. As you can see at http://www.robert-tolksdorf.de/vmlanguages.html, there are a very large number of "languages" that can run on top of the JVM. Again, you end up with many of them having the same "flavor" as one another due to them all using the same class libraries.
In the past, I have used two main alternative languages on top of the JVM, those being Jython and Groovy. It is no accident that both of these are what are known as "Scripting" languages. In practice, Java is a pretty good compromise between a simple language and a reasonably efficient one. Although many other languages can run on the JVM, unless they really bring something else to the party, I will use Java because I know it.
The reason Jython and Groovy are both interesting is that they each have some serious strengths in areas where Java is a little weaker. For example, Jython (like Python upon which it is based) is extremely strong at text parsing and manipulation. There is no need for MessageFormat classes, string tokenizers, and so forth. Instead, you can very quickly manipulate strings in Jython. It also has a more compact introspection model than Java, even in the Jython form.
Groovy, on the other hand, is so ridiculously good at SQL and XML handling that it is not an exaggeration to say that something like a translator from SQL to XML will be well under one tenth the size of the equivalent Java code to accomplish the same.
There are two prices you pay right now when using scripting languages on top of the JVM. The main one is speed, and the other is that there are limitations imposed by the JVM that somewhat limit some of the more dynamic possibilities in a scripting language. For example, anyone who has used Python (or C Python, as the C-based version is sometimes called) and Jython will know that some of the more advanced introspection operations are not possible in Jython.
The announcement of JVM enhancements with scripting languages in mind will hopefully address both of these issues to some extent. Although scripting languages will always be slower than a more efficient part-compiled language, some of the inefficiencies right now come from working around limitations in the JVM. Furthermore, hopefully some of the more advanced scripting features will also be possible.
This enhanced scripting support is slated to be included in the Java SE 6 (Mustang) release.
Sun has introduced a new range of low cost, high performance workstations called the Ultra-20s and based on the excellent AMD opteron architecture. While this is not, strictly speaking, Java news, Java is of course a first class citizen on this platform, and I cannot imagine a better price/performance point for developing (and maybe even running) Java applications. The workstations have the interesting ability to run 64-bit Windows, Linux, and Solaris well on the same hardware.
Potentially even more interesting is the purchase options. You can either buy the box outright starting at $895, or you can go the service purchase route and get it for free. Basically, somewhat like a cell phone, you can buy a Sun services subscription for three years at $30 per month and get the box for free. I am interested in how well that plan does. Full Java development tools and enterprise environment is included (see, it does have something to do with Java after all). http://www.sun.com/desktop/workstation/ultra20/.
Finally, this is another one of those off-the-wall interests that I picked up while at JavaOne. The Sun SPOT (Small Programmable Object Technology see descriptions at http://sig9.com/node/244 and http://research.sun.com/spotlight/SunSPOTSJune30.pdf) is a wireless sensor that has wireless networking capability built into it.
The Sun SPOT is capable of creating a mesh network on the fly, and runs a small Java-based VM called the "Squawk VM." This is another one of those things that I can think of several interesting ideas up front (for example, if put in sufficient numbers of cars along with a GPS, it could be used to provide anonymous data about traffic holdups, and enable drivers to route around the problem without making it worse), but again the most interesting ideas will probably come from getting these sensors out there and seeing what killer applications people think up.
As well as the above, there were a large number of vendors in the Pavilion showing off their wares. I was pleasantly surprised to learn that Google's Gmail and Blogger tools are written in J2EE for the server sideI suppose it's obvious but even as a regular user of gmail I had never given it any thoughtwhich is probably the best recommendation I could give Java EE (it just works, why worry about it).
The overall feeling that I came away with from JavaOne 2005 is the pace and diversity of Java development. From Blu-Ray to mobile phones, huge enterprise systems to Sun SPOTs, Java is just about everywhere (yeahI know this is the slogan, but think about itit's actually true).
This is a great time to be a Java Developer.
About the Author
Dick Wall is a Lead Systems Engineer for NewEnergy Associates, A Siemens Company based in Atlanta, GA that provides energy IT and consulting solutions for decision support and energy operations. He can be reached for comment on this and other matters at firstname.lastname@example.org.