SlideShare une entreprise Scribd logo
1  sur  22
Télécharger pour lire hors ligne
Développement d'un générateur
d'interpréteur de bytecodes pour une
JVM embarquée
Mustapha Tachouct
Sous la direction de :
Alexandre Courbot
Moulay-Driss Benchiboun
2 RD2P - 28/04/11
Plan de la présentation
• I. Présentation du LIFL et de RD2P
– LIFL : Laboratoire d'Informatique Fondamentale de Lille
– RD2P : Recherche et Développement sur le Dossier Portable
• II. JITS : Java In The Small
– Implémentations actuelles
– Spécificité du projet JITS
• III. Sujet du stage
– Bytecodes
– Syntaxe & Utilisation
– Générateur
3 RD2P - 28/04/11
I. Présentation du LIFL et de RD2P (½)
• Laboratoire d'Informatique Fondamentale de Lille
– Créé en 1983
– Unité de recherche
– Associé au Dept. STIC du CNRS
– 160 personnes
– 3 axes : CBS, CIM et SCOPE
4 RD2P - 28/04/11
Présentation du LIFL et de RD2P (2/2)
• Recherche et Développement de Dossier Portable
– Gemplus et USTL
– Axes de recherche :
• Réseaux mobiles
• Protection de l'information
• Systèmes embarqués
5 RD2P - 28/04/11
Java dans les POPS (½)
• Implémentations actuelles
– CDC :
• PDAs haut de gamme
• API quasi-complète
• CVM
– CLDC :
• Téléphones portables, PDAs,...
• Nouvelles restrictions (types, ...)
• KVM
– JavaCard :
• Carte à processeur
• Type codés sur 8/16 bits
• CardVM
6 RD2P - 28/04/11
Java dans les POPS (2/2)
• JITS : Java In The Small
– Faciliter le développement en Java
– JVM + OS
– Customizable
– API, Garbage Collector, Green Threading, ...
– Romizer
7 RD2P - 28/04/11
Générateur d'interpréteur
• Machine Virtuelle Java
• Bytecodes
– Quelques exemples
• Syntaxe & utilisation
– XML
– Attributs, Modularité et sécurité
• Générateur d'interpréteur
– Bytecodes typiques
• Optimisation de l'interpréteur
– Plateforme, Compilateur et Résultat
8 RD2P - 28/04/11
JVM : Java Virtual Machine
• Machine à pile
• Bytecodes ?
• API java
• Autre fonctionnalités
– Garbage Collector
– Green Threading
– ClassLoader
9 RD2P - 28/04/11
Bytecodes : principe et fonctionnement
• Paramètres :
– Sur le sommet de pile
– Variables locales
– Constantes directes
– Constantes Pool
• Résultats :
– Sur le sommet de pile
– Modification d'une variables locales
10 RD2P - 28/04/11
Bytecodes : exemples
• Addition de deux entiers : iadd
• Constante implicite : iconst_2
11 RD2P - 28/04/11
Bytecodes : exemples avec paramètres
• Constante explicite : sipush
• Modification d'une variable locale : istore_0
12 RD2P - 28/04/11
Bytecodes : exemples (objets)
• Obtenir la valeur d'un attribut d'un objet : getfield
• Appeler une methode « non-static » : invoke
13 RD2P - 28/04/11
Bytecodes: exemples (tableaux)
• Obtenir la taille d'un tableau : arraylength
• Obtenir la valeur d'un élément : iaload
14 RD2P - 28/04/11
Bytecodes : sauts conditionnels
• Comparaison de deux nombres à virgules flottantes:
• Saut conditionnel : if<cond>
15 RD2P - 28/04/11
Modelisation des bytecodes
• XML : eXtensible Markup Langage
• Attributs
– Bc, name, pop/push, inc_pc, inCore
16 RD2P - 28/04/11
Modelisation des bytecodes
• Modularité
– Configuration de la VM
• Personnaliser sa VM
• Ajout ou suppression de fonctionnalités
• <vmconfig> ...</vmconfig>
– Dépendance des bytecodes
• Supprimer les bytecodes inutiles
• <require></require>
17 RD2P - 28/04/11
Modelisation des bytecodes
• Sécurité
– Verifications
• NullPointerException
• ArrayIndexOutOfBoundsException
• NegativeArraySizeException
• ArithmeticException
• ClassCastException
– Arguments
• Type : pile, constante directe, constante pool
• <arg> <cst type= « short » index= « 1 »/> </arg>
• <arg> <stack type= « Array » index= « 2 »/> </arg>
18 RD2P - 28/04/11
Générateur d'intepréteur de bytecodes
• Tableaux de fonctions et de labels(ou branchements)
• pile & incrémentation du pc
• Vérifications
• Exemple de syntaxe XML :
<bytecode bc= « 46 » name= »iaload » pop= »2 » push = »1 » inCore= »1 »>
<exception name= »NullPointerException »>
<arg><stack type= »array » index= »2 »/></arg>
</exception>
<exception name= »ArrayIndexOutOfBoundsException »>
<arg><stack type= »array » index= »2 »/></arg>
<arg><stack type= »int » index =»1 »/></arg>
</exception>
</bytecodes>
19 RD2P - 28/04/11
Générateur d'intepréteur de bytecodes
• Source généré :
Exemple : iaload
DEF_BC(IALOAD)
BEGIN
CHECK_NULLPOINTEREXCEPTION(ATOS(2))
CHECK_ARRAYINDEXOUTOFBOUNDSEXCEPTION(ATOS(2),ITOS(1))
DEF_IALOAD
TOS--;
END
DEF_END
20 RD2P - 28/04/11
Optimisation de l'interpréteur
• Plateforme matérielle
– Intel x86 32 bits (CISC)
– ARM7TDMI (RISC)
• Compilateur
– Gcc 3.2
– Gcc 3.4
– Icc (problème de compatibilité)
• Optimisation
– Optimisation du compilateur
– Optimisation manuelle en assembleur (x86 et ARM)
21 RD2P - 28/04/11
Optimisation de l'interpréteur
• Tests :
– boucles de 1000000
– Bytecodes variés ( iinc, comparaison, saut, ...)
• Résultat :
– Gcc 3.2 : 340 ms
– Gcc 3.4 : 185 ms
– Optimisation manuelle : 67ms
– HotSpot (interpréteur) : 79 ms
22 RD2P - 28/04/11
CONCLUSION

