[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: java2-runtime, was Re: Bug#227587: [PROPOSAL] Java library dependencies



Hi Jerry,

Jerry Haltom wrote:

What I think we MUST do is aim to have a end user application, that runs
on Java, work as expected. To this end, I see java2-runtime being
provided by runtimes that conform to Sun's published standards, and no
others. However we verify that is up in the air. Additionally,
applications can conditionally depend on other VM's KNOWN TO WORK.

I don't even know if this fits in with the current thread. I just wanted
to say it. :)

The trouble is, that "conforming to Sun's published standards" (i.e. javaX-runtime) has turned out to be a fundamentally flawed concept in practice. It works on the premise that there is binary compatibility between releases of JDK.

Unfrotunately, there is no such thing. See the documentation for the JDKs for a list of "official" incomatibilities introduced by Sun between each release. Or see the threads about new java policy proposals on debian-java last september/october between Jan and me for a longer explanantion and pointers to documents.

One of the major issues in practice where the binary compatibility theory breaks: There are (many, unfortunately) applications that use classes in sun.* packages. These applications *may* work[0] by pure chance and incident on one particular version of a non-free runtime, and *may* (and occassionally do) break on another, despite the different non-free runtimes being both officialy conforming java runtimes.

The only hope I see for turning binary compatibility from a marketing myth into reality is to educate developers to write portable java code, and to convince people to work with and contribute to GNU Classpath[1] and free runtimes, like kaffe[2], gcj, sablevm etc.

Until then, specifically depending on the runtimes that work, seems to be the only way to make sure things work 'out of the box'.

cheers,
dalibor topic

[0] Of course, there is no chance those apps would work on the free runtimes, anyway. Reimplementing undocumented, unofficial, bound to change "APIs" is a pointless excercise in reverse engineering, so no free runtimes are going to implement the sun.* classes, afaik.
[1] http://www.gnu.org/software/classpath/classpath.html
[2] http://www.kaffe.org



Reply to: