2013-02-18 2 views
7

Je développe un projet qui nécessite des calculs de logique métier basés sur un ensemble de règles relativement complexe. Les calucations doivent être exécutées sur les plates-formes suivantes:Utilisation de la bibliothèque Java dans le projet iOS

  • app Android
  • iOS app
  • application Java EE conteneur

La logique commerciale ne dépend pas d'une plate-forme de détails spécifiques, mais est strictement sur "le nombre croquant". Pour éviter une double implémentation pour Java et Objective C, ce qui nécessiterait des tests élaborés, je voudrais créer une bibliothèque Java qui contienne l'implémentation et l'utiliser dans l'application iOS.

Quelle serait la meilleure façon de faire cela? Serait-il préférable de faire un port natif pour l'objectif C? Serait-il préférable de le faire dans l'autre sens et d'écrire la bibliothèque dans Objective C et de l'utiliser sur Android/Java?

Répondre

7

Il n'y a aucun moyen comment vous pouvez utiliser une bibliothèque Java dans une application iOS. Java nécessite l'exécution pour interpréter (JRE) et vous ne l'avez pas sur iOS. Techniquement, vous pouvez compiler une bibliothèque Java en code natif (il existe des outils pour cela) mais je ne le recommande pas.

Pour le partage de code d'entreprise entre Android et iOS, la meilleure solution consiste à utiliser des bibliothèques C pur. Vous pouvez appeler des bibliothèques C à partir de Java en utilisant JNI (NDK pour Android). Puisque Obj-C est seulement un petit objet sur C pur, vous pouvez facilement utiliser les bibliothèques C depuis Obj-C.

Vous pouvez compilez Obj-C pour NDK, aussi, mais il est beaucoup plus complexe que la simple utilisation C.

+0

Nous vous remercions de votre réponse détaillée. Nous allons probablement donner une chance à j2objc et voir si cela fonctionne. Si ce n'est pas le cas, l'implémentation C ou native pure dans Objective-C sera la prochaine étape. – Philipp

0

Il est impossible d'utiliser un code ou une application Java dans iOS. Vous devez travailler sur un port natif. iOS n'a pas de jvm.

+0

Serait-il préférable de le faire dans l'autre sens et écrire la bibliothèque en Objective C et de l'utiliser sur Android/Java? – Philipp

+0

Vous ne pouvez pas non plus porter directement l'objectif C vers Java. Quoi qu'il en soit, il existe un projet en début de http://code.google.com/p/j2objc/. Il traduit l'objectif C en Java. Vous pouvez essayer.Quoi qu'il en soit, pourquoi ne pas essayer un outil de développement indépendant de la plate-forme comme phonegap? –

+0

@MohammedHabib Comment partagerait-il le code phonegap avec J2EE? En outre, le téléphone et d'autres cadres indépendants de plate-forme similaires n'ont que des capacités limitées. – Sulthan

3

Vous pouvez essayer l'analyse de la bibliothèque java à l'objectif C en utilisant j2objc https://code.google.com/p/j2objc/

Mise à jour: Cette Le pont Java Swift est en cours de développement https://github.com/SwiftJava/SwiftJava/blob/master/README.md

+0

L'avez-vous déjà utilisé? Des expériences avec http://xmlvm.org/overview/? – Philipp

+0

pour le code de logique métier pure j2objc fonctionne bien. Il n'y a pas de support pour une logique d'interface utilisateur. Je n'ai aucune expérience avec xmlvm.org J'ai de l'expérience avec l'utilisation d'une bibliothèque c dans iOS et Android (en utilisant NDK) Cela fonctionne très bien. –

Questions connexes