Keynote Presentation by Richard Green and James Gosling
Rumours circulating around the show peg attendance at this year's JavaOne at numbers ranging from 6000 to 12000 attendees, all of which are significantly less than last year's 17000 attendees. However, a vast sea of faces could be seen as you entered the Moscone Center, Halls B and C, for the morning keynotes featuring Richard Green, Vice President and General Manager of Java and the XML platform at Sun, and the guru himself, Dr. James Gosling. If attendance has in fact gone down at this year's Java One, you certainly wouldn't have been able to tell at this particular Monday morning turnout.
Richard Green's talk discussed the 'future of Java' and what he described as the 'waves of the internet'. According to Rich, the basic trend on the client side is a move away from the desktop into smaller devices such as phones, PDA's and other handheld devices. With this transition is arising the need for new protocols which, in the Java world, translates into an evolution of the J2ME platform and integration with Web Services. According to his 10-20 year vision of the future, the internet is going to grow exponentially with an enormous number of Java enabled devices accessing it. Client devices 'transcend the desktop' and are essentially defining the new network architecture.
The past year has yielded fruitful deliverables from the JCP, among them, XML and Web Services, J2EE 1.3, J2SE 1.4, the Java Card, toolkits and blueprints. The essential task at hand now for Java, according to Rich, is how to bring the world of clients into the world of Web Services. An example of this is JSR127, which describes a way to extend SOAP and XML protocols to J2ME clients. This will be important in the new internet as hundreds of millions of new java clients begin to access the network in search of Web Services. J2SE 1.4, the 'Merlin release', allows for rich clients for web services and new options for connectivity and data interchange.
J2EE is 'da bomb' at this year's JavaOne, literally, according to one humorous slide introducing the J2EE section of Richard's talk. It is the de facto platform for Web Services. J2EE's component model, it's separation of services, and it's handling of complex transaction management and other 'system plumbing' are conducive to it's evolution into the realm of Web Services.
Richard announced the release of the AVK (application verification kit), based on J2SE 1.3.1, which ensures portable/compatible applications and is endorsed by 16 vendors. In the world of Java and XML, 13 new JSR's are underweigh which may add to the current list of XML-related Java API's: JAXM, JAXP, JAXR, and JAX-RPC.
The Doctor is In
Using a large slingshot held by two other people, James Gosling, in keeping with a JavaOne tradition, commenced his keynote by 'flogging the audience' with free t-shirts. After firing t-shirts into the crowd for a good twenty minutes, Gosling made several demos of gui-based application development tools. He described the new trend in J2EE towards visual, but very powerful development tools. ACE and Forte, both NetBeans plugins, are examples of such IDE's. ACE allows you to visually create your data model, define your business process model, generate Java code, and do prototyping; it can even map real world applications such as the Java Petstore. In the second demo, Forte was used to create and wrap EJB's, enable them as Web Services, and run them on a midlet from a cell phone.
JavaOne - Where It's At
Why do I go to JavaOne? Well, JavaOne has traditionally been where all the excitement is. At JavaOne there are opportunities to learn during the technical sessions, network with other developers during the BOFs, see the latest products, hear news of the next big initiatives in Java, meet with publishers looking for authors for their latest books, speak with the technical leaders and expert groups of JSRs and open source projects.
But what's really interesting about this years JavaOne isn't just who's here, but more notabily, who's missing. You won't find talks on JBoss and Jakarta projects at JavaOne, as these projects don't directly bring revenue to Sun through J2EE licensing and are percieved as a threat to high-end, high-dollar strategic positioning of Sun's most lucrative partners. If you're looking to network with JBoss or Jakarta team members, you instead go down the street to JBoss One and Jakarta One, which are being held concurrently with JavaOne to protest Sun's exclusion of these groups from the events.
Similarly, you notice the conspicuous absense of training and professional services firms openly peddling their services on the exhibition floor. In their place you'll see Sun's advertisements for their own training and professional services divisions. There are a few training and professional services firms on the floor though... the companies that made it past Sun's exclusion radar cleverly disguised themselves as "Systems Intigrators" (consulting) or "Book Sales" (training).
Technical Session - J2SE 1.4 Release and Beyond
This talk, given by Graham Hamilton, a distinguished engineer at Sun Microsystems, outlined the roadmap for the current and future development of J2SE.
The first part of the talk focused on the new J2SE 1.4 , and the two planned maintenance releases (1.4.1 and 1.4.2). The 1.4 release, codenamed "Merlin" includes many new APIs that were previously found in Java extensions - like JAXP and JDBC 3.0. There are also language and VM enhancements, like asserts and support for 64-bit processors.
The most interesting part of the presentation was the tentative feature set considered for "Tiger" which will become J2SE 1.5. The next release will include long awaited features like generics and class metadata. These new features are still being drafted and will be going through the Java Community Process in the near future.
Tools and Vendors
Oracle 9iAS (release candidate 2) and Jdeveloper (release candidate 2) are now available for download from OTC (technet.oracle.com).
9iAS is now "mostly" J2EE 1.3 compliant. The big addition to the 9iAS/JDeveloper pair is Web services support. Oracle is part of the work in progress: JSR-109 (http://jcp.org/jsr/detail/109.jsp) and keep their product up-to-date with the evolving spec.
Using JDevelopper, you can use a wizard to expose EJB methods as a web service. The tool will build and deploy the server side code and create a client stub for you (much like the old days with RPC/RMI/CORBA).
Another cool feature with JDeveloper is the ability to do basic UML modeling (in color, no less!). While not as elaborate as say TogetherJ, the Oracle folks are doing a good job (and its' free!). And keep in mind that Oracle has a lot of experience at writing modeling tools. They are now using their extensive knowledge in the area to expand on the modeling capabilities of JDeveloper.
DeployDirector, by Sitraka, deals with the problem of distributing client side rich GUIs for J2EE applications. As J2EE developers we've come across situations where it does not make sense to have a web client since the interface is rather limited. One of the big pluses for having a web client is the freedom from having to install and maintain a client on thousands of machines. DeployDirector very nicely solves the problem of deploying thousands of rich java clients to users desktops. DeployDirector can distribute software to end user workstations based on permissions so it is possible to have a set of users using version 1.0 of the software and a smaller set of users using version 1.1. The great thing about deployment director is the ability to neatly roll back and forth between different versions of the same application. Another great feature is DeployDirector ability to trap unhandeled exception in client and to report those exceptions to the deployment directory server where they show up in the even log as a erros along with the whole entire stack trace for the crash. Being able to rev releases at a rapid pace and to monitor and analyze online crashes quickly is key to a successful deployment swing based J2EE client deployment. If you find yourself writing a swing client for an J2EE app make sure to checkout DeployDirector.