Java, survol historique et technologique

publicité
Java, survol historique et technologique
Sébastien Jean
IUT de Valence
Département Informatique
v11.2, 22 janvier 2017
Introduction à Java
Historique
Un peu d’histoire. . .
1991 → 1992 : Green Project (Sun Microsystems)
Idée : Portage et déploiement simplifié d’applications vers des
équipements électroniques hétérogènes
La technologie est au point, mais elle ne trouve pas son marché → fail !
Fail ? → First Attempt In Learning
Sébastien Jean (IUT Valence)
M2103, Introduction
v11.2, 22 janvier 2017
1 / 16
Introduction à Java
Historique
Un peu d’histoire. . .
1991 → 1997 : Le Web émerge et se développe à grande vitesse
Très rapidement de nouveaux besoins se font sentir, tout
particulièrement la possibilité de déporter du code chez le client
Le Green Project trouve enfin sa place → naissance de Java !
En 1997, Java s’invite dans la carte à puce
JavaCard
Sébastien Jean (IUT Valence)
M2103, Introduction
v11.2, 22 janvier 2017
2 / 16
Introduction à Java
Historique
Un peu d’histoire. . .
A partir de 1998, le Web devient support du commerce électronique
Java se sépare en deux versions
Standard Edition (SE), pour les applications clientes
Enterprise Edition (EE), pour les architectures serveurs N-Tiers Web
Sébastien Jean (IUT Valence)
M2103, Introduction
v11.2, 22 janvier 2017
3 / 16
Introduction à Java
Historique
Un peu d’histoire. . .
En 2000, Java envahit les PDAs, smartphones et autres
équipements embarqués communicants
Une 3e branche voit le jour : Micro Edition (ME)
Sébastien Jean (IUT Valence)
M2103, Introduction
v11.2, 22 janvier 2017
4 / 16
Introduction à Java
Historique
Un peu d’histoire. . .
En 2007, la technologie Java est versée dans l’open source
En 2009, Oracle rachète Sun MicroSystems
Sébastien Jean (IUT Valence)
M2103, Introduction
v11.2, 22 janvier 2017
5 / 16
Introduction à Java
Historique
Un peu d’histoire. . .
En 2009, Google lance une alternative à JavaME : Android
Aujourd’hui, Java est partout
Sébastien Jean (IUT Valence)
M2103, Introduction
v11.2, 22 janvier 2017
6 / 16
Introduction à Java
Historique
Maturité de Java
Langage le plus utilisé actuellement (source : Tiobe, 01/2017)
17.5% des développements sont réalisés en Java
La communauté compte une dizaine de millions de développeurs
Roadmap jusqu’en 2020, spécifications très cadrées
Sébastien Jean (IUT Valence)
M2103, Introduction
v11.2, 22 janvier 2017
7 / 16
Introduction à Java
Qu’est-ce que Java ?
Java, portrait robot
Interprété, à bytecode
Langage orienté objet
Fortement typé
Permettant un certain niveau de
meta-programmation
Sébastien Jean (IUT Valence)
M2103, Introduction
v11.2, 22 janvier 2017
8 / 16
Introduction à Java
Compilation et interprétation
Langages compilés : du code source à l’exécution
Exemple simplifié du langage C
Exécution du fichier
(code natif)
en ligne de commande
sous Linux-x86
Fichier exécutable
sur Linux-x86
Code source C
.c
.out
Préprocesseur C
Editeur de lien
Linux-x86
Exécution du fichier
(code natif)
en ligne de commande
sous none-arm
Résolution des liaisons
statiques
Inclusions conditionnelles
Remplacement des alias
Expansion des macros
.O
.c
.o
Code objet
Compilateur C
Linux-x86
.s
Assembleur x86
Analyse syntaxique
Traduction en assembleur x86
(+ respect du modèle d'exécution Linux)
Code assembleur
Traduction en code natif x86
+ table de symboles
Sébastien Jean (IUT Valence)
M2103, Introduction
v11.2, 22 janvier 2017
9 / 16
Introduction à Java
Compilation et interprétation
Langages de scripts : du code source à l’exécution
Exemple simplifié du langage JavaScript
Interprétation par l'interpréteur
JavaScript embarqué dans
Safari sous MacOsX
Code source
Javascript
.js
JS
Interprétation par l'interpréteur
JavaScript embarqué dans
Firefox sous Linux-x86
JS
Interprétation par l'interpréteur
JavaScript embarqué dans
Chrome sous Android-x86
JS
Analyse syntaxique et
édition de liens incrémentales
Traduction vers du code natif
Sébastien Jean (IUT Valence)
M2103, Introduction
v11.2, 22 janvier 2017
10 / 16
Introduction à Java
Compilation et interprétation
Langages à bytecode : du code source à l’exécution
Exemple du langage Java
Code source Java
.java
Exécution de l'application Java
par exécution de la JVM
(interpréteur Java)
en ligne de commande
sous Windows-x86
.class
Executable Java
Compilateur Java
.class
Analyse syntaxique,
Vérification des types,
Traduction en bytecode Java
Exécution de l'application Java
par exécution de la JVM
(interpréteur Java)
en ligne de commande
sous Linux-arm
.class
Chargement de code et
édition de liens
dynamiques
Traduction du bytecode
en code natif
Sébastien Jean (IUT Valence)
M2103, Introduction
v11.2, 22 janvier 2017
11 / 16
Introduction à Java
Java(s)
Eléments caractéristiques d’une distribution Java
JVM (Java Virtual Machine)
Spécification unique (bytecodes, types de données), mais pouvant être
contrainte selon la classe d’équipement
Eléments de langage
Spécifications successives, pouvant également être adaptées
Framework
Ensemble de bibliothèques spécifiques à la classe d’équipement ou
au domaine d’application
Cadre contraignant la conception des applications
Remarque : JVM + Framework = Runtime
Sébastien Jean (IUT Valence)
M2103, Introduction
v11.2, 22 janvier 2017
12 / 16
Introduction à Java
Java(s)
La famille Java officielle
Java SE (standard edition) → postes de travail, embarqué puissant
JVM standard + tous éléments de langage + framework standard
Java EE (entreprise edition) → architectures logicielles N-Tiers
JVM standard + tous éléments de langage + framework étendu
Java ME (micro edition) → embarqué contraint
JVM standard ou spécifique (CVM, KVM) + éléments de langage
réduits (1.3) + framework spécifique (profil)
JavaCard → cartes à puce
JVM spécifique (JCVM) + éléments de langage spécifiques +
framework spécifique
Sébastien Jean (IUT Valence)
M2103, Introduction
v11.2, 22 janvier 2017
13 / 16
Introduction à Java
Java(s)
La famille Java non officielle
Distributions Java spécifiques dans le domaine de l’embarqué
Tini, JStamp, LeJOS (Lego NXT), SunSpot, VirtualSense, MicroEJ
Android
Machine virtuelle ad’hoc (Dalvik/ART)
Outils de génération de code supplémentaires
Framework spécifique, centré sur l’IHM (activités)
Sébastien Jean (IUT Valence)
M2103, Introduction
v11.2, 22 janvier 2017
14 / 16
Introduction à Java
Java(s)
Bibliothèques standards (très court extrait)
JDBC (Java DataBase Connectivity)
Interaction avec des bases de données relationnelles (mySQL, . . . )
AWT / Swing, JavaFX
Création d’interfaces graphiques
Java2D, JAI (Java Advanced Imaging)
Manipulation et traitement d’images
Java3D, JMF (Java Media Framework)
3D, multimédia
Java Security, JCE (Java Cryptography Extension)
Authentification, contrôle d’accès, chiffrement, . . .
JNI (Java Native Interface)
Interaction avec des programmes natifs
Sébastien Jean (IUT Valence)
M2103, Introduction
v11.2, 22 janvier 2017
15 / 16
Introduction à Java
Java(s)
Fin !
Sébastien Jean (IUT Valence)
M2103, Introduction
v11.2, 22 janvier 2017
16 / 16
Téléchargement