2013-02-18 16 views
7

Pracuję nad projektem wymagającym obliczeń logiki biznesowej na podstawie względnego złożonego zestawu reguł. W calucations mają być wykonywane na następujących platformach:Używanie biblioteki Java w projekcie iOS

  • Android app
  • iOS pojemnik aplikacja
  • Java EE

Logika firma nie zależy od żadnych konkretnych szczegółów platformy lecz ściśle o "chrupnięciu numerów".

Aby uniknąć podwójnej implementacji dla języka Java i C, co wymagałoby skomplikowanych testów itp., Chciałbym utworzyć bibliotekę Java zawierającą implementację i wykorzystującą ją w aplikacji na iOS.

Jaki byłby najlepszy sposób na zrobienie tego? Czy byłoby lepiej zrobić port macierzysty dla Celu C? Czy byłoby lepiej zrobić to na odwrót i napisać bibliotekę w Objective C i używać jej na Android/Java?

Odpowiedz

7

nie ma sposobu, w jaki sposób można korzystać z biblioteki Java w aplikacji na iOS. Java wymaga interpretacji środowiska wykonawczego (JRE), a nie ma jej w systemie iOS.

Z technicznego punktu widzenia można skompilować bibliotekę Java do kodu natywnego (są na to narzędzia), ale nie polecam jej.

Do dzielenia się kodami biznesowymi pomiędzy Androidem i iOS najlepszym rozwiązaniem jest używanie czystych bibliotek C. Możesz wywoływać biblioteki C z Java używając JNI (NDK dla Androida).

Ponieważ Obj-C jest tylko małą warstwą obiektu nad czystym C, możesz z łatwością korzystać z bibliotek C z Obj-C.

można skompilować Obj-C dla NDK, zbyt, ale jest o wiele bardziej skomplikowana niż tylko za pomocą C.

+0

Dziękujemy za szczegółową odpowiedź. Prawdopodobnie damy j2objc strzał i zobaczymy, czy to działa. Jeśli nie, czystym C lub natywną implementacją w Objective-C będzie następny krok. – Philipp

0

Nie ma możliwości użycia żadnego kodu lub aplikacji związanej z językiem Java w systemie iOS. Musisz pracować na macierzystym porcie. System iOS nie ma jvm.

+0

lepiej byłoby to zrobić na odwrót i napisać bibliotekę w Objective C i używać go na Android/Java? – Philipp

+0

Nie można bezpośrednio przesłać obiektu C do java. W każdym razie we wczesnym stadium istnieje projekt o nazwie http://code.google.com/p/j2objc/. Przenosi on cel C do java. Możesz spróbować.W każdym razie, dlaczego nie wypróbujesz jakiegoś niezależnego od platformy narzędzia programistycznego, takiego jak phonegap? –

+0

@MohammedHabib W jaki sposób udostępniłby kod phonegap w J2EE? Ponadto platformy phonegap i inne podobne niezależne platformy mają jedynie ograniczone możliwości. – Sulthan

3

Można spróbować parsowania biblioteki Java Objective C z użyciem j2objc https://code.google.com/p/j2objc/

Update: To Swift Java bridge jest w fazie rozwoju https://github.com/SwiftJava/SwiftJava/blob/master/README.md

+0

Czy już go używałeś? Wszelkie doświadczenia z http://xmlvm.org/overview/? – Philipp

+0

dla czystego kodu logiki biznesowej j2objc działa dobrze. Nie ma wsparcia dla żadnej logiki interfejsu użytkownika. Nie mam doświadczenia z xmlvm.org Mam doświadczenie w korzystaniu z biblioteki c w systemach iOS i Android (przy użyciu NDK), która działa bardzo dobrze. –

Powiązane problemy