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

Re: Java Policy.

Ola Lundqvist wrote:
> Well I do not really understand this. Java code is supposed to be
> portable. If you compile it to machine binaries it is no longer a
> java program and should not be packaged as a such. Non java
> components should be extracted to a separate package IMHO.

I'm staying out of the main topic of this thread since I'm
not much into dselect or rpm packaging (prefer tarballs!).

However, I must point out that the above statement is totally
incorrect, and that compiling to native, of and by itself, does
not make a Java program "no longer a java program".  

A Java program may indeed consist of totally native code.  A 
good example is a JavaME program compiled to native to fit in
a small appliance or smart card architecture.  Such programs
are still Java programs in every sense of the word, even though
they are no longer in bytecode form, and no longer require a
standalone JVM to run (actually, the essential parts of the 
JVM have been compiled in).  Conversely, not all Java bytecode 
files are Java programs, such as bytecode files produced by Ada 
compilers (and yes that has been done).  Those would still be 
Ada programs, not Java programs.  In short,  bytecode != Java.

If (bytecode != Java), what does?  I'll tell you what does --
conformance with the full suite of JCK tests.  Sun grants their
stamp of approval, and ability to wear the Java logo, ONLY
when an implementation (JVM+tools+APIs) all pass the
respective JCK (Java Compatibility Kit) tests, of which there
were about 21,000 the last time I counted.  Passing JCK
is what makes something "Java."  Compiled-to-binary code can
pass JCK just as well as bytecode implementations.  I know this
for a fact because I used to be a JCK tester for a major bytecode
to native compiler vendor.  We were able to pass JCK in full
native mode, and Sun recognized this and granted the product 
full Java certification.

The problem with all 'free' Java implementations to date is that
none of them have been able to pass JCK because of Sun's ill
considered legal hang up with free software licensing.  Jakarta's
efforts at getting Sun to re-evalutate their position and say
at JavaOne that JCK will be made available to free projects is
of great significance -- for the first time, free implementations
will be able to tell if they are truly "Java" or not and, if
not, exactly why (i.e., which JCK tests they fail) and so know 
what must be done to become fully Java compliant.

In the meantime, efforts such as this packaging policy would do
well to keep the definitions straight.  To say things like
"native code != Java" and then base long-term packaging policies 
on such false notions will only lead to trouble later when JCK 
becomes available to free projects, and the fallacy of such 
thinking becomes more obvious.

 \ oo                       \____ http://www.jreality.com/ _______ 
__\ ____________________________________________________________ /_
   |                                                       _____/

To UNSUBSCRIBE, email to debian-java-request@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org

Reply to: