SlideShare une entreprise Scribd logo
1  sur  33
Télécharger pour lire hors ligne
© Rémy Courdier (Révisions M. Gangat) 1
1996-2003- Java Présentation - Version du cours 3.0
L’environnement Java
Présentation de
Java
© Rémy Courdier (Révisions M. Gangat) 2
1996-2003- Java Présentation - Version du cours 3.0
Sommaire
Présentation de Java
Historique
L’environnement Java et le JDK
Caractéristiques
Java par l’exemple
L’environnement de génération et d’exécution
Gestion des aspects de sécurité
Java et Javascript
Plate-forme JAVA et librairies (API)
Ecrire une application
Bibliographie & @ Internet
ANNEXE : Terminologie
© Rémy Courdier (Révisions M. Gangat) 3
1996-2003- Java Présentation - Version du cours 3.0
Historique
Dates clés
1991 James Gosling à Sun MicroSystems développe Oak
programmer tous les processeurs (ordinateurs ou appareils électroménagers, ...)
caractéristiques initiales: robustesse, compatibilité,petite taille du runtime ou des codes
générés, facilité de programmation.
plateforme pour interpréter les programmes du langage
1994 Abandon du projet
1995 Après une présentation à Netscape
Reprise du projet
Intégration dans Netscape sous forme d’applet
Versions Majeures
1.0
1.1 modèle événementiel,exceptions..
1.2 extensions javax, swing, J2EE
1.3 Hotspot
1.4 Java NIO…
...Java signifie café en Slang (argot américain)...
© Rémy Courdier (Révisions M. Gangat) 4
1996-2003- Java Présentation - Version du cours 3.0
Historique
Un nouvel environnement pour de nouvelles solutions informatiques
C++ commence à s’écrouler
Complexité des environnements C++
Langage C, incrément objet, bibli de classes d’encapsulation des OS.
Différences des environnements :
Multiplication des Technologies de compilation (dépendance entre le
langage et le processeur)
Faible durée de vie des composants logiciels
Problème de fiabilité et sécurité en utilisation WWW.
Utilisation de pointeurs,...
Un nouveau langage
Quelque part entre Smalltalk et C++
Un nouvel environnement d’exécution adapté au Web
interprétation du byte code par une machine virtuelle
© Rémy Courdier (Révisions M. Gangat) 5
1996-2003- Java Présentation - Version du cours 3.0
L’environnement Java
Langage et JDK
Langage de programmation orienté objets
Situé entre SMALLTALK et C++, permet de développer des applications de taille importante
Intégrant les besoins de l’informatique actuelle
Répond à des objectifs de portabilité
Une plateforme de déploiement
Une machine virtuelle (JVM)
Des librairies de base (API).
Un ensemble d’outils : Le JDK
Compilateur
Débugger
Documentation
…
Fournisseur
Sun fournit des JDK pour les principales plate-formes :
WIN32, MacOS, Solaris et Linux
autres éditeurs d'environnement Java :
IBM, Microsoft, Novell, Tower J, Blackdown, Appeal Jrockit …
© Rémy Courdier (Révisions M. Gangat) 6
1996-2003- Java Présentation - Version du cours 3.0
L’environnement Java
Principe
Win32 Puce Java
picoJava,
microJava,
ultraJava
Java Run Time : platform independant
Interpréteur Byte Code -Garbage Collector
Solaris
AIX, MVS,HPUX,
Hitachi OS, Irix,...
Intel PC PowerPC
Sun
SPARCstation
...
Classes Standards d’extension
3D, Video, MIDI, Telephonie, Entreprise,...
Appli. Java
Appli. Java
Applications Java
Appli. Java
Appli. Java
Applets Java
API Java
OS/2 MacOS
Electronique grand public :
NC, TV, Téléphone, Jeux,...
Java OS
512 Ko ROM
256 RAM
Java Base API
Classes de bases Java
AWT, Net & IO, applet, memory, thread
Navigateurs
HotJava, Netscape,...
Java Standard ExtensionAPI
code Java
codeC ou assembleur
Machine
Virtuelle
Java
...
libutil libawt libnet libio
platform dependant
libraries
© Rémy Courdier (Révisions M. Gangat) 7
1996-2003- Java Présentation - Version du cours 3.0
Caractéristiques
Simple
Syntaxe proche du C / C++
Pas de pointeurs
Organisation du code (packages)
Pas de gestion explicite de la mémoire (ramasse miettes)
Tout est objet (sauf les type primitifs)
Pas d’héritage multiple(utilisation d’interfaces)
Librairies de classes (sockets, BD, graphiques…)
Orienté Objet
paradigme de programmation le plus utilisé
tout est classe
© Rémy Courdier (Révisions M. Gangat) 8
1996-2003- Java Présentation - Version du cours 3.0
Caractéristiques
Interprété, architecturalement neutre et portable
Code Source transformé en Bytecode indépendant de l’OS
Bytecode interprété par une machine virtuelle
Taille des types primitifs indépendants de l’OS
Bibliothèques de classes « standard »
// Bytecode consists of opcode and
operands.
// Bytecode stream:
03 3b 84 00 01 1a 05 68 3b a7 ff f9
// Disassembly:
iconst_0 // 03
istore_0 // 3b
iinc 0, 1 // 84 00 01
iload_0 // 1a
iconst_2 // 05
imul // 68
istore_0 // 3b
goto -7 // a7 ff f9
© Rémy Courdier (Révisions M. Gangat) 9
1996-2003- Java Présentation - Version du cours 3.0
Caractéristiques
Robuste,Fiable et Sécurisé
Langage pour les applications embarquées.
Gestion de la mémoire par un ramasse miettes (garbage collector)
Impossible de corrompre la mémoire
Pas d’accès direct à la mémoire
Pas de pointeurs
Contrôle du débordement dans les tableaux
Mécanisme d'exception.
Compilateur strict (erreur si exception non gérée, si utilisation d’une
variable non affectée, ...).
Bytecode vérifié avant l’exécution par l’interpréteur
Accès aux ressources contrôlé
© Rémy Courdier (Révisions M. Gangat) 10
1996-2003- Java Présentation - Version du cours 3.0
Caractéristiques
Distribué
API réseau (java.net.Socket, java.net.URL, ...).
API pour les objets distribués (RMI,CORBA)
API pour le Web (servlets)
Multi-thread (processus légers)
Intégrés au langage et aux API :
Gestion de la synchronisation
Dynamique
Chargement dynamique des classes
Introspection…
© Rémy Courdier (Révisions M. Gangat) 11
1996-2003- Java Présentation - Version du cours 3.0
Points faibles
Pas aussi rapide qu’un programme natif
Gourmand en mémoire
Absence de surcharge d’opérateurs comme en C++
Absence dans le langage des types paramétriques –
templates
© Rémy Courdier (Révisions M. Gangat) 12
1996-2003- Java Présentation - Version du cours 3.0
Java par l’exemple
class Exemple {
int unAttribut;
void uneMethode() {
unAttribut++; // équivaut à this.unAttribut++
System.out.println(“exécution de uneMethode”);
System.out.println(“valeur :” + unAttribut);
int sum (int arr[]) {
unAttribut = 0;
// les tableaux sont des objets et gèrent leur
// longueur accessible par la méthode length()
for (int i=arr.length; --i>=0;)
unAttribut += arr[i];
return unAttribut;
};
}; ...d’où les nombreuses comparaisons avec le langage C,
et parfois l’appellation C++ ++ qui est donnée à Java...
© Rémy Courdier (Révisions M. Gangat) 13
1996-2003- Java Présentation - Version du cours 3.0
L’environnement de génération
et d’exécution Java
Java
source
(.java)
Java byte
Code
(.class)
compilateur
Java
Bytecodes
Java chargé
localement
ou par réseau
“class Loader”
librairies
de classes
interpreteur
java
compilateur
temps reéel
Runtime System
Operating System
Hardware
java virtual Machine
Environnement de
génération
Environnement d’exécution
(java Platform)
© Rémy Courdier (Révisions M. Gangat) 14
1996-2003- Java Présentation - Version du cours 3.0
Gestion des aspects de sécurité
“On ne peut faire confiance à personne”
Java
source
(.java)
Java byte
Code
(.class)
compilateur
Java
Bytecodes
Java chargé
localement
ou par réseau
“class
Loader”
librairies
de classes
interpreteur
java
compilateur
temps reéel
Runtime System
java virtual Machine
verifieur de
pseudo-code
•pas de gestion de
l’Allocation dynamique
•Pas de pointeurs
“élimination des erreurs
de prog. classiques...”
•un espace mémoire par source chargé par le réseau
•un espace mémoire pour tous les sources locaux
une classe ne peut référencer une classe importée
qu’en la référençant explicitement
vérification
des types et
des paramètres
de chaque
instruction
“parade aux
compilateurs
hostiles...”
“élimination
des conflits
d’exécutions”
protection des fichiers et des accès réseaux :
les classes du “networking package” permettent de
configurer la platforme avec différents niveaux de
paranoia : interdir tout accès réseau,...
“maîtrise de l’origine des info.”
Utilisation d’une
machine virtuelle
“ parade aux accès
mémoire illicites”
© Rémy Courdier (Révisions M. Gangat) 15
1996-2003- Java Présentation - Version du cours 3.0
Gestion des aspects de sécurité
Le modèle de sécurité
Le même modèle de sécurité est appliqué pour les applications et
pour les applets, locales ou téléchargées
© Rémy Courdier (Révisions M. Gangat) 16
1996-2003- Java Présentation - Version du cours 3.0
Java et JavaScript
JavaScript ?
Quoi ?
JavaScript et une déclinaison simplifiée mais indispensable du langage
Java. Il permet de goûter aux plaisirs de Java sans se frotter aux
difficultés de la conception objet.
JavaScript s’intègre dans une page HTML et va
permettre de répondre à des actions utilisateurs.
réalisation d’actions sans exigence d’une connexion réseau
supplémentaire
permet la programmation événementielle à l’intérerieur d’une page
HTML
<SCRIPT LANGUAGE=“JavaScript”>
function calcule(form) { ... }
</SCRIPT>
supporte le chargement d’un script depuis un autre site
<SCRIPT SRC =“http:iremia.courdier.rc”>... </SCRIPT>
© Rémy Courdier (Révisions M. Gangat) 17
1996-2003- Java Présentation - Version du cours 3.0
Java et JavaScript
Comparaison
JavaScript utilise un nombre restreint de types de données du langage Java
JavaScript
„ Interprété par le client - non
compilé
„ pas de classes ni d’héritage,...
„ Encapsulé dans HTML
„ Déclaration optionnelle des
variables
„ Références vérifiées à la
l’exécution
„ Pas de fonctionnalité
graphiques
„ Intégration dans l’architecture
sous-jacente de navigateurs
„ Issu de Netscape Corporation
Java
compilé avant exécution sur
le client
Orienté objet
Applets distinctes de HTML
Déclaration obligatoire des
variables (typage fort)
Références vérifiées à la
compilation
Fonctionnalités graphiques
complètes de Java
Environnement indépendant
de navigateurs (sauf
LiveConnect)
Issu de Sun Microsystem
© Rémy Courdier (Révisions M. Gangat) 18
1996-2003- Java Présentation - Version du cours 3.0
Plate-forme JAVA et librairies (API)
Les librairies standards
Elles diminuent la charge de travail, standardisent les applications,
et fournissent des exemples de source Java de référence
Les librairies standards :
java.lang : Types de bases, Threads, ClassLoader, Exception, Math, ...
java.util : Collections (Hashmap,ArrayList,TreeMap…), Ressources, Logging,
Compression, Préférences
java.applet
java.awt,javax.swing : Interfaces Graphiques
java.io: Accès aux I/O par flux
java.net: Socket (UDP, TCP, multicast), URL, ...
java.lang.reflect : Introspection
java.beans : Composants logiciels
java.sql,javax.sql: Accès aux bases de données
java.security : signature, cryptographie, authentification
java.rmi : Remote Method Invocation
java.xml
© Rémy Courdier (Révisions M. Gangat) 19
1996-2003- Java Présentation - Version du cours 3.0
Plate-forme JAVA et librairies (API)
Les librairies d’extensions Standards
Les Extensions Standards
Java security :
cryptography, digital signature, encryption and authentification
Java Media API :
2D, Video, Audio, MIDI, Animation, Share, Telephony, 3D
Java Enterprise API :
JDBC(Java Database Connectivity), IDL, RMI (Remote Methode Invocation)
Java Commerce API
gestion de services de paiements électroniques, cryptographie évoluée,...
Java Server
service de gestion de serveurs intranet / internet
…
© Rémy Courdier (Révisions M. Gangat) 20
1996-2003- Java Présentation - Version du cours 3.0
Plate-forme JAVA et librairies (API)
La plate-forme
© Rémy Courdier (Révisions M. Gangat) 21
1996-2003- Java Présentation - Version du cours 3.0
Ecrire une application
Outils
Outils : Téléchargement du JDK
Java Developpement Kit
http://java.sun.com/j2se/1.4.1/download.hl
Un Editeur (Bloc note,IDE….)
Documentation
Documentation sur les API
http://java.sun.com/docs/
Tutoriel
http://java.sun.com/docs/books/tutorial/index.hl
Google
© Rémy Courdier (Révisions M. Gangat) 22
1996-2003- Java Présentation - Version du cours 3.0
Ecrire une application
En ligne de commande
Pré requis
Un Editeur de texte
Etapes
Ecrire le code source dans un fichier portant le nom de la classe
(ici HelloWorldApp.java)
/**
* The HelloWorldApp class implements an application that
* displays "Hello World!" to the standard output.
*/
public class HelloWorldApp {
public static void main(String[] args) {
// Display "Hello World!"
System.out.println("Hello World!");
}
}
Attention: respecter la casse des caractères (majuscules/minuscules)
© Rémy Courdier (Révisions M. Gangat) 23
1996-2003- Java Présentation - Version du cours 3.0
Ecrire une application
En ligne de commande
Etapes
Compiler le code source
javac HelloWorldApp.java
Un fichier contenant du bytecode sera généré
HelloWorldApp.class
Executer le bytecode
java HelloWorldApp
© Rémy Courdier (Révisions M. Gangat) 24
1996-2003- Java Présentation - Version du cours 3.0
Ecrire une application
Avec un IDE (1)
Pré requis
ECLIPSE
www.eclipse.org
Etapes
Créer un projet
File – New Project
Java – Java Project
Choisir un nom &
Cliquer sur FINISH
Raccourci vers eclipse.exe.lnk
© Rémy Courdier (Révisions M. Gangat) 25
1996-2003- Java Présentation - Version du cours 3.0
Ecrire une application
Avec un IDE (2)
Etapes
Créer une classe
File – New – Class
Entrer le nom HelloWorldApp.java
/**
* The HelloWorldApp class
* implements an application
* that displays "Hello World!«
* to the standard output.
*/
public class HelloWorldApp {
public static void main(String[] args) {
// Display "Hello World!"
System.out.println("Hello World!");
}
}
© Rémy Courdier (Révisions M. Gangat) 26
1996-2003- Java Présentation - Version du cours 3.0
Ecrire une application
Avec un IDE (3)
Etapes
Compiler le code source
Project – Build All
Executer le byte code
Menu Run – Run
Dans launch configurations, choisir Java Application, puis cliquer sur new
Dans l’onglet Main, cliquer sur search et choisir la classe HelloWorldApp
Cliquer sur Run
Autres fonctionnalités de Eclipse
Débuggeur
Complétion de code
Refactoring
…
© Rémy Courdier (Révisions M. Gangat) 27
1996-2003- Java Présentation - Version du cours 3.0
Bibliographie & @ Internet
principales @ internet :
java.sun.com et tous les liens associés...
http://java.sun.com/doc/programmer.html ,
http://java.sun.com/doc/devcorner.html
http://www.javasoft.com
http://java.sun.com/tutorial/index.html
Java programming center
http://developer.java.sun.com/developer/onlineTraining/new2java/overview.hl
Cours JAVA
http://www.univ-reunion.fr/~courdier/cours/java
http://www-sor.inria.fr/~dedieu/java/cours/
http://iridia.ulb.ac.be/~cmolter/CoursJavaHome.hl
http://www.improve-
technologies.com/pages/Java/Supports_de_cours_Java_gratuits/
…
© Rémy Courdier (Révisions M. Gangat) 28
1996-2003- Java Présentation - Version du cours 3.0
ANNEXE
Terminologie
Applet
An applet is a Java program that runs within the web browser. Applets use a
graphical user interface and may have text, images, buttons, scrollbars, and
sound. AWT and SWING are frequently associated with articles and tutorials
about creating applets.
AWT
The Abstract Window Toolkit (AWT) is a package of classes for creating
components such as buttons, menus, and scrollbars for applets and standalone
applications.
Java API
The Java Application Programming Interface (API) is prewritten code, organized
into packages of similar topics. For instance, the Applet and AWT packages
include classes for creating fonts, menus, and buttons. The full Java API is
included in the Java 2 Standard Edition download.
© Rémy Courdier (Révisions M. Gangat) 29
1996-2003- Java Présentation - Version du cours 3.0
ANNEXE
Terminologie
JavaBeans
JavaBeans architecture provides a way of designing reuseable software
components that can be visually manipulated in builder tools. Beans can be
simple like buttons, or more complex like a tool to access to databases.
Java Foundation Classes (JFC)
The Java Foundation Classes (JFC) are a set of GUI components and other
services simplifying the development and deployment of desktop and
Internet/Intranet applications.
Java Native Interface (JNI)
JNI is the native programming interface for Java that is part of the JDK. The JNI
allows Java code to operate with applications and libraries written in other
languages, such as C, C++, and assembly. Recommended only for advanced
programmers.
© Rémy Courdier (Révisions M. Gangat) 30
1996-2003- Java Présentation - Version du cours 3.0
ANNEXE
Terminologie
JavaServer Pages (JSP)
Create dynamic web pages with JSP by embedding scriptlets (Java programming
language code) with HL. JSP pages process forms, perform calculations, or do
anything else that can be written with the Java programming language.
Java 2 Platform, Enterprise Edition (J2EE)
The J2EE platform provides a component-based approach to the design,
development, assembly, and deployment of enterprise applications. The J2EE
platform gives you a multitiered distributed application model, the ability to reuse
components, a unified security model, and flexible transaction control.
© Rémy Courdier (Révisions M. Gangat) 31
1996-2003- Java Présentation - Version du cours 3.0
ANNEXE
Terminologie
Java 2, Micro Edition (J2ME)
Java 2 Micro Edition (J2ME) is targeted for the consumer and embedded market.
The API specifications are based on Java 2 Standard Edition (J2SE), but
modified to meet the unique requirements of each product. J2ME makes it
possible to write Java applications for cell phones, smart cards, pagers, and
other consumer devices.
Java 2, Standard Edition (J2SE)
This download includes the essential compiler, tools, runtimes, and APIs for
writing, deploying, and running applets and applications in the Java programming
language.
Java Virtual Machine (JVM)
The Java virtual machine executes instructions that a Java compiler generates.
This run time environment, or JVM, is embedded in various products, such as
web browsers, servers, and operating systems.
© Rémy Courdier (Révisions M. Gangat) 32
1996-2003- Java Présentation - Version du cours 3.0
ANNEXE
Terminologie
JDBC
JDBC is a Java API for executing SQL statements. By using the JDBC API, you
can access almost any data source, from relational databases to spreadsheets to
flat files. J2SE includes the JDBC API.
JDK
JDK is the short-cut name for the set of Java development tools, consisting of the
API classes, a Java compiler, and the Java Virtual Machine interpreter,
regardless of which version. The JDK is used to compile Java applications and
applets. The most current version is the J2SE., the preferred term these days. If
you use J2SE 1.2 and later to develop applications, you are using what's known
as the Java 2 Platform.
JINI
The Jini network technology enables any service--from enterprise systems to
kitchen appliances--to network smoothly and simply. The Jini architecture lets
each service (device or software) tell others how to talk to it, without any
administrator settings.
© Rémy Courdier (Révisions M. Gangat) 33
1996-2003- Java Présentation - Version du cours 3.0
ANNEXE
Terminologie
Project Swing
The javax.swing package of classes is used to create GUI components for
applets and applications. Project Swing classes enable programmers to specify a
different look and feel for each platform, or a uniform look across all platforms.
Swing is the project code name for the lightweight GUI components in JFC.
RMI
Remote Method Invocation (RMI) lets Java applications communicate across a
network. The communicating applications can be running on different computers
on opposite sides of the planet. This higher-level and method-based approach to
network communications allows access to a remote object as easily as a local
object.
Servlets
A servlet is an extension to a server that enhances the server's functionality.
Servlets are most commonly used to process forms, handle redirects or
authenticate user names and passwords, and create dynamic content.

Contenu connexe

Similaire à Chap1_PresentationJava.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 timeseriesXavier MARIN
 
1-supportpoojavapremirepartie-140408132307-phpapp01.pptx
1-supportpoojavapremirepartie-140408132307-phpapp01.pptx1-supportpoojavapremirepartie-140408132307-phpapp01.pptx
1-supportpoojavapremirepartie-140408132307-phpapp01.pptxRihabBENLAMINE
 
Java uik-chap1-intro java
Java uik-chap1-intro javaJava uik-chap1-intro java
Java uik-chap1-intro javaAmel Morchdi
 
Réseau de capteurs sans fil
Réseau de capteurs sans fil  Réseau de capteurs sans fil
Réseau de capteurs sans fil Ghassen Chaieb
 
2012 02-09-eranea-presentation-jug-lausanne
2012 02-09-eranea-presentation-jug-lausanne2012 02-09-eranea-presentation-jug-lausanne
2012 02-09-eranea-presentation-jug-lausanneDidier Durand
 
Les vrais enjeux de l'IA.pdf
Les vrais enjeux de l'IA.pdfLes vrais enjeux de l'IA.pdf
Les vrais enjeux de l'IA.pdfBabacarDIOP48
 
Soirée OSGi au Paris Jug (14/10/2008)
Soirée OSGi au Paris Jug (14/10/2008)Soirée OSGi au Paris Jug (14/10/2008)
Soirée OSGi au Paris Jug (14/10/2008)Cyrille Le Clerc
 
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...ENSET, Université Hassan II Casablanca
 
L’environnement de programmation fonctionnelle DrRacket
L’environnement de programmation fonctionnelle DrRacketL’environnement de programmation fonctionnelle DrRacket
L’environnement de programmation fonctionnelle DrRacketStéphane Legrand
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logiciellecyrilgandon
 

Similaire à Chap1_PresentationJava.pdf (20)

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
 
_JCVFr
_JCVFr_JCVFr
_JCVFr
 
1-supportpoojavapremirepartie-140408132307-phpapp01.pptx
1-supportpoojavapremirepartie-140408132307-phpapp01.pptx1-supportpoojavapremirepartie-140408132307-phpapp01.pptx
1-supportpoojavapremirepartie-140408132307-phpapp01.pptx
 
LyonJUG-2023-v1.0.pdf
LyonJUG-2023-v1.0.pdfLyonJUG-2023-v1.0.pdf
LyonJUG-2023-v1.0.pdf
 
Architecture .net
Architecture  .netArchitecture  .net
Architecture .net
 
Java uik-chap1-intro java
Java uik-chap1-intro javaJava uik-chap1-intro java
Java uik-chap1-intro java
 
Réseau de capteurs sans fil
Réseau de capteurs sans fil  Réseau de capteurs sans fil
Réseau de capteurs sans fil
 
Mysql
MysqlMysql
Mysql
 
2012 02-09-eranea-presentation-jug-lausanne
2012 02-09-eranea-presentation-jug-lausanne2012 02-09-eranea-presentation-jug-lausanne
2012 02-09-eranea-presentation-jug-lausanne
 
Java vs .Net
Java vs .NetJava vs .Net
Java vs .Net
 
Java vs .Net
Java vs .NetJava vs .Net
Java vs .Net
 
Programmation sous Android
Programmation sous AndroidProgrammation sous Android
Programmation sous Android
 
Les vrais enjeux de l'IA.pdf
Les vrais enjeux de l'IA.pdfLes vrais enjeux de l'IA.pdf
Les vrais enjeux de l'IA.pdf
 
Support POO Java première partie
Support POO Java première partieSupport POO Java première partie
Support POO Java première partie
 
Soirée OSGi au Paris Jug (14/10/2008)
Soirée OSGi au Paris Jug (14/10/2008)Soirée OSGi au Paris Jug (14/10/2008)
Soirée OSGi au Paris Jug (14/10/2008)
 
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
 
L’environnement de programmation fonctionnelle DrRacket
L’environnement de programmation fonctionnelle DrRacketL’environnement de programmation fonctionnelle DrRacket
L’environnement de programmation fonctionnelle DrRacket
 
12-Factor
12-Factor12-Factor
12-Factor
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logicielle
 
Rapport tp1 j2ee
Rapport tp1 j2eeRapport tp1 j2ee
Rapport tp1 j2ee
 

Chap1_PresentationJava.pdf

