Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using Java library in iOS project

Tags:

java

android

ios

I am developing a project that requires business logic calculations based on a relative complex rule set. The calucations are to be executed on the following platforms:

  • Android app
  • iOS app
  • Java EE application container

The business logic does not depend on any platform specific details but is strictly about "number crunching".

To avoid double implementation for Java and Objective C, which would require elaborate testing and so forth, I would like to create a Java library cotaining the implementation and use it within the iOS app.

What would be the best way to do this? Would it be better to do a native port for Objective C? Would it be better to do it the other way around and write the library in Objective C and use it on Android/Java?

like image 557
Philipp Avatar asked Feb 18 '13 10:02

Philipp


People also ask

Can iOS use Java library?

There is no way you can use any java-related code or application in iOS. You have to work on a native port. iOS doesn't have a jvm.

Can I use Java for iOS development?

Yes, if you are a Java developer, you don't need to learn Swift or Objective-C to develop iOS apps. You can use Codename One to develop iOS apps using Java or Kotlin.

Can I use Java in Swift?

Swift programs use Java-like syntax along with security annotations on types. A regular Java editor can be used to author Swift code.

Can I use Objective-C in Android?

"You cannot run Java on iPhone, and you cannot run Objective-C on Android."


3 Answers

There is no way how you can use a Java library in an iOS application. Java requires runtime to interpret (JRE) and you don't have that on iOS.

Technically, you could compile a Java library into native code (there are tools for that) but I don't recommend it.

For sharing bussiness code between Android and iOS the best solution is to use pure C libraries. You can call C libraries from Java using JNI (NDK for Android).

Since Obj-C is only a small object layer over pure C, you can use C libraries easily from Obj-C.

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

like image 194
Sulthan Avatar answered Oct 06 '22 17:10

Sulthan


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

like image 4
Edwin Vermeer Avatar answered Oct 06 '22 16:10

Edwin Vermeer


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/

like image 4
fabb Avatar answered Oct 06 '22 16:10

fabb