What We Do
We have two objectives in the java-gnome project. First and foremost, we seek to achieve:
You might think this goes without saying, but our target audience are people who are Java programmers who happen to be using GNOME on Linux or Solaris and who just might like to write an application and want it to look good and therefore want to write it in GTK.
The existing pool of people with Java expertise is enormous and yet have been largely ignored by the Open Source movement over the years. More than anything, we'd like to ensure we give these people the power to write rich desktop programs and clients, and in the process bring a whole new crowd of people into the amazing world that is GNOME and Software Libre.
The GTK APIs themselves are powerful but with that richness comes complexity and much detail that must be mastered. In its native C, GNOME programs are very nearly impenetrable, certainly exceedingly verbose, and brutally difficult to debug, making it very difficult for people to learn how to write applications. These are all areas where java-gnome is a great improvement. We take every effort to make GTK easy to learn and as fun to develop with as possible. The combination of a naturally object-oriented language like Java along with the code completion features of a rich IDE like Eclipse make for a really excellent development experience.
If we do our job right, then newcomers who have chosen to write a GTK app from Java to quickly learn for themselves how to go about doing what they need to do.
This doesn't mean we don't do things differently than a Java programmer might expect! After all is said and done, the primary technical goal of the java-gnome project is:
TO PRESENT GTK AND GNOME WELL
We do our best to provide an excellent representation of the GNOME libraries — especially GTK — in Java.
Note that we're not trying to come up with some idealized watered-down middle-of-the-road please-everyone toolkit that looks like all the other toolkits just because that's the way they work. Rather, we're trying to do as effective a language binding to the underlying GNOME libraries as we can possibly come up with, consistent with the goal of approachability and the design constraints we decided to adopt.
If you'd like to know more about the background, design, and architecture of java-gnome 4.0, please see the design pages in the documentation section.
This is an edited version of the Objectives and Audience proposal originally made by Andrew Cowie to the java-gnome-hackers mailing lists. These ideas have subsequently been presented at numerous events worldwide and have received enthusiastic support.