algorithmique et programmation orientée objet -...

6
31/01/2012 Janvier 2012 1 1 - Vue générale 2 - Mon premier programme 3 - Types de Programme Java 1 2 Java c’est quoi ? Technologie développée par SUN Microsystems™ lancée en 1995 « Java » c’est à la fois : Un langage de programmation Une plate-forme = environnement logiciel dans lequel les programmes java s'exécutent : une machine virtuelle : la JVM (Java Virtual Machine) des APIs (Application Programming Interfaces) 3 Java Dans un des premiers papiers* sur le langage JAVA, SUN le décrit ainsi : « Java : a simple, object-oriented, distributed, robust, secure, architecture neutral, portable, high- performance, multithreaded, and dynamic language » 4 * White Paper :The Java Language Environment - James Gosling, Henry McGilton - May 1996 http://java.sun.com/docs/white/langenv/ Java Principales caractéristiques “simple” et orienté objet portable (indépendant d’une architecture ou d’un OS) robuste et sécurisé dynamique et multithreaded 5 Java : Principe de fonctionnement 6

Upload: duongtruc

Post on 12-Sep-2018

231 views

Category:

Documents


0 download

TRANSCRIPT

31/01/2012

Janvier 2012 1

1 - Vue générale 2 - Mon premier programme 3 - Types de Programme Java

1 2

Java c’est quoi ? Technologie développée par SUN Microsystems™ lancée

en 1995

« Java » c’est à la fois :

Un langage de programmation

Une plate-forme = environnement logiciel dans lequel les programmes java s'exécutent :

une machine virtuelle : la JVM (Java Virtual Machine)

des APIs (Application Programming Interfaces)

3

Java Dans un des premiers papiers* sur le langage

JAVA, SUN le décrit ainsi :

« Java : a simple, object-oriented, distributed, robust, secure, architecture neutral, portable, high-performance, multithreaded, and dynamic language »

4

* White Paper :The Java Language Environment - James Gosling, Henry McGilton - May 1996 http://java.sun.com/docs/white/langenv/

Java Principales caractéristiques

“simple” et orienté objet

portable (indépendant d’une architecture ou d’un OS)

robuste et sécurisé

dynamique et multithreaded

5

Java : Principe de fonctionnement

6

31/01/2012

Janvier 2012 2

Java : Principe de fonctionnement

7

Compilation : javac HelloWorld.java

Exécution (JVM) : java HelloWorld

HelloWorld.java HelloWorld.class

Hello World!

Hello World!

Hello World!

javac java

public class HelloWorld{

public static void main(String[] args) {

int i = 0;

while (i < 3) {

System.out.println("Hello World!");

i++;

}

}

}

Fichier HelloWorld.java

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

Le byte-code est : proche d'un langage machine

indépendant de la plateforme d'exécution (matériel + OS)

8

public class HelloWorld {

public static void main(String[] args) {

int i = 0;

while (i < 3) {

System.out.println("Hello World!");

i++;

}

}

}

0110001

0010100

1100001

1110110

0100...

...

HelloWorld.java

Code source

javac

HelloWorld.class

byte-code

La machine virtuelle Java Exécution d'un programme Java compilé Le byte-code assure la portabilité des programmes Java :

Langage d'une Machine Virtuelle

A l'exécution, un interpréteur simule cette machine virtuelle

9

javac

Java VM

Java VM

Java VM

Sun Sparc Solaris Linux

.java

source

.class

byte-code

java

La machine virtuelle java Principes de fonctionnement Chargement

chargement sélectif et dynamique des classes

