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