Contenu connexe

En vedette

En vedette (7)

The essential power_point_template_for_killer_slideshare_presentations
The essential power_point_template_for_killer_slideshare_presentationsThe essential power_point_template_for_killer_slideshare_presentations
The essential power_point_template_for_killer_slideshare_presentations
 
Introduction of Wireless Sensor Network
Introduction of Wireless Sensor NetworkIntroduction of Wireless Sensor Network
Introduction of Wireless Sensor Network
 
Wireless sensor network
Wireless sensor networkWireless sensor network
Wireless sensor network
 
Wsn ppt original
Wsn ppt originalWsn ppt original
Wsn ppt original
 
WIRELESS SENSOR NETWORK
WIRELESS SENSOR NETWORKWIRELESS SENSOR NETWORK
WIRELESS SENSOR NETWORK
 
Basics of Wireless sensor networks
Basics of Wireless sensor networksBasics of Wireless sensor networks
Basics of Wireless sensor networks
 
Wireless Sensor Networks
Wireless Sensor NetworksWireless Sensor Networks
Wireless Sensor Networks
 

Similaire à Développement d'un générateur d'intépréteur de bytecodes pour une JVM embarquée

0251-formation-java-programmation-objet.pdf
0251-formation-java-programmation-objet.pdf0251-formation-java-programmation-objet.pdf
0251-formation-java-programmation-objet.pdfOmbotimbe Salifou
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesXavier MARIN
 
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...Normandy JUG
 
I le langage java d'una manière avancée introduction
I  le langage java d'una manière avancée introductionI  le langage java d'una manière avancée introduction
I le langage java d'una manière avancée introductionsabrine_hamdi
 
Perfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptxPerfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptxMarc Bojoly
 
Mender 2.0 101: Bien démarrer avec les 'update modules'
Mender 2.0 101: Bien démarrer avec les 'update modules'Mender 2.0 101: Bien démarrer avec les 'update modules'
Mender 2.0 101: Bien démarrer avec les 'update modules'Pierre-jean Texier
 
