> 1) Is the source code necessary for any reliable port 
>    of the JDK to Linux?

Definitely. The JDK consists of a few components: the Java virtual machine
itself, the java.* class hierarchy, the native code which supports the
class library, the Java source for javac and so on. Some of this code is
written in C, some in Java. The work of the Linux porters has (I think)
being mainly related to porting the C parts of the JDK to run on Linux,
as Linux is not exactly the same as Solaris.

> 2) Is Sun selective when licensing the source 
>    code? If so, what guidelines do they follow when
>    determining who gets a license?

Not particularly. If you look closely enough when you're downloading
a binary distribution you should spot a link which leads you to the
details of how to get a copy of the JDK source code. (I'm not being
obstructive by not giving a URL here - I'm not connected to the 'net
when I'm writing this...)

The procedure is that you download the license agreement file that they
provide and print it out. You read the agreement, fill out the form
at the back (just Name, Address, E-mail and such), sign it and fax it
to Sun. After some time someone will email you to let you know whether
they could read your fax and if so give you the URL of your JDK source
distribution. You have a limited amount of time to download it, so make
sure you don't send the form to them just before you go on holiday!

Once you've downloaded the JDK source from Sun you should be able to
get hold of the patches which the Linux porting team have had to make
in order to build the JDK on Linux. You'll also need a development copy
of Motif or Lesstif. You apply the patches and tweak a few bits and then
you can build your own Linux JDK distribution.

Note that I do not know how many people would qualify as members of the
Linux porting team, nor how you get to join the team. I'm not a member
myself (I don't have time to comit to the project right now). I would
hope that showing an interest, finding bugs and submitting fixes would
be the kind of thing that gets you involved.

I don't know how the team organise their development work. Obviously,
because of the restrictions Sun place on their source code the Linux
porting team can't stick their source base on a anonymous CVS server, for
example. Similarly, they can't post a 40 line chunk of the JDK source on
this list and say "I think there's a bug on line 18, what do you think"
without worrying that Sun might come down on them.  They are explicitly
allowed to post their diffs by the non-commercial license.

> 3) What general restrictions does the license place on the 
>    holders' porting efforts.

What I described above gets you a non-commercial license for the
source code. This allows you to look at the source and play with it
as long as you're not doing it for commercial gain (the exact terms:
"... for internal evaluation, research and educational purposes only").
The license explicitly permits you to distribute binaries which you
create from your JDK source as long as you do it for free, don't link
it into a separate product, stay compatible and stick to Sun's
license. If you want a commercial license to do more than this you
need to give money to Sun.

Personally I'm not sure what Sun would have as commercial or productive
use that violates the agreement. For example, I work on Java at work and
have a copy of the source at home. I sometimes read the source to find
out why a particular function works (or doesn't work) in a particular way.
I also have a better understanding of how Java works from looking at the
source code, and so could go and get work on that basis.  I guess this
could be construed as commercial use. I guess I'm relying on Sun being
generous in these cases.

> 4) Does Sun's recent announcement regarding supporting 
>    Java on Linux mean in effect that they are willing to
>    license the source to a certain development team or does it
>    mean that Sun themselves will be doing the port?

As I understand it, the Linux porters have, until recently, gone through
the steps I outlined above. They've filled in the forms, downloaded the
source, applied patches and built their binaries. I believe that Sun have
recently allowed the core members of the Linux porting group access to the
source code on a basis similar to that extended to commercial licensees.
For example, they now have advance access to JDK 1.2 source and a test
suite to ensure compatibility.

This means that the Linux porting team now have access to source which the
rest of us will have to wait awhile to see. I'm not too worried by this:
I think it's good that the people who are prepared to put work into the
project can progress it like this. Open-ish-Source Software, if you like.
I don't believe that Sun's announcement means that they will be doing
the port themselves. I don't even know whether they may be more likely
to take patches from the Linux porting team given their new status.
I don't know how you would go about becoming a member of the porting team
in order to gain access to the resources which Sun have made available.

One of the other things which I feel I should point out: until recently
I didn't realise that the JDK releases which Sun distribute through
their Java division are essentially reference implementations of the
Java environment. They _aren't_ supported for production systems, to the
best of my knowledge. Sun's Solaris division supply a JDK 1.1 production
release for Solaris machines, and this production release presumably
differs from the reference implementation in some of its details.

A couple of things drop out of this: firstly, the Linux porting team are
probably trying to build a production Java release on the source base of
Sun's reference implementation. I'm not saying this is a bad thing (in
fact I think it's the only way given Sun's licensing position as I know
it). I mention it to give an idea how much work is involved. This means
that the Linux porting team can't rely on the reference implementation
being bulletproof, for example. It explains why they often mention Sun
bugs which they have fixed.

The second thing which drops out of this relates to the Windows platform.
As I mentioned above, Sun ship a production-quality JDK for Solaris. They
don't ship a production release for Windows - in fact, they only ship
the reference implementation. The license to produce the production
Windows Java port has been bought by (or sold to) Microsoft, and is
the Java implementation underlying Internet Explorer.  This is why it
matters alot that Microsoft's JVM is incompatible with the reference
implementation in some ways.

I hope this clarifies things a bit. And I'm sure that someone will be
quick to correct me if I my understanding doesn't match the facts.

-Mark.

Reply via email to