1 | <?xml version="1.0" encoding="ISO-8859-1"?>
|
---|
2 | <!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
|
---|
3 | "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
|
---|
4 | <!ENTITY % general-entities SYSTEM "../../general.ent">
|
---|
5 | %general-entities;
|
---|
6 |
|
---|
7 | <!ENTITY j2sdk-download-http "http://freshmeat.net/projects/sunjdk">
|
---|
8 | <!ENTITY j2sdk-download-ftp " ">
|
---|
9 | <!ENTITY j2sdk-bin-size "35 MB">
|
---|
10 | <!ENTITY j2sdk-src-size "77 MB">
|
---|
11 | <!ENTITY j2sdk-src-buildsize "1810 MB">
|
---|
12 | <!ENTITY j2sdk-time "85 SBU">
|
---|
13 | ]>
|
---|
14 |
|
---|
15 | <sect1 id="j2sdk" xreflabel="J2SDK-&j2sdk-src-version;">
|
---|
16 | <?dbhtml filename="j2sdk.html" ?>
|
---|
17 | <title>J2SDK-&j2sdk-src-version;</title>
|
---|
18 |
|
---|
19 | <sect2>
|
---|
20 | <title>Introduction to j2sdk</title>
|
---|
21 |
|
---|
22 | <para>The <application>J2SDK</application> package contains Sun's
|
---|
23 | <application>Java</application> development environment. This is useful for
|
---|
24 | developing <application>Java</application> programs and provides the runtime
|
---|
25 | environment necessary to run <application>Java</application> programs. It also
|
---|
26 | includes a plug-in for browsers so that they can be <application>Java
|
---|
27 | </application> aware.</para>
|
---|
28 |
|
---|
29 | <para>
|
---|
30 | The <acronym>JDK</acronym> comes in two flavors, a precompiled binary and a
|
---|
31 | source package. Previously, the plugin included in the <acronym>JDK</acronym> binary
|
---|
32 | package was unusable on <acronym>LFS</acronym>
|
---|
33 | owing to incompatibilities with <acronym>GCC</acronym>-3 compiled browsers.
|
---|
34 | This is not the case anymore.</para>
|
---|
35 |
|
---|
36 | <para>The source package requires registration at the Sun
|
---|
37 | developer site and accepting the Sun Community Source License.
|
---|
38 | The source code cannot be downloaded from some countries, so for users
|
---|
39 | from those countries, the binary may be the only option.</para>
|
---|
40 |
|
---|
41 | <para>Even if you plan on compiling the <acronym>JDK</acronym> source, you will
|
---|
42 | need to download the binary version to bootstrap the <acronym>JDK</acronym>
|
---|
43 | build. Follow the link below to download both source and binary packages. When
|
---|
44 | downloading the source also download the <application>Mozilla</application>
|
---|
45 | headers package available at the same location.</para>
|
---|
46 |
|
---|
47 | <!--
|
---|
48 | <para>For users who cannot download the <application>J2SDK</application> source owing to license restrictions, <application>blackdown
|
---|
49 | </application> has an <acronym>GCC</acronym>-3 based precompiled version.
|
---|
50 | Check out <ulink url="http://www.blackdown.org/"/> for more
|
---|
51 | information.</para>
|
---|
52 | -->
|
---|
53 |
|
---|
54 | <sect3><title>Package information</title>
|
---|
55 | <itemizedlist spacing='compact'>
|
---|
56 | <listitem><para>Download (HTTP): <ulink
|
---|
57 | url="&j2sdk-download-http;"/></para></listitem>
|
---|
58 |
|
---|
59 | <!--
|
---|
60 | <listitem><para>Download (FTP): <ulink
|
---|
61 | url="&j2sdk-download-ftp;"/></para></listitem>
|
---|
62 | -->
|
---|
63 | <listitem><para>Version used (binary):
|
---|
64 | &j2sdk-bin-version;</para></listitem>
|
---|
65 | <listitem><para>Download size (binary): &j2sdk-bin-size;</para></listitem>
|
---|
66 | <listitem><para>Download size (source): &j2sdk-src-size;</para></listitem>
|
---|
67 | <listitem><para>Estimated Disk space required:
|
---|
68 | &j2sdk-src-buildsize;</para></listitem>
|
---|
69 | <listitem><para>Estimated build time:
|
---|
70 | &j2sdk-time;</para></listitem></itemizedlist>
|
---|
71 | </sect3>
|
---|
72 |
|
---|
73 | <sect3><title>Additional downloads</title>
|
---|
74 | <itemizedlist spacing='compact'>
|
---|
75 | <listitem><para><ulink url="&patch-root;/j2sdk-1.4.2-fix-inline-asm-1.patch"/></para></listitem>
|
---|
76 | <listitem><para><ulink url="&patch-root;/j2sdk-1.4.2-gcc33-1.patch"/></para></listitem>
|
---|
77 | <listitem><para><ulink url="&patch-root;/j2sdk-1.4.2-motif-mkmsgcat.patch"/></para></listitem>
|
---|
78 | <listitem><para><ulink url="&patch-root;/j2sdk-1.4.2-remove-debug-image.patch"/></para></listitem>
|
---|
79 | <listitem><para><ulink url="&patch-root;/j2sdk-1.4.2-remove-fixed-paths-1.patch"/></para></listitem>
|
---|
80 | <listitem><para><ulink url="&patch-root;/j2sdk-1.4.2-static_cxx.patch"/></para></listitem>
|
---|
81 | <listitem><para><ulink url="&patch-root;/j2sdk-1.4.2-ash.patch"/> (Only required if /bin/sh is symlinked to <xref linkend="ash"/>)</para></listitem>
|
---|
82 | </itemizedlist>
|
---|
83 | </sect3>
|
---|
84 |
|
---|
85 |
|
---|
86 | <sect3><title><application>J2SDK</application> dependencies</title>
|
---|
87 | <sect4><title>Required</title>
|
---|
88 | <para>X (<xref linkend="xfree86"/> or <xref linkend="xorg"/>), <xref linkend="zip"/>, <xref
|
---|
89 | linkend="unzip"/>, <xref linkend="cpio"/>, <xref linkend="alsa"/>,
|
---|
90 | and <xref linkend="tcsh"/>
|
---|
91 | </para></sect4>
|
---|
92 | </sect3>
|
---|
93 |
|
---|
94 | </sect2>
|
---|
95 |
|
---|
96 | <sect2>
|
---|
97 | <title>Installation of <application>J2SDK</application></title>
|
---|
98 |
|
---|
99 | <para>Both versions will be installed in parallel. You may choose to keep
|
---|
100 | either or both.</para>
|
---|
101 |
|
---|
102 | <para>Installation of the precompiled <acronym>JDK</acronym> is easy:
|
---|
103 | create a directory to install from, copy the .bin there, and run the
|
---|
104 | following commands:</para>
|
---|
105 |
|
---|
106 | <screen><userinput><command>VERSION=&j2sdk-bin-version; &&
|
---|
107 | MV=`echo $VERSION | cut -d "_" -f 1,1` &&
|
---|
108 | V=`echo ${VERSION} | sed -e "s/\./_/g"` &&
|
---|
109 | sed -i "s:^PATH=.*::" j2sdk-${V}-linux-i?86.bin &&
|
---|
110 | chmod +x j2sdk-${V}-linux-i?86.bin &&
|
---|
111 | mkdir -p bin &&
|
---|
112 | ln -sf /bin/true bin/more &&
|
---|
113 | yes | PATH=$PWD/bin:$PATH ./j2sdk-${V}-linux-i?86.bin &&
|
---|
114 | cd j2sdk${VERSION} &&
|
---|
115 | install -d /opt/j2sdk/j2sdk-precompiled-${MV} &&
|
---|
116 | mv * /opt/j2sdk/j2sdk-precompiled-${MV}</command></userinput></screen>
|
---|
117 |
|
---|
118 | <para>The binary version is now installed. </para>
|
---|
119 |
|
---|
120 | <para>If you don't want to compile the source or are not in a postition to download the source
|
---|
121 | owing to license restrictions, skip ahead to the configuration
|
---|
122 | section.</para>
|
---|
123 |
|
---|
124 | <para>Add the recently compiled <acronym>JDK</acronym> to the path.</para>
|
---|
125 | <screen><userinput><command>export JAVA_HOME=/opt/j2sdk/j2sdk-precompiled-${MV} &&
|
---|
126 | export PATH=$PATH:${JAVA_HOME}/bin</command></userinput></screen>
|
---|
127 |
|
---|
128 | <para>Unzip the source:</para>
|
---|
129 |
|
---|
130 | <screen><userinput><command>VERSION=&j2sdk-src-version; &&
|
---|
131 | V=`echo $VERSION | sed -e "s/\./_/g"` &&
|
---|
132 | unzip j2sdk-${V}-src-scsl.zip &&
|
---|
133 | unzip j2sdk-${V}-mozilla_headers-unix.zip &&
|
---|
134 | unzip j2sdk-${V}-bin-scsl.zip</command></userinput></screen>
|
---|
135 |
|
---|
136 | <para>Apply all the patches downloaded above.</para>
|
---|
137 |
|
---|
138 | <screen><userinput><command>for PATCH in fix-inline-asm-1 gcc33-1 motif-mkmsgcat \
|
---|
139 | remove-debug-image remove-fixed-paths-1 \
|
---|
140 | static_cxx
|
---|
141 | do
|
---|
142 | patch -Np1 -i j2sdk-1.4.2-$PATCH.patch
|
---|
143 | done</command></userinput></screen>
|
---|
144 |
|
---|
145 | <para>Set/unset some variables which affect the build:</para>
|
---|
146 | <screen><userinput><command>export ALT_BOOTDIR="$JAVA_HOME" &&
|
---|
147 | unset JAVA_HOME &&
|
---|
148 | unset CLASSPATH
|
---|
149 | unset CFLAGS
|
---|
150 | unset CXXFLAGS
|
---|
151 | unset LDFLAGS
|
---|
152 | export ALT_DEVTOOLS_PATH="/usr/bin" &&
|
---|
153 | export BUILD_NUMBER="blfs-`date +%s`" &&
|
---|
154 | export DEV_ONLY=true &&
|
---|
155 | export ALT_MOZILLA_PATH=$PWD &&
|
---|
156 | export INSANE=true &&
|
---|
157 | export MAKE_VERBOSE=true &&
|
---|
158 | export ALT_CACERTS_FILE=${ALT_BOOTDIR}/jre/lib/security/cacerts</command></userinput></screen>
|
---|
159 |
|
---|
160 | <warning><para>Setting CFLAGS/CXXFLAGS/LDFLAGS is guaranteed to make the build fail.
|
---|
161 | If you are interested in optimizing the build, set OTHER_CFLAGS/OTHER_CXXFLAGS/OTHER_LDFLAGS
|
---|
162 | instead.</para></warning>
|
---|
163 |
|
---|
164 | <para>Additionally, if you would like to make in parallel, add the following
|
---|
165 | (adjust <envar>MAKE_PARALLEL</envar> to your liking):</para>
|
---|
166 | <screen><userinput><command>export HOTSPOT_BUILD_JOBS=$MAKE_PARALLEL</command></userinput></screen>
|
---|
167 |
|
---|
168 | <para>If the included <application>Motif</application> doesn't build properly, the
|
---|
169 | error is noticed much later in the build.
|
---|
170 | A solution is to build the <application>Motif</application>
|
---|
171 | library before compiling the <application>J2SDK</application>.</para>
|
---|
172 |
|
---|
173 | <screen><userinput><command>cd motif/lib/Xm &&
|
---|
174 | make &&
|
---|
175 | cd ../../..</command></userinput></screen>
|
---|
176 |
|
---|
177 | <para>Make and Install <application>J2SDK</application> with the following
|
---|
178 | commands. There will be a lot of messages about missing files that look like
|
---|
179 | errors. As long as the build doesn't stop, the messages are harmless, so ignore
|
---|
180 | them.</para>
|
---|
181 |
|
---|
182 | <screen><userinput><command>cd control/make &&
|
---|
183 | make &&
|
---|
184 | cd ../.. &&
|
---|
185 | cd control/build/linux-i?86 &&
|
---|
186 | cp -a j2sdk-image /opt/j2sdk/j2sdk-&j2sdk-src-version;</command></userinput></screen>
|
---|
187 |
|
---|
188 | </sect2>
|
---|
189 |
|
---|
190 | <sect2>
|
---|
191 | <title>Command explanations</title>
|
---|
192 |
|
---|
193 | <para><command>export ALT_BOOTDIR="$JAVA_HOME"</command>: This var sets
|
---|
194 | location of the bootstrap <acronym>JDK</acronym>.
|
---|
195 | </para>
|
---|
196 |
|
---|
197 | <para><command>export ALT_MOZILLA_PATH=$PWD</command>: This sets the
|
---|
198 | variable that points to where you unzipped the <application>Mozilla
|
---|
199 | </application> headers.</para>
|
---|
200 |
|
---|
201 | <para><command>export ALT_DEVTOOLS_PATH="/usr/bin"</command>: This
|
---|
202 | changes the location where the build finds the needed executables.
|
---|
203 | </para>
|
---|
204 |
|
---|
205 | <para><command>export BUILD_NUMBER="blfs-`date +%s`"</command>: This will
|
---|
206 | help you identify this compiled version of the runtime environment and
|
---|
207 | virtual machine by appending this information to the version in the
|
---|
208 | output to <command>java -version</command>.</para>
|
---|
209 |
|
---|
210 | <para><command>export DEV_ONLY=true</command>: This command
|
---|
211 | eliminates compiling the documentation and eliminates a dependency for
|
---|
212 | <application>rpm</application>. </para>
|
---|
213 |
|
---|
214 | <para><command>unset JAVA_HOME</command>: This clears the
|
---|
215 | <envar>JAVA_HOME</envar>
|
---|
216 | variable as recommended by the build instructions.</para>
|
---|
217 |
|
---|
218 | <para><command>unset CLASSPATH</command>: This clears the
|
---|
219 | <envar>CLASSPATH</envar> variable as per the recommendations in the build instructions.
|
---|
220 | </para>
|
---|
221 |
|
---|
222 | <para><command>unset CFLAGS...</command>: These flags cause miscompilation
|
---|
223 | of the build. Never set these.</para>
|
---|
224 |
|
---|
225 | <para><command>export INSANE=true</command>: Unless you specify that you
|
---|
226 | are insane the build will not proceed. The certified platform for the build is
|
---|
227 | Redhat 6.1. The above variable ensures that all the errors related to
|
---|
228 | compiling on a non-certified platform will be converted to warnings.</para>
|
---|
229 |
|
---|
230 | <para><command>export MAKE_VERBOSE=true</command>: Allows the current
|
---|
231 | compilation command to be displayed on the console.</para>
|
---|
232 |
|
---|
233 | <para><command>export ALT_CACERTS_FILE...</command>: Specifies the
|
---|
234 | certificate file to use.</para>
|
---|
235 |
|
---|
236 | </sect2>
|
---|
237 |
|
---|
238 | <sect2>
|
---|
239 | <title>Configuring <application>J2SDK</application></title>
|
---|
240 |
|
---|
241 | <sect3><title>Configuration Information</title>
|
---|
242 |
|
---|
243 | <para>We have two Java 2 <acronym>SDK</acronym>'s installed in
|
---|
244 | <filename>/opt/j2sdk</filename>. Decide on which one you
|
---|
245 | would like to use as the default. For example if you decide to use the source
|
---|
246 | compiled <application>J2SDK</application>, do the following:</para>
|
---|
247 |
|
---|
248 | <screen><userinput><command>ln -nsf j2sdk-&j2sdk-src-version; /opt/j2sdk/j2sdk</command></userinput></screen>
|
---|
249 |
|
---|
250 | <para>Add the following lines to your shell startup file (e.g.,
|
---|
251 | <filename>/etc/profile</filename>).</para>
|
---|
252 |
|
---|
253 | <screen><userinput>export JAVA_HOME=/opt/j2sdk/j2sdk
|
---|
254 | export PATH=$PATH:$JAVA_HOME/bin</userinput></screen>
|
---|
255 |
|
---|
256 | <para>Add <filename>$JAVA_HOME/man</filename> to your
|
---|
257 | <envar>MANPATH</envar> variable or to
|
---|
258 | <filename>/etc/man.conf</filename></para>
|
---|
259 |
|
---|
260 | <para>The <application>Java</application> plugin is in the directory
|
---|
261 | <filename class="directory">$JAVA_HOME/jre/plugin/i?86/ns610/</filename>.
|
---|
262 | Make a symbolic link to the file in that directory from your plugins directory.</para>
|
---|
263 |
|
---|
264 | </sect3>
|
---|
265 |
|
---|
266 | <sect3><title>Handling CLASSPATH</title>
|
---|
267 |
|
---|
268 | <para>When compiling packages, the <envar>CLASSPATH</envar> environment variable
|
---|
269 | is used by JDK to locate classes at compile-time and run-time. It is tedious toadd all the classes used to the <envar>CLASSPATH</envar> manually. You may add
|
---|
270 | the following lines to your shell startup file to set <envar>CLASSPATH</envar>
|
---|
271 | automatically to include all JAR files in a specified directory, which in
|
---|
272 | the example below is <filename>/usr/lib/auto-java-classpath</filename>.</para>
|
---|
273 |
|
---|
274 | <screen><userinput>AUTO_CLASSPATH_DIR=/usr/lib/auto-java-classpath
|
---|
275 | if [ -z $CLASSPATH ]
|
---|
276 | then
|
---|
277 | CLASSPATH=.:$AUTO_CLASSPATH_DIR
|
---|
278 | else
|
---|
279 | CLASSPATH=$CLASSPATH:.:$AUTO_CLASSPATH_DIR
|
---|
280 | fi
|
---|
281 | for i in $(ls $AUTO_CLASSPATH_DIR/*.jar 2>/dev/null)
|
---|
282 | do
|
---|
283 | CLASSPATH=$CLASSPATH:$i
|
---|
284 | done</userinput></screen>
|
---|
285 |
|
---|
286 | </sect3>
|
---|
287 |
|
---|
288 | </sect2>
|
---|
289 |
|
---|
290 | <sect2>
|
---|
291 | <title>Contents</title>
|
---|
292 |
|
---|
293 | <para>The <application>J2SDK</application> package contains
|
---|
294 | <command>appletviewer</command>,
|
---|
295 | <command>extcheck</command>, <command>idlj</command>,
|
---|
296 | <command>jar</command>, <command>jarsigner</command>,
|
---|
297 | <command>java</command>, <command>javac</command>,
|
---|
298 | <command>javadoc</command>, <command>javah</command>,
|
---|
299 | <command>javap</command>, <command>jdb</command>,
|
---|
300 | <command>keytool</command>, <command>native2ascii</command>,
|
---|
301 | <command>orbd</command>, <command>policytool</command>,
|
---|
302 | <command>rmic</command>, <command>rmid</command>,
|
---|
303 | <command>rmiregistry</command>, <command>rmiregistry</command>,
|
---|
304 | <command>serialver</command>, <command>servertool</command> and
|
---|
305 | <command>tnameserv</command>.</para>
|
---|
306 |
|
---|
307 | </sect2>
|
---|
308 |
|
---|
309 | <sect2><title>Description</title>
|
---|
310 |
|
---|
311 | <sect3><title>appletviewer</title>
|
---|
312 | <para><command>appletviewer</command> runs
|
---|
313 | <application>Java</application> applets outside of the context of a
|
---|
314 | browser.</para></sect3>
|
---|
315 |
|
---|
316 | <sect3><title>extcheck</title>
|
---|
317 | <para><command>extcheck</command> checks a specified <filename>JAR</filename>
|
---|
318 | file for title and version conflicts with any extensions installed in the
|
---|
319 | <acronym>JDK</acronym> software.</para></sect3>
|
---|
320 |
|
---|
321 | <sect3><title>idlj</title>
|
---|
322 | <para><command>idlj</command> generates <application>Java</application>
|
---|
323 | bindings from a given <acronym>IDL</acronym> file.</para></sect3>
|
---|
324 |
|
---|
325 | <sect3><title>jar</title>
|
---|
326 | <para><command>jar</command> combines multiple files into a single
|
---|
327 | <acronym>JAR</acronym> archive file.</para></sect3>
|
---|
328 |
|
---|
329 | <sect3><title>jarsigner</title>
|
---|
330 | <para><command>jarsigner</command> signs <filename>JAR</filename>
|
---|
331 | (Java ARchive) files and verifies the signatures and integrity of a signed
|
---|
332 | <filename>JAR</filename>.</para></sect3>
|
---|
333 |
|
---|
334 | <sect3><title>java</title>
|
---|
335 | <para><command>java</command> launches a <application>Java</application>
|
---|
336 | application by starting a <application>Java</application> runtime
|
---|
337 | environment, loading a specified class and invoking its main
|
---|
338 | method.</para></sect3>
|
---|
339 |
|
---|
340 | <sect3><title>javac</title>
|
---|
341 | <para><command>javac</command> reads class and interface definitions, written
|
---|
342 | in the <application>Java</application> programming language, and compiles them
|
---|
343 | into bytecode class files.</para></sect3>
|
---|
344 |
|
---|
345 | <sect3><title>javadoc</title>
|
---|
346 | <para><command>javadoc</command> parses the declarations and documentation
|
---|
347 | comments in a set of <application>Java</application> source files and produces
|
---|
348 | a corresponding set of <acronym>HTML</acronym> pages describing the classes,
|
---|
349 | interfaces, constructors, methods, and fields.</para></sect3>
|
---|
350 |
|
---|
351 | <sect3><title>javah</title>
|
---|
352 | <para><command>javah</command> generates <application>C</application> header
|
---|
353 | and source files that are needed to implement native methods.</para></sect3>
|
---|
354 |
|
---|
355 | <sect3><title>javap</title>
|
---|
356 | <para><command>javap</command> disassembles a
|
---|
357 | <application>Java</application> class file.</para></sect3>
|
---|
358 |
|
---|
359 | <sect3><title>jdb</title>
|
---|
360 | <para><command>jdb</command> is a simple command-line debugger for
|
---|
361 | <application>Java</application> classes.</para></sect3>
|
---|
362 |
|
---|
363 | <sect3><title>keytool</title>
|
---|
364 | <para><command>keytool</command> is a key and certificate management utility.</para></sect3>
|
---|
365 |
|
---|
366 | <sect3><title>native2ascii</title>
|
---|
367 | <para><command>native2ascii</command> converts files that contain non-supported
|
---|
368 | character encoding into files containing Latin-1 or Unicode-encoded characters.</para></sect3>
|
---|
369 |
|
---|
370 | <sect3><title>orbd</title>
|
---|
371 | <para><command>orbd</command> is used to enable clients to transparently locate
|
---|
372 | and invoke persistent objects on servers in the <acronym>CORBA</acronym>
|
---|
373 | environment.</para></sect3>
|
---|
374 |
|
---|
375 | <sect3><title>policytool</title>
|
---|
376 | <para><command>policytool</command> creates and manages a policy file
|
---|
377 | graphically.</para></sect3>
|
---|
378 |
|
---|
379 | <sect3><title>rmic</title>
|
---|
380 | <para><command>rmic</command> generates stub and skeleton class files for
|
---|
381 | remote objects from the names of compiled <application>Java</application>
|
---|
382 | classes that contain remote object implementations.</para></sect3>
|
---|
383 |
|
---|
384 | <sect3><title>rmid</title>
|
---|
385 | <para><command>rmid</command> starts the activation system daemon.</para>
|
---|
386 | </sect3>
|
---|
387 |
|
---|
388 | <sect3><title>rmiregistry</title>
|
---|
389 | <para><command>rmiregistry</command> creates and starts a remote object
|
---|
390 | registry on the specified port on the current host.</para></sect3>
|
---|
391 |
|
---|
392 | <sect3><title>serialver</title>
|
---|
393 | <para><command>serialver</command> returns the serialVersionUID for one or
|
---|
394 | more classes in a form suitable for copying into an evolving class.</para>
|
---|
395 | </sect3>
|
---|
396 |
|
---|
397 | <sect3><title>servertool</title>
|
---|
398 | <para><command>servertool</command> provides an ease-of-use interface for
|
---|
399 | application programmers to register, unregister, startup and shutdown a server.</para></sect3>
|
---|
400 |
|
---|
401 | <sect3><title>tnameserv</title>
|
---|
402 | <para><command>tnameserv</command> starts the <application>Java</application>
|
---|
403 | <acronym>IDL</acronym> name server.</para></sect3>
|
---|
404 |
|
---|
405 | </sect2>
|
---|
406 |
|
---|
407 | </sect1>
|
---|
408 |
|
---|