Previous Next Contents

3. Java as Freely Redistributable Software

Many Linux programmers are attached to producing freely redistributable software (FRS), and try to avoid committing a lot of time to tools for which sources are not generally available. In this section, we discuss Sun's and Java's relationship with the FRS world.

(Warning: I am not a lawyer. I am neither employed by, nor an agent of, nor a stockholder in, Sun Microsystems. This section is based on my interpretation of the current copyright law and the Sun licensing language. Treat this as an introduction; the Sun licensing page, http://www.blackdown.org/Java/licensing.html is definitive. If you are in serious doubt about what it means, consult an attorney.)

3.1 Are Java programs and applets freely redistributable?

They are if you write them and choose to make them FRS through some mechanism (such as the GPL, or a BSD-style license, or declaring them public domain).

3.2 What can I do with Java implementation binaries?

The Sun licensing page has this to say:

The unmodified Java and HotJava binary releases may be redistributed free of charge in both commercial and non-commercial applications.
Also:
Companies or individuals who wish to create a new port of the Java language have the right under this agreement to post the binaries of that port to the Internet for use by others, as long as the port is free of charge and passes the publicly available test suites. (Test suites will be available sometime in the first half of 1996.) The "diffs" may also be posted on the web as long as the underlying source code is not posted. The Java source code is
So if you've got a working Java or HotJava binary, you can give it to your buddies. Or put it on a CD-ROM. Or do anything except patch it and represent the patched version as Java. (This is reasonable. Sun obviously can't leave itself without recourse against Trojan horses sailing under the Java banner.) Binaries are FRS.

3.3 Which parts of the Java sources are freely redistributable?

According to Sun's licensing page, none of it is. But that sounds harsher than it is. In practice, anyone can get the Java and HotJava sources for educational, porting, and non-commercial purposes by filling out a Web form which obligates them not to redistribute the sources. And the agreement does permit redistribution of diffs against the sources.

The only circumstance that requires you to sign a commercial license with Sun and pay them money is if you want to use the sources in a commercial product. In particular, the way the language is written, it's within the letter and spirit of the agreement for you to sign Sun's noncommercial source license, snarf the source, port it, and give away the resulting binaries as completely unencumbered freeware!

Sun says that its primary purpose in keeping as much control as it has is to keep the language from mutating into incompatible dialects. The license language supports this; it seems to have been designed to allow hackers to play for free.

3.4 What is Sun's attitude towards FRS Java implementations and tools?

The Sun licensing page says:

The specifications for the Java Language and the Java Virtual Machine are OPEN and are copyrighted by Sun Microsystems, Inc.
Reimplementations of the Java Compiler or the Java Runtime Interpreter are permitted without requiring a license from Sun provided such implementations are created directly from the published specifications and without the direct or indirect use of Sun's own implementations or other intellectual property rights, including trademarks.
So if you want to go to the effort of creating a Java clone from the published specifications that is FRS, Sun won't stop you.

Sun people use the term "rogue port" for Java implementations that either (a) are performed outside Sun, or (b) don't rely on Sun-licensed code (sometimes the term seems to mean one thing, sometimes the other). They seem to think some of these already exist, but we don't know where they are, nor if they are FRS. They're pretty relaxed about the situation.

Sun has a Java validation suite. They have said they'll certify any Java port that passes it. (Whether this validation will cost money is unknown, but Sun says in writing that the suite wil be "publicly available" in 1996, which at least hints that it will not.) They're prepared to certify rogue ports, though this apparently hasn't happened yet.

3.5 Is anyone cloning Java in freely redistributable source?

There is a clone of the Java compiler in early development. It's called guavac. You can find more information at http://http.cs.berkeley.edu/~engberg/guavac

There was a rumor afloat that Cygnus Software's GROW project has plans for a Java byte code interpreter to be issued under GPL. This is false; what they are working on is a Java to Scheme translator that doesn't go through J-code. You can get details on the GROW project at http://www.cygnus.com/tiemann/grow/.

Erik Troan of Red Hat and your humble editor are attempting to put together a development group to do the rest of the job. Right now it looks like we'll use guavac as the compiler, Erik will do the class library and your humble editor will do the byte-code interpreter (if Cygnus hasn't gotten there first). This project was tentatively named "Mr. Coffee" but will now probably be JOE (for Java Open to Everyone).

3.6 Are there any FRS Java Tools?

There is a GNU Emacs mode for editing Java. You can fetch it from ftp://java.sun.com/pub/java/contrib/emacs. Note: this mode assumes you're using c++-mode.el, and won't work with the cc-mode.el distributed with Emacs 19.


Previous Next Contents