May 26, 2008

JavaOne 2008 was great

I finally found the time to sit down and write about my first JavaOne. I had to catch up a lot of work that piled up during the last few weeks before JavaOne while I was rushing to get the JavaFX version of Parleys.com out for the Technical Keynote of Bob Brewin. If you weren't there you can watch it again, it's around 1:09 when Stephan Janssen (founder or Parleys.com / JavaPolis) presents the application.

I know I promised code samples during my technical session, but I haven't had the time to write about them. This will happen over the next few weekends, so stay tuned! In the mean time, people interested in the slides from my session can watch them below.

First of all I'd like to thank all the people I met at JavaOne for the interesting conversations and invites to cool after parties. I had a great time, learned a lot and met some awesome people. I'd also like to thank Sun for the opportunity to show my work during the keynote, it was a pleasure to see it on the big stage and to work closely with the people behind the scenes of the JavaFX Compiler, Runtime and GUI library to get it done in time.

I went to an interesting presentation on "Distributed client-server persistence with JPA" by Alexander Snaps, another Belgian guy I met at the Sun BeLux party. With his framework he tries to solve a huge need in desktop Java, transparant online/offline data persistence. I'd like to see this evolve into a full featured framework, and maybe even contribute to this if I can find the time. Having developped a similar mechanism for a client, a flexible framework for this seems like a huge timesaver for new client-server projects. Although some people believe everyone is online all the time, this is unfortunately not true in practice.
Jasper Potts and Richard Bair of the Nimbus and SwingLabs teams showed their latest work on the "Nimbus L&F". It not only looks better out of the box, it's designed to be flexible for us and the designers. Hottest item of their show was the designer tool, I'm anxiously waiting to try it out. It's basically a vector drawing tool that generates Java2D painter code to feed directly into Nimbus.
Ben Galbraith filled in for Shannon Hickey and Chris Campbell for "Extreme GUI Makeover" and he did a great job. He rewrote the GUI for a mainframe textbased financial application, with nice gradients, animations and rich usability improvements. All the sourcecode can be found here
. Thumbs up!
Finally I attended "Filthy Rich Clients, Filthier Richer Clientier" by our friends Romain Guy and Chet Haase. Although the technical content wasn't so surprising to me, it was a hilarious session. They floored me when they pulled off the Flex book trick, gotta give it to 'm, they have a huge sense of humor.

The JavaPosse BOF was great also, lotsa loughs and beer, it was fun!



Bottom line my first JavaOne was a great success, hope to see you all next year!

April 06, 2008

Java 6 update 10 (N) the war is on!

I've downloaded Java 6u10 Early Access several days ago but it wasn't until today that I tested the new applet plugin in Firefox 3 to see if it could live up to my expectations. And I must admit... excellent job guys, two thumbs up!!

The Applet features I appreciate the most (probably all):
  • Applet startup time with the quick starter is blazing fast and doesn't slow down the browser
  • Applets run in their own JVM process and can be isolated to one JVM per applet (finally you can provide your applets with a sane VM and you can kill offending applets without killing your browser)
  • Support for JNLP (native libraries / custom JVM startup parameters like memory settings, hallelujah)
  • Customization of JVM launch feedback, no intrusive Sun logo if you want a clean integration (this was a personal request, thanks a lot!)
  • Improved Java - JavaScript communication (I foresee a bunch of Applet widgets :)
If you don't believe me, try this: NASA world wind (a 3D earth in a webpage) or even Quake2 (Jake2) inside an Applet, no offline installation or drivers or libraries required, just click the link and start playing, insanely incredible!!

Damn, this should have been applets way back in time, but now I truly believe the war for the next gen web platform is on! And again congrats Java 6 update N team, you guys did a hell of job!

April 01, 2008

JPA not ready for desktop applications


Ever since JPA was released I wanted to use it. Since I'm working on a desktop application in my free time that needed some offline storage I immediately thought about using JPA for this.
All I needed was a small database to bundle with my application, HypersonicSQL (HSQLDB) is the all-java database I've been using with great success for integration testcases for the past few years. It's only 640KB in size and doesn't require an installation. This means it can be used as a library in a WebStart or Applet application.
For my needs HSQLDB + JPA is great, no more messing around with serializing objects to disk or using the Properties API. Using POJOs for user settings and caching online resources sounds great.
However when looking for examples of using JPA in a desktop application I found very few and I soon figured out why...
First I looked at the JPA provider I was familiar with from the J(2)EE world: Hibernate. After getting all it's dependencies I soon figured out why nobody uses JPA in a desktop application. Although the JPA API is lightweight, the JPA Providers aren't as you can see in the graph on the side. The thing that shocked me the most is that all the providers (including dependencies) are at least 4 times the size of the SQL database. Too bad, because the API was designed to also be used in desktop applications and it could be a huge productivity boost, but these outrageous sizes don't make it good candidates for web-deployment.
JPA Provider developers should really think about the desktop application platform and make a serious effort to reduce it's library size and required dependencies!