Feed-back on JavaPolis 2006
A post from Johnny Degreef, Web Solution Architect.
A few weeks ago, our Java team attended JavaPolis 2006. It’s one of the biggest European conferences for Java developers (more than 2.800 attendees and 100+ speakers this year).
The thing that hit me most this year is how few Java code that we’ve seen. It’s a fact now that Java is merging more and more with other technologies and programming languages. To name but a few hot ones: Ajax, Flex, Ruby, JSON, Python, REST…
There were also sessions about the never ending story, called SOA. I guess by now, everybody understands that SOA is nothing more then a buzzword that sales guys like to use just because it’s fancy… In practice, however, SOA architectures based on web services can not be ignored.
Some things that really scared me are these upcoming technologies like REST and COMET. REST (Representational State Transfer) seems a good idea, but I’m sure that security departments will think differently on this since it can expose your complete business logic by means of simple HTTP GET requests. COMET is a technology that allows to push information from a server to a browser. The idea is nice, but I consider it as a violent rape of TCP/IP! Even with some upcoming ARP (Asynchronous Request Processing) web servers like Grizzly and Glassfish that are designed specifically for this purpose, I still have an awkward feeling about this. But probably, I’m the only one thinking this way since the upcoming Servlet 3.0 specification will also be based on this.
This makes me come back to Flex that out-of-the box supports to push data to the browser. Let me assure you, I like the idea of Flex very much. I’m convinced that our front-ends are evolving to this technology. But what about the infrastructural aspects of Flex? Can a complete Flex application have the same simultaneous load then a traditional web application running on a simple Apache 1.3? What’s the impact on the web server stack?
What’s new under the sun for Java? Well, of course, there is the final Java SE6 released a few weeks ago. And since Java is open sourced with a GPLv2 license there is the OpenJDK equivalent. New in Java SE6 are a web service client stack, native XML data binding, scripting support (Mozilla rhino engine), SQLXML, Diagnosability, Desktop API enhancements, annotation tool support and finally, no more JVM tuning flags! The Java SE6 JVM is auto-tuning. For the upcoming Java SE7 there will be a new archiving structure more flexible then jar packages, support for dynamic languages, easier Swing development, Asynchronous IO and Javadoc improvements. Java SE7 will also come with new Java language modifications. Hot topic here are ‘closures’ that can control abstraction (less code).
Finally, I want to conclude on what we need to focus more and more in our daily work:
– Profiling: more important then ever before. All web application should be verified with a profiling tool. Most memory leaks still have their origin in written source code. Besides this, profiling of CPU, memory and IO are needed as well.
– Flow of changes: the final goal of software development is to have a stable outcome. We need to stabilize our releases as much as possible. The usage of a source code control system is not sufficient since it doesn’t cover any application life cycle. An interesting design pattern to tackle this is the “tofu scale”, invented by Perforce.com.
– Automatic testing: Besides Agile development, there is also Test Driven Development (TDD) where all development is concentrated by unit and acceptance tests. To automate testing of web applications, have a look at Selenium, a Firefox plugin.