Gentoo Archives: gentoo-commits

From: "Le Zhang (r0bertz)" <r0bertz@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] gentoo commit in xml/htdocs/doc/zh_cn: java.xml
Date: Mon, 04 Aug 2008 19:32:15
Message-Id: E1KQ5mt-0006OF-PX@stork.gentoo.org
1 r0bertz 08/08/04 19:32:11
2
3 Added: java.xml
4 Log:
5 [zh_cn] added java.xml
6
7 Revision Changes Path
8 1.1 xml/htdocs/doc/zh_cn/java.xml
9
10 file : http://sources.gentoo.org/viewcvs.py/gentoo/xml/htdocs/doc/zh_cn/java.xml?rev=1.1&view=markup
11 plain: http://sources.gentoo.org/viewcvs.py/gentoo/xml/htdocs/doc/zh_cn/java.xml?rev=1.1&content-type=text/plain
12
13 Index: java.xml
14 ===================================================================
15 <?xml version="1.0" encoding="utf-8"?>
16
17 <!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/zh_cn/java.xml,v 1.1 2008/08/04 19:32:11 r0bertz Exp $ -->
18 <!-- English CVS version: 1.41 -->
19 <!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
20
21 <guide link="/doc/zh_cn/java.xml" lang="zh_cn" disclaimer="draft">
22 <title>Gentoo Java指南</title>
23
24 <author title="作者">
25 <mail link="nichoj@g.o">Joshua Nichols</mail>
26 </author>
27 <author title="作者">
28 <mail link="karltk@g.o">Karl Trygve Kalleberg</mail>
29 </author>
30 <author title="编辑">
31 <mail link="nightmorph@g.o">Joshua Saddler</mail>
32 </author>
33 <author title="译者">
34 <mail link="foo@×××.com">Jipeng Tan</mail>
35 </author>
36 <author title="审校">
37 <mail link="r0bertz@g.o">张乐</mail>
38 </author>
39
40 <abstract>
41 这篇指南会向您介绍Java,并且说明如何在Gentoo Linux中使用Java。
42 </abstract>
43
44 <!-- The content of this document is licensed under the CC-BY-SA license
45 See http://creativecommons.org/licenses/by-sa/2.5 -->
46 <license/>
47
48 <version>0.16</version>
49 <date>2008-01-01</date>
50
51 <chapter>
52 <title>什么是Java?</title>
53 <section>
54 <title>简介</title>
55 <body>
56
57 <p>
58 Java是Sun Microsystems开发的一门面向对象的程序语言,可以在不用重新编译的前提下运行在不同的平台上。虽然也可以被编译成原生程序,但良好的移植性和内存垃圾回收才是Java受欢迎的主要原因。Java编译器会将Java代码转换成Java字节码作为中间层在JRE(Java运行环境)上而不是直接在操作系统上运行,这就使平台无关成为了可能。
59 </p>
60
61 <p>
62 为了运行Java字节码,必须首先安装JRE(Java运行环境)。JRE会提供核心库,一个独立平台的Java虚拟机和浏览器插件等等。JDK(Java开发工具)则集成了编程所开发需的工具,例如字节码编译器和调试器。
63 </p>
64
65 </body>
66 </section>
67 </chapter>
68
69 <chapter>
70 <title>在你开始之前</title>
71 <section>
72 <title>已经安装</title>
73 <body>
74
75 <p>
76 如果已经安装过Java,不论是什么版本都请参照<uri link="/proj/en/java/java-upgrade.xml">Java升级指南</uri>。
77 </p>
78
79 </body>
80 </section>
81 <section>
82 <title>全新安装</title>
83 <body>
84
85 <p>
86 全新安装不需要其它准备工作。
87 </p>
88
89 </body>
90 </section>
91 </chapter>
92
93 <chapter>
94 <title>安装虚拟机</title>
95 <section>
96 <title>选择</title>
97 <body>
98
99 <p>
100 Gentoo提供了多种运行环境(JRE)和开发工具(JDK)。我们现有的选择是:
101 </p>
102
103 <table>
104 <tr>
105 <th>提供商</th>
106 <th>JDK</th>
107 <th>JRE</th>
108 </tr>
109 <tr>
110 <ti>Blackdown Java Kit</ti>
111 <ti>dev-java/blackdown-jdk</ti>
112 <ti>dev-java/blackdown-jre</ti>
113 </tr>
114 <tr>
115 <ti>Sun Java Kit</ti>
116 <ti>dev-java/sun-jdk</ti>
117 <ti>dev-java/sun-jre-bin</ti>
118 </tr>
119 <tr>
120 <ti>IBM Java Kit</ti>
121 <ti>dev-java/ibm-jdk-bin</ti>
122 <ti>dev-java/ibm-jre-bin</ti>
123 </tr>
124 <tr>
125 <ti>BEA WebLogic J2SE Development Kit</ti>
126 <ti>dev-java/jrockit-jdk-bin</ti>
127 </tr>
128 </table>
129
130
131 <!--
132
133 TODO: list free implementations?
134
135 note about not drop-in replacements
136
137 kaffe/sablevm/gcj/jamvm
138
139 -->
140 <p>
141 默认安装的Java JDK/JRE 1.4是Blackdown提供的,它是完全免费且不需要注册的。
142 </p>
143
144 <p>
145 Sun、IBM和BEA的JRE/JDK运行速度一般会快一些,但是在下载和安装之前,你需要做更多的工作,比如接受许可认证(IBM需要你先注册用户)。
146 </p>
147
148 </body>
149 </section>
150 <section>
151 <title>安装JRE/JDK</title>
152 <body>
153
154 <p>
155 你可以使用<c>emerge virtual/jdk</c>来安装profile默认的JDK。或者,你可以使用<c>emerge virtual/jre</c>安装profile默认的JRE。
156 </p>
157
158 <p>
159 Sun近期重新制作了一个更适合Linux的JDK/JRE许可认证。从Java 1.5开始,用户可以在不做任何额外工作的前提下,免费下载JDK/JRE。
160 </p>
161
162 <note>
163 如果你要安装JDK,就不用再安装JRE,因为JRE是JDK的一部分。
164 </note>
165
166 </body>
167 </section>
168 <section>
169 <title>安装不能通过命令行下载的虚拟机</title>
170 <body>
171
172 <p>
173 正如刚才所说,在安装某些JDK和JRE前你需要多做一些步骤。你只需要照常emerge你需要的软件包,之后ebuild会告诉你在哪里可以下载所需的文件。
174 </p>
175
176 <p>
177 把需要的软件包放在<path>/usr/portage/distfiles</path>。完成后重新emerge安装JRE/JDK。
178 </p>
179
180 </body>
181 </section>
182 </chapter>
183
184 <chapter>
185 <title>配置你的虚拟机</title>
186 <section>
187 <title>简介</title>
188 <body>
189
190 <p>
191 Gentoo支持安装多个JDK或者JRE并且不会造成任何冲突。
192 </p>
193
194 <p>
195 使用<c>java-config</c>工具,你可以更改系统设置(需要root用户)。普通用户可以使用<c>java-config</c>改变个人设置。
196 </p>
197
198 <note>
199 你也可以使用<e>eselect</e>来改变系统和用户的虚拟机。参照<c>eselect java-vm help</c>。
200 </note>
201
202 </body>
203 </section>
204 <section>
205 <title>设定默认虚拟机</title>
206 <body>
207
208 <p>
209 运行<c>java-config --list-available-vms</c>会显示在你机器上现有的JRE和JDK。如下例:
210 </p>
211
212 <pre caption="显示可用虚拟机">
213 # <i>java-config --list-available-vms</i>
214 The following VMs are available for generation-2:
215 1) Blackdown JDK 1.4.2.03 [blackdown-jdk-1.4.2]
216 2) Blackdown JRE 1.4.2.03 [blackdown-jre-1.4.2]
217 3) Blackdown 32bit JRE 1.4.2.03 [emul-linux-x86-java-1.4.2]
218 4) Sun 32bit JRE 1.5.0.08 [emul-linux-x86-java-1.5]
219 5) Kaffe 1.1.7 [kaffe]
220 *) Sun JDK 1.5.0.08 [sun-jdk-1.5]
221 </pre>
222
223 <p>
224 <e>*</e>标志出了你现在正在使用的虚拟机(系统虚拟机或者用户虚拟机)。括号(<e>[]</e>)中的名字代表这个虚拟机的ID或者handle。你可以使用handle或ID来设置系统虚拟机:java-config --set-system-vm。下面是一个更改系统虚拟机的例子。
225 </p>
226
227 <pre caption="设定系统虚拟机">
228 <comment>(通过handle(推荐))</comment>
229 # <i>java-config --set-system-vm blackdown-jdk-1.4</i>
230 现在将会使用blackdown-jdk-1.4做为你的generation-2系统虚拟机
231 <comment>(通过ID)</comment>
232 # <i>java-config --set-system-vm 6</i>
233 Now using sun-jdk-1.5 as your generation-2 system JVM
234 </pre>
235
236 <p>
237 作为一个普通用户,你可以使用<c>java-config --set-user-vm</c>。
238 </p>
239
240 <note>
241 你不必再执行<c>source profile</c>来使用户/系统虚拟机的改动起效。
242 </note>
243
244 </body>
245 </section>
246 <section id="preferred-vm">
247 <title>首选虚拟机</title>
248 <body>
249
250 <p>
251 当安装Java写成的软件的时候,虚拟机将会在需要时被切换。
252 </p>
253
254 <p>
255 因为有很多的不同的虚拟机可以选择,我们没有足够的资源去测试和确认所有的软件包都能在上面正常工作。所以为确保所有的软件包都能成功安装,我们为每个平台都定制了一份<e>默认的/受支持的虚拟机</e>列表。此列表可以在<path>/usr/share/java-config-2/config/jdk-defaults.conf</path>文件中找到。当你在安装Java软件包时,如果系统检测到该列表中的某个虚拟机已经安装,它会自动使用该虚拟机,而不是system-vm。
256 </p>
257
258 <p>
259 有时需要在安装软件时切换虚拟机。例如,system-vm设定为1.4,当你安装需要1.5版的软件包时,虚拟机会被临时切换。
260 </p>
261
262 <p>
263 当然,Gentoo给予了用户充分的选择权利,你可以重写在<path>/etc/java-config-2/build/jdk.conf</path>中默认的配置,完全控制使用哪一个虚拟机。如下例:
264 </p>
265
266 <pre caption="/etc/java-config-2/build/jdk.conf实例">
267 <comment>我只想使用sun-jdk,例如1.4版使用sun-jdk-1.4、1.5版使用sun-jdk-1.5等等。</comment>
268 *=sun-jdk
269 </pre>
270
271 <pre caption="/etc/java-config-2/build/jdk.conf实例">
272 <comment>我只想使用sun-jdk-1.5,除了指明需要1.3或1.4版虚拟机的情况</comment>
273 *=sun-jdk-1.5
274 </pre>
275
276 <pre caption="/etc/java-config-2/build/jdk.conf实例">
277 <comment># 对于1.3版优先使用sun-jdk 1.4。当sun-jdk 1.4不可用时,用ibm-jdk-bin替代
278 # 对于1.4版,使用blackdown-jdk,1.5版使用sun-jdk</comment>
279 1.3=sun-jdk-1.4 ibm-jdk-bin
280 1.4=blackdown-jdk
281 1.5=sun-jdk
282 </pre>
283
284 <warn>
285 你不一定要更改这个文件。如果你使用了一个不被支持的虚拟机,可能发生错误。而且这样产生的bug会在使用受支持的虚拟机时产生的bug被处理完之后才会被处理。
286 </warn>
287
288 </body>
289 </section>
290 </chapter>
291
292 <chapter>
293 <title>编译器</title>
294 <section>
295 <body>
296
297 <p>
298 对于任何的JDK,你可以使用javac来调用标准的编译器。在编译时,你除了可以设定虚拟机,也可以设定编译器。简单说,你可以在<path>/etc/java-config-2/build/compilers.conf</path>里定义你首选的编译器。
299 </p>
300
301 <pre caption="/etc/java-config-2/build/compilers.conf">
302 # 如果ebuild支持它
303 # 它会从头到尾的检查COMPILERS变量里的值
304 # 并且使用第一个已经安装的编译器
305
306 COMPILERS="ecj-3.1 jikes javac"
307 </pre>
308
309 <p>
310 部分编译器不支持所有可能的-target和-source参数。所以每一个在列表中的编译器都会被检测来确定它是否支持所需要的-source/-target。javac支持所有的参数,所以如果在列表中没有发现合适的编译器,javac会被调用。
311 </p>
312
313 <p>
314 每个编译器的细节如下:
315 </p>
316
317 <table>
318 <tr>
319 <th>名称</th>
320 <th>Handle</th>
321 <th>软件包</th>
322 <th>简介</th>
323 </tr>
324 <tr>
325 <ti>javac</ti>
326 <ti>javac</ti>
327 <ti>N/A</ti>
328 <ti>
329 默认编译器,包含在JDK中。
330 </ti>
331 </tr>
332 <tr>
333 <ti>jikes</ti>
334 <ti>jikes</ti>
335 <ti>dev-java/jikes</ti>
336 <ti>
337 jikes是IBM开发的。有趣的是,它的运行速度一般要比javac快。但是请注意,它的语法要求更严格,并且会出现一些在javac下不会出现的一些问题。它还不支持Java 1.5的句法。
338 </ti>
339 </tr>
340 <tr>
341 <ti>Eclipse Java编译器</ti>
342 <ti>ecj-3.1</ti>
343 <ti>=dev-java/eclipse-ecj-3.1*</ti>
344 <ti>
345 ECJ是Eclipse开发工具用的编译器。它的运行速度很快,并且支持Java 1.5句法。
346 </ti>
347 </tr>
348 </table>
349
350 </body>
351 </section>
352 </chapter>
353
354 <chapter>
355 <title>设定默认CLASSPATH</title>
356 <section>
357 <body>
358
359 <warn>
360 下面的段落已被认为已经过时,很可能在以后被删除。我们强烈建议你不要使用它们,因为你的Java项目应该管理自己的CLASSPATH。如果你指定一个默认的CLASSPATH,部分程序可能因为发现未预期的class而产生错误。
361 </warn>
362
363 <p>
364 <c>java-config</c>也可以用来设定系统级别的CLASSPATH和用户级别的CLASSPATH。
365 </p>
366
367 <p>
368 首先,你要列出所有在你系统上安装的Java库:
369 </p>
370
371 <pre caption="列出class">
372 # <i>java-config --list-available-packages</i>
373 [xerces-2] The next generation of high performance, fully compliant XML parsers in the Apache Xerces family (/usr/share/xerces-2/package.env)
374 [junit] Simple framework to write repeatable tests (/usr/share/junit/package.env)
375 [bsh] BeanShell: A small embeddable Java source interpreter (/usr/share/bsh/package.env)
376 [bcel] The Byte Code Engineering Library: analyze, create, manipulate Java class files (/usr/share/bcel/package.env)
377 [log4j] A low-overhead robust logging package for Java (/usr/share/log4j/package.env)
378 ...
379 </pre>
380
381 <p>
382 和前面一样,在括号(<e>[]</e>)中的名字代表你将传递给<c>java-config --set-system-classpath</c>的ID。如下例:
383 </p>
384
385 <pre caption="设定classpath">
386 # <i>java-config --set-system-classpath log4j,xerces-2</i>
387 </pre>
388
389 <note>
390 当前文件夹(<path>.</path>)不会被添加到系统classpath,应该被添加到你的系统登录profile。
391 </note>
392
393 <p>
394 你需要注销并重新登录或者source <path>/etc/profile</path>来更新你的环境变量。
395 </p>
396
397 <p>
398 对于用户,<c>java-config --set-user-classpath</c>会建立<path>~/.gentoo/java-env-classpath</path>。之后你应该从你的shell的profile里source这个文件。
399 </p>
400
401 <pre caption="Source用户专有的classpath">
402 <i>if [[ -f "${HOME}/.gentoo/java-env-classpath" ]]; then
403 source ${HOME}/.gentoo/java-env-classpath
404 fi</i>
405 </pre>
406
407 <p>
408 如果你真的想要设定一个系统级别或者用户指定的classpath,你可以添加下面的代码到你的shell profile,但是我们不建议你这么做。
409 </p>
410
411 <pre caption="设定classpath">
412 # <i>export CLASSPATH="${CLASSPATH}:$(java-config --classpath log4j,xerces-2)"</i>
413 </pre>
414
415 </body>
416 </section>
417 </chapter>
418
419 <chapter>
420 <title>Java浏览器插件</title>
421 <section>
422 <title>安装插件</title>
423 <body>
424
425 <p>
426 你可以在启用<c>nsplugin</c> USE标记的情况下emerge Java虚拟机来安装Java浏览器插件。
427 </p>
428
429 <note>
430 <c>nsplugin</c>并不支持所有构架。在安装前请用<c>emerge -pv &lt;java-vm&gt;</c>来检查你的机器是否被支持。
431 </note>
432
433 <p>
434 Portage允许你安装多个不同版本的Java插件,但是只有一个会被浏览器使用。你可以用以下指令查看可用的插件:
435 </p>
436
437 <pre caption="查看可用插件">
438 # eselect java-nsplugin list
439 [1] sun-jre-bin-1.5
440 [2] blackdown-jre-1.4.2
441 </pre>
442
443 <p>
444 在这个例子中<c>sun-jre-bin</c>被选择做为浏览器插件。
445 </p>
446
447 <pre caption="选择一个插件">
448 # <i>eselect java-nsplugin set sun-jre-bin-1.5</i>
449 </pre>
450
451 <p>
452 确认选择了正确的插件:
453 </p>
454
455 <pre caption="确认正确的插件">
456 # eselect java-nsplugin list
457 [1] sun-jre-bin-1.5 current
458 [2] blackdown-jre-1.4.2
459 </pre>
460
461 <p>
462 Java.com也提供了一个链接<uri link="http://java.com/en/download/installed.jsp">来验证你已经安装的插件</uri>。如果你使用基于Mozilla的浏览器,你可以地址栏输入<c>about:plugins</c>来验证你的Java插件。
463 </p>
464
465 </body>
466 </section>
467 <section>
468 <title>multilib系统的插件</title>
469 <body>
470
471 <p>
472 如果你的系统包括了64位和32位multilib(例如AMD64),你只能使用32位Java插件。
473 </p>
474
475 <p>
476 你可以使用<c>nsplugin</c> USE标记emerge <c>emul-linux-x86-java</c>来使用32位插件。
477 </p>
478
479 <pre caption="安装32位插件">
480 # <i>echo "app-emulation/emul-linux-x86-java nsplugin" >> /etc/portage/package.use</i>
481 # <i>emerge emul-linux-x86-java</i>
482 </pre>
483
484 <p>
485 下一步,检查可用的插件:
486 </p>
487
488 <pre caption="查看可用插件">
489 # <i>eselect java-nsplugin list</i>
490 Available 32-bit Java browser plugins
491 [1] emul-linux-x86-java-1.4.2
492 [2] emul-linux-x86-java-1.5
493 </pre>
494
495 <p>
496 你必须选择一个32位的浏览器(比如<c>mozilla-firefox-bin</c>)来使用你32位的插件,64位的<c>konqueror</c>会直接调用你的Java虚拟机,所以konqueror可以使用64位的blackdown,不需要任何额外的配置。
497 </p>
498
499 <p>
500 现在,选择适合你32位浏览器的正确插件:
501 </p>
502
503 <pre caption="选择插件">
504 # <i>eselect java-nsplugin set 32bit emul-linux-x86-java-1.5</i>
505 </pre>
506
507 <p>
508 核实选择了正确的插件:
509 </p>
510
511 <pre caption="确认正确的插件">
512 # <i>eselect java-nsplugin list</i>
513 Available 32-bit Java browser plugins
514 [1] emul-linux-x86-java-1.4.2
515 [2] emul-linux-x86-java-1.5 current
516 </pre>
517
518 </body>
519 </section>
520 </chapter>
521
522 <chapter>
523 <title>Java的USE标记</title>
524 <section>
525 <title>设定USE标记</title>
526 <body>
527
528 <p>
529 更多关于USE标记的信息,参照Gentoo手册<uri link="/doc/zh_cn/handbook/handbook-x86.xml?part=2&amp;chap=2">USE标记</uri>。
530 </p>
531
532 </body>
533 </section>
534 <section>
535 <title>标记</title>
536 <body>
537
538 <ul>
539 <li><b>java</b>标记可以让多种不同的程序支持Java</li>
540 <li>
541 <b>nsplugin</b>标记让基于Mozilla的浏览器(包括Firefox)支持Java。你需要它来在基于Mozilla的浏览器上运行Java applet。
542 </li>
543 <li>
544 <b>source</b>标记会安装以zip形式安装软件包的源代码。这个一般是让IDE给你使用的库添加源代码。
545 </li>
546 <li><b>jce</b>标记添加了对Java加密引擎的支持</li>
547 <li>
548 对于Java的软件包,<b>doc</b>标记将会使用javadoc建立API文档
549 </li>
550 </ul>
551
552 </body>
553 </section>
554 </chapter>
555
556 <chapter>
557 <title>附加资料</title>
558 <section>
559 <title>离线资料</title>
560 <body>
561
562 <ul>
563 <li>java-config man page</li>
564 <li><c>java-config --help</c></li>
565 </ul>
566
567 </body>
568 </section>
569 <section>
570 <title>在线资料</title>
571 <body>
572
573 <ul>
574 <li>
575 Gentoo的<uri link="http://www.gentoo.org/proj/en/java/">Java项目主页</uri>
576 </li>
577 <li>
578 Gentoo的<uri link="http://news.gmane.org/gmane.linux.gentoo.java">gentoo-java</uri>, <uri link="http://news.gmane.org/gmane.linux.gentoo.user">gentoo-user</uri>, and <uri link="http://news.gmane.org/gmane.linux.gentoo.devel">gentoo-dev</uri>邮件列表归档
579 </li>
580 <li>irc.freenode.net上的#gentoo和#gentoo-java频道</li>
581 <li>
582 <uri link="http://en.wikipedia.org/wiki/Java_programming_language">Wikipedia上的Java条目</uri>
583 </li>
584 <li>
585 如果你对于这篇文档有建议或问题,请发邮件到Gentoo Java团队:<mail>java@g.o</mail>
586 </li>
587 </ul>
588
589 </body>
590 </section>
591 </chapter>
592 </guide>