Gentoo Archives: gentoo-java

From: Andrew John Hughes <gnu_andrew@××××××××××.org>
To: gentoo-java@l.g.o
Subject: [gentoo-java] OpenJDK, IcedTea and Package Naming
Date: Thu, 11 Sep 2008 23:35:20
Message-Id: 17c6771e0809111635g66977bffgddd1ef8e8da56a7@mail.gmail.com
1 It seems there has been some confusion over the naming of the ebuilds
2 for OpenJDK/IcedTea
3 support within Gentoo, so, at Petteri's request, this e-mail aims to
4 clear things up and hopefully
5 alleviate some of these issues.
6
7 Understanding the naming really involves understanding the development
8 of OpenJDK so far.
9 The release of Sun's reference implementation of the Java SE platform
10 was completed in May 2007,
11 and this codebase was known as OpenJDK. This basically represents the
12 current state of what
13 will eventually become Java 1.7 or JDK7, the contents of which are
14 still unknown as there is no
15 JSR for this platform as yet. The platform specification does not
16 include the plugin or webstart support,
17 so, given the state of this code, it was not included. On initial
18 release, about 4% of the code base
19 was also missing, having to be replaced by proprietary binary plugs
20 from one of the proprietary Sun JDKs.
21 Thus, although we were much closer to a complete Free JDK, there were
22 three major issues remaining:
23
24 * The released code was for 1.7, not the 1.6 release actually in use,
25 and it couldn't be certified as Java(TM).
26 * The code couldn't be built Freely, preventing its use in Fedora,
27 Debian and Ubuntu.
28 * The plugin and webstart support which users would expect from a JDK
29 were missing.
30
31 Two of these issues were quickly solved by hackers at Red Hat who
32 started the IcedTea project. This provided
33 a way of building OpenJDK using existing Free Java runtimes such as
34 GCJ and provided replacements for the
35 encumbrances using code from GNU Classpath. gcjwebplugin was also
36 modified to provide plugin support
37 against Sun's applet code rather than GNU Classpath's, and the
38 existing NetX project continued its development
39 as part of IcedTea, providing webstart support. Resulting binaries
40 shipped as a package named 'icedtea' in
41 Fedora Core 8.
42
43 Over time, OpenJDK and IcedTea continued to develop. Sun provided
44 replacements for some of the encumbrances,
45 mainly in the area of Java2D such as font and renderer support, and
46 cryptography. IcedTea was kept up to date with
47 each new OpenJDK cooked build, by modification of the existing
48 patches. This continues today, with the latest
49 IcedTea release being 1.7. Ebuilds for both 1.7 and the live
50 Mercurial repository are held in java-experimental, as
51 they provide a snapshot of 1.7 development rather than a completed JDK
52 aimed at the user.
53
54 In early 2008, Sun began the OpenJDK6 project to provide a Free 1.6
55 implementation, and allowed external developers
56 (notably Red Hat) access to the Java Compatibility Kit (JCK) so that
57 the resulting builds could be demonstrated to be
58 compatible with the existing proprietary JDK6 builds provided by Sun.
59 OpenJDK6 was created, not from the proprietary
60 JDK6 tree (which would require another legal review on the epic scale
61 already undertaken for the JDK7 code), but by
62 taking the OpenJDK tree and removing new features added by Sun developers.
63
64 The issues with building the code and the encumbrances remained with
65 OpenJDK6 so a matching IcedTea6 tree was launched
66 to provide the same level of support to the new code base. It is a
67 build of IcedTea6 from Fedora that recently passed the JCK,
68 finally proving that a certifiable Free JDK implementation can exist.
69 Getting to this point was non-trivial, as the base of OpenJDK
70 and then additional patching by IcedTea meant that the codebase was
71 quite distinct from the proprietary JDK6 being shipped by
72 Sun, notably with some of the Free replacements for the encumbrances
73 being completely different code from the proprietary version
74 in JDK6.
75
76 In the java overlay, we currently have an ebuild for IcedTea6 1.2.
77 This matches the name of the upstream project and version. There
78 is also a live build in experimental, and 1.3 is likely to become
79 available in the next few weeks. On IRC, some have expressed dislike
80 for this naming, preferring including terms like 'OpenJDK' and the
81 cooked build on which it is based. This is further confused by the
82 binary builds in Fedora, Debian and Ubuntu now being called 'OpenJDK'.
83 This isn't because they just felt like changing the name.
84 Use of the 'OpenJDK' name is subject to the OpenJDK trademark license
85 and requires fulfilling certain conditions, including the codebase
86 being almost completely based on the tree from Sun.
87
88 In Gentoo, we work at the source level in general, whereas the
89 approach of Fedora, Debian and Ubuntu is from one of a binary package.
90 With OpenJDK and IcedTea, this presents some differences. The most
91 prominent is the use of the trademark license. With a binary
92 build, the distro developer knows what is in the binary and whether it
93 qualifies to be called OpenJDK. The source from which these binaries
94 are built is still IcedTea6, as may be demonstrated via executing
95 'java -version'. With Gentoo, the presence of USE flags and local
96 settings
97 mean that we don't know what will result from the ebuild in binary
98 form. Some builds will be roughly equivalent to the builds in Fedora,
99 Debian
100 and Ubuntu, but some may not. There is functionality in IcedTea, such
101 as the ability to use CACAO instead of HotSpot, that would mean
102 the resulting binary does not qualify to be called OpenJDK (such
103 packages are called cacao-oj6 in Debian and Ubuntu for example).
104
105 More practically, we need to be able to track bugs and issues with
106 ebuilds easily. IcedTea6 1.2 is a known quantity. It uses a certain
107 cooked build of OpenJDK6 and a certain set of patches. Moving to a
108 new build drop is non-trivial requiring patches to be added, dropped
109 or updated. IcedTea is more than simply a build harness and the
110 resulting binary is different from what would be obtained from a pure
111 OpenJDK source base. In addition to the OpenJDK source tree, it
112 includes (as of the current Mercurial tree):
113
114 * 81 patches to the source code, including one to allow the build to
115 run with ecj + GNU Classpath. Not all of these are applied
116 to every build, but the majority are.
117 * Gary Benson's zero assembler support which allows OpenJDK to be used
118 on ppc, ppc64, arm, mips, m68k, ia64, etc.
119 * Webstart support in the form of NetX
120 * Plugin support from gcjwebplugin (IcedTea plugin is coming soon with
121 LiveConnect support)
122 * Support for building using the CACAO VM instead of HotSpot (again
123 for other architecture support)
124 * Gary Benson's platform-independent JIT called Shark based on LLVM
125 * VisualVM support
126 * Javascript support via Rhino
127
128 In addition, there is always the option that someone may wish to
129 provide an ebuild that just builds the OpenJDK
130 or OpenJDK6 tree. Note that one thing already being considered among
131 the IcedTea developers is how to add the IcedTea version to
132 the java -version output because the lack of this is causing issues
133 with reporting bugs. By naming our ebuilds using the IcedTea schema,
134 and directly relating to our upstream codebase, we have already solved
135 this issue in Gentoo. Naming it OpenJDK would not reflect
136 what is being installed or the upstream being used.
137
138 For those who hate the aboration of having the version number as part
139 of the package name, note that this is intended to be short-lived.
140 As the discussion above implies, the OpenJDK6 tree is a stop-gap,
141 created to fulfill the need for a complete implementation now.
142 When 1.7 is released, IcedTea will become the primary JDK again and
143 IcedTea6 will cease development. At present, most of the
144 maintenance work for OpenJDK6/IcedTea6 is being done by the IcedTea
145 hackers; Sun only have Joe Darcy working on this. Their
146 concentration is on 1.7. Thus, we should really note our appreciation
147 of this work by naming the IcedTea project rather than
148 hiding it under the name OpenJDK.
149
150 When IcedTea6 hits the main tree, most of this will become irrelevant
151 anyway, as the virtual dependency should just do the right
152 thing and pull in IcedTea6. I don't intend IcedTea or any of the live
153 builds to go into the main tree, but are there for those who wish to
154 experiment.
155
156 Hope that clarifies things,
157 --
158 Andrew :-)
159
160 Support Free Java!
161 Contribute to GNU Classpath and the OpenJDK
162 http://www.gnu.org/software/classpath
163 http://openjdk.java.net
164
165 PGP Key: 94EFD9D8 (http://subkeys.pgp.net)
166 Fingerprint: F8EF F1EA 401E 2E60 15FA 7927 142C 2591 94EF D9D8

Replies

Subject Author
Re: [gentoo-java] OpenJDK, IcedTea and Package Naming "Petteri Räty" <betelgeuse@g.o>
Re: [gentoo-java] OpenJDK, IcedTea and Package Naming Robert Burrell Donkin <robertburrelldonkin@×××××.com>
Re: [gentoo-java] OpenJDK, IcedTea and Package Naming Philipp Riegger <lists@××××××××××××.de>