2.1 What full-fledged Java development platforms are available in Debian?
If you are looking for an integrated, java virtual machine, compiler and
runtime environment Debian does provide them. Of course that would depend on
the Debian GNU/Linux version you are using, generally speaking they would be:
2.3.1.1 Why is Sun's Java 2 SE (aka jdk 1.2) not available?
Due to license problems. Clause 2 of the license
(check also the FAQ)
that comes with is says:
Software is confidential and copyrighted. Title to Software and all
associated intellectual property rights is retained by Sun and/or its
licensors. Except as specifically authorized in any Supplemental License
Terms, you may not make copies of Software, other than a single copy of
Software for archival purposes.
2.3.1.2 What are the problems with Suns' new license?
Sun has moved to a new license the Sun Community License, like the GPL
it is a viral license, but making all it touches subject to Sun licensing fee.
The SCSL even goes so far as to define any implementation of a Sun
specification as a "Modified Work". Basically, this means that if
you implement any part of the new 1.2 API or Jini API, even from scratch, Sun
will "own" your implementation and you will have to pay them for the
right to use it.
13. "Modification(s)" means (i) any change to Covered Code;
(ii) any new file or other representation of computer
program statements that contains any portion of Covered
Code; and/or (iii) any new Source Code implementing any
portion of the Specifications.
2.3.1.3 What is the SCSL?
The SCSL is the "Sun Community Software License" that can be found
http://java.sun.com/communitysource/.
It is not compatible with Free Software for several reasons, and agreeing to
this license (e.g. by downloading source covered by the SCSL) will make it
impossible for you to contribute to free software clean-room implementations.
According to Sun, this includes using documentation and API specifications
available only under SCSL.
To quote one open source developer, the SCSL is "about as free as the
former Soviet Union".
2.3.1.4 Can I use jdk1.2 while working with the free Java implementations?
Clause 1 of the Supplemental License Terms says:
[You] may not create, or authorize your licensees to create
additional classes, interfaces, or subpackages that are contained in
the "java" or "sun" packages or similar as specified by Sun in any
class file naming convention;
Which seems to prevent one from making his own implementation of the standard
Java classes using the JDK.
However, it is unclear whether or not the word `additional' includes
reimplementations of existing classes, or whether it applies only to classes
with new names.
2.3.1.5 Why is (some) free software not implementing Java2?
Sun has made public statements in connection with their legal strategy in the
Sun-Microsoft lawsuit that indicate that the company considers the published
specifications of Java2 to be intellectual property that can not legally be
used by persons involved in efforts to create Java2 clean-room implementations.
For this reason, some open source projects have decided to not implement Java2
any time soon. One example is Kaffe. Some projects (like the Japhar/Classpath
project) have decided to challenge Sun's legal position and are going ahead
with Java2.
2.3.2 IBM's jdk1.1
2.3.2.1 Can Debian distribute IBM's jdk1.1?
It seems not. It has the following license:
Program Code
Consists of the IBM Developer Kit for Linux(R), Java(TM) Technology Edition,
Version 1.1.8, in Binary Code form, as modified by IBM to run on the RedHat(R)
6.0 Linux or Caldera(R) OpenLinux 2.2 Operating systems. The Program Code
consists of the Java virtual machine, the Java platform core classes and
supporting files (also known as the Java Runtime Environment or JRE) Java Tool
Kit, Documentation and Java Samples. Program Code may include soft copy
documentation, readme files, program data and such like.
You may only use the Program Code if you are a current licensee of Redhat 6.0
Linux or Caldera OpenLinux 2.2 Operating systems and the Program Code may only
be used in conjunction with such products.
1. License to Distribute. You are granted a royalty-free right to
reproduce and distribute the Software provided that you: (i)distribute
the Software complete and unmodified, only as part of, and for the
sole purpose of running, your Java applet or application ("Program")
into which the Software is incorporated;
We might get away with this one since we distribute it together with Java
applications bundled with Debian. But we also do want to allow people to
download only the jre package.
(ii) do not distribute additional software intended to replace any
component(s) of the Software;
But we cannot agree to this one. We want to distribute Kaffe, Japhar,
Classpath, Gcj, Kopi, Fastjar, etc which are intended to replace the JRE with a
Free version. Even if we don't consider non-free part of Debian (the JRE would
not go into main :) I think we should not encourage software that tries to
prevent Free replacements.
[...] (v) may not create, or authorize your licensees to create additional
classes, interfaces, or subpackages that are contained in the "java" or
"sun" packages or similar as specified by Sun in any class file naming
convention;
My example why this is a bad clause was not so good since someone pointed out
that you do not want to create something that is non standard. I do agree that
we want a standard implementation of the core classes, but I also think that
you should have the freedom to create non-standard classes. (Or fix bugs or
stupid mistakes in the standard classes.)
[...] and(vii) agree to indemnify, hold harmless, and defend Sun and its
licensors from and against any claims or lawsuits, including attorneys'
fees, that arise or result from the use or distribution of the Program.
And I don't think that Debian (or SPI) can or wants to do that.
So I am afraid that we also cannot distribute the Sun or Blackdown JRE. This
isn't that bad since it is non-free software, but it is annoying. As I said
before please help one of the (many) Free Java projects out there if you want
to see a Free JVM, Standard Classes, Compiler, etc. in Debian. They are far
from complete but they do work for most purposes
2.3.4 GPL or LGPL?
Java uses dynamic linking at runtime. Using the reflection API and class
loading, the linking can be completely data driven, specifying classes and
methods by name. This moves the legal issues of using GPL'ed Java code into
the user's hands, as a violation of the GPL can not be proven from the
executable itself. Unlike plugins, Java classes do not even have to have a
specific structure to be used in such ways. By using native methods and
selecting DLL's at runtime, this problem might also affect native code.
Example: a GPL'ed Java dependency checker using the reflection API. Java's
runtime linkage, in particular the reflection API, blurrs the lines between
code and data even more than e.g. native plugins.
If you want to write Java code that can be used without the user having to
worry about licensing issues, consider using the Lesser GPL (LPGL). If you
want to avoid seeing your classes and packages being used by non-free software,