Java sur iPhone - Utopie ou réalité ?

** A lire** : Le but de cet article est de présenter brièvement tous les moyens possibles de faire du Java sur iPhone, avec leurs avantages et inconvénients. J’aimerais le faire évoluer assez régulièrement, grâce à vos commentaire et remarques. Si vous avez de nouvelles informations, ou que vous connaissez des solutions non citées, merci de m’en avertir.

Vous êtes certainement au courant que Steve Jobs a d’ores et déjà annoncé que Java ne serait jamais nativement présent sur iPhone, iPod, & Cie, son principal argument étant – et je vous conseille de vous asseoir pour lire la suite – que “plus personne n’utilise Java”. C’est décidé, après avoir écrit cet article, je me reconvertis dans l’Objective C ! Ce cher Steve a décidement beaucoup d’humour.

Ne tournons pas autour du pot pendant des heures. Oui ! Il est quand même possible de faire du java sur iPhone. Quoi ? Vous le saviez déjà ? Ah… Ok, mais connaissez-vous les solutions suivantes ?

Une machine virtuelle sur Iphone : JamVM

Si vous voulez faire tourner nativement du java sur votre iPhone, il existe un moyen d’installer une machine virtuelle directement sur votre iPhone, et ainsi faire tourner quelques application Java. Malheureusement, il n’est possible d’installer JamVM que sur un iPhone Jailbreaké. Je ne parlerai donc pas dans cet article de la manière de l’obtenir, ni de l’utiliser.

Points positifs

  • Permet de développer ses applications Java
  • Très léger (environ 200ko)
  • Supporte la totalité de la spécification Java (Blue Book)

Points négatifs

  • Besoin de Jailbreaker son iPhone

iPFaces : Des servlets et JSP sur iPhone… pour applications riches

iPFaces est un framework vous permettant de développer vos applications iPhone en Java. Le principe est simple : il s’agit simplement d’une application client/server. Coté server, vous développez une simple application JEE en utilisant les taglibs iPFaces dans vos JSP. Coté client (sur votre iPhone), l’application iPFaces Client transforme le flux envoyé par votre server en interface graphique native à l’iPhone. Ce système permet donc de développer des applications riches… avec du Java EE !

Points positifs

  • Permet de développer des applications Java au rendu graphique natif à l’iPhone
  • Très simple d’utilisation
  • Permet un découplage totale de la technologie mobile (on développe en Java EE, pas en Java ME)
  • Support de Spring, Hibernate, Struts, etc. (La seule restriction étant d’utiliser un set bien défini de taglibs dans les JSP, le reste du traitement métier peut se faire avec n’importe quel framework).

Points négatifs

  • Une application cliente générique à installer sur l’iPhone. On ne peut donc faire fonctionner qu’une seule application iPFaces à la fois. Pour changer d’application, il faut que l’utilisateur reconfigure lui-même sur application cliente pour lui dire des se connecter à une autre adresse web.
  • Un server web (conteneur de servlet au minimum) est requis, alors qu’une application équivalente développée en Objective C n’en aurait pas besoin.

Liens utiles et interéssants :

Un convertisseur Java –> Objective C : XmlVm

Dans une autre catégorie, on trouve les convertisseurs Java –> Objective C. XmlVm vous permettra d’écrire une application Java standard, qui sera intégralement transformée en Objective C, et donc exécutée nativement sur votre iPhone. Le principe est simple : XmlVm lit le byte code de votre application Java, et le transforme en XML. A partir de là, le XML étant lisible par n’importe quel language, il est possible de re-créer un code source en Objectif C. Vous pouvez donc même porter une application androïd sur votre iPhone !

Mais XmlVm ne s’arrête pas là. Il est aussi possible de développer en .NET ou Ruby, et de convertir votre code en C++ ou Python.

Points positifs

  • Développement directement en Java
  • Application finale native à l’iPhone (car générée en Objective C)
  • Emulateur fourni dans l’application, vous permettant de tester très rapidement votre code
  • Logiciel libre

Points négatifs

  • Bien qu’assez puissant, XmlVm éprouve des difficultés pour transformer certains codes. Ce n’est donc pas encore recommandé pour une utilisation commerciale

Liens utiles et interéssants :

  • Site officiel XmlVm (en anglais). Vous y trouverez aussi la vidéo de présentation, en anglais également.

Un autre convertisseur Java –> Objective C : iSpectrum

iSpectrum permet lui aussi de passer facilement du Java à l’Objective C et semblent un peu plus avancés que leur concurent, car ils permettent maintenant de créer des applications en 3D. Cependant, iSpectrum requiert Mac OS X et Xcode, car il se base sur le SDK Apple pour iPhone.

iSpectrum est utilisable sous forme de plug-in Eclipse.

Points positifs

  • Développement direct en Java via Eclipse
  • Application finale native à l’iPhone (car générée en Objective C)
  • Emulateur fourni dans l’application, vous permettant de tester très rapidement votre code

Points négatifs

  • Payant
  • Requiert Mac OS X
  • Seul un plug-in pour Eclipse existe. Il n’est donc pas possibe de se servir d’iSpectrum avec NetBeans ou bien Intellij Idea

Liens utiles et interéssants :

J2ME sur iPhone : alcheMo for iPhone

alcheMo est une suite de logiciels permettant de développer sur plusieurs environnement différents. alcheMo for iPhone permet de transformer vos applications J2ME en applications iPhone. La majorité des JSR pour mobiles sont supportées.

Points positifs

  • Développement direct en Java
  • Possibilité de porter vos anciennes application J2ME sur iPhone
  • Possède un débugguer et un émulateur intègré

Points négatifs

  • A priori très peu documenté
  • Support simplement les application J2ME

Liens utiles et interéssants :

N’hésitez pas à me laisser vos remarques sur ces solutions, que je puisse améliorer cet article régulièrement.