JavaOne Days 0-1Java One kicked off on Sunday across 3 (well, 4) venues based around Union Square in San Francisco. I'm here helping out with the JMS Expert Group whilst Steve is manning a number of Data Grid related events.
Day Zero : Arrival, Warmups and Keynotes
The future looks good for GlassfishI began by attending the Glassfish community event at the Moscone. I have to admit, historically I've not been the worlds biggest fan of Glassfish. I remember it from the days of being Sun App server; we did not part on the best of terms it is fair to say.
The years have been kind, which is to say, years of hard work by the Glassfish teams really have paid off. There's nice cluster/domain support, command line tooling, HA setups and Netbeans integration since JEE6 bring together a powerful platform to take you from rapid development to a supportable production environment. The reference implementation for things like JAXRS and JSON expose easy ways to integrate with your Java back end.
We saw a number of user war stories detailing deployments in the wild, people seem happy that this is a robust and stable platform.
Java Strategy Keynote: HighlightsI tweeted a number of my thoughts going through the keynote. The headline for JavaOne this year is to 'Make the future Java'. To summarise, I saw a lot of multi-platform support down to mobile and embedded runtimes coupled with talk of JavaFX support. The embedded support for JavaFX in my opinion starts to make JavaFX relavent as a true multi device way to build rich gui apps agnostic of the target platform. Importantly it looks like Oracle are really going to be pushing community involvement as a top level way to help move Java forwards. It will be interesting to see what form this takes.
JavaOne Technical KeynoteMark Reinhold took the floor to present the technical keynote this year.
The Embedded features of SE going forwards were a large focus in this keynote. It was announced that Project Jigsaw (native JDK modularity) is being pushed back to SE 9 due to it's complexity. However the work completed so far has fed into the notion of profiles being utilised for the mobile and embedded runtimes, allowing subsets of the core JDK classes to be used in memory limited environments. This work will complement and drive the JDK work going forwards.
We saw Project Lambda in action, allowing some of the nice features of functional programming to be applied to core Java code. In the demo this showed how to improve parallelisation by splitting business and looping logic.
Given the nature of our work, it should be no surprise that I have a large interest in JEE. With the migration of JEE PaaS support delayed until JEE8, I was a little unsure what features would really be the driving force behind the next JEE release. I think it's likely that we're going to start seeing an increase in the frequency of EE releases, with a shift in focus to incremental updates and new feature additions being brought online as the JSRs mature. In a way this is not unlike Project Coin for Java SE 7. If this happens, we should not be surprised if there are less big bang style feature sets going forwards.
Indeed, Arun Gupta announced a focus on simplicity and a raft of improvements for the EE JSRs to be included in the revised JEE7 scope, such as the revised JMS api, websockets and bean validation.
Day One : Let the games begin.Today the jet lag kicked in, so I'll be brief with my summaries.
I attended a talk by Jevgeni kabanov from Zero Turnaround on classloaders. This was a good talk about the types of issues you can encounter with class loading, versioning and class path permissions - with a focus on JVM class loading limitations. Obviously there was a plug for JRebel to allow runtime reloading of classes.
Java EE Security in Practice with Java EE 6 and GlassFish was my next talk. This talk covered the 10 most critical web security flaws, as published by OWASP, and presented generic steps to mitigate against them.
This was interesting, as it went on to talk about what sorts of steps Glassfish users can perform to mitigate against them. Ultimately however they distill down to common best practice.
They pointed out that few people test for security when it's deployed, either as unit tests or pen tests to a comprehensive level.
Before Lunch I went to the talk on JMS 2.0 by Nigel Deakin, the specification lead. As an expert group member I found it really good to see the feedback these feature changes generated all the way through the presentaiton, if everyone asking questions comes along to the BOF tomorrow that I, Nigel and Reza will be hosting then we may not all fit in the room.
In the afternoon I went to an excellent talk on Apache Cassandra by the chief founder of Datastax, Jonathan Ellis. He was able to talk about real life, large scale usage of Cassandra and backing it to Hadoop. Datastax offer a product in this space to help bridge to long term HDFS storage and perform operational monitoring, they also contribute to the open source Apache product. Cassandra has really become a powerhouse since 0.6 offering 300% increases in write performance. Jason stated that now in Cassandra write speeds are nearly matching read speeds, which is impressive given this works over hundreds of nodes for very large numbers of data storage.
A live demo of using the Java Instrumentation API was then presented in a lively and entertaining talk by the author of a tool called Java Monitor, Kees Jan Koster. This was very insightful as it showed the considerations that must be taken into account when instrumenting classes - the mechanism that profiler tool's probes use to gather data on your Java applications. I certainly took away the ability to perform application specific, deep, customisable profiling from scratch which is likely worth the cost of admission alone. I would recommend looking into his tool at Java Monitor
Javeleon was my final talk of the day. This provides another powerful way to redeploy code changes dynamically, going beyond hot swap to allow super class, interface and method replacement. Although it does not currently support many of the web containers we work with on a daily basis, so I think this is presently of use only really to developers working locally.