从下一个版本的Mac OS X开始,系统将不再包含Java,而我不想强迫我的客户自行安装它。因此,我想像在Windows上一样,将其与我的应用捆绑在一起。这也让我有些希望它能够被包含在Mac App Store中。
我可以从哪里下载可与我的应用程序一起使用的Mac OS X JRE?还是我可以直接复制已安装在我的Mac上的JRE?
从下一个版本的Mac OS X开始,系统将不再包含Java,而我不想强迫我的客户自行安装它。因此,我想像在Windows上一样,将其与我的应用捆绑在一起。这也让我有些希望它能够被包含在Mac App Store中。
我可以从哪里下载可与我的应用程序一起使用的Mac OS X JRE?还是我可以直接复制已安装在我的Mac上的JRE?
更新(2013年4月15日):
正如Thorbjørn所指出的那样,Oracle现在已经有了解决方案。请参阅http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/packagingAppsForMac.html。但是,我将原始内容保留为“历史目的”,因为这是一个有趣的研究项目。
以前的版本(带编辑):
这是个好问题。我本来想回答你,Java不会被删除,直到Lion发布。然而,这篇文章明确表示,今天不允许使用Java:
使用弃用或可选安装技术的应用程序(例如,Java、[需要] Rosetta 的PowerPC代码)将被拒绝。
与此同时,还没有人宣布适用于Mac OS X的可再分发JRE。考虑到你正在开辟新的道路,我认为你们最好的选择是查看OpenJDK项目的Mac OS X Port维基页面。它明确描述了如何编译自己的JDK,但并没有清楚地说明所得到的JDK是否可以“干净地”“捆绑”。我想你只能尝试一下:(。
此外,不清楚OpenJDK许可证是否允许这样做(IANAL)。希望其他人已经针对Linux/Windows弄清楚了这个问题,尽管对于苹果贡献来说规则可能会有所不同。
希望这可以帮助你。如果没有其他帮助,至少也是一个起点。
编辑: 我要提出一些建议。现在我们知道Mono应用程序可以打包到App Store中。此外,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相同,但非常接近(再次说明,我不是律师)。因此,Mono和IKVM.NET可能是你最好的选择。祝你好运!
上个月,苹果加入了Sun/Oracle OpenJDK开源项目,因此苹果上的Java仍然活跃。
只需告诉用户下载并安装Mac OSX的OpenJDK JRE(目前只有源代码可用)。
不可以未经许可包含“你的Mac中的文件夹”,因为这是苹果的版权代码。
最后,打包“私有JRE”是一个非常糟糕的做法,它会使您的应用程序变得臃肿,并且如果用户最终运行多个Java应用程序,则最终同时运行多个Java VM,这是对系统资源的可怕浪费。