2013-02-18 15 views
7

Sto sviluppando un progetto che richiede calcoli di business logic basati su un set di regole complesso relativo. I calucations devono essere eseguiti sulle seguenti piattaforme:Utilizzo della libreria Java nel progetto iOS

  • Android app
  • iOS contenitore di applicazioni
  • Java EE

La logica di business non dipende da dettagli specifici di piattaforma, ma è strettamente su "numero crunch".

Per evitare la doppia implementazione per Java e Objective C, che richiederebbero elaborati test e così via, vorrei creare una libreria Java che ne contenga l'implementazione e utilizzarla all'interno dell'app iOS.

Quale sarebbe il modo migliore per farlo? Sarebbe meglio fare una porta nativa per l'obiettivo C? Sarebbe meglio farlo al contrario e scrivere la libreria in Objective C e usarla su Android/Java?

risposta

7

Non c'è modo come è possibile utilizzare una libreria Java in un'applicazione iOS. Java richiede il runtime per interpretare (JRE) e non lo hai su iOS.

Tecnicamente, è possibile compilare una libreria Java in codice nativo (ci sono strumenti per questo), ma io non lo consiglio.

Per condividere codice di bussiness tra Android e iOS la soluzione migliore è utilizzare librerie C pure. Puoi chiamare le librerie C da Java usando JNI (NDK per Android).

Poiché Obj-C è solo un piccolo livello di oggetto su C pura, è possibile utilizzare facilmente le librerie C da Obj-C.

è possibile compilare Obj-C per NDK, troppo, ma è molto più complicata di un semplice utilizzando C.

+0

Grazie per la risposta dettagliata. Probabilmente daremo un colpo a j2objc e vediamo se funziona. In caso contrario, l'implementazione C o nativa in Objective-C sarà il prossimo passo. – Philipp

0

Non è possibile utilizzare alcun codice o applicazione java in iOS. Devi lavorare su una porta nativa. iOS non ha jvm.

+0

Sarebbe meglio farlo il contrario e scrivere la biblioteca in Objective C e usarlo su Android/Java? – Philipp

+0

Non è possibile portare direttamente l'obiettivo C a java. Ad ogni modo, c'è un progetto in fase iniziale chiamato http://code.google.com/p/j2objc/. Traspone l'obiettivo C in java. Puoi fare un tentativo.Ad ogni modo, perché non provi uno strumento di sviluppo indipendente dalla piattaforma come PhoneGap? –

+0

@MohammedHabib Come avrebbe condiviso il codice phonegap con J2EE? Inoltre, phonegap e altre piattaforme indipendenti simili hanno solo capacità limitate. – Sulthan

3

Si potrebbe provare l'analisi del libreria Java per Objective C utilizzando j2objc https://code.google.com/p/j2objc/

Aggiornamento: Questa È in sviluppo il ponte Swift Java https://github.com/SwiftJava/SwiftJava/blob/master/README.md

+0

L'hai già usato? Qualche esperienza con http://xmlvm.org/overview/? – Philipp

+0

per codice di business logic puro j2objc funziona correttamente. Non c'è supporto per alcuna logica dell'interfaccia utente. Non ho esperienza con xmlvm.org Ho esperienza con l'utilizzo di una libreria c in iOS e Android (utilizzando NDK) che funziona molto bene. –

Problemi correlati