Mac App Store是否接受用Python / Java / Ruby编写的应用程序?

时间:2010-10-22 14:37:36

标签: macos app-store

Mac App Store是否接受用Python / Java / Ruby编写的应用程序?

6 个答案:

答案 0 :(得分:16)

好消息

是的,您可以向Mac App Store提交Java应用。过去并非如此,但至少截至2013年是这样。

一个例子是Mac App Store中目前成功的MoneyDance个人理财应用available for sale

坏消息

准备和提交您的应用既不简单也不容易。你必须跳过一些箍。

  • 您的应用不能依赖于Mac上安装的Java。您必须在Mac应用中包含JRE(Java Runtime Environment)。
  • 您必须在Java应用程序周围编写一个瘦的Objective-C包装器。网站上提供了源代码和示例/教程。
  • 与任何其他应用程序一样,您必须通过Apple对任何Mac App Store应用程序所需的安全限制来解决复杂构建和部署问题的麻烦。

更多信息

顺便说一句,您可以在应用中同时使用SwingJavaFX。根据这些Java 7 Update 40,JavaFX现在与Java捆绑在一起,至少从Release Notes开始。

Java 9

新发布的Java 9应该使用运行时包装应用程序的过程变得更加容易和更好。

模块

Java 9带来了“模块化”,Java Platform Module System (JPMS),其中与JVM捆绑在一起的大约5,000个类被分组为大约一百个称为 modules 的块。您只能包含包含特定应用程序实际使用的类的模块,而不是拖动每个库。如果您不使用JSONCORBA,则无需包含JSON或CORBA相关模块。

新的jlink工具可以帮助您,将一组模块及其依赖项组装和优化为自定义运行时映像。作为奖励,我们会执行一些链接时优化工作,以使您的应用更快地启动。

64位macOS系统以及其他平台支持这些功能。

原生编译

Java 9还为本机编译带来了新的支持,以构建针对特定硬件优化的应用程序。但这种能力是实验性的,尚未准备好用于生产。

更新,截至2018年

Oracle拥有announced the end of web deployment技术,包括Java Web Start,这是之前推荐的桌面应用大道。现在,Oracle希望所有Java应用程序都与JVM捆绑在一起,例如上面提到的jlink工具。

因此,使用Java运行时包装应用程序的过程现在已成为主流,这对于Apple App Store来说是罕见的。 Oracle希望以这种方式安装任何基于Java的桌面应用程序。

答案 1 :(得分:4)

是和否。 Apple不关心您的应用程序所使用的语言,但它不能依赖或安装您提交给Apple的二进制文件之外的任何内容。相关指南如下:

2.14
Apps must be packaged and submitted using Apple's packaging technologies included in Xcode - no third party installers allowed
2.15
Apps must be self-contained, single application installation bundles, and cannot install code or resources in shared locations
2.16
Apps that download or install additional code or resources to add functionality or change their primary purpose will be rejected

因此,虽然这意味着您不能依赖Ruby或Python,但您可以使用像MacRuby这样的框架在Ruby中构建您的应用程序并嵌入Ruby解释器。对于MacRuby来说,应用程序已成功以这种方式提交到Mac App Store。

答案 2 :(得分:3)

Ruby?是的!
Apple已经接受了我用MacRuby编写的一个应用程序。

答案 3 :(得分:2)

AFAIK,Cocoa将允许您包含用不同语言编写的代码(包括Ruby和Python,但不包括Java,我不认为)。

查看Apple SDK以获取更多信息,但我相信(感谢Cocoa)这不是问题。

答案 4 :(得分:2)

对于Python应用程序,我写了一篇全面的文章,解释了如何构建这些应用程序并将其提交到Mac App Store。它包括我已成功提交的准系统示例应用程序的源代码和构建脚本。

答案 5 :(得分:0)

如果将Java应用程序捆绑到mac应用程序中,可能是Java。