| 1 | <?xml version='1.0'?> |
1 | <?xml version="1.0" encoding="UTF-8"?> |
| 2 | <?xml-stylesheet href="/xsl/guide.xsl" type="text/xsl"?> |
2 | <!DOCTYPE guide SYSTEM "/dtd/guide.dtd"> |
|
|
3 | <!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/java.xml,v 1.52 2011/11/08 23:38:12 nightmorph Exp $ --> |
|
|
4 | |
| 3 | <guide> |
5 | <guide> |
| 4 | <title>Gentoo Java Guide</title> |
6 | <title>Gentoo Java Guide</title> |
|
|
7 | |
| 5 | <author title="Author and Editor"> |
8 | <author title="Author"> |
| 6 | <mail link="karltk@gentoo.org">Karl Trygve Kalleberg</mail> |
9 | <mail link="nichoj@gentoo.org">Joshua Nichols</mail> |
| 7 | </author> |
10 | </author> |
|
|
11 | <author title="Author"> |
|
|
12 | <mail link="karltk@gentoo.org">Karl Trygve Kalleberg</mail> |
|
|
13 | </author> |
|
|
14 | <author title="Editor"> |
|
|
15 | <mail link="nightmorph@gentoo.org">Joshua Saddler</mail> |
|
|
16 | </author> |
| 8 | |
17 | |
| 9 | <abstract> |
18 | <abstract> |
| 10 | Users' and Developers' Guide to Java in Gentoo |
19 | This guide will introduce you to Java and explain how to use Java with Gentoo |
|
|
20 | Linux. |
| 11 | </abstract> |
21 | </abstract> |
| 12 | |
22 | |
|
|
23 | <!-- The content of this document is licensed under the CC-BY-SA license --> |
|
|
24 | <!-- See http://creativecommons.org/licenses/by-sa/2.5 --> |
|
|
25 | <license/> |
|
|
26 | |
| 13 | <version>0.1.1</version> |
27 | <version>3</version> |
| 14 | <date>June 25, 2002</date> |
28 | <date>2011-11-08</date> |
| 15 | |
29 | |
| 16 | <chapter> |
30 | <chapter> |
| 17 | |
31 | <title>What is Java?</title> |
| 18 | <title>Installing a JDK/JRE</title> |
|
|
| 19 | <section> |
32 | <section> |
| 20 | <title>Overview</title> |
33 | <title>Overview</title> |
| 21 | <body> |
34 | <body> |
| 22 | <p>Gentoo provides numerous JDKs and JREs. The default is the |
|
|
| 23 | Blackdown JDK/JRE pair, as it is freely (beer) available without any |
|
|
| 24 | registration fuss.</p> |
|
|
| 25 | |
35 | |
| 26 | <note>As kaffe becomes a JRE/JDK drop-in replacement, that will most |
36 | <p> |
| 27 | likely become our default.</note> |
37 | Java is a programming language developed by engineers of Sun Microsystems. The |
|
|
38 | language is object-oriented and designed to run on multiple platforms without |
|
|
39 | the need of recompiling code for each platform. Although Java can be compiled |
|
|
40 | as a native program, much of Java's popularity can be attributed to its |
|
|
41 | portability, along with other features such as garbage collection. To make |
|
|
42 | platform independence possible the Java compiler compiles the Java code to an |
|
|
43 | intermediate representation called "Java bytecode" that runs on a JRE (Java |
|
|
44 | Runtime Environment) and not directly on the operating system. |
|
|
45 | </p> |
| 28 | |
46 | |
| 29 | <p>Both the Sun JDK/JRE and the IBM JDK/JRE are generally faster, but |
47 | <p> |
| 30 | getting them is a bit more work, as you are required to read and |
48 | In order to run Java bytecode, one needs to have a JRE (Java Runtime |
| 31 | accept their license before downloading (IBM additionally requires you |
49 | Environment) installed. A JRE provides core libraries, a platform dependent |
| 32 | to register).</p> |
50 | Java Virtual Machine, plugins for browsers, among other things. A JDK (Java |
|
|
51 | Development Kit) adds programming tools, such as a bytecode compiler and a |
|
|
52 | debugger. |
|
|
53 | </p> |
| 33 | |
54 | |
| 34 | <p>Our ebuilds for the Sun and IBM JDK/JREs will notify you of where |
|
|
| 35 | to go to download them.</p> |
|
|
| 36 | </body> |
55 | </body> |
| 37 | </section> |
|
|
| 38 | |
|
|
| 39 | <section> |
56 | </section> |
| 40 | <title>Installing the Sun/IBM JDK/JREs</title> |
57 | </chapter> |
|
|
58 | |
|
|
59 | <chapter> |
|
|
60 | <title>Installing a Virtual Machine</title> |
|
|
61 | <section> |
|
|
62 | <title>The choices</title> |
|
|
63 | <body> |
|
|
64 | |
|
|
65 | <p> |
|
|
66 | Gentoo provides numerous Runtime Environments (JREs) and Development Kits |
|
|
67 | (JDKs). Among the current choices, we have: |
|
|
68 | </p> |
|
|
69 | |
|
|
70 | <table> |
|
|
71 | <tr> |
|
|
72 | <th>Vendor</th> |
|
|
73 | <th>JDK</th> |
|
|
74 | <th>JRE</th> |
|
|
75 | </tr> |
|
|
76 | <tr> |
|
|
77 | <ti>Sun's Java Kit</ti> |
|
|
78 | <ti>dev-java/sun-jdk</ti> |
|
|
79 | <ti>dev-java/sun-jre-bin</ti> |
|
|
80 | </tr> |
|
|
81 | <tr> |
|
|
82 | <ti>The IBM Java Kit</ti> |
|
|
83 | <ti>dev-java/ibm-jdk-bin</ti> |
|
|
84 | <ti>dev-java/ibm-jre-bin</ti> |
|
|
85 | </tr> |
|
|
86 | <tr> |
|
|
87 | <ti>BEA WebLogic's J2SE Development Kit</ti> |
|
|
88 | <ti>dev-java/jrockit-jdk-bin</ti> |
|
|
89 | </tr> |
|
|
90 | <tr> |
|
|
91 | <ti>The IcedTea Open Java Kit</ti> |
|
|
92 | <ti>dev-java/icedtea-bin</ti> |
|
|
93 | </tr> |
|
|
94 | </table> |
|
|
95 | |
|
|
96 | <!-- |
|
|
97 | TODO: list free implementations? |
|
|
98 | note about not drop-in replacements |
|
|
99 | kaffe/sablevm/gcj/jamvm |
|
|
100 | --> |
| 41 | <body> |
101 | </body> |
| 42 | <p>If you run <c>emerge dev-java/sun-jdk-1.3.1</c> or <c>emerge |
102 | </section> |
| 43 | dev-java/ibm-jdk-1.3.1</c>, you will be notified that you are required |
103 | <section> |
| 44 | to download the actual tarballs yourself. This has to do with license |
104 | <title>Installing a JRE/JDKs</title> |
| 45 | restrictions for the Sun JDK/JRE (online click-wrap license) and |
105 | <body> |
| 46 | registration issues with the IBM JDK/JRE.</p> |
|
|
| 47 | |
106 | |
| 48 | <note>There is also a dev-java/sun-jdk-1.4.0, but not all packages |
107 | <p> |
| 49 | work nicely with Java 1.4, so you're on your own if you use the 1.4.0 |
108 | To install your profile's default JDK, you can run <c>emerge virtual/jdk</c>. |
|
|
109 | Or to install your profile's default JRE, you can <c>emerge virtual/jre</c>. |
|
|
110 | </p> |
|
|
111 | |
|
|
112 | <p> |
|
|
113 | Some JDKs and JREs, including the Sun packages, require accepting an End User |
|
|
114 | License Agreement, or EULA. If its license (such as dlj-1.1) is not listed in |
|
|
115 | ACCEPT_LICENSE in <path>/etc/make.conf</path>, then you won't be able to install |
|
|
116 | the JDK/JRE. For more information on how to add acceptable licenses to |
|
|
117 | <path>make.conf</path>, please read the <uri |
|
|
118 | link="/doc/en/handbook/handbook-x86.xml?part=2&chap=1#doc_chap4">Portage |
|
|
119 | Handbook</uri>. |
|
|
120 | </p> |
|
|
121 | |
|
|
122 | <p> |
|
|
123 | To avoid any restrictive license hassle, consider installing |
|
|
124 | <c>icedtea-bin</c>, which is an open Java implementation from the OpenJDK |
|
|
125 | project. |
|
|
126 | </p> |
|
|
127 | |
|
|
128 | <note> |
|
|
129 | A JDK also includes a JRE, so if you install a JDK you shouldn't have to also |
|
|
130 | have to install a JRE. |
| 50 | JDK.</note> |
131 | </note> |
| 51 | |
132 | |
|
|
133 | </body> |
|
|
134 | </section> |
|
|
135 | <section> |
|
|
136 | <title>Installing fetch-restricted virtual machines</title> |
|
|
137 | <body> |
|
|
138 | |
|
|
139 | <p> |
|
|
140 | Some of the JDKs and JREs require you to jump through a few hoops before |
|
|
141 | installing. Simply emerge the packages as you normally would. The ebuilds will |
|
|
142 | then instruct you where to go and what to download. |
|
|
143 | </p> |
|
|
144 | |
|
|
145 | <p> |
| 52 | <p>You should download the indicated file(s) into |
146 | You should download the indicated file(s) into |
| 53 | <path>/usr/portage/distfiles</path>. Once that is done, you can rerun |
147 | <path>/usr/portage/distfiles</path>. Once there, you can rerun the emerge |
| 54 | the emerge command, then the JDK/JRE will be installed properly into |
148 | command, at which point the JRE/JDK will be begin to install. |
| 55 | <path>/opt</path>.</p> |
149 | </p> |
| 56 | </body> |
|
|
| 57 | </section> |
|
|
| 58 | </chapter> |
|
|
| 59 | |
150 | |
|
|
151 | </body> |
|
|
152 | </section> |
| 60 | <chapter> |
153 | </chapter> |
| 61 | <title>Configuring your JDK/JRE</title> |
154 | |
|
|
155 | <chapter> |
|
|
156 | <title>Configuring your virtual machine</title> |
| 62 | <section> |
157 | <section> |
| 63 | <title>Overview</title> |
158 | <title>Overview</title> |
| 64 | <body> |
159 | <body> |
|
|
160 | |
|
|
161 | <p> |
| 65 | <p>Gentoo has the ability to have multiple JDKs and JREs installed |
162 | Gentoo has the ability to have multiple JDKs and JREs installed without causing |
| 66 | without them conflicting. There are a few caveats to this, as noted |
163 | conflicts. |
| 67 | below.</p> |
164 | </p> |
| 68 | |
165 | |
|
|
166 | <p> |
| 69 | <p>Using the <c>java-config</c> tool, you can set the system-wide |
167 | Using the <c>java-config</c> tool, you can set the system-wide default |
| 70 | default if you have root access. Users can also use <c>java-config</c> |
168 | (provided you have root access). Users can also use <c>java-config</c> to set |
| 71 | to set up their own personal default, that is different from the |
169 | up their own personal default. |
| 72 | system-wide default.</p> |
170 | </p> |
| 73 | </body> |
|
|
| 74 | </section> |
|
|
| 75 | |
171 | |
|
|
172 | <note> |
|
|
173 | You can also use <e>eselect</e> to change the system and user vm. See |
|
|
174 | <c>eselect java-vm help</c>. |
|
|
175 | </note> |
|
|
176 | |
|
|
177 | </body> |
| 76 | <section> |
178 | </section> |
|
|
179 | <section> |
| 77 | <title>Setting a default JDK/JRE</title> |
180 | <title>Setting a default virtual machine</title> |
| 78 | <body> |
181 | <body> |
|
|
182 | |
|
|
183 | <p> |
| 79 | <p>Running the command <c>java-config --list-available-vms</c> will |
184 | Running the command <c>java-config --list-available-vms</c> will give you a |
| 80 | give you a list of all availble JREs and JDKs on your system, thus:</p> |
185 | list of all JREs and JDKs installed on your system. Here is an example of |
|
|
186 | output: |
|
|
187 | </p> |
|
|
188 | |
|
|
189 | <pre caption="Listing available VMs"> |
|
|
190 | # <i>java-config --list-available-vms</i> |
|
|
191 | The following VMs are available for generation-2: |
|
|
192 | 1) IcedTea-bin 1.10.4 [icedtea-bin] |
|
|
193 | 2) Sun JDK 1.5.0.20 [sun-jdk-1.5] <comment>(Build Only)</comment> |
|
|
194 | *) Sun JDK 1.6.0.16 [sun-jdk-1.6] |
| 81 | <pre> |
195 | </pre> |
| 82 | [%1 ~] java-config --list-available-vms |
196 | |
| 83 | [blackdown-jdk-1.3.1] Blackdown JDK 1.3.1 (/etc/env.d/java/20blackdown-jdk-1.3.1) |
197 | <note> |
| 84 | [blackdown-jre-1.3.1] Blackdown JRE 1.3.1 (/etc/env.d/java/20blackdown-jre-1.3.1) |
198 | VMs marked as Build Only may contain security vulnerabilities and/or be EOL. |
| 85 | [ibm-jdk-1.3.0] IBM JDK 1.3.0 (/etc/env.d/java/20ibm-jdk-1.3.0) |
199 | Gentoo recommends not setting these VMs as either your system or user VM. |
| 86 | [ibm-jdk-1.3.1] IBM JDK 1.3.1 (/etc/env.d/java/20ibm-jdk-1.3.1) |
200 | Please see <uri link="java.xml#build-only">Build Only VM</uri> for more |
| 87 | [ibm-jre-1.3.1] IBM JRE 1.3.1 (/etc/env.d/java/20ibm-jre-1.3.1) |
201 | information. |
| 88 | [sun-jdk-1.4.0] Sun JDK 1.4.0 (/etc/env.d/java/20sun-jdk-1.4.0) |
202 | </note> |
| 89 | </pre> |
203 | |
|
|
204 | <p> |
|
|
205 | The <e>*</e> indicates this is the current active vm (system-vm or user-vm when |
| 90 | <p>The name in the brackets <path>"[]"</path> is the handle or ID for |
206 | set). The name in the brackets (<e>[]</e>) is the handle or ID for that |
| 91 | that particular VM. You use pass that ID to <c>java-config |
207 | particular VM. You use the handle or the number to <c>java-config |
| 92 | --set-system-vm</c>, thus:</p> |
208 | --set-system-vm</c>. Here is an example of how to set the system VM. |
|
|
209 | </p> |
|
|
210 | |
|
|
211 | <pre caption="Setting the System VM"> |
|
|
212 | <comment>(By handle (preferred))</comment> |
|
|
213 | # <i>java-config --set-system-vm sun-jdk-1.6</i> |
|
|
214 | Now using sun-jdk-1.6 as your generation-2 system JVM |
|
|
215 | <comment>(By number)</comment> |
|
|
216 | # <i>java-config --set-system-vm 3</i> |
|
|
217 | Now using sun-jdk-1.6 as your generation-2 system JVM |
| 93 | <pre> |
218 | </pre> |
| 94 | [#1 ~] java-config --set-system-vm=ibm-jdk-1.3.1 |
|
|
| 95 | Now using IBM JDK 1.3.1 (/etc/env.d/java/20ibm-jdk-1.3.1) |
|
|
| 96 | </pre> |
|
|
| 97 | |
219 | |
| 98 | <note>You will have to be root to run --set-system-vm</note> |
|
|
| 99 | |
|
|
| 100 | <p>Once you have issued <c>java-config --set-system-vm</c> with a |
|
|
| 101 | particular VM ID, you will need to regenerate your /etc/profile.env, |
|
|
| 102 | thus:</p> |
|
|
| 103 | <pre> |
220 | <p> |
| 104 | [#1 ~] env-update |
|
|
| 105 | </pre> |
|
|
| 106 | |
|
|
| 107 | <p>After this, you will either want to relogin, or resource |
|
|
| 108 | <path>/etc/profile</path> into your environment.</p> |
|
|
| 109 | |
|
|
| 110 | <p>As a regular user, you can use <c>java-config --set-user-vm</c>, |
221 | As a regular user, you can use <c>java-config --set-user-vm</c>. |
| 111 | which will create <path>$HOME/.gentoo/java-env</path> with all |
222 | </p> |
| 112 | required env vars. You would normally source this from your shell's |
|
|
| 113 | startup script (<path>$HOME/.zshenv</path> in my case).</p> |
|
|
| 114 | </body> |
|
|
| 115 | </section> |
|
|
| 116 | |
223 | |
|
|
224 | <note> |
|
|
225 | You no longer have to <c>source</c> the profile for updates to the user/system |
|
|
226 | VM take place. |
|
|
227 | </note> |
|
|
228 | |
|
|
229 | </body> |
| 117 | <section> |
230 | </section> |
|
|
231 | <section id="build-only"> |
|
|
232 | <title>Build Only VM</title> |
|
|
233 | <body> |
|
|
234 | |
|
|
235 | <p> |
|
|
236 | Some virtual machines are flagged as build-only due to being EOL and/or |
|
|
237 | containing security vulnerabilities. These virtual machines will not |
|
|
238 | automatically be used by Gentoo for the running of applications using Gentoo |
|
|
239 | launchers but will still be available for use by Gentoo's build environment as |
|
|
240 | some packages may require them for building. The setting of these virtual |
|
|
241 | machines as either your system or user VM is strongly discouraged as these VMs |
|
|
242 | will then be used when running the <path>/usr/bin/{java,javac,..}</path> |
|
|
243 | executables and will also be used by any packages not using Gentoo's launcher |
|
|
244 | scripts. |
|
|
245 | </p> |
|
|
246 | |
|
|
247 | </body> |
|
|
248 | </section> |
|
|
249 | <section id="preferred-vm"> |
|
|
250 | <title>Preferred Build VM</title> |
|
|
251 | <body> |
|
|
252 | |
|
|
253 | <p> |
|
|
254 | While merging Java packages, the VM used for building can sometimes be different |
|
|
255 | from the one currently set as the system VM. |
|
|
256 | </p> |
|
|
257 | |
|
|
258 | <p> |
|
|
259 | This merge time VM switching is needed when, for example, your system-vm is |
|
|
260 | set to a 1.6 VM and the package you are merging requires a 1.5 VM. While merging |
|
|
261 | it will select and use a 1.5 VM, leaving your system-vm choice intact. |
|
|
262 | </p> |
|
|
263 | |
|
|
264 | <p> |
|
|
265 | To define which VM is selected when a switch is needed, we have created a list of <e>default/supported |
|
|
266 | VMs</e> per arch. You can find them in |
|
|
267 | <path>/usr/share/java-config-2/config/jdk-defaults.conf</path>. |
|
|
268 | </p> |
|
|
269 | |
|
|
270 | <p> |
|
|
271 | You can override these defaults (and even your selected system VM) in |
|
|
272 | <path>/etc/java-config-2/build/jdk.conf</path> and have complete control over |
|
|
273 | which VM will get used for merging. Some examples: |
|
|
274 | </p> |
|
|
275 | |
|
|
276 | <pre caption="Example /etc/java-config-2/build/jdk.conf"> |
|
|
277 | <comment>(I always want it to use a sun-jdk, ie sun-jdk-1.4 for 1.4, sun-jdk-1.5 for 1.5, etc)</comment> |
|
|
278 | *=sun-jdk |
|
|
279 | </pre> |
|
|
280 | |
|
|
281 | <pre caption="Example /etc/java-config-2/build/jdk.conf"> |
|
|
282 | <comment>(Always use sun-jdk-1.5 wherever possible, except for when a 1.4 or 1.3 VM is explicitly required)</comment> |
|
|
283 | *=sun-jdk-1.5 |
|
|
284 | </pre> |
|
|
285 | |
|
|
286 | <pre caption="Example /etc/java-config-2/build/jdk.conf"> |
|
|
287 | <comment># For 1.3 I prefer sun-jdk 1.4 but when it is not available, use ibm-jdk-bin, |
|
|
288 | # For 1.5, use sun-jdk </comment> |
|
|
289 | 1.3=sun-jdk-1.4 ibm-jdk-bin |
|
|
290 | 1.5=sun-jdk |
|
|
291 | </pre> |
|
|
292 | |
|
|
293 | <warn> |
|
|
294 | You do not <e>have</e> to edit this file. If you change these options to use a |
|
|
295 | unsupported VM, things could possibly break. Because of the wide variety of |
|
|
296 | available VMs, we do not have the resources to test and verify every package |
|
|
297 | works on all of them. Bugs reported with a unsupported VM won't be prioritized |
|
|
298 | as much as bugs present within supported VMs. |
|
|
299 | </warn> |
|
|
300 | |
|
|
301 | </body> |
|
|
302 | </section> |
|
|
303 | </chapter> |
|
|
304 | |
|
|
305 | <chapter> |
|
|
306 | <title>Compilers</title> |
|
|
307 | <section> |
|
|
308 | <body> |
|
|
309 | |
|
|
310 | <p> |
|
|
311 | The standard Java compiler used for building is <c>javac</c>, which comes with |
|
|
312 | each JDK. In addition to configuring the VM used at build time, it is also |
|
|
313 | possible configure which compiler is used. Essentially, you define a list your |
|
|
314 | preference for which compiler to use in |
|
|
315 | <path>/etc/java-config-2/build/compilers.conf</path>. |
|
|
316 | </p> |
|
|
317 | |
|
|
318 | <pre caption="/etc/java-config-2/build/compilers.conf"> |
|
|
319 | # If the ebuild supports it |
|
|
320 | # it will check the COMPILERS var front to back and |
|
|
321 | # use the first compiler that is installed |
|
|
322 | |
|
|
323 | COMPILERS="ecj-X.Y jikes javac" |
|
|
324 | </pre> |
|
|
325 | |
|
|
326 | <p> |
|
|
327 | Some compilers don't support all possible -target and -source arguments. |
|
|
328 | Therefore, each compiler in the list is checked to see if it can support the |
|
|
329 | desired -source/-target. javac will work in all cases, so if no other suitable |
|
|
330 | compiler is found, it will be used instead. |
|
|
331 | </p> |
|
|
332 | |
|
|
333 | <p> |
|
|
334 | More details about each compiler are provided below: |
|
|
335 | </p> |
|
|
336 | |
|
|
337 | <table> |
|
|
338 | <tr> |
|
|
339 | <th>Name</th> |
|
|
340 | <th>Handle</th> |
|
|
341 | <th>Package</th> |
|
|
342 | <th>Description</th> |
|
|
343 | </tr> |
|
|
344 | <tr> |
|
|
345 | <ti>javac</ti> |
|
|
346 | <ti>javac</ti> |
|
|
347 | <ti>N/A</ti> |
|
|
348 | <ti> |
|
|
349 | This is the default compiler that will be used, and comes with each JDK. |
|
|
350 | </ti> |
|
|
351 | </tr> |
|
|
352 | <tr> |
|
|
353 | <ti>jikes</ti> |
|
|
354 | <ti>jikes</ti> |
|
|
355 | <ti>dev-java/jikes</ti> |
|
|
356 | <ti> |
|
|
357 | Jikes was originally developed by IBM. Anecdotally, it is generally quicker |
|
|
358 | than javac. Note however, that it is more pedantic, and will fail under a |
|
|
359 | few circumstances where javac has no issue. It also does not support Java |
|
|
360 | 1.5 syntax yet. |
|
|
361 | </ti> |
|
|
362 | </tr> |
|
|
363 | <tr> |
|
|
364 | <ti>Eclipse Compiler for Java</ti> |
|
|
365 | <ti>ecj</ti> |
|
|
366 | <ti>dev-java/eclipse-ecj</ti> |
|
|
367 | <ti> |
|
|
368 | ECJ is the compiler used by the Eclipse software development kit. It is |
|
|
369 | very full featured, and is pretty fast. It does support Java 1.5 syntax. |
|
|
370 | </ti> |
|
|
371 | </tr> |
|
|
372 | </table> |
|
|
373 | |
|
|
374 | </body> |
|
|
375 | </section> |
|
|
376 | </chapter> |
|
|
377 | |
|
|
378 | <chapter> |
| 118 | <title>Setting a default CLASSPATH</title> |
379 | <title>Setting a default CLASSPATH</title> |
|
|
380 | <section> |
| 119 | <body> |
381 | <body> |
|
|
382 | |
|
|
383 | <warn> |
|
|
384 | The options explained in this section should be considered deprecated and will |
|
|
385 | most likely be removed in the future. We strongly recommend against using |
|
|
386 | these, because your Java projects or application should ideally manage their |
|
|
387 | own classpaths. If you choose to specify a default CLASSPATH, some applications |
|
|
388 | may behave unexpectedly, because classes they weren't expecting would be on the |
|
|
389 | classpath. |
|
|
390 | </warn> |
|
|
391 | |
|
|
392 | <p> |
| 120 | <p><c>java-config</c> can also be used to set a system-wide default |
393 | <c>java-config</c> can also be used to set a system-wide default CLASSPATH, as |
| 121 | CLASSPATH, and of course a user-specific default CLASSPATH.</p> |
394 | well a user-specific default CLASSPATH. |
|
|
395 | </p> |
| 122 | |
396 | |
| 123 | <p>First you want to list available java libraries that might be |
397 | <p> |
| 124 | interesting to put in your CLASSPATH, thus:</p> |
398 | First, you will want to list available Java libraries installed on your system |
|
|
399 | that might want to be put in your CLASSPATH. Here is an example of output: |
|
|
400 | </p> |
|
|
401 | |
|
|
402 | <pre caption="Listing classes"> |
|
|
403 | # <i>java-config --list-available-packages</i> |
|
|
404 | [xerces-2] The next generation of high performance, fully compliant XML parsers in the Apache Xerces family (/usr/share/xerces-2/package.env) |
|
|
405 | [junit] Simple framework to write repeatable tests (/usr/share/junit/package.env) |
|
|
406 | [bsh] BeanShell: A small embeddable Java source interpreter (/usr/share/bsh/package.env) |
|
|
407 | [bcel] The Byte Code Engineering Library: analyze, create, manipulate Java class files (/usr/share/bcel/package.env) |
|
|
408 | [log4j] A low-overhead robust logging package for Java (/usr/share/log4j/package.env) |
|
|
409 | ... |
| 125 | <pre> |
410 | </pre> |
| 126 | [%1 ~] java-config --list-available-packages |
411 | |
| 127 | [ant] No description (/usr/share/ant/classpath.env) |
412 | <p> |
| 128 | [java-gnome] No description (/usr/share/java-gnome/classpath.env) |
413 | Again, the names in brackets (<e>[]</e>) are the IDs that you have to pass to |
| 129 | [java-gtk] No description (/usr/share/java-gtk/classpath.env) |
414 | <c>java-config --set-system-classpath</c>. Here is an example: |
| 130 | [log4j] "" (/usr/share/log4j/package.env) |
|
|
| 131 | </pre> |
415 | </p> |
| 132 | |
416 | |
| 133 | <note>None of these packages have a proper description. That is |
417 | <pre caption="Setting classpaths"> |
| 134 | something that will be implemented in the not-so-distant |
418 | # <i>java-config --set-system-classpath log4j,xerces-2</i> |
| 135 | future.</note> |
|
|
| 136 | |
|
|
| 137 | <p>Again, the name in brackets <path>"[]"</path> are the IDs that you |
|
|
| 138 | have to pass to <c>java-config --set-system-classpath</c>, thus:</p> |
|
|
| 139 | <pre> |
419 | </pre> |
| 140 | java-config --set-system-classpath=log4j,java-gtk,java-gnome |
420 | |
|
|
421 | <note> |
|
|
422 | The current directory (<path>.</path>) will not be part of the system |
|
|
423 | classpath, as that should be added in your system's login profile. |
|
|
424 | </note> |
|
|
425 | |
|
|
426 | <p> |
|
|
427 | You will have to update your environment by logging out, then in again or |
|
|
428 | sourcing <path>/etc/profile</path>. |
| 141 | </pre> |
429 | </p> |
| 142 | <note>The current directory (.) will not be part of the system classpath, |
430 | |
| 143 | as that should be added in root's login profile.</note> |
431 | <p> |
| 144 | <p>Again, you will want to run <c>env-update</c> to update your |
|
|
| 145 | system's environment, and you might also want to relogin or resource |
|
|
| 146 | the <path>/etc/profile</path>.</p> |
|
|
| 147 | <p>For users, <c>java-config --set-user-classpath</c> will create |
432 | For users, <c>java-config --set-user-classpath</c> will create |
| 148 | <path>$HOME/.gentoo/java-env-classpath</path>, which is automatically |
433 | <path>~/.gentoo/java-env-classpath</path>, which you should then source from |
| 149 | included by <path>$HOME/.gentoo/java-env</path>.</p> |
434 | your shell's profile. |
|
|
435 | </p> |
|
|
436 | |
|
|
437 | <pre caption="Sourcing user specific classpath"> |
|
|
438 | <i>if [[ -f "${HOME}/.gentoo/java-env-classpath" ]]; then |
|
|
439 | source ${HOME}/.gentoo/java-env-classpath |
|
|
440 | fi</i> |
|
|
441 | </pre> |
|
|
442 | |
|
|
443 | <p> |
|
|
444 | If you really want a system wide or user default classpath you can add |
|
|
445 | something like the following to your shell's profile. But we would advise |
|
|
446 | against it. |
|
|
447 | </p> |
|
|
448 | |
|
|
449 | <pre caption="Setting classpath"> |
|
|
450 | # <i>export CLASSPATH="${CLASSPATH}:$(java-config --classpath log4j,xerces-2)"</i> |
|
|
451 | </pre> |
|
|
452 | |
|
|
453 | </body> |
|
|
454 | </section> |
|
|
455 | </chapter> |
|
|
456 | |
|
|
457 | <chapter> |
|
|
458 | <title>Java Browser Plugins</title> |
|
|
459 | <section> |
|
|
460 | <title>Installing a plugin</title> |
|
|
461 | <body> |
|
|
462 | |
|
|
463 | <p> |
|
|
464 | You can install a Java plugin for your web browser by emerging a Java VM with |
|
|
465 | the <c>nsplugin</c> USE flag set. |
|
|
466 | </p> |
|
|
467 | |
|
|
468 | <note> |
|
|
469 | <c>nsplugin</c> is not available for all architectures. Check for available |
|
|
470 | plugins on your arch before trying to install a VM by running <c>emerge -pv |
|
|
471 | <java-vm></c>. |
|
|
472 | </note> |
|
|
473 | |
|
|
474 | <p> |
|
|
475 | Portage will allow you to install multiple versions of Java plugins, though |
|
|
476 | only one will be used by your browser. You can check the list of available |
|
|
477 | plugins by running: |
|
|
478 | </p> |
|
|
479 | |
|
|
480 | <pre caption="Viewing available plugins"> |
|
|
481 | # <i>eselect java-nsplugin list</i> |
|
|
482 | [1] sun-jre-bin-1.6 |
|
|
483 | [2] icedtea-bin |
|
|
484 | </pre> |
|
|
485 | |
|
|
486 | <p> |
|
|
487 | In this example, <c>sun-jre-bin</c> is selected for the browser plugin. |
|
|
488 | </p> |
|
|
489 | |
|
|
490 | <pre caption="Selecting a plugin"> |
|
|
491 | # <i>eselect java-nsplugin set sun-jre-bin-1.6</i> |
|
|
492 | </pre> |
|
|
493 | |
|
|
494 | <p> |
|
|
495 | Verify that the correct plugin was selected: |
|
|
496 | </p> |
|
|
497 | |
|
|
498 | <pre caption="Verifying the correct plugin"> |
|
|
499 | # <i>eselect java-nsplugin list</i> |
|
|
500 | [1] sun-jre-bin-1.6 current |
|
|
501 | [2] icedtea-bin |
|
|
502 | </pre> |
|
|
503 | |
|
|
504 | <p> |
|
|
505 | Java.com also provides a link to <uri |
|
|
506 | link="http://java.com/en/download/installed.jsp">verify your installed |
|
|
507 | plugin</uri>. Additionally, if you are using a Mozilla-based browser, you can |
|
|
508 | verify your Java plugin by typing <c>about:plugins</c> into the address bar. |
|
|
509 | </p> |
|
|
510 | |
|
|
511 | </body> |
|
|
512 | </section> |
|
|
513 | <section> |
|
|
514 | <title>Plugins on multilib systems</title> |
|
|
515 | <body> |
|
|
516 | |
|
|
517 | <p> |
|
|
518 | If you are running a mixed 64-bit and 32-bit multilib system (for example, on |
|
|
519 | AMD64), you can use 64-bit and 32-bit Java plugins. Unless you have a pressing |
|
|
520 | need to run 32-bit Java applications, we recommend using native 64-bit plugins |
|
|
521 | on 64-bit web browsers. |
|
|
522 | </p> |
|
|
523 | |
|
|
524 | <p> |
|
|
525 | There are several native 64-bit browser plugins available. The default JDK/JRE |
|
|
526 | pair, <c>sun-jdk</c> and <c>sun-jre-bin</c>, both include browser plugins. Just |
|
|
527 | emerge one of them with the <c>nsplugin</c> USE flag enabled. |
|
|
528 | </p> |
|
|
529 | |
|
|
530 | <pre caption="Installing a 64-bit plugin"> |
|
|
531 | # <i>echo "dev-java/sun-jre-bin nsplugin" >> /etc/portage/package.use</i> |
|
|
532 | # <i>emerge sun-jre-bin</i> |
|
|
533 | </pre> |
|
|
534 | |
|
|
535 | <p> |
|
|
536 | To use a 32-bit plugin on a 32-bit browser, you will need to emerge |
|
|
537 | <c>emul-linux-x86-java</c> with the <c>nsplugin</c> USE flag enabled. |
|
|
538 | </p> |
|
|
539 | |
|
|
540 | <pre caption="Installing a 32-bit plugin"> |
|
|
541 | # <i>echo "app-emulation/emul-linux-x86-java nsplugin" >> /etc/portage/package.use</i> |
|
|
542 | # <i>emerge emul-linux-x86-java</i> |
|
|
543 | </pre> |
|
|
544 | |
|
|
545 | <p> |
|
|
546 | Next, check which plugins are available: |
|
|
547 | </p> |
|
|
548 | |
|
|
549 | <pre caption="Viewing available plugins"> |
|
|
550 | # <i>eselect java-nsplugin list</i> |
|
|
551 | Available 32-bit Java browser plugins |
|
|
552 | [1] emul-linux-x86-java-1.5 |
|
|
553 | [2] emul-linux-x86-java-1.6 |
|
|
554 | Available 64-bit Java browser plugins |
|
|
555 | [1] icedtea-bin |
|
|
556 | [2] sun-jre-bin-1.6 |
|
|
557 | </pre> |
|
|
558 | |
|
|
559 | <p> |
|
|
560 | Now select the right plugin for your browsers: |
|
|
561 | </p> |
|
|
562 | |
|
|
563 | <pre caption="Selecting plugins"> |
|
|
564 | <comment>(Choose the plugins for 32-bit and 64-bit browsers)</comment> |
|
|
565 | # <i>eselect java-nsplugin set 32bit emul-linux-x86-java-1.6</i> |
|
|
566 | # <i>eselect java-nsplugin set 64bit sun-jre-bin-1.6</i> |
|
|
567 | </pre> |
|
|
568 | |
|
|
569 | <p> |
|
|
570 | Verify the correct plugin was selected: |
|
|
571 | </p> |
|
|
572 | |
|
|
573 | <pre caption="Verifying the correct plugin"> |
|
|
574 | # <i>eselect java-nsplugin list</i> |
|
|
575 | Available 32-bit Java browser plugins |
|
|
576 | [1] emul-linux-x86-java-1.5 |
|
|
577 | [2] emul-linux-x86-java-1.6 current |
|
|
578 | Available 64-bit Java browser plugins |
|
|
579 | [1] icedtea-bin |
|
|
580 | [2] sun-jre-bin-1.6 current |
|
|
581 | </pre> |
|
|
582 | |
|
|
583 | </body> |
|
|
584 | </section> |
|
|
585 | </chapter> |
|
|
586 | |
|
|
587 | <chapter> |
|
|
588 | <title>USE flags for use with Java</title> |
|
|
589 | <section> |
|
|
590 | <title>Setting USE flags</title> |
|
|
591 | <body> |
|
|
592 | |
|
|
593 | <p> |
|
|
594 | For more information regarding USE flags, refer to the <uri |
|
|
595 | link="/doc/en/handbook/handbook-x86.xml?part=2&chap=2">USE flags</uri> |
|
|
596 | chapter from the Gentoo Handbook. |
|
|
597 | </p> |
|
|
598 | |
|
|
599 | </body> |
|
|
600 | </section> |
|
|
601 | <section> |
|
|
602 | <title>The flags</title> |
|
|
603 | <body> |
|
|
604 | |
|
|
605 | <ul> |
|
|
606 | <li>The <b>java</b> flag adds support for Java in a variety of programs</li> |
|
|
607 | <li> |
|
|
608 | The <b>nsplugin</b> flag adds support for Mozilla-like browsers (including |
|
|
609 | Firefox). You will need this for viewing Java applets in your Mozilla-like |
|
|
610 | browser. |
|
|
611 | </li> |
|
|
612 | <li> |
|
|
613 | The <b>source</b> flag installs a zip of the source code of a package. |
|
|
614 | This is traditionally used for IDEs to 'attach' source to the libraries you |
|
|
615 | are using. |
|
|
616 | </li> |
|
|
617 | <li>The <b>jce</b> flag adds support for the Java Cryptography Engine</li> |
|
|
618 | <li> |
|
|
619 | For Java packages, the <b>doc</b> flag will build API documentation using |
|
|
620 | javadoc. |
|
|
621 | </li> |
|
|
622 | </ul> |
|
|
623 | |
| 150 | </body> |
624 | </body> |
| 151 | </section> |
625 | </section> |
| 152 | </chapter> |
626 | </chapter> |
| 153 | |
627 | |
| 154 | <chapter> |
628 | <chapter> |
| 155 | <title>Additional resources</title> |
629 | <title>Additional resources</title> |
| 156 | <section> |
630 | <section> |
| 157 | <title>Off-line resources</title> |
631 | <title>Off-line resources</title> |
| 158 | <body> |
632 | <body> |
|
|
633 | |
| 159 | <ul> |
634 | <ul> |
| 160 | <li>java-config man page</li> |
635 | <li>java-config man page</li> |
| 161 | <li><c>java-config --help</c></li> |
636 | <li><c>java-config --help</c></li> |
| 162 | <li>The <path>/usr/bin/java-config</path> script itself</li> |
|
|
| 163 | </ul> |
637 | </ul> |
|
|
638 | |
| 164 | </body> |
639 | </body> |
| 165 | </section> |
640 | </section> |
| 166 | <section> |
641 | <section> |
| 167 | <title>Online resources</title> |
642 | <title>Online resources</title> |
| 168 | <body> |
643 | <body> |
|
|
644 | |
| 169 | <ul> |
645 | <ul> |
| 170 | <li>The <uri link="http://lists.gentoo.org/pipermail/gentoo-dev/"> |
646 | <li> |
| 171 | gentoo-dev </uri>, |
647 | The <uri link="http://www.gentoo.org/proj/en/java/">Java Project |
| 172 | <uri link="http://lists.gentoo.org/pipermail/gentoo-user/"> gentoo-user |
648 | Page</uri> |
|
|
649 | </li> |
|
|
650 | <li> |
|
|
651 | The <uri |
|
|
652 | link="http://news.gmane.org/gmane.linux.gentoo.java">gentoo-java</uri>, |
|
|
653 | <uri |
|
|
654 | link="http://news.gmane.org/gmane.linux.gentoo.user">gentoo-user</uri>, and |
|
|
655 | <uri |
|
|
656 | link="http://news.gmane.org/gmane.linux.gentoo.devel">gentoo-dev</uri> |
| 173 | </uri> mailing list archives</li> |
657 | mailing list archives |
| 174 | <li>#gentoo on irc.openprojects.net</li> |
658 | </li> |
|
|
659 | <li> |
|
|
660 | <uri link="irc://irc.gentoo.org/gentoo">#gentoo</uri> and <uri |
|
|
661 | link="irc://irc.gentoo.org/gentoo-java">#gentoo-java</uri> on IRC |
|
|
662 | </li> |
|
|
663 | <li> |
|
|
664 | <uri |
|
|
665 | link="http://en.wikipedia.org/wiki/Java_programming_language">Wikipedia's |
|
|
666 | entry for Java</uri> |
|
|
667 | </li> |
|
|
668 | <li> |
|
|
669 | If you have suggestions or questions regarding this document, please email |
|
|
670 | the Gentoo Java team: <mail>java@gentoo.org</mail> |
|
|
671 | </li> |
| 175 | </ul> |
672 | </ul> |
| 176 | </body> |
|
|
| 177 | </section> |
|
|
| 178 | </chapter> |
|
|
| 179 | <chapter> |
|
|
| 180 | <title>Caveats</title> |
|
|
| 181 | <section> |
|
|
| 182 | <title>General</title> |
|
|
| 183 | <body> |
|
|
| 184 | <p>If you select a JRE as your default VM, you may not have a |
|
|
| 185 | <c>javac</c> command handy at all times, unless you have manually |
|
|
| 186 | installed a symlink to take care of that.</p> |
|
|
| 187 | |
673 | |
| 188 | <p>Jikes will be used to compile some of the largest packages, if it |
|
|
| 189 | is available. With time, we hope to be able to compile all |
|
|
| 190 | java-dependent packages with Jikes, so some dependencies on the JDK |
|
|
| 191 | can be replaced with a dependency on the JRE.</p> |
|
|
| 192 | |
|
|
| 193 | <p>With some versions of Portage, doing an <c>emerge --world |
|
|
| 194 | update</c> will install the JDK regardless if whether you have it |
|
|
| 195 | installed before or not. This is a known bug addressed in later |
|
|
| 196 | versions of Portage.</p> |
|
|
| 197 | </body> |
674 | </body> |
| 198 | </section> |
675 | </section> |
| 199 | </chapter> |
676 | </chapter> |
| 200 | </guide> |
677 | </guide> |