cours java Introduction
41 pages
Français

cours java Introduction

-

Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres
41 pages
Français
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres

Description

Cours Java Native Interface1999, Cnam Parisjean-michel Douin, douin@cnam.frVersion du 28 Mars 2002http://lmi92.cnam.fr:8080/tp_cdi/{douin/}Notes de cours jni : de Java vers C/C++ et de C/C++ vers Java1Java_JNISommaire• De Java vers C/C++• De C/C++ vers Javalecture/écriture de données d'instance et de classesinvocation de méthodes d'instance et de classescréation d'objetcréation de tableaux et de StringLevée et filtrage d'exceptionsutilisation des moniteurs (de hoare)Entrées/sorties Sériecréation de machine(s) JavaAPI JNI // Architecture de la machine virtuelleCes notes sont accessibles : http://lmi92.cnam.fr/tp_cdi/java_jni.pdf2Java_JNIBibliographie utiliséeLe tutorial JNI de Beth Stearns• http://java.sun.com/docs/books/tutorial/index.html• surtout : http://java.sun.com/docs/books/tutorial/native1.1/index.html• jni specification : http://java.sun.com/products/jdk/1.1/download-pdf-ps.htmlUn « essentiel » ouvrage sur le sujet• Essential JNI: Java Native Interface, rob Gordon, Prentice hall.1998 ISBN 0-13-679895-0• le site de l ’éditeur http://www.phptr.com/les instructions et l ’architecture de la machine virtuelle Java reflètent lesfonctionnalités de cette API• The VM specification.http://java.sun.com/docs/books/vmspec/html3Java_JNIJNI Pourquoi ?• Applications existantes dans un environnement Java,avec ou sans les sources…• Programmation d ’un périphérique, logiciel de base,Entrées/Sorties, Cartes d ...

Informations

Publié par
Nombre de lectures 165
Langue Français

Extrait

Java
Cours Java Native Interface
1999, Cnam Paris jean-michel Douin, douin@cnam.fr Version du 28 Mars 2002 http://lmi92.cnam.fr:8080/tp_cdi/{douin/}
Notes de cours jni : de Java vers C/C++ et de C/C++ vers Java
_JNI
1
Java_JNI
Sommaire
De Java vers C/C++ De C/C++ vers Java lecture/écriture de données d'instance et de classes invocation de méthodes d'instance et de classes création d'objet création de tableaux et de String Levée et filtrage d'exceptions utilisation des moniteurs (de hoare) Entrées/sorties Série création de machine(s) Java
API JNI // Architecture de la machine virtuelle
Ces notes sont accessibles : http://lmi92.cnam.fr/tp_cdi/java_jni.pdf
2
aJav_J
Bibliographie utilisée
Le tutorial JNI de Beth Stearns http://java.sun.com/docs/books/tutorial/index.html surtout : http://java.sun.com/do cs/books/tutorial/native1.1/index.html jni specification : http://java.sun.c om/products/jdk/1.1/download-pdf-ps.html
Un « essentiel » ouvrage sur le sujet  Essential JNI: Java Native Interf ace, rob Gordon, Prentice hall.1998  ISBN 0-13-679895-0  le site de l éditeur http://www.phptr.com/
les instructions et l architecture de la machine virtuelle Java reflètent les fonctionnalités de cette API The VM specification.http://java.sun.com/docs/books/vmspec/html
IN3
aJva_JNI
JNI Pourquoi ?
Applications existantes dans un environnement Java, avec ou sans les sources Programmationdunpériphérique,logicieldebase, Entrées/Sorties, Cartes d acquisition, de commandes (Adressage physique, Accès au matériel, aux pilotes de la carte, interruptions DéveloppementenC/C++,toutenbénéficiantde lenvironnementJavaIHMenJava,applicationenC, Applet, accès à l internet CodeNatifpourdemeilleuresperformancesentemps d exécution
Portabilité est annulée, dépendant de la plate-forme, moindres robustesse et sécurité
4
Java_JNI
JNI Présentation
Deux aspects de Java vers C/C++ de C/C++ vers Java en venant de Java ou depuis une application ordinaire
L API JNI offre l accès à la machine virtuelle   accèsauxvariablesdinstance,appeldeméthodes,chargement d une classe, création d instances Mécanisme de bas-niveau... Exceptions, Threads.
5
aJva_JNI
De Java vers C(jc)
1) usage du mot clé native
2) génération par les outils de SUN de l interface « .h »>javah -jni Exemple
3) génération de la DLL (Win32,.dll), ou de la SOL(solaris,.so)
4) exécution
_ nécessite l accès à $JDK HOME\include _  et en fonction de la plate-forme $JDK HOME\include\win32  (ou solaris)
6
aJavJ_IN
jc) 1) Le source Java
• public class JavaVersC {  publicnativevoid bonjour();
// (1)
public static void main(String args[]) { new JavaVersC().bonjour(); }
     static{  System.loadLibrary("JavaVersC");// (2)  }  }
>javac JavaVersC.java (1) emploi de native (2) chargement de la librairie (DLL/sol) dans laquelle sera implémentée le code C de bonjour
7
Java_
                
NJI
jc) Le source C : interface
2) génération de l interface (.h) par javah >javah -jni JavaVersC
/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class JavaVersC */ _ _ #ifndef Included JavaVersC _ _ #define Included JavaVersC #ifdef cplusplus __ extern "C" { #endif /* Class: JavaVersC * Method: bonjour * Signature: ()V */ JNIEXPORT void JNICALL Java JavaV ersC bonjour(JNIEnv _ _ #ifdef cplusplus __ } #endif #endif
, *
jobject);
8
aJav_
jc) le source C : Implémentation
#include <stdio.h> #include "JavaVersC.h"
 JNIEXPORT void JNICALL Java_JavaVer sC_bonjour (JNIEnv *env, jobject j){
printf("Java JavaVersC bonjour"); _ _  }
JNI
3) Génération de la DLL, (JavaVersC.dll) Avec visual c++ cl -Ic:\jdk\include -Ic:\jdk\include\win32 -LD JavaVersC.c -FeJavaVersC.dll
4) Exécution par  >java JavaVersC
9
aJva_JNIjc)JNIENVetjobject
JNIEnv *env   IlsagitdelenvironnementdelamachineJavaassociéau«Thread» courant, (le Thread ayant engendré l appel de la méthode native bonjour)
jobject j Il s agit de l objet receveur du message bonjour(), ici l instance créée    dans la méthode main
En résumé A chaque appel d une méthode native sont transmis par la machine Java un environnement l objet receveur ou la classe si c'est une méthode classe et éventuellement les paramètres
01
aJva_JNI
De C vers Java(cj)
depuis une DLL/SO engendrée par javah emploi du mot clé native
java -----native----------->C/C++  | java <----API_JNI--------- C/C++
ou depuis une application C/C++ ordinaire
java <----API_JNI--------- C/C++
11
  • Univers Univers
  • Ebooks Ebooks
  • Livres audio Livres audio
  • Presse Presse
  • Podcasts Podcasts
  • BD BD
  • Documents Documents