  • 1. © Rémy Courdier (Révisions M. Gangat) 1 1996-2003- Java Présentation - Version du cours 3.0 L’environnement Java Présentation de Java
  • 2. © Rémy Courdier (Révisions M. Gangat) 2 1996-2003- Java Présentation - Version du cours 3.0 Sommaire Présentation de Java Historique L’environnement Java et le JDK Caractéristiques Java par l’exemple L’environnement de génération et d’exécution Gestion des aspects de sécurité Java et Javascript Plate-forme JAVA et librairies (API) Ecrire une application Bibliographie & @ Internet ANNEXE : Terminologie
  • 3. © Rémy Courdier (Révisions M. Gangat) 3 1996-2003- Java Présentation - Version du cours 3.0 Historique Dates clés 1991 James Gosling à Sun MicroSystems développe Oak programmer tous les processeurs (ordinateurs ou appareils électroménagers, ...) caractéristiques initiales: robustesse, compatibilité,petite taille du runtime ou des codes générés, facilité de programmation. plateforme pour interpréter les programmes du langage 1994 Abandon du projet 1995 Après une présentation à Netscape Reprise du projet Intégration dans Netscape sous forme d’applet Versions Majeures 1.0 1.1 modèle événementiel,exceptions.. 1.2 extensions javax, swing, J2EE 1.3 Hotspot 1.4 Java NIO… ...Java signifie café en Slang (argot américain)...
  • 4. © Rémy Courdier (Révisions M. Gangat) 4 1996-2003- Java Présentation - Version du cours 3.0 Historique Un nouvel environnement pour de nouvelles solutions informatiques C++ commence à s’écrouler Complexité des environnements C++ Langage C, incrément objet, bibli de classes d’encapsulation des OS. Différences des environnements : Multiplication des Technologies de compilation (dépendance entre le langage et le processeur) Faible durée de vie des composants logiciels Problème de fiabilité et sécurité en utilisation WWW. Utilisation de pointeurs,... Un nouveau langage Quelque part entre Smalltalk et C++ Un nouvel environnement d’exécution adapté au Web interprétation du byte code par une machine virtuelle
  • 5. © Rémy Courdier (Révisions M. Gangat) 5 1996-2003- Java Présentation - Version du cours 3.0 L’environnement Java Langage et JDK Langage de programmation orienté objets Situé entre SMALLTALK et C++, permet de développer des applications de taille importante Intégrant les besoins de l’informatique actuelle Répond à des objectifs de portabilité Une plateforme de déploiement Une machine virtuelle (JVM) Des librairies de base (API). Un ensemble d’outils : Le JDK Compilateur Débugger Documentation … Fournisseur Sun fournit des JDK pour les principales plate-formes : WIN32, MacOS, Solaris et Linux autres éditeurs d'environnement Java : IBM, Microsoft, Novell, Tower J, Blackdown, Appeal Jrockit …
  • 6. © Rémy Courdier (Révisions M. Gangat) 6 1996-2003- Java Présentation - Version du cours 3.0 L’environnement Java Principe Win32 Puce Java picoJava, microJava, ultraJava Java Run Time : platform independant Interpréteur Byte Code -Garbage Collector Solaris AIX, MVS,HPUX, Hitachi OS, Irix,... Intel PC PowerPC Sun SPARCstation ... Classes Standards d’extension 3D, Video, MIDI, Telephonie, Entreprise,... Appli. Java Appli. Java Applications Java Appli. Java Appli. Java Applets Java API Java OS/2 MacOS Electronique grand public : NC, TV, Téléphone, Jeux,... Java OS 512 Ko ROM 256 RAM Java Base API Classes de bases Java AWT, Net & IO, applet, memory, thread Navigateurs HotJava, Netscape,... Java Standard ExtensionAPI code Java codeC ou assembleur Machine Virtuelle Java ... libutil libawt libnet libio platform dependant libraries
  • 7. © Rémy Courdier (Révisions M. Gangat) 7 1996-2003- Java Présentation - Version du cours 3.0 Caractéristiques Simple Syntaxe proche du C / C++ Pas de pointeurs Organisation du code (packages) Pas de gestion explicite de la mémoire (ramasse miettes) Tout est objet (sauf les type primitifs) Pas d’héritage multiple(utilisation d’interfaces) Librairies de classes (sockets, BD, graphiques…) Orienté Objet paradigme de programmation le plus utilisé tout est classe
  • 8. © Rémy Courdier (Révisions M. Gangat) 8 1996-2003- Java Présentation - Version du cours 3.0 Caractéristiques Interprété, architecturalement neutre et portable Code Source transformé en Bytecode indépendant de l’OS Bytecode interprété par une machine virtuelle Taille des types primitifs indépendants de l’OS Bibliothèques de classes « standard » // Bytecode consists of opcode and operands. // Bytecode stream: 03 3b 84 00 01 1a 05 68 3b a7 ff f9 // Disassembly: iconst_0 // 03 istore_0 // 3b iinc 0, 1 // 84 00 01 iload_0 // 1a iconst_2 // 05 imul // 68 istore_0 // 3b goto -7 // a7 ff f9
  • 9. © Rémy Courdier (Révisions M. Gangat) 9 1996-2003- Java Présentation - Version du cours 3.0 Caractéristiques Robuste,Fiable et Sécurisé Langage pour les applications embarquées. Gestion de la mémoire par un ramasse miettes (garbage collector) Impossible de corrompre la mémoire Pas d’accès direct à la mémoire Pas de pointeurs Contrôle du débordement dans les tableaux Mécanisme d'exception. Compilateur strict (erreur si exception non gérée, si utilisation d’une variable non affectée, ...). Bytecode vérifié avant l’exécution par l’interpréteur Accès aux ressources contrôlé
  • 10. © Rémy Courdier (Révisions M. Gangat) 10 1996-2003- Java Présentation - Version du cours 3.0 Caractéristiques Distribué API réseau (java.net.Socket, java.net.URL, ...). API pour les objets distribués (RMI,CORBA) API pour le Web (servlets) Multi-thread (processus légers) Intégrés au langage et aux API : Gestion de la synchronisation Dynamique Chargement dynamique des classes Introspection…
  • 11. © Rémy Courdier (Révisions M. Gangat) 11 1996-2003- Java Présentation - Version du cours 3.0 Points faibles Pas aussi rapide qu’un programme natif Gourmand en mémoire Absence de surcharge d’opérateurs comme en C++ Absence dans le langage des types paramétriques – templates
  • 12. © Rémy Courdier (Révisions M. Gangat) 12 1996-2003- Java Présentation - Version du cours 3.0 Java par l’exemple class Exemple { int unAttribut; void uneMethode() { unAttribut++; // équivaut à this.unAttribut++ System.out.println(“exécution de uneMethode”); System.out.println(“valeur :” + unAttribut); int sum (int arr[]) { unAttribut = 0; // les tableaux sont des objets et gèrent leur // longueur accessible par la méthode length() for (int i=arr.length; --i>=0;) unAttribut += arr[i]; return unAttribut; }; }; ...d’où les nombreuses comparaisons avec le langage C, et parfois l’appellation C++ ++ qui est donnée à Java...
  • 13. © Rémy Courdier (Révisions M. Gangat) 13 1996-2003- Java Présentation - Version du cours 3.0 L’environnement de génération et d’exécution Java Java source (.java) Java byte Code (.class) compilateur Java Bytecodes Java chargé localement ou par réseau “class Loader” librairies de classes interpreteur java compilateur temps reéel Runtime System Operating System Hardware java virtual Machine Environnement de génération Environnement d’exécution (java Platform)
  • 14. © Rémy Courdier (Révisions M. Gangat) 14 1996-2003- Java Présentation - Version du cours 3.0 Gestion des aspects de sécurité “On ne peut faire confiance à personne” Java source (.java) Java byte Code (.class) compilateur Java Bytecodes Java chargé localement ou par réseau “class Loader” librairies de classes interpreteur java compilateur temps reéel Runtime System java virtual Machine verifieur de pseudo-code •pas de gestion de l’Allocation dynamique •Pas de pointeurs “élimination des erreurs de prog. classiques...” •un espace mémoire par source chargé par le réseau •un espace mémoire pour tous les sources locaux une classe ne peut référencer une classe importée qu’en la référençant explicitement vérification des types et des paramètres de chaque instruction “parade aux compilateurs hostiles...” “élimination des conflits d’exécutions” protection des fichiers et des accès réseaux : les classes du “networking package” permettent de configurer la platforme avec différents niveaux de paranoia : interdir tout accès réseau,... “maîtrise de l’origine des info.” Utilisation d’une machine virtuelle “ parade aux accès mémoire illicites”
  • 15. © Rémy Courdier (Révisions M. Gangat) 15 1996-2003- Java Présentation - Version du cours 3.0 Gestion des aspects de sécurité Le modèle de sécurité Le même modèle de sécurité est appliqué pour les applications et pour les applets, locales ou téléchargées
  • 16. © Rémy Courdier (Révisions M. Gangat) 16 1996-2003- Java Présentation - Version du cours 3.0 Java et JavaScript JavaScript ? Quoi ? JavaScript et une déclinaison simplifiée mais indispensable du langage Java. Il permet de goûter aux plaisirs de Java sans se frotter aux difficultés de la conception objet. JavaScript s’intègre dans une page HTML et va permettre de répondre à des actions utilisateurs. réalisation d’actions sans exigence d’une connexion réseau supplémentaire permet la programmation événementielle à l’intérerieur d’une page HTML <SCRIPT LANGUAGE=“JavaScript”> function calcule(form) { ... } </SCRIPT> supporte le chargement d’un script depuis un autre site <SCRIPT SRC =“http:iremia.courdier.rc”>... </SCRIPT>
  • 17. © Rémy Courdier (Révisions M. Gangat) 17 1996-2003- Java Présentation - Version du cours 3.0 Java et JavaScript Comparaison JavaScript utilise un nombre restreint de types de données du langage Java JavaScript „ Interprété par le client - non compilé „ pas de classes ni d’héritage,... „ Encapsulé dans HTML „ Déclaration optionnelle des variables „ Références vérifiées à la l’exécution „ Pas de fonctionnalité graphiques „ Intégration dans l’architecture sous-jacente de navigateurs „ Issu de Netscape Corporation Java compilé avant exécution sur le client Orienté objet Applets distinctes de HTML Déclaration obligatoire des variables (typage fort) Références vérifiées à la compilation Fonctionnalités graphiques complètes de Java Environnement indépendant de navigateurs (sauf LiveConnect) Issu de Sun Microsystem
  • 18. © Rémy Courdier (Révisions M. Gangat) 18 1996-2003- Java Présentation - Version du cours 3.0 Plate-forme JAVA et librairies (API) Les librairies standards Elles diminuent la charge de travail, standardisent les applications, et fournissent des exemples de source Java de référence Les librairies standards : java.lang : Types de bases, Threads, ClassLoader, Exception, Math, ... java.util : Collections (Hashmap,ArrayList,TreeMap…), Ressources, Logging, Compression, Préférences java.applet java.awt,javax.swing : Interfaces Graphiques java.io: Accès aux I/O par flux java.net: Socket (UDP, TCP, multicast), URL, ... java.lang.reflect : Introspection java.beans : Composants logiciels java.sql,javax.sql: Accès aux bases de données java.security : signature, cryptographie, authentification java.rmi : Remote Method Invocation java.xml
  • 19. © Rémy Courdier (Révisions M. Gangat) 19 1996-2003- Java Présentation - Version du cours 3.0 Plate-forme JAVA et librairies (API) Les librairies d’extensions Standards Les Extensions Standards Java security : cryptography, digital signature, encryption and authentification Java Media API : 2D, Video, Audio, MIDI, Animation, Share, Telephony, 3D Java Enterprise API : JDBC(Java Database Connectivity), IDL, RMI (Remote Methode Invocation) Java Commerce API gestion de services de paiements électroniques, cryptographie évoluée,... Java Server service de gestion de serveurs intranet / internet …
  • 20. © Rémy Courdier (Révisions M. Gangat) 20 1996-2003- Java Présentation - Version du cours 3.0 Plate-forme JAVA et librairies (API) La plate-forme
  • 21. © Rémy Courdier (Révisions M. Gangat) 21 1996-2003- Java Présentation - Version du cours 3.0 Ecrire une application Outils Outils : Téléchargement du JDK Java Developpement Kit http://java.sun.com/j2se/1.4.1/download.hl Un Editeur (Bloc note,IDE….) Documentation Documentation sur les API http://java.sun.com/docs/ Tutoriel http://java.sun.com/docs/books/tutorial/index.hl Google
  • 22. © Rémy Courdier (Révisions M. Gangat) 22 1996-2003- Java Présentation - Version du cours 3.0 Ecrire une application En ligne de commande Pré requis Un Editeur de texte Etapes Ecrire le code source dans un fichier portant le nom de la classe (ici HelloWorldApp.java) /** * The HelloWorldApp class implements an application that * displays "Hello World!" to the standard output. */ public class HelloWorldApp { public static void main(String[] args) { // Display "Hello World!" System.out.println("Hello World!"); } } Attention: respecter la casse des caractères (majuscules/minuscules)
  • 23. © Rémy Courdier (Révisions M. Gangat) 23 1996-2003- Java Présentation - Version du cours 3.0 Ecrire une application En ligne de commande Etapes Compiler le code source javac HelloWorldApp.java Un fichier contenant du bytecode sera généré HelloWorldApp.class Executer le bytecode java HelloWorldApp
  • 24. © Rémy Courdier (Révisions M. Gangat) 24 1996-2003- Java Présentation - Version du cours 3.0 Ecrire une application Avec un IDE (1) Pré requis ECLIPSE www.eclipse.org Etapes Créer un projet File – New Project Java – Java Project Choisir un nom & Cliquer sur FINISH Raccourci vers eclipse.exe.lnk
  • 25. © Rémy Courdier (Révisions M. Gangat) 25 1996-2003- Java Présentation - Version du cours 3.0 Ecrire une application Avec un IDE (2) Etapes Créer une classe File – New – Class Entrer le nom HelloWorldApp.java /** * The HelloWorldApp class * implements an application * that displays "Hello World!« * to the standard output. */ public class HelloWorldApp { public static void main(String[] args) { // Display "Hello World!" System.out.println("Hello World!"); } }
  • 26. © Rémy Courdier (Révisions M. Gangat) 26 1996-2003- Java Présentation - Version du cours 3.0 Ecrire une application Avec un IDE (3) Etapes Compiler le code source Project – Build All Executer le byte code Menu Run – Run Dans launch configurations, choisir Java Application, puis cliquer sur new Dans l’onglet Main, cliquer sur search et choisir la classe HelloWorldApp Cliquer sur Run Autres fonctionnalités de Eclipse Débuggeur Complétion de code Refactoring …
  • 27. © Rémy Courdier (Révisions M. Gangat) 27 1996-2003- Java Présentation - Version du cours 3.0 Bibliographie & @ Internet principales @ internet : java.sun.com et tous les liens associés... http://java.sun.com/doc/programmer.html , http://java.sun.com/doc/devcorner.html http://www.javasoft.com http://java.sun.com/tutorial/index.html Java programming center http://developer.java.sun.com/developer/onlineTraining/new2java/overview.hl Cours JAVA http://www.univ-reunion.fr/~courdier/cours/java http://www-sor.inria.fr/~dedieu/java/cours/ http://iridia.ulb.ac.be/~cmolter/CoursJavaHome.hl http://www.improve- technologies.com/pages/Java/Supports_de_cours_Java_gratuits/ …
  • 28. © Rémy Courdier (Révisions M. Gangat) 28 1996-2003- Java Présentation - Version du cours 3.0 ANNEXE Terminologie Applet An applet is a Java program that runs within the web browser. Applets use a graphical user interface and may have text, images, buttons, scrollbars, and sound. AWT and SWING are frequently associated with articles and tutorials about creating applets. AWT The Abstract Window Toolkit (AWT) is a package of classes for creating components such as buttons, menus, and scrollbars for applets and standalone applications. Java API The Java Application Programming Interface (API) is prewritten code, organized into packages of similar topics. For instance, the Applet and AWT packages include classes for creating fonts, menus, and buttons. The full Java API is included in the Java 2 Standard Edition download.
  • 29. © Rémy Courdier (Révisions M. Gangat) 29 1996-2003- Java Présentation - Version du cours 3.0 ANNEXE Terminologie JavaBeans JavaBeans architecture provides a way of designing reuseable software components that can be visually manipulated in builder tools. Beans can be simple like buttons, or more complex like a tool to access to databases. Java Foundation Classes (JFC) The Java Foundation Classes (JFC) are a set of GUI components and other services simplifying the development and deployment of desktop and Internet/Intranet applications. Java Native Interface (JNI) JNI is the native programming interface for Java that is part of the JDK. The JNI allows Java code to operate with applications and libraries written in other languages, such as C, C++, and assembly. Recommended only for advanced programmers.
  • 30. © Rémy Courdier (Révisions M. Gangat) 30 1996-2003- Java Présentation - Version du cours 3.0 ANNEXE Terminologie JavaServer Pages (JSP) Create dynamic web pages with JSP by embedding scriptlets (Java programming language code) with HL. JSP pages process forms, perform calculations, or do anything else that can be written with the Java programming language. Java 2 Platform, Enterprise Edition (J2EE) The J2EE platform provides a component-based approach to the design, development, assembly, and deployment of enterprise applications. The J2EE platform gives you a multitiered distributed application model, the ability to reuse components, a unified security model, and flexible transaction control.
  • 31. © Rémy Courdier (Révisions M. Gangat) 31 1996-2003- Java Présentation - Version du cours 3.0 ANNEXE Terminologie Java 2, Micro Edition (J2ME) Java 2 Micro Edition (J2ME) is targeted for the consumer and embedded market. The API specifications are based on Java 2 Standard Edition (J2SE), but modified to meet the unique requirements of each product. J2ME makes it possible to write Java applications for cell phones, smart cards, pagers, and other consumer devices. Java 2, Standard Edition (J2SE) This download includes the essential compiler, tools, runtimes, and APIs for writing, deploying, and running applets and applications in the Java programming language. Java Virtual Machine (JVM) The Java virtual machine executes instructions that a Java compiler generates. This run time environment, or JVM, is embedded in various products, such as web browsers, servers, and operating systems.
  • 32. © Rémy Courdier (Révisions M. Gangat) 32 1996-2003- Java Présentation - Version du cours 3.0 ANNEXE Terminologie JDBC JDBC is a Java API for executing SQL statements. By using the JDBC API, you can access almost any data source, from relational databases to spreadsheets to flat files. J2SE includes the JDBC API. JDK JDK is the short-cut name for the set of Java development tools, consisting of the API classes, a Java compiler, and the Java Virtual Machine interpreter, regardless of which version. The JDK is used to compile Java applications and applets. The most current version is the J2SE., the preferred term these days. If you use J2SE 1.2 and later to develop applications, you are using what's known as the Java 2 Platform. JINI The Jini network technology enables any service--from enterprise systems to kitchen appliances--to network smoothly and simply. The Jini architecture lets each service (device or software) tell others how to talk to it, without any administrator settings.
  • 33. © Rémy Courdier (Révisions M. Gangat) 33 1996-2003- Java Présentation - Version du cours 3.0 ANNEXE Terminologie Project Swing The javax.swing package of classes is used to create GUI components for applets and applications. Project Swing classes enable programmers to specify a different look and feel for each platform, or a uniform look across all platforms. Swing is the project code name for the lightweight GUI components in JFC. RMI Remote Method Invocation (RMI) lets Java applications communicate across a network. The communicating applications can be running on different computers on opposite sides of the planet. This higher-level and method-based approach to network communications allows access to a remote object as easily as a local object. Servlets A servlet is an extension to a server that enhances the server's functionality. Servlets are most commonly used to process forms, handle redirects or authenticate user names and passwords, and create dynamic content.