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