Vous êtes sur la page 1sur 5

JAVA c'est quoi ?

• Une technologie développée par SUN Microsystems™ lancée en


1995
– Un langage de programmation
– Une plateforme , environnement logiciel dans lequel les programmes java
Introduction à Java s'exécutent.

• Présente dans de très nombreux domaines d’application : des


serveurs d’applications aux téléphone portables et cartes à puces
(JME)
– Quelques chiffres (Java One 2005):
• 4,5 millions de développeurs Java
• 700 millions de PC équipés d'une JVM
• 708 millions de téléphones Java
• 600 millions de périphériques mobiles
• 1 milliard de Java Cards

Le Langage Java Le Langage Java


Mon premier programme Java (pas très objet…)
Le code de la classe doit être 1 Tout code java doit être défini à l'intérieur d'une classe
enregistré dans un fichier de
• Dans un des premiers papiers* sur le langage JAVA, même nom (casse comprise)
que la classe 3
SUN le décrit comme suit : public class HelloWorld {
HelloWorld.java
public static void main(String[] args) {
« Java : a simple, object-oriented, distributed, int i = 0;
robust, secure, architecture neutral, portable, while (i < 5) {
2 La description de la
classe est effectuée à
high-performance, multithreaded, and dynamic language » Le point d'entrée pour
System.out.println("Hello World !");
i++;
l'intérieur d'un bloc
{ }
l'exécution est la 4 }
méthode main()
}

Compilation : Exécution :
javac HelloWorld.java java HelloWorld Hello World !
* White Paper :The Java Language Environment - James Gosling, Henry McGilton - May 1996 Hello world !
http://java.sun.com/docs/white/langenv/ javac java Hello World !
Hello World !
HelloWorld.java HelloWorld.class Hello World !

Le langage Java La machine virtuelle Java


Un langage compilé / interprété Exécution d'un programme Java compilé
• Compilation d'un programme JAVA : génération de byte-code • byte-code assure la portabilité des programmes Java
01100001 – langage d'une Machine Virtuelle
public class Test { javac 11100000 – à l'exécution un interpréteur simule cette machine virtuelle
public static void main(String[] args) 11111010
{ 11101... javap –c Test
for (int i = 0; i < 10; i++) ...
Désassemble Test.class
System.out.println("Hello " + i); javac java Java PC
0 iconst_0
} 1 istore_1 VM Windows
} 2 goto 30
5 getstatic #10 <Field java.
Test.java Test.class 8 new #5 <Class java.lang.St .java .class
11 dup source byte-code
code source byte-code 12 ldc #1 <String "Hello "> Java PowerPc
…. VM MacOS X
27 iinc 1 1
30 iload_1
• Le byte-code est : 31 bipush 10
33 if_icmplt 5
– proche d'un langage machine 36 return Java Sun Sparc
– indépendant de la platforme d'exécution (matériel + OS) VM Solaris
Linux
La machine virtuelle java Types de programmes Java
Principes de fonctionnement

• Chargement
– chargement sélectif et dynamique des classes • Les Applications indépendantes
– vérification statique du code (tentatives de modification de la machine – Programmes autonomes (stand-alone)
virtuelle, ...)
• Protection lors de l'exécution
– Le "security manager" possède un droit de veto (accès "sauvages" au
système de fichiers, ...)
– Cette protection peut-être modulée
JVM
• Les Applets
Réseau
ou Class Loader
Classes Security Manager – Programmes exécutées dans l’environnement d’un
Système locales navigateur Web et chargés au travers de pages HTML
de fichiers Demo
.class
Byte-Code verifier Interpreter Seuls diffèrent les contextes d'invocation et d’exécution
– Les droits des applets et des applications ne sont pas les mêmes

Types de programmes Java Types de programmes Java


Application indépendante Applet

• Application doit posséder une classe principale • Classe ne possédant pas de méthode main()
– classe possédant une méthode de signature Tableau de chaînes de caractères
• Hérite de java.awt.Applet ou javax.swing.JApplet
(équivalent à argc, argv du C)

public static void main(String[] args) • 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
• Cette méthode sert de point d’entrée pour l’exécution • Lorsqu’un navigateur compatible Java (avec sa propre machine
– l’exécution de l ’application démarre par l’interprétation de cette virtuelle java (JVM)) reçoit cette page HTML, il télécharge le code
méthode Exécute le code contenu dans le de la classe et l’exécute sur le poste client
fichier AppliVisage1.class
– l’applet doit posséder un certain nombre de méthodes pour permettre cette
ex : java AppliVisage1 exécution
• init(), start(), stop(), paint(), destroy()

Types de programmes Java La plateforme Java


Applet : Principe de fonctionnement

• Plateforme
<HTML>
<HEAD>
<TITLE>A Clock (1.1)</TITLE>
http://java.sun.com/jdk1.3/demo/applets/Clock/example1.html
</HEAD>
<BODY> 1. Demande de chargement d ’une
– Environnement matériel et/ou logiciel dans lequel un programme s'exécute.
• La plus part des plateformes sont la combinaison d'un OS et du matériel sous-
<h1>A Clock (1.1)</h1>
<hr> page web contenant une applet
<applet code="Clock2.class"
width=170 height=150> HTML jacent (MS Windows + Intel, Linux + Intel, Solaris + Sparc,
<param bgcolor="C0C0C0">
</applet> 2. Chargement de la page html HTML HTML Mac Os X + Power PC)
.... HTML
</BODY>

• La plateforme Java est entièrement logicielle et s'exécute au


example1.html HTML
HTML
Serveur HTML dessus des plateformes matérielles
http
Client
http MonProgramme.class
3. Demande de chargement
.class API (Application Programming Interface) Java :
Navigateur de l’applet référencée dans la page
.class
.class Bibliothèques Java standards sur lesquelles le
intégrant une .class Plateforme API Java programmeur peut s'appuyer pour écrire son code
machine Java
virtuelle Java
JVM (Machine virtuelle)

5. Exécution de 4. Chargement du bytecode des Plateforme matérielle


l’applet dans classes de l’applet (OS + hardware)
la JVM du client Clock2.class
•Evolutions du langage : Généricité,
La plateforme Java La plateforme Java Types Enumérés, Autoboxing, …
•Nouvelles API : Concurrence,
API Java Evolution de l'API Standard Management (gestion et supervision
de la JVM)…
Java 5 (Tiger)

• API Java •Swings, Collections, JNDA ….


Services Web
Langages de scripts
– (très) vaste collection de composants logiciels (classes et interfaces) 4000
•Du fait de l’ajout de très nombreuses
3799
Accès au compilateur
fonctionnalités la plateforme a été Plus d’API pour applis desktop
– organisée en bibliothèques (packages) 3500
Java 2
3279
….
Java 6 (Mustang)
– offre de nombreux services de manière standard (indépendamment de la 3000 Dec 2006
2757
plateforme matérielle)
2500

2000 classes
packages
1520
1500

MonProgramme.class 1000 Java 7 (Dolphin)


504
Open Source
500 2007-2008
212 203
Plateforme API Java 8 23 59 135 166
Java 0
java 1.0 java 1.1 java 1.2 java 1.4 java 1.5 java 1.6 java 1.7
JVM (Machine virtuelle)

Plateforme matérielle
Programmer en Java nécessite une bonne
•Amélioration des performances
(OS + hardware) connaissance de l'API. •Modification du langage :classes internes •Assertions, Nouveau package pour i/o,
Attention à la courbe d'apprentissage (learning •Modification du modèle événementiel •Nouvelles classes pour collections…
curve) qui est peut être longue •pour awt Java Beans •Nombreux nouveaux packages
•Amélioration des performances de la VM (XML, log des applications,
préférences utilisateur …)