Ez18n Annotation Processing Tool in a nutshell
Ez18n Annotation Processing Tool in a nutshellEz18n Annotation Processing Tool in a nutshell
Ez18n Annotation Processing Tool in a nutshellgdigugli
 
Réussir une montée en charge avec MongoDB
Réussir une montée en charge avec MongoDBRéussir une montée en charge avec MongoDB
Réussir une montée en charge avec MongoDB MongoDB
 
3 Microsoft Advanced Threat Analytics - Genève
3   Microsoft Advanced Threat Analytics - Genève3   Microsoft Advanced Threat Analytics - Genève
3 Microsoft Advanced Threat Analytics - GenèveaOS Community
 
Distributed computing with Spark 2.x
Distributed computing with Spark 2.xDistributed computing with Spark 2.x
Distributed computing with Spark 2.xDr Hajji Hicham
 
XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...
XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...
XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...Publicis Sapient Engineering
 
Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Antoine Rey
 
PIST(Panafric institut of strategy and Technology) formation.pptx
PIST(Panafric institut of strategy and Technology) formation.pptxPIST(Panafric institut of strategy and Technology) formation.pptx
PIST(Panafric institut of strategy and Technology) formation.pptxMERVEILLEILLONASIGNE
 
20070925 04 - Panorama des outils Open Source / Qualité des développements
20070925 04 - Panorama des outils Open Source / Qualité des développements20070925 04 - Panorama des outils Open Source / Qualité des développements
20070925 04 - Panorama des outils Open Source / Qualité des développementsLeClubQualiteLogicielle
 
Javascript & tools
Javascript & toolsJavascript & tools
Javascript & toolsSlim Soussi
 

Similaire à Développement d'un générateur d'intépréteur de bytecodes pour une JVM embarquée (20)

0251-formation-java-programmation-objet.pdf
0251-formation-java-programmation-objet.pdf0251-formation-java-programmation-objet.pdf
0251-formation-java-programmation-objet.pdf
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
 
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
 
Riak introduction
Riak introductionRiak introduction
Riak introduction
 
I le langage java d'una manière avancée introduction
I  le langage java d'una manière avancée introductionI  le langage java d'una manière avancée introduction
I le langage java d'una manière avancée introduction
 
Perfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptxPerfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptx
 
Mender 2.0 101: Bien démarrer avec les 'update modules'
Mender 2.0 101: Bien démarrer avec les 'update modules'Mender 2.0 101: Bien démarrer avec les 'update modules'
Mender 2.0 101: Bien démarrer avec les 'update modules'
 
_JCVFr
_JCVFr_JCVFr
_JCVFr
 
Ez18n Annotation Processing Tool in a nutshell
Ez18n Annotation Processing Tool in a nutshellEz18n Annotation Processing Tool in a nutshell
Ez18n Annotation Processing Tool in a nutshell
 
Réussir une montée en charge avec MongoDB
Réussir une montée en charge avec MongoDBRéussir une montée en charge avec MongoDB
Réussir une montée en charge avec MongoDB
 
3 Microsoft Advanced Threat Analytics - Genève
3   Microsoft Advanced Threat Analytics - Genève3   Microsoft Advanced Threat Analytics - Genève
3 Microsoft Advanced Threat Analytics - Genève
 
Distributed computing with Spark 2.x
Distributed computing with Spark 2.xDistributed computing with Spark 2.x
Distributed computing with Spark 2.x
 
Microcontroleur
MicrocontroleurMicrocontroleur
Microcontroleur
 
XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...
XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...
XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...
 
my_resume(fre)
my_resume(fre)my_resume(fre)
my_resume(fre)
 
Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?
 
_JCVFr
_JCVFr_JCVFr
_JCVFr
 
PIST(Panafric institut of strategy and Technology) formation.pptx
PIST(Panafric institut of strategy and Technology) formation.pptxPIST(Panafric institut of strategy and Technology) formation.pptx
PIST(Panafric institut of strategy and Technology) formation.pptx
 
20070925 04 - Panorama des outils Open Source / Qualité des développements
20070925 04 - Panorama des outils Open Source / Qualité des développements20070925 04 - Panorama des outils Open Source / Qualité des développements
20070925 04 - Panorama des outils Open Source / Qualité des développements
 
