0% ont trouvé ce document utile (0 vote)
9 vues

java introduction

Java est un langage de programmation et une plateforme développée par SUN Microsystems en 1995, rachetée par Oracle en 2009. Il est caractérisé par sa portabilité grâce à la Machine Virtuelle Java (JVM) qui permet d'exécuter du byte-code sur différentes plateformes. Java est utilisé dans divers domaines, allant des serveurs d'applications aux appareils mobiles, et continue d'évoluer avec différentes éditions adaptées à divers besoins.

Transféré par

guymartialfotso8
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
9 vues

java introduction

Java est un langage de programmation et une plateforme développée par SUN Microsystems en 1995, rachetée par Oracle en 2009. Il est caractérisé par sa portabilité grâce à la Machine Virtuelle Java (JVM) qui permet d'exécuter du byte-code sur différentes plateformes. Java est utilisé dans divers domaines, allant des serveurs d'applications aux appareils mobiles, et continue d'évoluer avec différentes éditions adaptées à divers besoins.

Transféré par

guymartialfotso8
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 37

Introduction à Java

dernière modification : 04/01/2023 10:44

© Ph. Genoud – Université Grenoble Alpes


1
JAVA c'est quoi ?
• Une technologie développée par SUN Microsystems™ lancée en 1995 - rachetée par Oracle en 2009
– Un langage de programmation
• Dans un des premiers papiers* sur le langage JAVA, James Gosling et Henry Mc Gilton le décrivent comme suit :

« Java : a simple, object-oriented, distributed,


robust, secure, architecture neutral, portable,
high-performance, multithreaded, and dynamic language »
* White Paper :The Java Language Environment - James Gosling, Henry McGilton - May 1996
https://www.oracle.com/technetwork/java/langenv-140151.html

– Une plateforme, environnement logiciel dans lequel les programmes java s'exécutent.
• Machine Virtuelle Java (JVM)
• Environnement d'exécution (Java Run Time Environment)

Janvier 2023 © Ph. Genoud – Université Grenoble Alpes 2


JAVA c'est quoi ? The Top Programming Languages IEEE Spectrum’s 2022 Ranking

• Technologie présente dans de très nombreux domaines


d’application : des serveurs d’applications aux téléphones
portables et cartes à puces
• Dominante dans les année 2000, elle demeure toujours
d'actualité
TIOBE index Dec. 2022

Stackoverflow developer survey 2022

Janvier 2023 © Ph. Genoud – Université Grenoble Alpes 3


Le langage Java
Mon premier programme Java (pas très objet…)
1 Tout code java doit être défini à l'intérieur d'une classe
Le code de la classe doit être
enregistré dans un fichier de 3
même nom (casse comprise) public class HelloWorld {
que la classe HelloWorld.java
public static void main(String[] args) {
Le point d'entrée pour int i = 0;
l'exécution est la 4
2 La description de la classe est
méthode main() while (i < 5) {
System.out.println("Hello World !");
effectuée à l'intérieur d'un
5 i++; bloc { }
Java est un langage typé statiquement }
(toute variable ou fonction doit être
typée) contrairement à JavaScript }
(typage dynamique) }

Compilation : Exécution :
javac HelloWorld.java java HelloWorld Hello World !
Hello World !
javac java Hello World !
Hello World !
HelloWorld.java HelloWorld.class Hello World !

Janvier 2023 © Ph. Genoud – Université Grenoble Alpes 4


Typage statique/Typage dynamique
typage statique typage dynamique
• lorsqu'une variable est créée un type lui • le type d'une variable est associé à la valeur
est associé qui lui est affectée
• le type de la variable ne peut être changé • le type de la variable peut être changé au
• seules des valeurs compatibles avec le cours de l'exécution
type de la variable peuvent lui être
affectées

java JavaScript
int number; let number;
number = 10; autres exemples : number = 10; autres exemples :
number = "hello"; C, C++, C#, FORTRAN… number = "hello"; Python, Ruby, PHP, Lisp…
number = false; number = false;