La plateforme Java JSE : Java Standard Edition


Les différentes éditions de Java Organisation générale

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

Destinée au développement d’applications « d’entreprise »


Entreprise Edition («business applications») robustes et interopérables.
J2EE
JEE
Simplifier le développement et le déploiement
d’applications distribuées et articulées autours du web.

Environnement d’exécution optimisé pour les dispositifs


Mobile Edition
J2ME
JME
« légers » :
• Carte à puce (smart cards)
• Téléphones mobiles
• Assistants personnels (PDA)

Versions MS Windows, Linux, Solaris téléchargeables gratuitement sur java.sun.com

JSE : Java Standard Edition JSE : Java Standard Edition


Organisation générale Organisation générale

JDK
JRE

JRE (Java Runtime Environnement) pour l'exécution de code java compilé JDK (Java Developper's Kit) outils de base pour le développement d'applications Java
JEE Java Entreprise Edition Architecture des applications JEE
• Plateforme définie par SUN pour le développement • Architecture multi-tiers
d’applications réparties Client léger
Poste client
– basée sur un ensemble de technologies Java
(navigateur web) Tier client

• Servlets, JSP(Java Server Pages), JSF (Java Server Faces) : pages Conteneur WEB
web dynamiques présentation Client riche
(application Java) Pages JSP
Pages JSP Servlets
Tier web

• EJB (Entreprise Java Beans) : objets métiers Serveur JEE

