在Objective-C Mac应用程序中使用Java库,并将该应用程序放在Mac App Store上

时间:2011-12-24 07:15:57

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

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

  1. 从我读过的内容来看,似乎JNI(使用Invocation API)是唯一可以接受的方式(尽管Apple在Mac应用程序中不赞成使用Java,但它并不是'真的可以接受)。还有其他办法吗?

  2. 我已经读过Apple不允许在Mac App Store上使用Java应用程序,但是它是否允许使用JNI的大多数原生应用程序来合并某些Java类?由于JNI可用于将Java VM与应用程序“打包”,似乎Apple将来停止将OS包含在OSX中应该不是问题。

  3. 非常感谢您的见解。谢谢。

1 个答案:

答案 0 :(得分:3)

@Andrew - 简而言之,如果您正在做的事情非常简单(并且不接触使用java.awt或java.swing的库),那么GCJ /可以/工作。我根本不会推荐它。我之所以这么说是因为GCJ不支持/很多/更新的'java'功能,除非你的java代码是针对JDK的旧版本编写的,否则你将遇到编译问题。如果您使用外部第三方代码编译,即eclipse.anything等,您将遇到巨大的麻烦。

我假设您已经使用java编写了代码,并希望将该代码用作更好(和本机)objc UI的服务。如果是这样的话,那么说实话,我认为你会发现更多的成功,更不用说只是咬紧牙关并为你的服务层创建一个objc代码库:(

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