8

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

  • 安卓应用
  • iOS 应用
  • Java EE 应用程序容器

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

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

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

4

5 回答 5

8

您无法在 iOS 应用程序中使用 Java 库。Java 需要运行时来解释(JRE),而你在 iOS 上没有。

从技术上讲,您可以将 Java 库编译为本机代码(有相应的工具),但我不推荐这样做。

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

由于 Obj-C 只是纯 C 上的一个小对象层,因此您可以从 Obj-C 轻松使用 C 库。

You can compile Obj-C for NDK, too, but it is much more complicated than just using C.

于 2013-02-18T10:35:03.730 回答
4

You could try parsing the java library to Objective C using j2objc https://code.google.com/p/j2objc/

Update: This Swift Java bridge is in development https://github.com/SwiftJava/SwiftJava/blob/master/README.md

于 2013-02-18T10:54:47.810 回答
4

Kotlin Native now has a Swift integration. So with some build process overhead you could share business logic written in Kotlin with iOS and Android.

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

于 2018-01-25T06:34:40.730 回答
2

在这种情况下,您应该编写逻辑的 C 实现并将 JNI 用于 android 应用程序。

所以你不会重复自己

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

于 2013-02-18T10:34:14.353 回答
1

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

于 2013-02-18T10:32:29.873 回答