Java issues

Requirement

To host your project at Savannah, your project needs to run under a free software Java suite such as IcedTea or GCJ + GNU Classpath.

Explanation

Free Java is moving forward, but not completely yet.

Sun recently released code from the JDK v1.6, but not all of it. Some of the code cannot be released by Sun under the GNU GPL and need to be replaced. Currently this means you need to get "binary blobs" to get a fully functionnal Free JDK from Sun.

That's why it is important to rely on a completely free Java suite. Until a completely free OpenJDK is out, relying on Sun's Java is not acceptable yet. A Java suite is made up of 3 parts:

  • a compiler,
  • a Java interpreter, called JVM or Java Virtual Machine (unless you compile natively),
  • and a Java API library.

(This problem is very similar to the issue that occured a few years ago when the Qt library was nonfree yet still used by free software project.)

The free software Java suite we recommend is:

  • GCJ, the GNU Compiler for Java, part of the GCC (GNU Compiler Collection); Compiles to either .class or native executables;
  • GIJ, the GNU Interpreter for Java, also part of GCC;
  • and GNU Classpath, the free replacement for the Java API (the classes in the java package).

With IcedTea, this becomes:

  • Compiler: OpenJDK javac
  • JVM: OpenJDK java
  • Class library: OpenJDK classes minus binary blobs, completed using Classpath and possibly dedicated code

What we expect is that you make sure your Java application compiles and runs under a free one, now and in the future.

If your project runs fine, your project meets this requirement. If not, we ask you to modify your project so that it does.

If you did not start coding your project, you should definitely consider using another programming language.

FAQ

What about blackdown?

Sun's is not the only proprietary Java suite. Blackdown is not free either.

What about J2ME?

J2ME is not really Java (aka J2SE). J2ME (Java 2 Micro Edition) is meant for very small chips and smartcards (the ones in your next cell phone or credit card), without garbage collectors or even floats. I think Sun actually plays a very small part in it (it's rather a brading job, plus applying naming conventions) - and I don't think GCJ can be a free replacement for it right now (a bit of background).

Sun now plans to release J2ME as free software as well :) This is done progressively.

phoneME is a first free J2ME release, under the GNU GPL (minus some hardware support for certain chipsets and devices that Sun's partners didn't allow them to release under the GPL).

I carefuly follow the API, and do not make use of the com.sun package. Is it enough?

No, you need to test your application and make it work, right now, under a free software java suite. Relying on a standard, be it de facto or de jure, does not in itself free your application from proprietary dependencies.

Are there other free Java suites?

You can have a look at kaffe (JVM), sable-vm (JVM), jikes (compiler)...

As far as I know, all free Java suites use GNU Classpath, at least partially.

Check the links below for more information.

Further information

We recommend you read Richard Stallman's Free but Shackled - The Java Trap, to understand the ethical problem.

For technical help (servets...), the Debian manual may be useful.

Also, the free-java-sdk Debian package aims at providing an all-working Java environment.