What is Ubiquity?
The goal of Ubiquity is to extend the current features of Java into a platform independent abstraction corresponding to the standards of each platform (native experience) so that applications can really be deployed across platforms without alienating or confusing the users of the respective platform.
Ubiquity will be implemented first of all for Mac OS X, Windows XP, Windows Vista and Linux. It is planned to work for standalone and Webstart applications. The architecture of Ubiquity is designed so that additional – as yet unknown – platforms can be added without requiring change to existing code. The functionality of Ubiquity includes amongst other things:
- storage conventions;
- menus and actions;
- extended drag-and-drop functionality.
Because of its functional range Ubiquity cannot be "Pure Java" and must contain JNI functionality which is, however, not visible to the user or the programmer. The project JNA is a candidate for this functionality.
From the programmer's point of view, Ubiquity means that you no longer write code which executes different actions depending on the platform and which is strewn with ugly conditional statements.
Ubiquity was originally conceived as a complement to the Swing Application Framework (JSR-296), but does not require this and can be used in all Java programs.
The project has synergies with various projects of Swing Labs as well as MRJ Adapter and will use these where it makes sense.