在Mac OS X上捆绑私有JRE

从下一版本的Mac OS X开始,Java将不再包含在系统中,我不想强​​迫我的客户自己安装它。 所以我想做我在Windows上做的事情 – 用我的应用程序捆绑它。 它还给了我一些希望它可以包含在Mac App Store中。

我在哪里可以下载我的应用程序中可以包含的Mac OS X JRE? 或者我可以复制我的Mac上安装的那个?

更新(2013年4月15日):

正如Thorbjørn所指出的那样,Oracle现在有了解决方案。 请参阅http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/packagingAppsForMac.html 。 但是,我将原始内容保留为“历史目的”,因为这是一个有趣的研究项目。

以前的版本(带编辑):

这是一个很好的问题。 我要回应的是,你只是超前于你的时间 – 正如你所指出的那样,在Lion发布之前,Java不会被删除。 但是, 本文明确指出今天不允许使用Java:

使用已弃用或可选安装技术的应用程序(例如,Java,[PowerPC代码要求] Rosetta)将被拒绝。

与此同时,还没有人宣布Mac OS X的可再发行JRE。 考虑到你正在开辟新局面,我认为你最好的选择是查看OpenJDK项目的Mac OS X Port wiki页面 。 它确实描述了如何编译自己的JDK,但它没有明确说明生成的JDK是否可以干净地“捆绑”。 我想你必须尝试看看:-(。

此外,目前尚不清楚OpenJDK许可是否允许这一点(IANAL)。 希望其他人已经在Linux / Windows方面做到了这一点,尽管苹果的贡献当然可能有所不同。

希望这可以帮助。 如果不出意外,这是一个起点。

编辑:我将抛出一个额外的建议。 我们现在知道可以为App Store打包Mono应用程序 。 此外, IKVM.NET是在Mono之上运行的Java的完整实现。 理论上,您可以尝试将这两个部分放在一起,并获得一个捆绑在App Store中的Java应用程序,实际上并不需要JRE!

如果你试试这个,我很想听听它是如何运作的:-)。

编辑2:不幸的是,App Store和GPL似乎不兼容(请参阅http://www.zdnet.com/blog/open-source/no-gpl-apps-for-apples-app-store/8046 )。 OpenJDK许可证与GPL不完全相同 ,但它非常接近(再次,IANAL)。 因此,Mono和IKVM.NET可能是您最好的选择。 祝你好运!

在我发现这个问题的同一网页搜索中,我从OpenJDK项目中找到了这些说明 。 没有亲自尝试过,我无法评论他们的工作情况。

与此同时,Marco Dinacci发表了另一篇非常详细的文章 ,该文章也涉及签名和沙盒。

Apple上个月加入了Sun / Oracle OpenJDK开源项目,因此Apple上的Java活跃起来。

只需告诉用户下载并安装适用于Mac OSX的OpenJDK JRE(当它可用时,现在它只是源代码)。

和不。 您无法在未经许可的情况下包含“Mac中的文件夹”,因为它是Apple的受版权保护的代码。

最后,打包“私有JRE”是一种非常糟糕的做法,它将使您的应用程序膨胀,如果用户最终运行多个Java应用程序,他将最终同时运行多个Java VM,这是对系统资源的可怕浪费。