Developpez.com

Le Club des Développeurs et IT Pro

OpenJDK sort une spécification pour le port d'applications Java sur iOS

JNI permet de combiner JVM et code en un seul exécutable

Le 2013-03-08 15:07:16, par Cedric Chevalier, Expert éminent sénior
Les développeurs d’OpenJDK ont publié une nouvelle spécification de la JNI (Java Native Interface) baptisée JEP 178. L’une de leurs motivations majeures est de rendre possible l’exécution des applications Java dans des environnements supportant peu ou pas la machine virtuelle Java comme iOS.

La présence de Java sur iOS est récente, et due à Oracle. Grâce à son framework ADF, Oracle permet de contourner les limitations imposées par iOS.

La spécification proposée par les développeurs de la plateforme open source Java vise à combiner machine virtuelle et application Java en un seul exécutable. Ainsi, les développeurs pourront empaqueter le runtime Java et le code de l’application Java dans un seul binaire qui ne nécessite pas de bibliothèques externes.

Tobias Bley, l’un des participants au projet, affirme que « JEP 178 est une exigence majeure pour Java sur iOS car Apple ne permet pas le chargement dynamique des bibliothèques natives ».

Pour James Gosling, créateur du langage Java, la spécification JEP a un léger avantage. En effet, pour que celle d’Oracle respecte les clauses de contrat de service d’Apple, la fonctionnalité génératrice de code de son compilateur JIT ne doit pas être active. Sans prendre parti, il estime que « la spécification JEP 178 respecte mieux les clauses de contrat d’Apple en permettant la génération de code ».

Pour terminer, Gosling dit que JEP 178 constitue une bonne affaire pour les développeurs d’applications embarquées.

Source : OpenJDK

Et vous ?

Êtes-vous intéressé par le développement Java pour iOS ? Que pensez-vous de cette spécification ?
  Discussion forum
3 commentaires
  • Gugelhupf
    Modérateur
    Une mini JVM embarquant le nécessaire par bytecode, on pourrait avoir de gros exécutables pour des petits programmes je pense.
    Serait-t-il possible de compiler directement du Java en langage machine ? Je pense à cela parce qu'aujourd'hui, un langage comme le C++ possède un niveau d'abstraction suffisamment élevé et permet créer des applications safe.
  • kowidi
    Candidat au Club
    Envoyé par Gugelhupf
    Une mini JVM embarquant le nécessaire par bytecode, on pourrait avoir de gros exécutables pour des petits programmes je pense.
    Serait-t-il possible de compiler directement du Java en langage machine ? Je pense à cela parce qu'aujourd'hui, un langage comme le C++ possède un niveau d'abstraction suffisamment élevé et permet créer des applications safe.
    Sous linux c'est possible de compiler en langage machine avec GCJ. Sous windows aussi je crois, mais je sais plus avec quoi. Sous ios je sais pas, mais ca serais bien en effet
  • the_babou
    Membre du Club
    Le problème avec la compile en natif est la bibliothèque disponible (pas de swing, pas de javafx, pas . . .) qui est un des plus gros avantages de JAVA.

    Par contre, Avian est une VM très interessante car elle permet de compiler en natif uniquement le corps des méthodes et de garder tout le reste comme une JVM normale. Elle supporte iOS et le jeu de classes de OpenJDK, avec l'arrivée annoncée du code de JavaFX pour iOS tout cela devient très intéressant ! ! !
    Le seul bémol est la compilation d'Avian qui n'est pas facile