Chapitre 1
Introduction à JAVA
Sommaire
Généralités sur Java
Editions Java : JSE, JME, et JEE
JDK (Java Development Kit)
Programme "Hello World"
Généralités sur Java
Java est un langage de programmation orienté objet pur
(contrairement à C++)
Java s’exécute dans une architecture de Virtual Machine ce
qui assure la Portabilité
Java regroupe un ensemble d'API (bibliothèques) riches et
variées qui facilitent le développement (Réseaux, bases de
données, IHM, …)
Les spécifications de Java et duJDK sont publics
standard pour le développement d'applications
d'entreprise
disponibles sur le site de oracle
Les caractéristiques du langage Java
Simple : par rapport au C++. Robuste : difficile d'avoir des
échecs mémoire ou de corrompre le
Orienté objets : bases dans code
Smalltalk et autres langages de
POO Sécurisé : mécanismes de
sécurité
Interprété : la compilation
génère le bytecode, code Multithreads : Multitâches
indépendant des machines, qui immédiatement supporté.
est ensuite interprétée par la
JVM. Distribué
Portable : Java est architecture • Support des protocoles
neutral, i.e il tourne sur les Réseau;
Windows, Mac OS, Linux, … • Support de la distribution
d'objets, des appels RMI et
CORBA.
Les évolutions dans le monde Java
https://www.jmdoudoux.fr/java/dej/chap-presentation.htm#presentation-4
2009 : Difficultés de Sun et
1991: James Gosling, Patrick Naughton et Mike rachat par Oracle.
Sheridan, employés de Sun travaillent sur Green
Project : résultat Oak puis Firtsperson.
2011: Java 7 désormais par
Oracle
1993 : vulgarisation d’Internet
2014: Java 8
1995: WebRunner puis Hotjava et Java. Sun et
Netscape décident d’intégrer Java dans un 2017: Java 9
navigateur.
2018: Java 10 et Java 11
1998 : Java 2. De Java 2 à Java 6 il y a eu des versions
chaque 2 ans.
2019: Java 12 et Java 13
3 novembre 2006 : Passage de Java sous
licence GPL. Java devient donc un outil libre. 2020: Java 14 et Java 15
2021: Java 16 et Java 17
2022 : Java 18 et Java 19
2023 : Java 20 et Java 21
Les évolutions dans le monde Java
Les trois éditions de Java
1.Java Standard Edition (JSE) : environnement
d'exécution et ensemble complet d'API pour des
applications de type desktop. Cette plate-forme sert de
base aux autres environnements.
2.Java Enterprise Edition (JEE) : environnement
d'exécution reposant intégralement sur Java SE pour le
développement d'applications d'entreprise (applications
à large échelle, applications distribuées, applications
Web, …)
3.Java Micro Edition (JME) : environnement
d'exécution et API pour le développement d'applications
sur appareils mobiles et embarqués dont les capacités
ne permettent pas la mise en œuvre de Java.
Les trois éditions de Java
Les trois éditions de Java
Chaque édition définit un ensemble de bibliothèques de classes
différent
Les équipements mobiles/embarqués utilisent peu de classes. Alors
que les classes du runtime J2SE se comptent en milliers.
Les trois éditions de Java
exploitent les mêmes facilités
syntaxiques du langage Java J2EE
J2SE
J2ME
Qu'est ce que la JME ?
La JME est une spécification qui vise à définir une
infrastructure logicielle pouvant s’adapter au
développement / déploiement logiciel sur tous type
de matériel mobile.
La JME peut être considérée comme une collection
de classes et d’interfaces Java dédiés aux
équipements mobiles (small and mobile devices).
Java Standard Edition
Les packages de Java SE
Le succès de Java tient à la richesse de son API, organisée en packages
chacun couvrant un domaine d'application.
java.lang : systématiquement visible il renferme Object, System,
String, Thread, ..
java.util : utilitaires de programmation Date, List, Stack, ...
java.io : classes pour les différents modes d'entrée/sortie
java.applet : Développement d'applet
java.awt : développement d'interfaces graphiques
javax.swing : interfaces graphique, amélioration de AWT
java.net : réseau Sockets TCP, URL, Datagrammes,...
java.sql : accès aux bases de données relationnelles
java.rmi : applicatifs Java distribués
Java EE pour quoi faire ?
Infrastructure « serveur » pour applications d’entreprise
Support des architecture multi-tiers
1. Architecture client léger (architecture Web basée « browser »)
2. Architecture client lourd
3. Architecture orientée service (application répartie sans présentation)
Support de QoS : transaction, sécurité
Connexion standard à des systèmes d’information externes (accès au « legacy »)
Java EE est la spécification d’un modèle de composants
distribués prenant en compte les différentes couches d’un
système d’information d’entreprise
La Java EE définit une architecture standard incluant
Un modèle de programmation (application multi-tiers, client légers)
Une plate-forme (ensemble de spécifications et de politiques requises)
Un ensemble de test de compatibilité
Une implantation de référence
Les standards de la Java EE sont gérés par la communauté JCP (Java Community Process
www.jcp.org) à travers des JSR(Java Specification Request)
Mécanisme d'exécution des programmes Java
Le code source java est compilé en un format
indépendant des machines appelé bytecode .java
Code source Java
Le bytecode est interprété par la machine
virtuelle déjà installée sur la machine Compilation (javac)
physique
“Bytecodes” Java .class
Pour tout type de machine
(OS/Processeur), il y a une JVM Déploiement
spécifique (disponible et gratuite)
JVM JVM JVM
Le bytecode peut être converti en (java) (java) (java)
un code machine et ainsi être exécuté MacOS UNIX Windows
rapidement. Il faut compiler avec un
compilateur dit Just in Time (JIT). Mais on Mac Unix PC
perd la portabilité!
Avantages des programmes Java
Les outils pour programmer Java
L'indispensable JDK
Récupérer le JDK et l'installer.
Un environnement de développement intégré (IDE)
Un IDE n'est pas obligatoire pour programmer, mais il amène un confort
d'édition, de compilation, d'exécution et de débogage.
Les IDE professionnels (WebSphere WSAD, Sun ONE, Borland JBuilder, …
) amènent beaucoup de facilités en termes de génération de code. Ils sont
complexes pour les débutants.
Conseil : Commencer par utiliser un IDE simple et gratuit tel que : NetBeans
ou Eclispse
Récupérer Netbeans ou eclipse et l'installer.
Les outils du JDK (Java Development Kit)
Ces outils sont sous le répertoire bin du répertoire d'installation du JDK
javac : compilateur de sources java
java : interpréteur de byte code
appletviewer : interpréteur d'applet
javadoc : générateur de documentation (HTML, MIF)
javah : générateur de header pour l'appel de méthodes natives
javap : désassembleur de byte code
jdb : debugger
javakey : générateur de clés pour la signature de code
rmic : compilateur de stubs RMI
rmiregistry : "Object Request Broker" RMI
Ajouter le chemin de répertoire bin à la variable d'environnement PATH (Win et
UNIX) pour rendre l'accès aux outils du JDK possible de partout
Veiller à ce que le chemin des bytecodes utiles sont consignés dans la variable
CLASSPATH
Le programme "Hello World …"
. Éditer le code source Java suivant et le sauvegarder dans Bienvenue.java :
class Bienvenue
{
public static void main( String st[])
{
System.out.println( "Bienvenue dans le monde Java ");
}
}
2. Compiler
3. Exécuter.
Un programme pour afficher la date
• Utilisation de l’API (package java.util)
import java.util.*;
class AffichDate {
public static void main (String st[])
{
Date d = new Date();
System.out.println( "Nous sommes le : " +
d.getDate()+ " / "+ //Jour
du mois
(d.getMonth()+1) +" / "+ //Le
mois
(d.getYear()+1900) //L’année
);
} //Fin du main()
} //Fin de AffichDate
Programmation structurée en Java
Types prédéfinis (8 au total)
Entiers
byte (8 bits), short (16 bits), int (32 bits), long (64bits)
Réels
float (32 bits IEEE 754), double(64 bits)
Caractères
char (2 octets, unicode)
Logique
boolean (1 octet)
Structures de contrôle de flux d'exécution
Schémas conditionnels
if (même syntaxe qu'en C/C++)
switch-case (même syntaxe qu'en C/C++)
Schémas itératifs
for (même syntaxe qu'en C/C++)
while (même syntaxe qu'en C/C++)
do-while (même syntaxe qu'en C/C++)
Offre en termes d’IDE de développement
Offre commerciale
IBM / WebSphere Studio Application Developer (WSAD)
Borland JBuilder
Sun One Developer
Oracle JDeveloper
…
Offre « Open Source »
Eclipse : https://www.eclipse.org/downloads/packages/
NetBeans : https://netbeans.apache.org/download/index.html