2013-02-18 57 views
7

我正在开发一个项目,该项目需要基于相对复杂的规则集进行业务逻辑计算。该calucations要在以下平台上执行:在iOS项目中使用Java库

  • Android应用
  • iOS应用
  • 的Java EE应用程序容器

业务逻辑不依赖于任何平台的具体细节,但严格关于​​“数字运算”。

为了避免Java和Objective C的双重实现,这需要进行精细的测试等等,我想创建一个包含实现的Java库,并在iOS应用程序中使用它。

这样做的最好方法是什么?为Objective C做一个本地端口会更好吗?以相反的方式做它,并在Objective C中编写库并在Android/Java上使用它会更好吗?

回答

7

没有办法,如何在iOS应用程序使用的Java库。 Java需要运行时才能解释(JRE),而您在iOS上没有。从技术上讲,你可以将Java库编译为本地代码(有工具),但我不推荐它。

为了在Android和iOS之间共享商业代码,最好的解决方案是使用纯C库。您可以使用JNI从Java调用C库(NDK for Android)。因为Obj-C只是纯C的一个小对象层,所以可以很容易地从Obj-C使用C库。

您可以编译的OBJ-C的NDK,太,但它是比只使用C.

+0

感谢您的详细回复。我们可能会给j2objc一枪,看看它是否有效。如果不是,Objective-C中的纯C或本地实现将是下一步。 – Philipp 2013-02-18 15:04:23

0

您无法在iOS中使用任何与Java相关的代码或应用程序。你必须在本地端口上工作。 iOS没有jvm。

+0

它会更好周围做它的其他方式,写在目标C库,并用它在Android/Java的? – Philipp 2013-02-18 10:34:59

+0

您无法直接将目标C移植到Java。无论如何,早期阶段有一个名为http://code.google.com/p/j2objc/的项目。它将目标C传递给java。你可以试试看。无论如何,你为什么不尝试一些平台无关的开发工具,如phonegap? – 2013-02-18 10:39:40

+0

@MohammedHabib他将如何与J2EE分享phonegap代码?此外,phonegap和其他类似平台独立的框架只具有有限的能力。 – Sulthan 2013-02-18 10:42:41

3

你可以尝试解析Java库,以Objective C的使用j2objc https://code.google.com/p/j2objc/

更新要复杂得多:这Swift Java桥正在开发中 https://github.com/SwiftJava/SwiftJava/blob/master/README.md

+0

你已经使用它了吗?任何使用http://xmlvm.org/overview/的经验?纯业务逻辑代码j2objc的 – Philipp 2013-02-18 12:27:34

+0

工作良好。不支持任何UI逻辑。我没有使用xmlvm.org的经验我有在iOS和Android中使用c库的经验(使用NDK)这非常有效。 – 2013-02-18 13:19:39