• nécessite en général déclaration explicite des types • ne nécessite pas de déclaration explicite des types
• vérification des types peut être faite avant l'exécution • vérification des types faite à l'exécution  risque
(compilation)  diminue risques d'erreurs d'exécution d'erreurs à l'exécution
• permet de produire du code plus optimisé (au moment de • tendance à une exécution plus lente car les informations
l'exécution car la vérification de type a déjà été effectuée) de type pour chaque variable doivent être récupérées au
moment de l'exécution.
Janvier 2023 © Ph. Genoud – Université Grenoble Alpes 5
Le langage Java
Un langage compilé / interprété
• Contrairement à d'autre langages compilé (C, FORTRAN, Pascal…) le code java compilé n'est pas
directement exécutable, il est exécuté au travers d'un autre programme : java

Compilation :
gcc HelloWorld.c code machine directement exécutable Hello World !
Hello World !
gcc ./a.out Hello World !
Hello World !
HelloWorld.c a.out Hello World !

Compilation : bytecode nécessite un programme pour être exécuté


javac HelloWorld.java (code intermédiaire) java HelloWorld Hello World !
Hello World !
javac java Hello World !
Hello World !
HelloWorld.java HelloWorld.class Hello World !

https://www.youtube.com/watch?v=I1f45REi3k4
Compiler and Interpreter: Compiled Language vs
Interpreted Programming Languages
durée 6 min

Janvier 2023 © Ph. Genoud – Université Grenoble Alpes 6


Le langage Java
Un langage compilé / interprété
• Compilation d'un programme JAVA : génération de byte-code

compilation
public class Test { 011000010101010010101010
javac Test.java 110001010101010111100000 Test.class
public static void main(String[] args) { javac 111010101101101101111010
for (int i = 0; i < 10; i++) (compilateur 010011010101110111101... byte-code
System.out.println("Hello " + i); Java) ...
}
} javap –c Test
Désassemble Test.class
Test.java
code source 0 iconst_0
1 istore_1
2 goto 30
5 getstatic #10 <Field java.io.PrintStream out>
• Le byte-code (ou code intermédiaire) est : 8 new #5 <Class java.lang.StringBuffer>
11 dup
– proche d'un langage machine 12 ldc #1 <String "Hello ">
….
– indépendant de la plateforme d'exécution (matériel + OS) 27 iinc 1 1
30 iload_1
31 bipush 10
33 if_icmplt 5
36 return

Janvier 2023 © Ph. Genoud – Université Grenoble Alpes 7


La machine virtuelle Java
Exécution d'un programme Java compilé
• byte-code assure la portabilité des programmes Java
– langage d'une Machine Virtuelle
– à l'exécution un interpréteur (JVM) simule cette machine virtuelle
Compilation : Exécution :
javac HelloWorld.java java HelloWorld
Hello World !
javac java Hello World !
(compilateur (JVM) Hello World !
HelloWorld.java Java) Hello World !
HelloWorld.class Hello World !
Code source Byte-code
Windows
Hello World !
java Hello World !
(JVM) Hello World !
Le même byte-code peut être exécuté HelloWorld.class
Hello World !
Hello World !
sur des plateformes différentes (il suffit
qu’elles soient équipées d’une JVM Unix: Solaris -Linux
compatible) Hello World !
java Hello World !
(JVM) Hello World !
Hello World !
HelloWorld.class
Hello World !

MacOS X

Janvier 2023 © Ph. Genoud – Université Grenoble Alpes 8


La machine virtuelle java
• fonctions
– permettre d'exécuter des programmes java sur n'importe quel environnement (matériel + système
d'exploitation)
– gérer et optimiser l'utilisation de la mémoire

• une spécification de la JVM • différentes implémentations (open source ou


https://docs.oracle.com/javase/specs/ propriétaires)
– HotStop (Open JDK) : implémentation de référence
– GraalVM (Oracle)
– Eclipse OpenJ9 (IBM)
– Azul Zing
– …

https://www.fineconstant.com/posts/comparing-jvm-performance/

Janvier 2023 © Ph. Genoud – Université Grenoble Alpes 9


La machine virtuelle java
Utilisation pour d'autres langages

• Alors qu'elle était autrefois réservée à Java, la JVM est


aujourd'hui suffisamment flexible et puissante pour
prendre en charge de nombreux autres langages.

• même s'ils ne codent pas en Java, les programmeur conservent l'accès


au très vaste écosystème de bibliothèques Java.
https://en.wikipedia.org/wiki/Da_Vinci_Machine

Janvier 2023 © Ph. Genoud – Université Grenoble Alpes 10


La plateforme Java

• Plateforme
– Environnement matériel et/ou logiciel dans lequel un programme s'exécute.
• La plupart des plateformes sont la combinaison d'un OS et du matériel sous-jacent (MS Windows + Intel, Linux + Intel,
Solaris + Sparc, Mac Os X + intel)

• La plateforme Java est entièrement logicielle et s'exécute au dessus des plateformes matérielles

MonProgramme.class
API (Application Programming Interface) Java :
Plateforme Bibliothèques Java standards sur lesquelles le
Java (JRE Java API Java
programmeur peut s'appuyer pour écrire son
Runtime
code.
Environment) JVM (Machine virtuelle)

Plateforme matérielle
(OS + hardware)

Janvier 2023 © Ph. Genoud – Université Grenoble Alpes 11


La plateforme Java
API Java

• API Java
– (très) vaste collection de composants logiciels (classes et interfaces)
– organisée en bibliothèques (packages)
– offre de nombreux services de manière standard
(indépendamment de la plateforme matérielle) User Interface Toolkits

Integration librairies

MonProgramme.class Other Base Libraries


MonProgramme.class

Plateforme
Java (JRE Java API Java Lang and util base
libraries
Runtime
Environment) JVM (Machine virtuelle)

Plateforme matérielle Programmer en Java nécessite une bonne connaissance de l'API.


(OS + hardware) Attention à la courbe d'apprentissage (learning curve) qui est peut
être longue

Janvier 2023 © Ph. Genoud – Université Grenoble Alpes 12


La plateforme Java
Les différentes éditions de Java
• 3 éditions de Java

Standard Edition Fourni les compilateurs, outils, runtimes, et APIs standards pour écrire, déployer, et
JSE exécuter des applications dans la langage de programmation Java

Destinée au développement d’applications « d’entreprise » («business applications»)


Entreprise Edition robustes et interopérables.
JEE Construit au dessus de JSE, elle propose des APIs supplémentaires pour le développement
et le déploiement d’applications distribuées et articulées autours du web.

Environnement d’exécution basé sur un ensemble réduit d’API et optimisé pour les dispositifs «
Micro Edition légers » :
JME • Carte à puce (smart cards)
• Téléphones mobiles
• Objets connectés

Janvier 2023 © Ph. Genoud – Université Grenoble Alpes 13


La plateforme Java JSE
Evolution de l'API
4500
4024 4240
4000 3799

3500 3279

3000 2757
Java 2 (J2SE) - 1998
Ajout de nombreuses fonctionnalités
2500
• Swings, Collections, JNDA …. classes
2000 packages
1520
1500

1000
504
500 217
212 135 166 203 209
8 23 59
0
java 1.0 java 1.1 java 1.2 java 1.4 java 1.5 java 1.6 java 1.7 java 8

Java 1.1 – 1997


•Modification du langage : classes internes
• Modification du modèle événementiel pour awt
Java Beans
• Amélioration des performances de la VM

Janvier 2023 © Ph. Genoud – Université Grenoble Alpes 14


La plateforme Java
Evolution de l'API JSE
4500 1998 : Création du Java Community Process (JCP) pour coordonner
l'évolution du langage Java et des technologies qui lui sont associées 4024 4240
4000 3799

3500 3279

3000 2757
Java 2 (J2SE) - 1998
Ajout de nombreuses fonctionnalités
2500
• Swings, Collections, JNDA …. classes
2000 packages
1520
1500

1000
504
500 217
212 135 166 203 209
8 23 59
0
java 1.0 java 1.1 java 1.2 java 1.4 java 1.5 java des
JCP regroupe 1.6 : java 1.7 java 8
• Entreprises (Oracle, Google, Apple ….)
Java 1.1 – 1997 • Acteurs du logiciel libre (Apache Software Foundation, Eclipse Foundaion …)
•Modification du langage : classes internes • Membres à à titre individuel (adhésion gratuite)
• Modification du modèle événementiel pour awt
Java Beans
• Amélioration des performances de la VM

Janvier 2023 © Ph. Genoud – Université Grenoble Alpes 15


La plateforme Java Java 6 (Mustang) - 2006
• Services Web
• Langages de scripts
Evolution de l'API JSE • Accès au compilateur
• Plus d’API pour applis desktop
4500 • ….
Java 5 (Tiger) - 2004
• Evolutions du langage : Généricité, 4024 4240
4000 Types Enumérés, Autoboxing, … 3799
• Nouvelles API : Concurrence, Management
3500 (gestion et supervision de la JVM)… 3279
Java 7 – 2011
• améliorations du langage : switch avec
3000 2757 des chaînes, gestion des exceptions,
Java 2 (J2SE) - 1998 • amélioration des API
Ajout de nombreuses fonctionnalités
2500 • utilitaires pour la concurrence.
• Swings, Collections, JNDA …. classes
2000 packages
1520
1500
Java 8 – 2014
• améliorations du langage :
lambda expressions
1000 (programmation
504 fonctionnelle), collections,
500
212 203 209 streams
217…
135 166
8 23 59
0
java 1.0 java 1.1 java 1.2 java 1.4 java 1.5 java 1.6 java 1.7 java 8

Java 1.1 – 1997 J2SE 1.4 – 2002


•Modification du langage : classes internes •Amélioration des performances
• Modification du modèle événementiel pour awt • Assertions, Nouveau package pour i/o,
Java Beans • Nouvelles classes pour collections…
• Amélioration des performances de la VM • Nombreux nouveaux packages : XML, log des applications,
préférences utilisateur …
Janvier 2023 © Ph. Genoud – Université Grenoble Alpes 16
La plateforme Java
Evolution de l'API JSE

Java 9 – Sept. 2017


6400 classes
modularisation (Jigsaw)
structuration du jdk en • API gestions des processus
modules afin de pouvoir • Multi-release des fichiers JAR
charger seulement les • Meilleure gestion du
modules nécessaires deprecated
 plateforme plus facilement • Fabriques pour les collections
évolutive et maintenable ; • Moteur de rendu Marlin
 des gains de performance et (Java2D, Java FX)
d'exécution : seuls les modules • Un shell Java : REPL jShell
nécessaires sont chargés ; • Read : Lit une expression
 sécurité : principe modulaire • Evaluate: Évalue une
permet de fournir le juste assez expression
nécessaire au système. • Print Imprime sur la sortie
standard
• Loop : Recommence

315 packages
(78 modules)

Janvier 2023 © Ph. Genoud – Université Grenoble Alpes 17


La plateforme Java Depuis Java 9, Oracle JCP adopte une politique de release tous les 6
mois. Seules les releases LTS (Long Term Support) sont maintenues
Evolution de l'API JSE sur plusieurs années

Java Java Java Java Java Java Java Java Java Java Java Java
1.0 1.1 1.2 1.3 1.4 5 6 7 8 9 10 11

1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018

2019 2020
2019 2021

12 13 14 15 16 17

Java 10 Java 11 Java 17


Java 9 – Sept. 2017 Mars Sept Oct.
2018 2018 2021

java 17

LTS LTS LTS

Janvier 2023 © Ph. Genoud – Université Grenoble Alpes 18


JSE : Java Standard Edition
Organisation générale

JSE
API

JSE API : Java Application Programming interface


Janvier 2023 © Ph. Genoud – Université Grenoble Alpes 19
JSE : Java Standard Edition
Organisation générale

JRE JSE
API

JRE (Java Runtime Environnement) pour l'exécution de code java compilé


Janvier 2023 © Ph. Genoud – Université Grenoble Alpes 20
JSE : Java Standard Edition
Organisation générale

JDK
JRE JSE
API

JDK (Java Developper's Kit) outils de base pour le développement d'applications Java
Janvier 2023 © Ph. Genoud – Université Grenoble Alpes 21
Distributions du JDK
• Oracle JDK • Open JDK
https://www.oracle.com/technetwork/java/javase/overview/index.html https://openjdk.java.net/

récupéré le 4/01/2022 récupéré le 4/01/2022

Janvier 2023 © Ph. Genoud – Université Grenoble Alpes 22


JEE Java Entreprise Edition
• Java EE (Java Enterprise Edition), anciennement J2EE (Java 2 Entreprise Edition) et
maintenant Jakarta EE est un ensemble de spécifications étendant JSE pour le
développement d’applications d’entreprise.
https://jakarta.ee/specifications/platform/
• La spécification JEE définit
– Un ensemble d’API pour les applications d’entreprises (applications réparties, services web, mapping
Objet/Relationnel pour la persistance des données…),
– Un plate-forme (Java EE Platform) à base de composants pour héberger et exécuter les applications
(serveurs Java EE)
– Une suite de tests (Java EE Compatibility Test Suite) pour vérifier la compatibilité des implémentations
– Une implémentation de référence (Java EE Reference Implementation): GlassFish ;

Janvier 2023 © Ph. Genoud – Université Grenoble Alpes 23


JEE Java Entreprise Edition - Historique
• Evolution de la spécification JEE par rapport à évolution du langage Java (JSE)

Java Java Java Java Java Java Java Java Java Java Java Java
1.0 1.1 1.2 1.3 1.4 5 6 7 8 9 10 11

1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018

J2EE 1.2 J2EE 1.3 J2EE 1.4 JEE 5 JEE 6 JEE 7 JEE 8

Fin 2017 Oracle cède JEE à la fondation Eclipse. Java étant une
marque déposée, Java EE a été renommé EE4J (Eclipse Enterprise for
Java) pour finalement devenir Jakarta EE

Janvier 2023 © Ph. Genoud – Université Grenoble Alpes 24


Spécifications

JEE Spécifications
• https://jakarta.ee/specifications/platform/

Différentes versions
Pour une version

APIs (Javadoc)
Implémentations (open source ou commerciales)

Janvier 2023 © Ph. Genoud – Université Grenoble Alpes 25


Java EE - APIs
• JEE inclus de nombreuses API couvrant de nombreuses fonctionnalités
– pages web dynamiques, lecture écriture transactionnelle dans des BD, files d’attentes distribuées…
– Web
• Servlet: gestion de requêtes HTTP. API de bas niveau, les autres spécifications JEE s’appuient sur elle,
• JSP (Java Server Pages) : pages web dynamiques,
• JSF (Java Server Faces): construction d’interfaces utilisateur à partir de composants;
• EL (Unified Expression Language): langage simple pour lier des composants (JSP ou JSF) avec des objets Java,
• WebSocket: gestion de connexions WebSocket.
– Services Web
• Java API for XML Web Services: pour la création de services web SOAP,
• Java API for RESTful Web Services: support pour créer des services web conformes aux principes
architecturaux REST (Representational State Transfer);
• Java API for JSON Processing: gestion d’informations encodées au format JSON format;,
• Java API for JSON Binding: conversion d’informations JSON en classes et objets Java et inversement,
• Java Architecture for XML Binding: transformation de XML en objets Java,

Janvier 2023 © Ph. Genoud – Université Grenoble Alpes 26


Java EE - APIs
– Spécifications d’entreprise
• EJB (Enterprise JavaBean) ensemble d’APIs légères (lightweigh) pour la définition d’objets métiers (Entreprise
Beans) pris en charge par un container d’objets (EJB container)
– transactions (en utilisant JTA), appels de procédures à distance (RMI ou RMI-IIOP), gestion de la concurrence, injection de
dépendances, control d’accès.
• JPA (Java Persistence API) : ORM (Object-Relational Mapping) entre tables d’un SGBDR et des classes Java.
• JTA (Java Transaction API) : interaction avec le support transactionnel offert par JEE with the transaction support
offert par Java EE.
• JMS (Java Message Service) : création, envoi, réception de messages d’un système de messagerie d’entreprise.
– Autres spécifications
• Validation (Bean Validation API) : fournit un moyen unifié pour définir des contraintes sur les objets métiers
(beans, par exemple les classes de modèle JPA model) qui peuvent être appliquées sur plusieurs couches
(persistance JPA, vues JSF).
• Batch Applications: exécution de programmes en tâches de fond.

Janvier 2023 © Ph. Genoud – Université Grenoble Alpes 27


Architecture des applications Java EE
• S'appuie sur un modèle d'architecture multi-tiers (multi-couches)
Client léger Tier client Poste client
(navigateur web)

Conteneur WEB
Client riche
présentation (application Java)
Pages JSP
Pages JSP Servlets
Tier web

Serveur JEE
Serveur Conteneur EJB Tier métier
métier d'applications EJB EJB EJBEJB
EJB
JEE

Serveur
Tier Système
données de bases
d'Information de
l'Entreprise de données

• Logique de l'application :
– Composants web (Servlet, JSP,JFS)
– Composants métiers (EJB) : Client , Compte en Banques
• Services standards (cycle de vie des composants, multithreading, transactions, persistance…) pris en charge par les
conteneurs Web et EJB du serveur d'application JEE
Janvier 2023 © Ph. Genoud – Université Grenoble Alpes 28
Exemples de programmes Java
• Les Applications indépendantes
– Programmes autonomes (stand-alone) lancé depuis une JVM

• Les Applets
– Programmes exécutées dans l’environnement d’un navigateur Web et
chargés au travers de pages HTML
http://lig-membres.imag.fr/genoud/ENSJAVA/cours/TicTacToe/example1.html

• Servlets
– Programmes exécutés par un serveur d’application
(exemple Apache Tomcat conteneur Web JEE)
HTTP

DemoServlet

Seuls diffèrent les contextes d'invocation et d’exécution


– Les droits des applications, applets servlets ne sont
pas les mêmes

Janvier 2023 © Ph. Genoud – Université Grenoble Alpes 29


Exemples de programmes Java
Application indépendante

Application est définie par un ensemble de


classes dont une jouera le rôle de classe
Appli2Visages.java VisageRond.java Dessin.java
principale La classe "principale" Défini un type d’objet Visage Gère la zone de dessin

• Application doit posséder une classe principale Tableau de chaînes de caractères


(équivalent à argc, argv du C)
– classe possédant une méthode de signature
public static void main(String[] args)
– cette méthode servira de point d’entrée pour l’exécution
java Appli2Visages Exécute le code défini dans la méthode main
contenue dans le fichier Appli2Visages.class

Janvier 2023 © Ph. Genoud – Université Grenoble Alpes 30


Exemples de programmes Java
Application indépendante

Application est définie par un ensemble de


classes dont une jouera le rôle de classe
AppliVisage.java VisageRond.java Dessin.java
principale La classe "principale" Défini un type d’objet Visage Gère la zone de dessin

javac AppliVisage.java

La compilation de la classe principale entraîne


la compilation de toutes les classes utilisées
javac ≃ make
AppliVisage.class VisageRond.class Dessin.class

Pour exécuter l'application on indique à


l'interpréteur java le nom de la classe
java AppliVisage
principale

La JVM charge les classes nécessaires au fur


et à mesure de l'exécution

Janvier 2023 © Ph. Genoud – Université Grenoble Alpes 31


Exemples programmes Java
Applet

• Classe principale ne posséde pas de méthode main()


• Hérite de java.awt.Applet ou javax.swing.Japplet

• Son bytecode réside sur un serveur http


• Elle est véhiculée vers un client http (navigateur Web) via une page html qui contient son url

• Lorsqu’un navigateur compatible Java (avec sa propre machine virtuelle java (JVM) : Java
Plugin) reçoit cette page HTML, il télécharge le code de la classe et l’exécute sur le poste client
– l’applet doit posséder un certain nombre de méthodes pour permettre cette exécution
• init(), start(), stop(), paint(), destroy()

Janvier 2023 © Ph. Genoud – Université Grenoble Alpes 32


Exemple de programmes Java
Applet : Principe de fonctionnement

<HTML>
<HEAD>
<TITLE>A Clock (1.1)</TITLE> http://java.sun.com/jdk1.6/demo/applets/Clock/example1.html
</HEAD>
<BODY> 1. Demande de chargement d ’une
<h1>A Clock (1.1)</h1>
<hr> page web contenant une applet
<applet code="Clock2.class"
width=170 height=150> HTML
<param bgcolor="C0C0C0">
2. Chargement de la page html HTML HTML
</applet>
....
HTML
</BODY>
example1.html
HTML
HTML
Client Serveur HTML
http http
Navigateur
3. Demande de chargement .class
intégrant une
.class
machine de l’applet référencée dans la page .class
virtuelle Java
.class

5. Exécution de 4. Chargement du bytecode des


l’applet dans classes de l’applet
la JVM du client Clock2.class

Janvier 2023 © Ph. Genoud – Université Grenoble Alpes 33


1ère séance de TP
• http://lig-membres.imag.fr/genoud/teaching/PL2AI/tds/PL2/sujets/tp01_jdk/tp01_jdk.html
• utilisation depuis ligne de commande des outils de base du JDK pour le développement d'applications Java
– Compilation :
• javac
– Exécution :
• java
– Documentation
• javadoc
– "Archivage"
• jar
• Pourquoi ne pas utiliser tout de suite un IDE Java ?
– Être capable de travailler avec Java quelque soit l'environnement,
– Bien comprendre les étapes de compilation puis d’exécution,
– Comprendre des mécanismes parfois masqués par des environnements intégrés (ex. la notion de CLASSPATH).

Janvier 2023 © Ph. Genoud – Université Grenoble Alpes 34


2ème séance de TP
http://lig-membres.imag.fr/genoud/teaching/PL2AIPL2AI/tds/PL2/sujets/tp02_typesSimples/tp02_typesSimples.html

• Objectif : expérimenter les constructions de base du langage Java (types simples, instructions de
contrôle, itérations) qui sont très proches syntaxiquement de celles utilisées par le langage C

• Ecriture de programmes simples


– Thème 1 : expressions
– Thème 2 : instructions conditionnelles
– Thème 3 : itérations
– Thème 4 : instanciation d'objets - envois de messages

http://lig-membres.imag.fr/genoud/PL2AI/cours/

Janvier 2023 © Ph. Genoud – Université Grenoble Alpes 35


Performances
• Exécution d'un programme Java
– le code Java est compact,
– le chargement des classes nécessaires est sélectif et dynamique,
– ... mais Java est interprété

• Palier aux lenteurs de l'interprétation


– utilisation d’un JIT (compilateur « Just-in-Time »)
• compilation à la volée du byte-code
• réutilisation du code déjà compilé
• intégration du JIT HotSpot dans JVM depuis version 1.3

Janvier 2023 © Ph. Genoud – Université Grenoble Alpes 41


https://www.quora.com/Why-is-Javas-use-in-the-back-end-popular-I-
think-the-backend-doesn-t-need-a-cross-platform-language-with-
performance-lower-than-natively-compiled-languages-such-as-C-C-
Golang-etc

Janvier 2023 © Ph. Genoud – Université Grenoble Alpes 43

Vous aimerez peut-être aussi