A great deal of noise has been made about feisty fawn, the latest version of Ubuntu, and better support for Java and the NetBeans Java development environment. Better support for Java is a good thing, even a very good thing.
Most operating systems such as Linux, XP, Vista and MacOS are written in languages such as C and the closely related C++. These are traditional languages for writing operating systems. Since C was first written in 1972, it has come to dominate low level programming, where “low level” means close to the hardware representation of problems.
Since then there have been waves of higher level programming languages, embodying advances in software engineering and computer science to be “higher level:” to capture, represent and solve problems closer to the way the user thinks of them, rather than the von Neumann model of the underlying hardware. Java is one of these languages that has become particularly popular. Java has native representations of graphical interfaces, multi-threading, scope, object-orientation, complex data structures, non-western languages, documentation processing and much more, all missing from native C. While some of these were introduced in the later C++ and a myriad of competing libraries for both C and C++, C++s need for deep compatibility with C and lack of native support for library’s functions held them back.
Problems arise when languages such as C and Java are mixed. Java and C are like oil and water, and while there are methods of making them work together on a fine-grained scale, getting a whole system to work properly together is challenging. They use different instruction codes, linking formats, memory models, validation methods and so forth, too many differences. Other languages, such as Smalltalk and Scheme, have similar problems, their magnitude being related to the how much the language differs from C and the breadth of their offerings.
Integrating Java into Ubuntu raises a swathe of issues, some aggravated by the Sun (who invented Java) trying to retain control over the language. It’s good to see Canonical and Sun are now getting together to sort out some of these issues. Unfortunately, in this case, feisty fawn does not live up to the hype. The package for NetBeans is little more than a place holder—I still had to download the software from the NetBeans site (which I also had to do for some of the Java documentation oddly enough).
There doesn’t seem to be any deep integration either. The NetBeans internal system for downloading new packages and upgrades has no connection (that I can see) back to the Ubuntu system for new packages and upgrades. Other languages such as Perl have infrastructure in place to package new packages and upgrades for the operating systems native system, which is always going to be more robust, secure and reliable and has features such as updating running services.
Sun’s open sourcing of Java will fix these problems, I believe, once they release the whole system as open source. Enabling individuals and distributions to repackage Java for their own systems with their own tweaks will mean greatly enhanced Java integration and user experiences on those systems. On the other hand, it will probably also mean a less consistent integration, user experience and interoperability across all platforms, undermining (at least in the short term) the “write once, run anywhere” objective of the language.
Sources:
http://www.macworld.co.uk/news/index.cfm?newsid=17962
http://www.linux-watch.com/news/NS2347985166.html
http://news.zdnet.com/2100-9593_22-6177641.html
http://weblogs.java.net/blog/robogeek/archive/2007/05/some_openjdk_an.html
http://www.netbeans.org/
I experienced pretty much the same let-down once I had my basic Ubuntu 7.04 running. I went to get the java stack and I ended up installing Netbeans with the installer and then manually updating my alternatives, it was very manual, Gentoo manual which is the entire reason I switched, oh well. Also using anything SWING or AWT under Beryl failed unitl I followed some instructions walked me through patching the X portions of those libraries.