• JDBC : API d'accès à des SGBD Conteneur EJB


EJBEJB EJBEJB Tier métier
métier EJB
• JNDI (Java Naming an Directory Interface) : API pour nommage des
objets Serveur d'applications JEE

• JTA (Java Transaction API) ; API pour gestion des transactions données
Tier Système
Serveur
de bases
d'Information de de données
• JAAS (Java Authentication and Authorization Service) l'Entreprise

• Et de nombreuses autres… • Logique de l'application :


– Composants web (Servlet, JSP,JFS)
– S'appuie sur un modèle d'architecture multi-tiers (multi-couches) – Composants métiers (EJB)
• Services standards (cycle de vie des comoposants, multithreading, transactions,
persistance…) pris en charge par les conteneurs Web et EJB du serveur d'application JEE

JEE situation actuelle Environnements de développement intégrés

• Une spécification (Sun) : JEE 5 (2006), JEE 6 (2009) • Nombreux IDE (Integrated Development Environment) commerciaux,
open-source ou freeware
• Différentes implémentation de la plateforme
– implémentation de référence
• (JEE 5 SDK Java Application Platform) fournie gratuitement par Sun JDeveloper
– Des implémentations commerciales Oracle

WebSphere Studio JBuilder IntelliJIDEA Visual J++


• WebLogics (BEA),WebSphere (IBM), JCreator
Site Developer for Java Codegear JetBrains Microsoft
Xinox
• Sun Java System Application Server, Oracle Application Server… ...
IBM
C# .net
– Ou open-source
• JBoss, Geronimo (Apache), Glassfish, JOnAS…
• Processus de certification
– TCK (Test Compatibility Kit) (~ 20000 tests)
– Payant sauf pour plateformes open-source NetBeans BlueJ Emacs + JDE
Eclipse
www.netbeans.org www.eclipse.org www.bluej.org http://sunsite.auc.dk/jde

Java aujourd'hui 1ère séance de TP


• utilisation depuis ligne de commande des outils de base pour le
• Une maturité certaine
développement d'applications Java
– Technologie largement reconnue dans le monde industriel
– Compilation :
• javac
• Evolutions de JAVA contrôlées par organisation indépendante
– Exécution :
Java Community Process (www.jcp.org)
• java (applications)
– Évolutions du langage (généricité dans version 1.5(Tiger)) • appletviewer (applets)
– Nouvelles API – Documentation
• javadoc
• Passage de Java dans la communauté open source (2007) – "Archivage"
– Jusqu'à présent JAVA était une marque propriétaire de SUN • jar
• Pourquoi ne pas utiliser tout de suite un IDE Java ?
• Bataille avec C# .NET sur la plateforme Windows – Être capable de travailler avec Java quelque soit l'environnement
– Comprendre des mécanismes parfois masqués par des environnements
intégrés (ex. CLASSPATH)
2ème séance de TP Références
« Java - tête la première »
• Objectif : expérimenter les constructions de base du langage Java Kathy Sierra, Bert Bates,1re édition, O’Reilly, septembre 2004
(types simples, instructions de contrôle, itérations) qui sont très proches
syntaxiquement de celles utilisées par le langage C «Cahiers du Programmeur - Java - 1 .4 et 5.0 »
Emmanuel Puybaret, Eyrolles, mars 2006
• Ecriture de programmes simples
– Thème 1 : expressions « Introduction à Java », 2e édition
– Thème 2 : instructions conditionnelles Pat Niemeyer et Jonathan Knudsen, O’Reilly, déc. 2002

– Thème 3 : itérations
– Thème 4 : instanciation d'objets - envois de messages « Au coeur de Java 2 - Volume 1 : Notions fondamentales »
Cay S. Horstmann, Gary Cornell, CampusPress, nov. 2003

« Thinking in Java »,
Bruce Eckel - Prentice-Hall ( www.BruceEckel.com , www.penserenjava.free)

« JAVA in a nutshell, 5th Edition »,


David Flanagan - O'Reilly 2005

Références (suite)

URLs
• http://java.sun.com - Site officiel Java de SUN
– JDK, Tutoriels, Documentations, spécifications, …
• http://www.javaworld.com
Magazine électronique
• http://www.jguru.com, http://www.jdance.com –
Sites dédiés à la technologie java
• applets, applications, notes techniques, forums de discussions

• …

• www.developpez.com
des tutoriels, des FAQ, des ressources….
• http://penserenjava.free.fr
une traduction du livre de BruceEckel « Thinking in Java »
• http://cui.unige.ch/java/
Le Coin Java Centre Universitaire d'Informatique (CUI) de l'Université de Genève
• …