Javascript & tools
Javascript & toolsJavascript & tools
Javascript & tools
 

Plus de Mustapha Tachouct

Installation de la bibliothèque SDL2 dans un projet Visual Studio
Installation de la bibliothèque SDL2 dans un projet Visual StudioInstallation de la bibliothèque SDL2 dans un projet Visual Studio
Installation de la bibliothèque SDL2 dans un projet Visual StudioMustapha Tachouct
 
Design patterns for beginners (2/2)
Design patterns for beginners (2/2)Design patterns for beginners (2/2)
Design patterns for beginners (2/2)Mustapha Tachouct
 
Design patterns for beginners (1/ 2)
Design patterns for beginners (1/ 2)Design patterns for beginners (1/ 2)
Design patterns for beginners (1/ 2)Mustapha Tachouct
 

Plus de Mustapha Tachouct (7)

Cours SDL2 (partie 2)
Cours SDL2 (partie 2)Cours SDL2 (partie 2)
Cours SDL2 (partie 2)
 
Cours SDL2 (partie 1)
Cours SDL2 (partie 1)Cours SDL2 (partie 1)
Cours SDL2 (partie 1)
 
Installation de la bibliothèque SDL2 dans un projet Visual Studio
Installation de la bibliothèque SDL2 dans un projet Visual StudioInstallation de la bibliothèque SDL2 dans un projet Visual Studio
Installation de la bibliothèque SDL2 dans un projet Visual Studio
 
The Cerny Method
The Cerny Method The Cerny Method
The Cerny Method
 
God Of War : post mortem
God Of War : post mortemGod Of War : post mortem
God Of War : post mortem
 
Design patterns for beginners (2/2)
Design patterns for beginners (2/2)Design patterns for beginners (2/2)
Design patterns for beginners (2/2)
 
Design patterns for beginners (1/ 2)
Design patterns for beginners (1/ 2)Design patterns for beginners (1/ 2)
Design patterns for beginners (1/ 2)
 

