有人能够总结在服务器环境(即Tomcat)中使用Oracle Java JDK而不是JRE的所有优势吗?使用我喜欢的搜索引擎,我只能找到部分自相矛盾的片段。
答案 0 :(得分:1)
我对这种情况的总体评估是,我们从这些软件包(JDK,JRE)获得的内容由包装团队决定。在某种程度上,它是任意的。让我们看看如何在Ubuntu系统上使用OpenJDK 7软件包:
➜ ~ ls /usr/lib/jvm/java-7-openjdk-amd64/jre/bin
java keytool orbd pack200 policytool rmid
rmiregistry servertool tnameserv unpack200
➜ ~ ls /usr/lib/jvm/java-7-openjdk-amd64/bin
appletviewer idlj java javah jcmd jhat jps
jstack keytool pack200 rmid serialver unpack200
xjc apt jar javac javap jconsole jinfo
jrunscript jstat native2ascii policytool rmiregistry servertool
wsgen extcheck jarsigner javadoc java-rmi.cgi jdb jmap
jsadebugd jstatd orbd rmic schemagen tnameserv
wsimport
第一个位置是因为包openjdk-7-jre
(Java运行时环境),而第二个位置是因为openjdk-7-jdk
(Java Development Kit)包。第二个列表中的java
实际上是第一个列表中java
文件的符号链接。
因此,您可以看到JDK团队认为JRE和JDK之间的区别在于比较您作为这些软件包的一部分获得的程序(可执行文件)。
很长一段时间以来,我对选择这些软件包中的程序感到困惑。例如,当我只安装JRE时,我总是错过了jps
,jstack
和jhat
,jmap
等优秀的可维护性工具。这些工具非常可用于诊断Java运行时,但它们不是JRE的一部分。为了获得这些工具,必须安装JDK,而不是莫名其妙。像其他人指出的那样,javac
,Java编译器肯定属于JDK。
一般来说,我得出的结论是,除非存在一些空间问题,否则应该在目标系统上安装JDK(超集)而不是JRE。
答案 1 :(得分:0)
Tomcat有一个捆绑的java编译器,所以它只适用于JRE。你服务器上的东西越少,你就越安全。