IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

Projet Panama : une future alternative à JNI fait son apparition pour offrir un interfaçage natif avec les API


Sujet :

Entrée/Sortie Java

  1. #1
    Expert éminent sénior

    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2011
    Messages : 283
    Points : 18 071
    Points
    18 071
    Par défaut Projet Panama : une future alternative à JNI fait son apparition pour offrir un interfaçage natif avec les API
    Projet Panama : une future alternative à JNI fait son apparition pour offrir un interfaçage natif avec les API C et C++
    Sans nécessité d’écrire un code spécifique

    Peu nombreuses sont les alternatives à Java Native Interface (JNI). Mais, cette famille très sélecte risque de s’agrandir prochainement grâce au Projet Panama.

    Initié par le consultant Oracle John Rose au mois de mars, le Projet Panama a pour but de développer une manière native d’interconnecter du code géré par la JVM avec des API externes, offrant par la même occasion une meilleure expérience utilisateur pour les développeurs Java qui sollicitent des API écrites en C et C++.

    « Le principal avantage de cette proposition est qu’elle va ouvrir le monde des bibliothèques natives (écrites en C ou dans d’autres langages similaires) aux développeurs Java sans avoir à écrire un code spécifique, mais simplement du code Java » a déclaré Charles Nutter partisan du projet. De son côté, John Rose estime que « développer pareil outil permettra un interfaçage plus rapide et moins couteux entre les applications Java et les API natives, un peu comme le canal de Panama qui a été creusé dans la roche et qui permet de relier l’océan Atlantique à l’océan Pacifique ».

    Trois mois après avoir initié le projet à travers une proposition sur la mailing list d’Open JDK, il semblerait que le projet commence à prendre forme. Rose a soumis une proposition officielle, alors que la communauté OpenJDK se mobilise pour offrir le meilleur support possible au projet.

    Enfin, il est important de noter que la proposition officielle sera soumise à délibération et à un vote par les membres d’OpenJDK très prochainement. Elle contient les principales directives du projet qui se résume à :
    • un accès natif aux données et au code entre la JVM et les API natives ;
    • le développement d’un outil pour l’extraction des en-têtes API et des métadonnées de stockage ;
    • un mapping pour la transformation des valeurs et pour certains invariants ;
    • une prise en charge des API natives présélectionnées.


    Source : Billet de blog de John Rose, Annonce officielle

    Et vous ?

    Qu’en pensez-vous ?

  2. #2
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 320
    Points : 3 740
    Points
    3 740
    Billets dans le blog
    12
    Par défaut
    La manière dont il faut s'y prendre pour intégrer des modules bas niveau en Java avec JNI est compliqué, et je suis sur que beaucoup de développeurs attendent ce "JNI 2.0" avec impatience.

    Cependant, j'aimerais beaucoup avoir un aperçu de l'intégration de ces modules bas niveau dans un programme Java.
    Est-ce que ce sera comme en C# (avec des pointeurs etc...) ?
    Est-ce pourra-t-on directement intégrer du code en ASM, C, ou C++ dans des blocs de code dans une méthode Java ? Ou est-ce que ce sera un langage "intermédiaire" (dans ce cas comment intégrer les projets ASM, C, C++, ADA existants) ?
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Et qu'est-ce que ce projet a de plus de JNA, qui existe depuis des années pour remplacer JNI et qui fonctionne très bien et facilement en écrivant que du code java?

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Gugelhupf Voir le message
    Cependant, j'aimerais beaucoup avoir un aperçu de l'intégration de ces modules bas niveau dans un programme Java.
    Ils parlent de JNR et de la JEP 191 (Foreign Function Interface).
    Je pense que cela se rapprochera du "Direct Mapping" de JNA, mais directement dans l'API et la JVM pour de meilleure performance.


    Citation Envoyé par Gugelhupf Voir le message
    Est-ce que ce sera comme en C# (avec des pointeurs etc...) ?
    Je ne sais pas comment cela fonctionne pour C#, mais il devra sûrement y avoir des types spécifiques pour cela...


    Citation Envoyé par Gugelhupf Voir le message
    Est-ce pourra-t-on directement intégrer du code en ASM, C, ou C++ dans des blocs de code dans une méthode Java ? Ou est-ce que ce sera un langage "intermédiaire" (dans ce cas comment intégrer les projets ASM, C, C++, ADA existants) ?
    Je ne pense pas qu'il s'agisse de permettre cela.
    Le code Java ne contiendra toujours que du code Java, et rien d'autre !


    Je pense que l'objectif consiste plutôt à éviter d'avoir à écrire (et compiler) du code natif pour utiliser une librairie native déjà compilé (*.dll, *.so).
    Du coup le langage de la librairie importe peu si elle génère bien une librairie native...


    a++

  5. #5
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Et qu'est-ce que ce projet a de plus de JNA, qui existe depuis des années pour remplacer JNI et qui fonctionne très bien et facilement en écrivant que du code java?
    Ils parlent de JNR.
    Je ne connais pas vraiment mais il semble que c'est du JNA en plus poussé, avec plus de types gérés et surtout de meilleure performance.

    Mais le gros intérêt serait d'avoir cela en standard, potentiellement optimisable par la JVM.



    a++

  6. #6
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 320
    Points : 3 740
    Points
    3 740
    Billets dans le blog
    12
    Par défaut
    Merci pour le lien adiGuba, je comprends mieux grâce aux exemples.
    Ce sera un peu comme JNI 1.0 au niveau de l'appel de la méthode native en fait.
    Ce qu'on peut remarquer par contre c'est que le mot-clé "native" n'est plus utilisé, et que pour les types "spéciaux" il faut utiliser une annotation Java sur le prototype de méthode.

    Tout cela n'est pas déstabilisant, maintenant il faut voir la manip pour intégrer les ".so" & ".dll". J'espère juste qu'on n'aura une étape intermédiaire comme celui-là à coder :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    /* DO NOT EDIT THIS FILE - it is machine generated */
    #include <jni.h>
    /* Header for class TestJNI1 */
     
    #ifndef _Included_TestJNI1
    #define _Included_TestJNI1
    #ifdef __cplusplus
    extern " C " {
    #endif
     
    JNIEXPORT void JNICALL Java_TestJNI1_afficherBonjour(JNIEnv *, jobject);
    #ifdef __cplusplus
    }
    #endif
    #endif

    EDIT : J'espère juste qu'on n'aura PAS une étape intermédiaire comme celui-là à coder
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  7. #7
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    L'objectif c'est clairement de ne plus avoir à écrire du code natif, comme on peut déjà le faire avec JNA ou JNR...

    Après je pense qu'il faudra attendre encore pour avoir plus de détail sur la syntaxe précise.


    a++

Discussions similaires

  1. Réponses: 5
    Dernier message: 27/02/2013, 15h00
  2. Comment ajouter une chaîne dans une liste avec les API Windows ?
    Par DelphiCool dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 02/02/2013, 14h47
  3. Réponses: 1
    Dernier message: 30/07/2010, 19h35
  4. Déplacer une fenêtre avec les API user32.dll.
    Par jmix90 dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 11/06/2009, 12h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo