Skip to main content

Where's JDIC Going?

Posted by georgez on March 24, 2005 at 8:41 AM PST

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.

Related Topics >>