今天早上,我尝试安装一些东西,然后遇到了这样的声明:
The program 'javac' can be found in the following packages:
* default-jdk
* ecj
* gcj-4.6-jdk
* gcj-4.7-jdk
* openjdk-7-jdk
* openjdk-6-jdk
Try: sudo apt-get install <selected package>
default-jdk、ecj、gcj 和 openjdk 有什么区别?
提前致谢。
答案1
默认 jre
这是一个简单的包,它依赖于openjdk-7-jre(所以基本上相当于openjdk-7-jre) 和默认 jre-headless。它安装“标准 Java 或 Java 兼容运行时”,即 OpenJDK 7 JRE。
该软件包指向 Java 运行时,或者推荐用于 i386 架构的 Java 兼容运行时,即适用于 i386 的 openjdk-7-jre。
欧洲法院
这是“独立的 Eclipse Java 编译器”。安装它不会安装 Eclipse,因为它是一个独立包(参见下面的依赖项链接)。它包含“Eclipse JDT 编译器的独立版本,作为 Eclipse 的一部分分发”,并与 Java 1.3 至 1.7 兼容。
此软件包提供 Eclipse JDT 编译器的独立版本,作为 Eclipse 的一部分分发。它通过了 JCK(Java 兼容性工具包)测试,并且与 Java 1.3、1.4、1.5、1.6 和 1.7 兼容。
gcj-4.6-jdk
(gcj-4.7-jdk 相同,但适用于 Java 7)
这是 GCC 编译器的前端,用于本地编译 Java 字节码和源文件。
GCJ 是 GCC 编译器的前端,可以本地编译 Java(tm) 源代码和字节码文件。该编译器还可以生成类文件。此软件包中还包含来自 classpath 的其他 Java 开发工具。
该软件包还包含一组包装器脚本和符号链接。它旨在为 GCJ 工具集提供类似 Java-SDK 的接口。
它原本是作为闭源 Oracle Java 编译器的开源替代品。现在它似乎已经过时了(没有更新),请参阅下面的链接(特别是 GCJ 主页上的最新更新)。
GNU 的 Java 编译器(GCJ)死了吗? - 代码日志
gnu.org 上的 GCJ 主页(更新:链接现已消失,但是GCJ wiki 仍然可用
openjdk-6-jdk
(openjdk-7-jdk 相同,但适用于 Java 7)
Java 平台的开源版本。
来自维基百科:
OpenJDK 项目的主要目标是提供 Java SE 平台 (6 和 7) 的开源实现。这是 Ubuntu 使用的默认 Java 版本,也是最容易安装的版本。
套餐概要:
OpenJDK 是一个使用 Java 编程语言构建应用程序、小程序和组件的开发环境。
这些软件包是使用 IcedTea 构建支持和来自 IcedTea 项目的补丁构建的。
另外,您的问题中没有提到 Oracle Java(因为它不在默认存储库中),为了完整起见,我将在下面列出
oracle-java7-安装程序
(包名称来自Web Up8 PPA(由 Oracle 以 .tar.gz 格式分发)
Oracle(前身为 Sun)的 Java 的闭源“官方”实现。由于许可问题,未托管在官方存储库中。Web Up8 将其作为脚本提供,可为您下载并安装。
答案2
我也遇到了同样的问题。我发现它们之间存在差异。
并且更多default-jdk
openjdk
相似的因为它们有相同的 Java API 代码。但不同之处在于目标平台。
openjdk :是最稳定的一。它被设计用于所有平台. 它基本上是针对开源平台。
default-jdk :是不稳定. 它的设计目标是目标平台. 它基本上是针对关闭平台。(后来可用于开放源代码) JRE 就在此之中。
但其他人则完全不同:他们是只是编译器。他们之所以会来,是因为 Java 最初不是开源的。只有特定的编译器为 Eclipse 等软件发布。
gcj -jdk : (GNU Java 编译器)。它是一个编译器为了GNU 中的 Java。(由 Java 使用)
ecj:(Eclipse Java 编译器)是 Eclipse 使用的 Java 编译器。
此 ecj 不是 ECJ,而是 Java Evolutionary Computation Toolkit