2010-10-27 69 views
33

截至2010年10月,GNU's Java compiler死了吗? 是否有任何活动的替代品(尤其是将Java编译为本机代码)?GNU的Java编译器(GCJ)死了吗?

LLVM解决方案将是首选。

+1

@ org.life.java,我不知道OpenJDK可以创建本机二进制文件,有一个例子吗? – mikerobi 2010-10-27 16:53:51

+0

@mikerobi我的错误可能是:p – 2010-10-27 16:55:40

+0

恩,你从哪里看到它已经死了?它不会从链接的页面看起来死了。 – 2010-10-27 17:44:48

回答

23

您可以使用IKVMMono的提前编译器生成本机代码。

EDIT

有在this page底部的例子。

+4

IKVM不会创建本机代码。它仅为.NET Universe生成另一种类型的字节码。 – Horcrux7 2010-10-27 18:53:40

+2

@ Horcrux7,仔细阅读我的答案,并实际访问链接。单声道可以从.NET字节码生成本机机器码。因此,结合IKVM,您可以生成本机代码。 – mikerobi 2010-10-27 19:03:34

+3

显然谁投票给我没有阅读OP或我的答案,或不相信我。其实看看我提供的链接。他要求替代本地代码生成,这就是我给他的。 – mikerobi 2010-10-27 20:33:17

1

我认为不是它已经死了。它只有少数重要。这导致发展缓慢。有3个事实,因为它今天只有几个重要的:

  • 它基于GNU Classpath。由于Java是开放源码(OpenJDK),因此不需要另一个开源Java。这减慢了开发速度。
  • Java在过去几年中速度更快。 GCJ输出不会更快。在很多情况下,它比较慢。
  • GNU类路径有许多不兼容性。
+4

1年没有更新已成为6.它已经死了。 – 2015-07-20 15:26:55

+2

自去年10月以来正式死亡:http://tromey.com/blog/?p=911 – Matthieu 2017-01-02 23:20:26

19

一个更相关的问题是它是否真的活着。考虑这些问题,从它自己的网站:

  • 1.2支持“仍然不完整”。
  • 1.3同上。
  • 该项目最近一年多来更新[截至2009年10月]。
  • 目前“支持1.4库中的大部分,加上1.5添加。”
  • 不支持java.nio.
  • 不支持javax.naming('完整但没有提供者')。
  • 不支持javax.sql.
  • 不支持AWT或Swing。
  • 不支持通过本地化java.text.
  • java.security的状态是“未知”。
  • 不检查java.lang.reflect.中的权限
  • 是否编译泛型?
  • 缺少其他包装的巨大块将近50%的java.util.
  • 没有注释。
  • 没有脚本引擎。
  • 几乎所有的javax.xml.*(递归)都缺失。
  • 没有org.omg.CORBA.
  • 实际上没有org.w3c.
  • 与JDK 1.6电流比较here。请注意,这看起来会增加百分比来给出一个完全没有意义的总数。

并注意它没有被记录为'Java编译器'。它是一个称为GNU CLASSPATH的Java子集的编译器。反过来自2009年2月以来还没有更新过。

如果它没死,它肯定会躺下。

编辑它已经死了。 GCJ不再是listed as a GNU package。经过四年的零度活动,我们有权假定GNU CLASSPATH是相同的。

+2

GNU Classpath于2012年3月更新:http://savannah.gnu.org/forum/forum.php?forum_id=7156 – 2013-03-13 15:33:11

+1

@JanusTroelsen即使我在发布我的答案近三年后写了这篇文章,并且在您发表评论之后六个月,它仍未被更新。证明这一点,* nicht战争?*我也没有看到该页面中的任何内容,甚至可以直接从他们自己的网站上纠正我所引用的众多缺陷中的大多数。 – EJP 2013-09-13 11:59:44

+2

截至2016年10月,其作者之一宣告死亡:http://tromey.com/blog/?p=911 – Matthieu 2017-01-02 23:24:21