The Source for Java Technology Collaboration
User: Password:
Register | Login help    

Search

Online Books:
java.net on MarkMail:


JDIC@JavaOne 2005 and Deeper Desktop/Java Integration

Posted by georgez on July 25, 2005 at 2:58 AM PDT
This blog gives my late report of JavaOne 2005, basically staffing the JDIC show, and an exploration of missing features in the desktop/Java integration territory, the focus of the JDIC project. Bridging such gaps would backup Java at the center of client-side development. 

A Recap of JDIC@JavaOne 2005 

It's my second time attending JavaOne and the first time to be a speaker (of the JDIC BOF session). I was more excited about this JavaOne, because of all sorts of cool stuff and most importantly, meeting with many friends and JDIC participants after a long time email communication.

JavaOne 2005 is a yearlong milestone of JDIC, since its inception at JavaOne 2004. This year, we hosted a BOF session and a booth. The BOF session was well attended, with nearly 100 audiences, despite 15 BOFs going on at the same time. It went on with a 30 minutes presentation (slides), followed by a 20 minutes engaged discussion.

In the pavilion area, a middle-sized visitors dropped by the JDIC booth. I spent most of my time in the booth answering questions, showing off demos, and it's quite rewarding to get new ideas. Though, I would very much like to spend more time on those sessions.: )

A couple of bugs were brought to us, most of them relating to the Browser component, including:

  • Session management with multiple pop-up browser windows
    This was fixed someway but we need a legal confirmation from the contributor.
  • Using the Browser component (an AWT component) in a Swing application causes some issues.
    Browser as an AWT component comes from its implementation, which paints a native embedded browser window to a JAWT parent window. Allowing mixing of heavy and lightweight components is a known issue (Bug 4811096) in JDK. Hopefully, it can be resolved within JDK.
  • Browser support on Linux/Unix platforms
    As Browser only supports embedding Mozilla on Linux/Unix, if Mozilla is not available, it fails. On Windows platforms, we are falling back to Internet Explorer if Mozilla is not the default browser. We've got in tough with NetBeans that, we may be able to make a NetBeans provided Browser component a backup if no Mozilla available. Though it needs more communication.

A list of new proposed features at the conference, with a few comments from my perspective:

  • Java API to invoke native input system
  • Java API to control native application windows
  • Embed MS Office Excel or StarOffice
    This is just like the Browser component embedding a native browser. Embedding MS Office Excel wouldn't be cross-platformed, as Excel is not available on Unix/Linux. Embedding StarOffice can be a better alternative. Though, it depends on StarOffice, and we need to identify what specific functionalities are needed.
  • Access to Windows Registry
    JDIC Filetypes API (package org.jdesktop.jdic.filetypes) resolves this problem in a cross-platform way. Though it's not as flexible as the Windows Registry API, it's cross-platformed, and provides pretty much the functionality needed by most applications.
  • Access to network parameters
    Though this feature fits nicely into the JDIC SystemInfo incubator project, it's approved for inclusion in Mustang (See bug 4691932). So we won't do that within JDIC.

Some more general questions about the project were raised, including the platform support matrix, stability, JDK integration, etc, which were covered in the JDIC website. In short, JDIC got more visibility both in the community and among JDK teams, and we introduced it to many new users this year.

Features on the road

Right after JavaOne, some new features are being added to the project or under investigation:

  • Most Recently Used document API
    This small feature adds a specified file to the Most Recently Used (MRU) list of documents, which are shown in the Start Menu of Windows platforms or Gnome/KDE desktops. To see how this API is useful, run the JFC demo Notepad bundled with JDK, the opened/edited files are not added to the MRU list of documents. This API provides such functionality in Java. It's to be included in the JDIC FileUtil incubator project. See the discussion thread for the API specification.
  • Music Player Control API
    This incubator project provides a set of Java APIs to control native music players, e.g. Winamp, Rhytmbox, iTunes, etc. So, you can control your favorite music player to listen to music without ever leaving your Java application. See the project homepage for more information.
  • Browser component support on Mac (embedding Safari)
    This has been under active development by Christopher Atlan, with a few issues to reconstruct the implementation to make it an AWT Canvas component. See issue#222 for updates.
  • Browser plug-in container
    The first goal of this container is to provide a way to embed these plug-ins into Java applications through NPAPI, so developers could make use of these content viewers in their Java applications.

    The second goal is to use it to resolve the C++/ABI problem we have with the JDIC Browser component embedding Mozilla on Linux/Unix, as it has native C++ code and needs to work with a standalone Mozilla instance. We can wrap the Mozilla browser as a NPAPI plug-in, so the external interfaces will be NPAPI/C based, and then embed it into Java through the browser plug-in container feature.
Some guidelines for incoming features

Besides the features under working, we've got lots of feature requests on the plate, and more are coming everyday. Below are some suggested guidelines we accept or host new features in JDIC later on:

  • Base on the votes and prioritization of feature requests through Issue Tracker
    Later on, all the feature requests should go to Issue Tracker, and be tracked there. There are vote and prioritization fields, just like the JDK RFE reports. If you want to see a feature in JDIC, you can vote on it or increate its prioritization with justification.

Many features are addressed by more and more incubator projects, each of them providing a set of relevant APIs. We filter those more desirable features to be hosted in JDIC from three perspectives: desktop/Java integration, cross-platform and availability in JDK. Those features on desktop/Java integration, having a cross-platform support and missing in JDK would have a higher priority, and a better chance to be hosted in JDIC.

  • Align with JDK (Mustang, Dolphin) development
    Though we are not doing the project specifically for JDK, JDIC has many intersections with JDK. We can align the work to avoid duplicate. While we introduce new features into JDIC, we can first access the Java technology Bug Database, to see if similar features were already registered, planned or developed for JDK. Then we can communicate with JDK teams to see if there is an alignment. Some JDIC features were also registered to or planned for JDK, including the JDIC Tray Icon API integrated in Mustang b39 (Bug 4310333), and JDIC Desktop API to be integrated into a later Mustang build (Bug 6255196).

    On the other hand, Mustang won't be available until mid of next year. Despite lots of new features introduced in Mustang, there are many bugs around desktop/Java integration registered in the Bug Database, which fit into JDIC. If we work on such features, then would benefit the Java community more and have a better chance to be accepted as part of JDK someday.

More on desktop/Java integration

Besides JDIC, there are many relevant work or requirements out in the community. Read Colm Smith's blog Java and Desktop/Platform Integration, which commented on a couple of desktop/Java integration projects. It covers an interesting Java Service Wrapper project to enable a Java application to run a system service.

Another blog Why I can't get excited about JDIC by Elliott Hughes gives a long list of desktop/Java integration features that are missing for Mac, most of which are also missing on Windows/Linux/Unix platforms.

With all the listed feature requests falling into the scope of JDIC, we want your input to prioritize them and work together. Please raise your ideas and vote for your favorite features to the JDIC project !

Last bits ...

Coming to the end of this blog, I read ClientJava.com's interview with the developers behind Columba - Java Email Client, which "... proves that with the new direction Java is going so far, it can leave its bad reputation behind and be a good foundation for a modern desktop applications." That "new direction" means desktop integration. It's worth a read!

Related Topics >> Java Desktop      
Comments
Comments are listed in date ascending order (oldest first)