vérification statique du code (tentatives de modification de la machine 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

10

.class

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 semi-interprété (pas exécuté directement

sur la machine : JVM)

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

Performance of Java versus C++ J.P.Lewis and Ulrich Neumann (http://www.idiom.com/%7Ezilla/Computer/javaCbenchmark.html)

11

La plateforme Java Plateforme

= 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-jacent (MS Windows + Intel, Linux + Intel, Solaris + Sparc, Mac Os X + Power PC)

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

12

API (Application Programming Interface) Java : Bibliothèques Java standards sur lesquelles le programmeur peut s'appuyer pour écrire son code. http://docs.oracle.com/javase/6/docs/api/

31/01/2012

Janvier 2012 3

La plateforme Java

API Java API Java http://docs.oracle.com/javase/6/docs/api/

(très) vaste collection de composants logiciels (classes et interfaces) fournissant de nombreuses fonctionnalités (> 6000 classes)

organisée en bibliothèques (packages)

offre de nombreux services de manière standard (indépendamment de la plateforme matérielle)

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

Attention à la courbe d'apprentissage (« learning curve ») qui peut être longue…

13

API http://docs.oracle.com/javase/6/docs/api/

14

Pour résumer

Java Language

APIs

JVM

15

Références « Java - tête la première » Kathy Sierra, Bert Bates,1re édition, O’Reilly, septembre 2004

«Cahiers du Programmeur - Java - 1 .4 et 5.0 » Emmanuel Puybaret, Eyrolles, mars 2006

« Introduction à Java », 2e édition Pat Niemeyer et Jonathan Knudsen, O’Reilly, déc. 2002

« 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

16

Références 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 » 17 18

31/01/2012

Janvier 2012 4

Prérequis Pour pouvoir écrire un programme Java il faut au

moins :

The Java SE Development Kit 6 (JDK 6)

un éditeur de texte

Remarque : Un plugin Java pour navigateur ne suffit pas : il ne contient que la JRE (Java Runtime Environment)

19

Premier programme : 3 étapes 1. Codage

Création du fichier source HelloWorld.java

2. Compilation

Compilation du fichier source HelloWorld.java en HelloWorld.class

3. Exécution

Utilisation de la JVM locale pour exécuter le fichier HelloWorld.class

20

public class HelloWorld {

public static void main(String[] args) {

int i = 0;

while (i < 3) {

System.out.println("Hello World!");

i++;

}

}

}

1- Codage (exemple pas très objet…)

21

1 Tout code java doit être défini à l’intérieur d’une classe

La description de la classe est effectuée à l'intérieur d'un bloc { }

2

le mot clé public définit la visibilité de la classe

Le code de la classe doit être enregistré dans un fichier de même nom (casse comprise) que la classe : HelloWorld.java

3

4 Java fait la différence majuscule/minuscules HelloWorld ≠helloworld

public class HelloWorld {

public static void main(String[] args) {

int i = 0;

while (i < 3) {

System.out.println("Hello World!");

i++;

}

}

}

1- Codage (exemple pas très objet…)

22

Le point d'entrée pour l'exécution est la méthode main()

le mot clé static signifie que main est une méthode de classe

Une application Java doit contenir au moins une méthode main

public class HelloWorld {

public static void main(String[] args) {

int i = 0;

while (i < 3) {

System.out.println("Hello World!");

i++;

}

}

}

1- Codage (exemple pas très objet…)

23

Utilisation de la classe System

inclue dans l’API standard pour l’affichage.

Le code

2. Compilation Compilation du fichier source en HelloWorld.class

Dans un terminal

Dans /home/jules/POO/, utilisation du programme javac (« java compiler ») :

24

jules@turing:~/POO$ ls

HelloWorld.java

jules@turing:~/POO$ javac HelloWorld.java

jules@turing:~/POO$ ls

HelloWorld.class HelloWorld.java

jules@turing:~/POO$

31/01/2012

Janvier 2012 5

3. Exécution Exécution de HelloWorld.class dans la JVM

Dans /home/joe/, le programme java lance la JVM sur le fichier .class passé en paramètre

(sans l’extension .class)

Dans un terminal :

25

jules@turing:~/POO$ java HelloWorld

Hello World!

Hello World!

Hello World!

jules@turing:~/POO$

Résumé La technologie Java : un langage de programmation orienté objet

une machine virtuelle : JVM.

des APIs, notamment l’API standard

Programmer en java : Il faut au moins définir une classe.

La méthode main est le point d’entrée du programme.

Les programmes javac et java permette de compiler et exécuter.

26

27

Les Applications indépendantes Programmes autonomes (stand-alone)

Seuls diffèrent les contextes d'invocation et d’exécution Les droits des applets et des applications ne sont pas les mêmes

2 types de programmes Java

28

Les Applets Programmes exécutées dans

l’environnement d’un navigateur Web et chargés au travers de pages HTML

Application indépendante

L’application est définie par un ensemble de classes dont une jouera le rôle de classe principale

La compilation de la classe principale entraîne la compilation de toutes les classes utilisées javac ≃ make

Pour exécuter l'application on

indique à l'interpréteur java le nom de la classe principale java charge les classes nécessaires

au fur et à mesure de l'exécution (sélectif et dynamique)

29

Application indépendante Chaque application doit posséder une classe principale

classe possédant une méthode de signature

public static void main(String[] args)

Cette méthode sert de point d’entrée pour l’exécution

l’exécution de l ’application démarre par l’interprétation de cette méthode

ex : java appliVisage1

30

Exécute le code défini dans la méthode main contenue dans le fichier appliVisage1.class

Tableau de chaînes de caractères (équivalent à argc, argv du C)

31/01/2012

Janvier 2012 6

Applet La classe principale ne possède pas de méthode main()

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

Son byte-code 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)) 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()

31

Applet : Principe de fonctionnement

32

1ère séance de TP Utilisation depuis ligne de commande des outils de

base pour le développement d'applications Java

Compilation : javac

Exécution : java (applications)

appletviewer (applets)

Documentation javadoc

Archivage jar

33

1ère séance de TP Pourquoi ne pas utiliser tout de suite un

environnement de développement intégré Java ?

(ou IDE pour Integrated Development Environment)

Ê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)

Open-source et/ou freeware

34