The Source for Java Technology Collaboration
User: Password:



George Zhang's Blog

March 2005 Archives


Where's JDIC Going?

Posted by georgez on March 24, 2005 at 08:41 AM | Permalink | Comments (6)

I've been involved with the JDesktop Integration Components (JDIC) project since inception. Lots of things have been going on since it was open sourced during JavaOne 2004. JDIC community just released a milestone release 0.9, with a couple of new features, API revisions and bug fixes to the earlier 0.8.x releases.

There've been many interesting discussions and ideas in the community that worth noting. What follows is a briefing of what's new in 0.9 and the overall status of the project.

What's New in JDIC 0.9

For a summary of the new features plus a complete list of bug fixes in 0.9 release, see the Release Notes. Below outlines the major APIs and features introduced in 0.9:

  • The Browser Component (package jdic.jdesktop.jdic.browser)
    • public java.lang.String getContent()
    • public void setContent(java.lang.String htmlContent)

      Provides the ability to set and get the HTML content.

    • public java.lang.String executeScript(java.lang.String javaScript)

      Provides the ability of communicating between Java and JavaScript code. Examples:

      WebBrowser webBrowser = new WebBrowser(new URL("http://java.net"));
      ......

      // Set the background color
      webBrowser.executeScript("document.bgColor='blue';");
      // Print the loaded page
      webBrowser.executeScript("window.print();"); 

      The W3C DOM API support was frequently requested. As JDIC Browser takes an out-process approach to support Java applets, implementing the fine-grained W3C DOM API would cause significant performance overhead, so we didn't implement the W3C DOM API. But using this method, JavaScript DOM APIs are all available.
  • The Tray Icon API (package jdic.jdesktop.jdic.tray)
    • public void displayMessage(java.lang.String caption, java.lang.String text, int messageType)
  • Displays a balloon message near the tray icon. The message will disappear after a timeout or if user clicks on it.

  • A cross-platform release
  • Unlike a pure Java project, JDIC involves much native code, as it extends J2SE to bridge the gaps between the J2SE platform and the native desktop. In 0.8.x releases, we provided platform-specific releases (Windows, Linux, and Solaris). As of 0.9, we provided an additional cross-platform release. The developers can deploy applications using JDIC with this single cross-platform release. This greatly benefits pure Java applications, though, it increases the application size slightly.

Mac Support

Up to now, Apple's Mac OS X support has been added to most of JDIC features, though some of them are not yet provided in the 0.9 release. 

  • The Desktop Component (package jdic.jdesktop.jdic.desktop)
    Already supported on Mac OS X in release 0.9.
  • The Browser Component
    Based on Dmitry Markman's work on WebKit & Java integration, Christopher Atlan is working to port JDIC Browser component to Mac OS X. Check out the discussion.
  • The Tray Icon API
    Thomas Kuenneth released the first public preview of the MacTray project, whose goal is to deliver a clean-room implementation of the JDIC Tray Icon API for Mac OS X. Thomas will integrate the code into JDIC after solving some technical issues. Check out the discussion.

Initially, JDIC only had support for Windows, Linux and Solaris platforms. But for later features and APIs, we'll have the Mac OS X support in mind from the early design phase. 

JDIC Inclusion Into J2SE

Because of the popularity of JDIC we're taking a look at integrating parts of it into the "Core", the J2SE platform. This will significantly ease deployment of JDIC apps since all native code required will then be part of J2SE. The JDIC team is proposing to include a couple of JDIC features into J2SE 6.0 (Mustang) or 7.0 (Dophin). JDIC APIs have an advantage of being open source. With the available working prototype, we can see how the community use them, and then revise them accordingly.

We are revising the API specifications per the feedback from the J2SE team and the community for the inclusion:

  • The Browser Component
    Check out the discussion thread for detailed feedback and revisions.
  • The Desktop Component
    Check out the discussion thread for detailed feedback and revisions.
  • The Tray Icon API
    The Tray Icon API will go into J2SE 6.0, with some modifications to the JDIC Tray Icon API.

Your input will help to improve and finalize the API specs, before they are made available to all Java developers. 

JDIC Availability

As an Open Source project, JDIC website is the place to get all the latest information and releases. But in the next major release (Release 3) of Sun's Java Desktop System (JDS) operation system, and Solaris 10, which includes JDS Release 3, JDIC will be installed by default. It will no longer be necessary to install the JDIC Solaris PKG or JDS RPM on those operating systems. 

However, JDIC keeps moving forward, you can visit the project website to reinstall the latest releases.

Take A Look Ahead

JDIC continues to be a popular java.net access, which shows a significant adoption. It holds a set of Java packages and facilities to ease Java/desktop integration, but it's so much more than that. While we enjoy bringing you new releases, don't forget that JDIC is also a place to host incubator projects proposed and owned by developers. Want to bake your own Java/desktop integration API? Hosting it under the cover of JDIC lets your idea be more visible, make use of a common community, and more ...! You can find the incubator projects currently hosted in JDIC. Incubator projects after JDIC was initially launched are as follows:

  • Floating Dock Toplevel Window (package org.jdesktop.jdic.dock):
    A floating dock toplevel window that can be used to develop applications like the Gnome panel or the Windows taskbar.
  • Icon Service (package org.jdesktop.jdic.icon):
    Java API for accessing icons from native icon specifications.
  • SystemInfo (package org.jdesktop.jdic.systeminfo):
    Java API for monitoring system information, including the session idle time, the session locking state, cpu usage, network status, etc.

All these projects fit in the scope of Java/desktop integration. They are owned by the project owners, and developed at their own speed, with the support of JDIC QA engineers to ensure quality.

Besides these things on the plate of JDIC, we've consistently got new proposals and feature requests. Check out this incomplete list of feature requests, none of which is part of J2SE. And there are much more missing. Every now and then, we want to write a slick rich client application in Java that tightly integrates with the underlying desktop, but find that the necessary APIs are missing or incomplete on various platforms, including Windows, Linux, Solaris and Mac at least.

With that in mind, we are collecting requirement information, carefully addressing those most desirable features by engaging the community and aligning the work with 3rd party Open Source projects. We are looking for contributors, either expert individuals or from companies, to help define and build this community!

JDIC Presence at JavaOne 2005

Will you be in San Francisco during JavaOne 2005? The JDIC team will hold a BoF entitled JDesktop Integration Components (JDIC): Desktop Integration for Java Desktop Applications at JavaOne 2005, a presentation followed by an open mike or break out session. This would be an opportunity for project owners, contributors, and observers to meet each other and share our successes, failures, and frustrations of the JDIC project. 

The JDIC team is also applying for a POD in the booth area, to showcase the JDIC features, communicate with you face-to-face. If we make it, there'll be a notice to the project forum. Please drop by the booth and post your ideas or questions to us. The JDIC team looks forward to your input and meeting you at JavaOne 2005. 

More on JDIC

JDIC is far and away not the only resource for Java developers who need desktop integration, it's not yet complete either. But it's under active discussion and development. There are currently several developers submitting code to the core, and a large number of community members submitting patches and suggesting ideas. Changes happen everyday as more and more users want to extend it. Please get involved and post your ideas to the JDIC forum.





Powered by
Movable Type 3.01D
 Feed java.net RSS Feeds