Développement d'un générateur d'intépréteur de bytecodes pour une JVM embarquée

  • 1. Développement d'un générateur d'interpréteur de bytecodes pour une JVM embarquée Mustapha Tachouct Sous la direction de : Alexandre Courbot Moulay-Driss Benchiboun
  • 2. 2 RD2P - 28/04/11 Plan de la présentation • I. Présentation du LIFL et de RD2P – LIFL : Laboratoire d'Informatique Fondamentale de Lille – RD2P : Recherche et Développement sur le Dossier Portable • II. JITS : Java In The Small – Implémentations actuelles – Spécificité du projet JITS • III. Sujet du stage – Bytecodes – Syntaxe & Utilisation – Générateur
  • 3. 3 RD2P - 28/04/11 I. Présentation du LIFL et de RD2P (½) • Laboratoire d'Informatique Fondamentale de Lille – Créé en 1983 – Unité de recherche – Associé au Dept. STIC du CNRS – 160 personnes – 3 axes : CBS, CIM et SCOPE
  • 4. 4 RD2P - 28/04/11 Présentation du LIFL et de RD2P (2/2) • Recherche et Développement de Dossier Portable – Gemplus et USTL – Axes de recherche : • Réseaux mobiles • Protection de l'information • Systèmes embarqués
  • 5. 5 RD2P - 28/04/11 Java dans les POPS (½) • Implémentations actuelles – CDC : • PDAs haut de gamme • API quasi-complète • CVM – CLDC : • Téléphones portables, PDAs,... • Nouvelles restrictions (types, ...) • KVM – JavaCard : • Carte à processeur • Type codés sur 8/16 bits • CardVM
  • 6. 6 RD2P - 28/04/11 Java dans les POPS (2/2) • JITS : Java In The Small – Faciliter le développement en Java – JVM + OS – Customizable – API, Garbage Collector, Green Threading, ... – Romizer
  • 7. 7 RD2P - 28/04/11 Générateur d'interpréteur • Machine Virtuelle Java • Bytecodes – Quelques exemples • Syntaxe & utilisation – XML – Attributs, Modularité et sécurité • Générateur d'interpréteur – Bytecodes typiques • Optimisation de l'interpréteur – Plateforme, Compilateur et Résultat
  • 8. 8 RD2P - 28/04/11 JVM : Java Virtual Machine • Machine à pile • Bytecodes ? • API java • Autre fonctionnalités – Garbage Collector – Green Threading – ClassLoader
  • 9. 9 RD2P - 28/04/11 Bytecodes : principe et fonctionnement • Paramètres : – Sur le sommet de pile – Variables locales – Constantes directes – Constantes Pool • Résultats : – Sur le sommet de pile – Modification d'une variables locales
  • 10. 10 RD2P - 28/04/11 Bytecodes : exemples • Addition de deux entiers : iadd • Constante implicite : iconst_2
  • 11. 11 RD2P - 28/04/11 Bytecodes : exemples avec paramètres • Constante explicite : sipush • Modification d'une variable locale : istore_0
  • 12. 12 RD2P - 28/04/11 Bytecodes : exemples (objets) • Obtenir la valeur d'un attribut d'un objet : getfield • Appeler une methode « non-static » : invoke
  • 13. 13 RD2P - 28/04/11 Bytecodes: exemples (tableaux) • Obtenir la taille d'un tableau : arraylength • Obtenir la valeur d'un élément : iaload
  • 14. 14 RD2P - 28/04/11 Bytecodes : sauts conditionnels • Comparaison de deux nombres à virgules flottantes: • Saut conditionnel : if<cond>
  • 15. 15 RD2P - 28/04/11 Modelisation des bytecodes • XML : eXtensible Markup Langage • Attributs – Bc, name, pop/push, inc_pc, inCore
  • 16. 16 RD2P - 28/04/11 Modelisation des bytecodes • Modularité – Configuration de la VM • Personnaliser sa VM • Ajout ou suppression de fonctionnalités • <vmconfig> ...</vmconfig> – Dépendance des bytecodes • Supprimer les bytecodes inutiles • <require></require>
  • 17. 17 RD2P - 28/04/11 Modelisation des bytecodes • Sécurité – Verifications • NullPointerException • ArrayIndexOutOfBoundsException • NegativeArraySizeException • ArithmeticException • ClassCastException – Arguments • Type : pile, constante directe, constante pool • <arg> <cst type= « short » index= « 1 »/> </arg> • <arg> <stack type= « Array » index= « 2 »/> </arg>
  • 18. 18 RD2P - 28/04/11 Générateur d'intepréteur de bytecodes • Tableaux de fonctions et de labels(ou branchements) • pile & incrémentation du pc • Vérifications • Exemple de syntaxe XML : <bytecode bc= « 46 » name= »iaload » pop= »2 » push = »1 » inCore= »1 »> <exception name= »NullPointerException »> <arg><stack type= »array » index= »2 »/></arg> </exception> <exception name= »ArrayIndexOutOfBoundsException »> <arg><stack type= »array » index= »2 »/></arg> <arg><stack type= »int » index =»1 »/></arg> </exception> </bytecodes>
  • 19. 19 RD2P - 28/04/11 Générateur d'intepréteur de bytecodes • Source généré : Exemple : iaload DEF_BC(IALOAD) BEGIN CHECK_NULLPOINTEREXCEPTION(ATOS(2)) CHECK_ARRAYINDEXOUTOFBOUNDSEXCEPTION(ATOS(2),ITOS(1)) DEF_IALOAD TOS--; END DEF_END
  • 20. 20 RD2P - 28/04/11 Optimisation de l'interpréteur • Plateforme matérielle – Intel x86 32 bits (CISC) – ARM7TDMI (RISC) • Compilateur – Gcc 3.2 – Gcc 3.4 – Icc (problème de compatibilité) • Optimisation – Optimisation du compilateur – Optimisation manuelle en assembleur (x86 et ARM)
  • 21. 21 RD2P - 28/04/11 Optimisation de l'interpréteur • Tests : – boucles de 1000000 – Bytecodes variés ( iinc, comparaison, saut, ...) • Résultat : – Gcc 3.2 : 340 ms – Gcc 3.4 : 185 ms – Optimisation manuelle : 67ms – HotSpot (interpréteur) : 79 ms
  • 22. 22 RD2P - 28/04/11 CONCLUSION