I've just finished the first day of attendance at the JavaOne 2008 conference at San Francisco.
The morning was kicked off with a general session where the general vision of what the objectives of the Java platform would be over the next year was presented. I have to say, after being a little bit skeptical lately about the relevance of Java, and specifically the Sun version of Java, I was pretty impressed. Maybe it was the 80s style breakdancing fighting, or presence of Neil Young on the stage, but I was impressed by Sun's vision of Java going forward.
Sun shared a very collaborative, Web 2.0, and dare I say agile vision on how technology was going to evolve over the next year. One of the key statements concerned the removal of various barriers. Barriers between corporate and personal workspaces, between business users, content owners, and designers and developers, and barriers between different kinds of information.
A key message was that organizations trying to hold onto information within the corporate firewall are going to be big losers going forward. Sharing and collaboration are vital ingredient for ongoing success. Another key message was that no technology or even business solution would be successful using big upfront design or planning. The emphasis needs to be on rapid turnaround time, short iterations, and small teams working in collaborative environments that can provide a large variety of technology, creative design, and business skills. Sounds a lot like agile to me.
So how does this all relate to the Sun vision for Java going forward?
The first thing is the official separation of the Java platform from the Java language. Going forward multiple languages (122 currently) will be supported. Many scripting languages are being targeted, after all, the open source community has long proven the developer productivity of things like Ruby, Python and others. The next version of Java will include an official scripting extension mechanism, to better support and integrate things like JRuby, JPython and Groovy into the platform. Multilanguage support especially scripting support is now integral to the Java stack.
Another very interesting and relevant announcement is support for Rich Internet Applications. A new scripting language called JavaFX, will enable Java developers to create unified workspaces taking advantage of rich multimedia capability. The platform supports deep integration with applications like Photoshop and illustrator to allow developers and graphic designers to work together to build the next generation of truly rich desktop applications. JavaFX also provides Web 2.0 style APIs to support the merging of information from different providers, instrumentation of user activity for powerful analytics, and aggregation of services. The goal of JavaFX is to support a mashup environment where developers can find, merge, deploy, share and monetize using a Web 2.0 model. JavaFX is being touted as one of the key components enabling to build applications "free from a hostile OS (think Windows), free from a hostile provider (Google), owned by the developer"pure
Personally, I think Java is found a relatively unique space offering some of the cloudlike platform capabilities of Google, but allowing people to retain more control than currently being offered by either Google or Microsoft. Of course the breakdancing was really impressive.
Finally, there's going to be emphasis over the next year to make Java more modular, extensible, and easier for developers to use.
JDK 9 is going to have support for in Module visibility, something I have personally been waiting seven years for. There's also going to be support for better packaging and bumbling including OSGI compatibility. Better packaging means glass fish is going to be offered in a extremely small (9 kB I believe) base package with a subsection of the time. Various containers can be redeployed, undeployed, and exist in parallel at run time. (Think multiple EJB containers being deployed as necessary)
It looks like Java annotations are going to become even more robust, with support for much stronger type checking, so things like no pointer exceptions, write once objects, and other neat tricks will be supported at compile time.
All exciting stuff, I'll try to comment in equal detail for every day of the conference.