default-jdk、ecj、gcj 和 openjdk 有什么区别?

default-jdk、ecj、gcj 和 openjdk 有什么区别?

今天早上,我尝试安装一些东西,然后遇到了这样的声明:

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。

封装信息
软件包依赖项(saucy)

欧洲法院

这是“独立的 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 兼容。

封装信息
软件包依赖项(saucy)

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 将其作为脚本提供,可为您下载并安装。

如何安装 - Web Up8

答案2

我也遇到了同样的问题。我发现它们之间存在差异。

并且更多default-jdkopenjdk相似的因为它们有相同的 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

相关内容