我一直在研究这个问题,但还没有得出一个明确的答案。我正在编写一个Mac OSX应用程序,我打算最终放在应用程序商店中,虽然我将能够在Objective-C中编写大部分内容,但我需要从仅在Java中可用的库中调用方法。我有两个问题:
从我读过的内容来看,似乎JNI(使用Invocation API)是唯一可以接受的方式(尽管Apple在Mac应用程序中不赞成使用Java,但它并不是'真的可以接受)。还有其他办法吗?
我已经读过Apple不允许在Mac App Store上使用Java应用程序,但是它是否允许使用JNI的大多数原生应用程序来合并某些Java类?由于JNI可用于将Java VM与应用程序“打包”,似乎Apple将来停止将OS包含在OSX中应该不是问题。
非常感谢您的见解。谢谢。
答案 0 :(得分:3)
@Andrew - 简而言之,如果您正在做的事情非常简单(并且不接触使用java.awt或java.swing的库),那么GCJ /可以/工作。我根本不会推荐它。我之所以这么说是因为GCJ不支持/很多/更新的'java'功能,除非你的java代码是针对JDK的旧版本编写的,否则你将遇到编译问题。如果您使用外部第三方代码编译,即eclipse.anything等,您将遇到巨大的麻烦。
我假设您已经使用java编写了代码,并希望将该代码用作更好(和本机)objc UI的服务。如果是这样的话,那么说实话,我认为你会发现更多的成功,更不用说只是咬紧牙关并为你的服务层创建一个objc代码库:(
当然,可以选择使用本机mac ui作为基于云的分布式服务层的瘦客户端(用java ofc编写)。但我不确定苹果在他们的应用程序商店中对瘦客户机如何/基于Web服务的看法。