【问题标题】:Using a Java library in an Objective-C Mac app, and putting that app on the Mac App Store在 Objective-C Mac 应用程序中使用 Java 库,并将该应用程序放到 Mac App Store
【发布时间】:2012-01-27 05:45:56
【问题描述】:

我一直在研究这个问题一段时间,还没有得出一个明确的答案。我正在编写一个 Mac OSX 应用程序,我打算最终将它放到应用商店中,虽然我可以用 Objective-C 编写大部分应用程序,但我确实需要从仅在 Java 中可用的库中调用方法。我有两个问题:

    1234563可以接受)。有没有其他方法可以做到这一点?
  1. 我了解到 Apple 不允许在 Mac App Store 上使用 Java 应用程序,但它会允许使用 JNI 的大多数原生应用程序合并一些 Java 类吗?由于 JNI 可用于将 Java VM 与应用程序“打包”,因此 Apple 未来停止在 OSX 中包含 Java 似乎不成问题。

您的洞察力将不胜感激。谢谢。

【问题讨论】:

  • JNI 是从本机代码调用 Java 代码的唯一方法。不过,我不确定 Apple 对此事的看法。
  • @zneak - 不,不是。您可以只掏出并重定向标准输出。我明白你想说什么 - 但这是题外话并且并不完全正确。
  • 作为后续,我似乎可以使用 GCJ 之类的东西将我需要的 Java 组件编译为本机机器代码。有人知道吗?

标签: java objective-c macos java-native-interface appstore-approval


【解决方案1】:

@Andrew - 简而言之,如果您正在做的事情非常简单(并且不涉及使用 java.awt 或 java.swing 的库),那么 GCJ /could/ 可以工作。我真的不会推荐它。我之所以这么说是因为 GCJ 不支持 /many/ 的“较新”Java 功能,除非您的 Java 代码是针对旧版本的 JDK 编写的,否则您将遇到编译问题。如果您使用外部 3rd 方部门(即 eclipse.anything 等)进行编译,您会非常头疼。

我假设您拥有已经用 java 编写的代码,并希望将该代码作为服务用于更好(和原生)的 objc UI。如果是这样的话,老实说,我认为你会发现更多的成功和更少的头痛,只是咬紧牙关为你的服务层创建一个 objc 代码库:(

当然,也可以选择使用原生 mac ui 作为基于云的分布式服务层(用 java ofc 编写)的瘦客户端。但我不确定苹果在他们的应用商店中如何/如何看待瘦客户端到基于 Web 的服务。

【讨论】:

  • 谢谢你的回答,克里斯。这和我想的差不多。不幸的是,我需要的Java库不是我写的,我不可能用obj-C重写它。我将寻找另一个在 C/C++/obj-C 中做同样事情的库。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-19
  • 2011-05-06
  • 1970-01-01
  • 2011-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多