Simon Phipps on the Process of Opening Java
twofish writes "Simon Phipps, the chief open-source officer
at Sun Microsystems, has reaffirmed Sun's
commitment to Open Source in an interview
with computerworld.
The focus of the interview is Simon's efforts to fully open source Java.
He points out that many problems need to be resolved before
Java can be open sourced — ownership, legal, access, encumbrances and relationships
with Java licensees. It took Sun a full five years to solve these issues with
Solaris. However Simon predicts that it won't take anything near this amount
of time to complete the task with Java.
Of course, one of the other concerns for OS Java is the resulting incompatible
versions and breaking of the Java WORA
model (Gosling himself has always been particularly concerned about incompatible
forks resulting in the introduction of an open source version of Java) and this opens
up additional problems for the open source Java model."
or at least talk about some facts. All we hear from Sun is blabla about how they will open-source parts of Java in one or two years. What i want to know: -Which parts of Java? -WHICH LICENSE ?
In my experience, the WORA model was broken from the beginning.
The majority of "interesting" Java applications I've seen were restricted to a single platform for various reasons, mostly because they apparently (somehow) were making platform-specific system calls. (I don't know the exact details of this, all I DO know is that there are plenty of Java applications out there that are restricted to a single platform for whatever reason. I may be wrong about the reasons, but the fact is that WORA failed on the desktop)
What about WORA for J2ME (i.e. on mobile devices)? The situation seems even worse. If you go to the download site for nearly any Java game designed for mobile phones, they will list different downloads for every model of phone they support, with varying filesizes. Not a single Java application designed for other phones has worked with the JVM available for PalmOS 5 devices such as my Treo 650.
If WORA had ever actually worked, I'd accept Java's unwillingness to break it. Unfortunately for that excuse, it's hard to break something that is already broken.
retrorocket.o not found, launch anyway?
I don't know about your definition of interesting but most of the java stuff I work with on a daily basis works unmodified on the three big desktop platforms (and probably everything else that runs java 1.5) and does so for the ten or so years I've been developing Java. This stuff combined is probably several million lines of code. Also all of the stuff I write in Java is 100% crossplatform, barring the odd jdk bug that somehow fell through the 60000 or so unit tests they unleash on the jdk nowadays (just a disclaimer, can't recall ever encountering one). In my previous company we developed on windows, had staging servers running linux and deployed more or less blindly to our customer sites running windows 2000, 2003, various flavours of linux and even some sun machines. Worked every time. Portability was never an issue. Not even having to test for portability issues is a huge time and cost saver.
A good example of a portable J2ME app is opera mini which exists in only two variants the both of which work across pretty much all java capable phones except maybe for the really crappy ones, such as your Palm based one (blame Palm, not Sun). J2ME is a modular specification which unfortunately leads to the interesting situation that the more of the modules your app uses the less portable it becomes. Pretty much all of the modules are optional and with MIDP 1.0 many vendors added loads of vendor specific APIs as well. Many applications written for that mixed bag of standard and non standard extensions are not portable.
MIDP 2.0 mostly removes the need for vendor specific APIs (though many vendors still ship them). Upcoming MIDP 3.0 is even better apparently. of course many games need to make assumptions about device specifics (e.g. screen size, number of colours, keyboard layout) which unfortunately leads to many portability issues. These problems are hard to solve and currently J2ME seems the best solution the market has come up with. Most device specific binaries of J2ME apps merely include some minor modifications, optimizations and packaging. I agree that testing for all that is a major PITA for developers. If you have a better solution that works for non trivial applications across the thousands of different brands and types of mobile phones, get some venture capital and get rich!
Jilles
I haven't had to cast an object since I started using java 1.5 18 months ago. Generics, look into them. Also, you can put primitives into collections (via autoboxing).
Java 1.5 made the language a LOT nicer and more expressive.