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


23

今天早上,我试图安装一些东西,并遇到了如下这样的声明:

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
也有吉克斯。
Pacerier,2014年

Answers:


16

default-jre

这是一个简单的程序包,它依赖于openjdk-7-jre(因此基本上等效于openjdk-7-jre)和default-jre-headless。它安装了“标准Java或Java兼容运行时”,它是OpenJDK 7 JRE。

该软件包指向Java运行时,或为i386体系结构推荐的Java兼容运行时,对于i386,openjdk-7-jre是i386体系结构。

软件包信息
软件包依赖关系(详细)

j

这是“独立的Eclipse Java编译器”。安装它不会安装Eclipse,因为它是一个独立的软件包(请参阅下面的依赖项链接)。它包含“作为Eclipse的一部分分发的Eclipse JDT编译器的独立版本”,并且与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上的Stack Overflow 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


这意味着ecj安装将安装Eclipse + Java吗?
rɑːdʒɑ

特别是GCJ的目的是什么?
rɑːdʒɑ

@rajagenupula查看我的编辑↑↑
kiri

4

我有同样的问题。我发现他们之间存在差异。

两个default-jdkopenjdk更多的类似为具有相同的Java API代码它们。但是区别在于目标平台。

  • openjdk:是最稳定的一个。它是为所有平台设计。它基本上是针对开源平台的。

  • default-jdk:不稳定。它针对特定目标平台而设计。它基本上是针对封闭平台的。(后来可用于开放源代码)JRE在其中。

但是其他人则完全不同:它们只是编译器。之所以知道它们的出现是因为,一开始Java不适用于Open-Source。仅针对诸如Eclipse之类的东西发布了某些编译器。

  • gcj -jdk :(适用于Java的GNU编译器)。这是一个编译器在GNU Java的。(由Java中使用)

  • ecj:(Eclipse Java编译器)是Eclipse使用的Java编译器。

此ecj不是Java进化计算工具包的ECJ


感谢您的光临,请查看我在同伴回答中所做的上述评论,并尝试解决这些问题。
rɑːdʒɑ
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.