Swimming with the Razorfishes

Friday, July 01, 2005

Sausage
click for high-res

Trends at JavaOne

So much to learn at the Hee-Man Woman Hater's club. Uh...JavaOne. While the most surprising thing I've learned is that hygiene is so 90's, there have been some interesting technical trends.

SOA

My God I'm tired of hearing about SOA. I'm still not certain if I'm missing something, or of SOA is just an attempt to rebrand 20 year old design concepts. This is all SOA seems like; an design model. Lets hope that next year's hot technology trend isn't the factory pattern. SOA seems to be the new VC-bait. Here at JavaOne, you are hip if your software provides/creates/enables a service-based architecture.

Integration

Everyone is talking about integration, as if no one has ever integrated two software systems before this year. Integration is second only to SOA for buzzword value.

Regardless, it is nice for vendors to give it some attention. A sort of tacit acknowledgment that we've written a shitload of poorly-connected systems, and that now we should endeavor to clean things up.

The big announcement, the everyone has already heard, is Sun's open-sourcing of the Sun application server as GlassFish, along with a number of business integration tools (the Java Enterprise Service Bus will be open-sourced later this summer).

All of the integration tools I've seen are focused on inter- and intra-enterprise integration. It will be interesting to see how other people start using these tools in the web space and consumer-focused development. Integration is a problem everywhere.

Alternative Containers

I'm excited to see how much interest alternative containers are generating. Spring is the obvious center of the "lightweight container" universe, but others like Pico and HiveMind are active, too. People are talking about J2EE containers other than the majors (IBM, Bea and [cough] Sun), too. JOnAS and Apache Geronimo have come up in discussions more than once.

There also seems to be huge interest in OR mapping tools, with lots of discussion around EJB 3 persistence, Hibernate, iBatis, and even TopLink (though I'm convinced that Oracle wants to kill it). Hibernate 3 (and 3.1) is so interesting I think I'll blather a bit about it in a separate entry. The similarity between Hibernate 3 and EJB 3 is nice; if you've been working with the former, you'll be well prepared for the latter.

I'm particularly excited to see all the activity in lightweight containers. Until recently, the bulk of development effort has been in heavyweight J2EE containers. Where these containers are intended to scale vertically, the lightweight containers are more able to scale horizontally, collaborating across loosely coupled nodes.

Open Source

I suppose the big news on day one was open source. Jonathan Schwartz made a strangely vague (or imprecise) announcement about open-sourcing "server side java." it turns out that he was talking about the Sun application server, but a number of other open source efforts were prominent, including, of course, Open Solaris. Sun is in the process of opening the source code to quite a few of its projects. It will be interesting to see which (if any) generate community participation.

Sun is getting significant pressure from partners, notably IBM and BEA, to open-source the VM. I don't see the urgency for this. The full VM source is easy enough to get, and licensing the VM funds a great deal of terribly important management roles that don't tend to happen as well in OSS projects.

Web Application Frameworks

The web application framework market still seems rather messy to me. I believe that the JCP is doing the right thing with Server Faces, but JSF is a big, fat, complicated thing. If all you need is a data to html binding, or if you just want to drop in a page flow library, JSF has a certain amount of (possibly intolerable) overhead, both in terms of environment and dependencies as well as intellectual overhead.

I also find it very interesting how seldom discussions of these frameworks mention the web designer's role. I don't know what kind of "large scale" projects these guys have in mind, but very few would get far withough designers. It is still, after all these years, excruciating to collaborate between designers and developers on the web tier. One or the other has to learn too much about the other's business. After JSF, I'd love to see some standardization in the APIs used by the design tools.

Shale (aka Struts 2.0) seems like a really nice library. It is certainly more straightforward to integrate other libraries and frameworks (Tiles, Clay, WebFlow) into Shale and it incorporates nice shared (client / server) validation libraries. This comes at the expense, however, of complexity. I find the blinding array and varying levels of abstraction in Java/Web application libraries quite frustrating. It really says something that already the Java world has a derivative of JSF to make it more "functional." Regardless, Shale's "integrate with everything" philosophy is great, and I can't wait to build something with it.

New Language Features

Being tied to some libraries that are not ready for JDK 1.5 (aka Java 5.0), I haven't had much time playing with the new language features. It was good to spend some time working with the features and hearing discussions about them. Once I'm able to use them, enumerations will be really helpful.

Java 5.0 generics, however, are really interesting to think about. While Java language people poke fun at C++ templates as a "macro processor on steroids," Java generics have some funky aspects, too. Because they are implemented using type erasure, Java generics are compile-time type checked, but implemented in bytecode as a bunch of casts. This makes them backward compatible but not necessarily ideal. Java language engineers at JavaOne suggested that future versions of the compiler may implement generics differently (without type erasure).

JDK 1.6 (Java 6.0, Mustang) has some interesting features, too.

Both the compiler and annotation APIs are being significantly opened. Developers will have official (though read-only) access to the compilers syntax tree in Java 6.0 and will have greater control of source compilation from within programs. The annotation processing code will have a public API for adding annotation providers.

Swing is slated for a number of significant changes, most intended to make Swing-based applications behave more like "native" applications.

A great deal of work seems to have gone into improving Swing look and feels, particularly on Windows and GTK. More native widgets make the look and feel behave as a Windows or Gnome user might expect. Improvements have been made to the 2d rendering pipeline and double buffering code to draw more quickly and redraw screen regions more cleanly.

Swing JTables will (finally) have a useable filtering and sorting API in Mustang. Dialog modality has also been enhanced to prevent unwanted blocking. All good stuff.

Weblogic

Weblogic had a large presence at JavaOne. They were previewing Weblogic Server 9.0 as well as announcing a limited service agreement for the Spring framework; BEA will provide support for customers using Spring. Weblogic 9.0 is a stronger product. Configured correctly, it can hot deploy applications and hot migrate applications between members of a cluster. It is interesting to see how aggressively BEA is pushing Weblogic up market. They really are making a lot of room for lightweight frameworks like Hibernate and Spring.

The Conference

Unfortunately, by overall experience of JavaOne was little different than the last time I attended. Too many tickets were sold; sessions are way too crowded. Sessions were also generally too high-level. The first 30 minutes of a 60 minute session were often dedicated to background or overview. This is still not a conference for people seeking to increase their technical knowledge of Java or the platform.

Obese
click for high-res

0 Comments:

Post a Comment

<< Home