During my search for desktop integration solutions one of the first things that came accoss was JDIC or Java Desktop Integration Components [10], a java.net project attempting to address the very issue I was faced with. It aims to support browser embedding,application launching , writing screen savers and system tray application all in Java and most interestingly implementing file associations. My enthusiams rose as I read that parts of JDIC had been included in the up coming Java 6 release.
You can imagine my disappointment and amazement when I realised that out of those features mentioned the one that did hit the six (pardon the pun) was file associations. Dropping of file associations was very disappointing especially as I anticipated that doing the file association inevitably would need some JNI code. As already stated JNI code is a real problem in both cross platform development and deployment, so you really, really, really want this sort of thing to be included in the JRE.
I appreciate the good and hard work JDIC people have put into the project but after poking the guts of the JDIC I came to the conlusion that file associations was probaply excluded from Mustang because if was not mature enough. My main reservations with JDIC are that you need JNI libraries for three platforms, the Mac OS support is thin and knowing something about the complexity of Linux desktop integration issues the implementation, looking at the source code, just wasn't convincing.
While on the subject of JDIC I feel I need to express my view that especially system tray user interface needs to conform to the plat form look and feel, not Java or application look and fell. In this respect JDIC has headed for the wrong direction. A more arguable philosphical reservation is the need to do browser embedding at all. In my experience speaking as a user, browser embeding has never enhanced any application but in many occasions it has proved to be a problem. Much better just lauch it separately. If you share my view you may want to look at a pure Java solution int the BrowserLauncher class of my jAppFramework [25] in package jappframework.jdic.