<AWT Dev> Merge CacioWeb

Mario Torre neugens.limasoftware at gmail.com
Tue Jan 3 01:53:24 PST 2012

Hello all,

I would like to ask a question about the future directions for Caciocavallo, and CacioWeb.

As you may already know, Cacio is a project we started for the OpenJDK Innovators Challenge and was aimed at refactoring the graphics code in OpenJDK to allow custom peers (and hence easy the portability of the platform to new systems).

It evolved from the set of patches necessary to allow plugging of a custom backend, to a full abstract implementation of the AWT peer code and has been quite successfully used in commercial environments for quite a lot of time, and it is now in maintenance mode since at least a couple of years, apart from some small patches and fixes that land from time to time.

I think that the level of activity justifies to start thinking about the future and the final merge of the project on the JDK repositories (I think JDK8/JDK9 timeframe would be the goal).

As I introduced, Cacio started as a series of JDK6 patches to enable custom graphics backends (and required a custom build of the JDK at the time), but those patches were all formally included in the JDK7, so today is already possible to use a Cacio based peer on JDK7 onward by just adding the shared Caciocavallo and peer code jar file without any extra patch or custom build. This makes a lot of sense, since Cacio is formally separated by the JDK, but at the same time puts some efforts on our side, since we need to maintain different versions of the project for each JDK release (major release). We decided to address this issue by only following the latest development version, while we tag a release where backward compatibility is known to break, and this approach seems to work quite well.

On the other end, it could make more sense to include Cacio in the build process of the main JDK, especially since the only usable peer (and the only being actively developed) is currently the HTML5 one, and by integrating this in the JDK forest as well, my hope is to enable builds to pass (or be tested against) the TCK.

I also hope that by having the code directly integrated in the JDK we will be able to reach more testers and fix more issues, since now Cacio is used in very specific environments only.

In addition to that, in order to support the web peer, we are implementing a number of features that will surely be beneficial for the Java ecosystem, like client filesystem support over the HTML5.

I believe that those additions could be very useful, and we call this project internally as WebJDK (spoiler: we will unveil something at FOSDEM if you would like to attend and are interested).

I know that based on the new rules I will have to formally propose a project, but before doing this I want to see if a formal WebJDK would be something interesting for the community and not only for us, and if Cacio would be likely to be integrated in the JDK, or if you prefer the current situation where it's a separate library.

If accepted, the WebJDK will include a custom JDK8 forest (or perhaps just the patches since are easier to manage) with all the code needed to enable web support (filesystem, deployment code, etc...), plus Cacio and the HTML5 peer code.

We will develop this in the JDK8 timeframe and hopefully merge everything that makes sense in the "real" JDK9 forest.

Any ideas, suggestions, criticism?

pgp key: http://subkeys.pgp.net/ PGP Key ID: 80F240CF
Fingerprint: BA39 9666 94EC 8B73 27FA  FC7C 4086 63E3 80F2 40CF


IcedRobot: www.icedrobot.org
Proud GNU Classpath developer: http://www.classpath.org/
Read About us at: http://planet.classpath.org
OpenJDK: http://openjdk.java.net/projects/caciocavallo/

Please, support open standards:

More information about the awt-dev mailing list