在iOS项目中使用Java库

我正在开发一个项目,需要基于相对复杂的规则集进行业务逻辑计算。 卡路里将在以下平台上执行:

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

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

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

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

如何在iOS应用程序中使用Java库是没有办法的。 Java需要运行时才能解释(JRE),而在iOS上则没有。

从技术上讲,你可以编译一个Java库到本地代码(有工具),但我不推荐它。

为了在Android和iOS之间共享业务代码,最好的解决方案是使用纯C库。 您可以使用JNI(Android的NDK)从Java调用C库。

因为Obj-C只是纯C的一个小对象层,所以可以很容易地从Obj-C使用C库。

你也可以为NDK编译Obj-C,但是比使用C要复杂得多。

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

更新:这个Swift Java桥梁正在开发中https://github.com/SwiftJava/SwiftJava/blob/master/README.md

在这种情况下,你应该编写你的逻辑的C实现,并为Android应用程序使用JNI。

所以你不会重复自己

http://en.wikipedia.org/wiki/Java_Native_Interface

Kotlin Native现在有一个Swift集成。 所以有了一些构建过程的开销,你可以用iOS和Android共享用Kotlin编写的业务逻辑。

https://blog.jetbrains.com/kotlin/2017/12/kotlinnative-v0-5-released-calling-kotlin-from-swift-and-c-llvm-5-and-more/

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