1 - Vue générale 2 - Mon premier programme 3 - Types de Programme 1 2 c est quoi? Technologie développée par SUN Microsystems lancée en 1995 Dans un des premiers papiers* sur le langage JAVA, SUN le décrit ainsi : 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 ( Virtual Machine) des APIs (Application Programming Interfaces) «: a simple, object-oriented, distributed, robust, secure, architecture neutral, portable, highperformance, multithreaded, and dynamic language» * White Paper :The Language Environment - James Gosling, Henry McGilton - May 1996 http://java.sun.com/docs/white/langenv/ 3 4 Principales caractéristiques simple et orienté objet portable (indépendant d une architecture ou d un OS) robuste et sécurisé dynamique et multithreaded : Principe de fonctionnement 5 6 Janvier 2012 1
: Principe de fonctionnement public class HelloWorld{ System.out.println(""); Compilation : javac javac Fichier Exécution (JVM) : java HelloWorld java 7 Un langage compilé / interprété Compilation d'un programme JAVA : génération de byte-code System.out.println(""); Code source javac Le byte-code est : proche d'un langage machine indépendant de la plateforme d'exécution (matériel + OS) 0110001 0010100 1100001 1110110 0100...... byte-code 8 La machine virtuelle Exécution d'un programme compilé Le byte-code assure la portabilité des programmes : Langage d'une Machine Virtuelle A l'exécution, un interpréteur simule cette machine virtuelle javac java VM 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.java source.class byte-code VM VM Sun Sparc Solaris Linux 9.class 10 Performances Exécution d'un programme le code est compact, le chargement des classes nécessaires est sélectif et dynamique,... mais 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 versus C++ J.P.Lewis and Ulrich Neumann (http://www.idiom.com/%7ezilla/computer/javacbenchmark.html) 11 La plateforme 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 est entièrement logicielle et s'exécute au dessus des plateformes matérielles API (Application Programming Interface) : Bibliothèques standards sur lesquelles le programmeur peut s'appuyer pour écrire son code. http://docs.oracle.com/javase/6/docs/api/ 12 Janvier 2012 2
La plateforme API API 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) API http://docs.oracle.com/javase/6/docs/api/ Programmer en nécessite une bonne connaissance de l'api. Attention à la courbe d'apprentissage («learning curve») qui peut être longue 13 14 Pour résumer JVM APIs Language Références «- tête la première» Kathy Sierra, Bert Bates,1re édition, O Reilly, septembre 2004 «Cahiers du Programmeur - - 1.4 et 5.0» Emmanuel Puybaret, Eyrolles, mars 2006 «Introduction à», 2e édition Pat Niemeyer et Jonathan Knudsen, O Reilly, déc. 2002 «Au coeur de 2 - Volume 1 : Notions fondamentales» Cay S. Horstmann, Gary Cornell, CampusPress, nov. 2003 «Thinking in», Bruce Eckel - Prentice-Hall ( www.bruceeckel.com, www.penserenjava.free) «JAVA in a nutshell, 5th Edition», David Flanagan - O'Reilly 2005 15 16 Références URLs http://java.sun.com Site officiel 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» 17 18 Janvier 2012 3
Prérequis Pour pouvoir écrire un programme il faut au moins : The SE Development Kit 6 (JDK 6) un éditeur de texte Remarque : Un plugin pour navigateur ne suffit pas : il ne contient que la JRE ( Runtime Environment) 19 Premier programme : 3 étapes 1. Codage Création du fichier source 2. Compilation Compilation du fichier source en 3. Exécution Utilisation de la JVM locale pour exécuter le fichier 20 1- Codage (exemple pas très objet ) 1 Tout code java doit être défini à l intérieur d une classe 1- Codage (exemple pas très objet ) Le point d'entrée pour l'exécution est la méthode main() System.out.println(""); le mot clé public définit la 4 visibilité de la classe fait la différence majuscule/minuscules HelloWorld helloworld 2 3 La description de la classe est effectuée à l'intérieur d'un bloc { Le code de la classe doit être enregistré dans un fichier de même nom (casse comprise) que la classe : 21 System.out.println(""); le mot clé static signifie que main est une méthode de classe Une application doit contenir au moins une méthode main 22 1- Codage (exemple pas très objet ) System.out.println(""); Utilisation de la classe System inclue dans l API standard pour l affichage. Le code 2. Compilation Compilation du fichier source en Dans un terminal Dans /home/jules/poo/, utilisation du programme javac («java compiler») : jules@turing:~/poo$ ls jules@turing:~/poo$ javac jules@turing:~/poo$ ls jules@turing:~/poo$ 23 24 Janvier 2012 4
3. Exécution Exécution de 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 : jules@turing:~/poo$ java HelloWorld jules@turing:~/poo$ Résumé La technologie : 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. 25 26 2 types de programmes Les Applications indépendantes Programmes autonomes (stand-alone) Les Applets Programmes exécutées dans l environnement d un navigateur Web et chargés au travers de pages HTML Seuls diffèrent les contextes d'invocation et d exécution Les droits des applets et des applications ne sont pas les mêmes 27 28 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) Tableau de chaînes de caractères (équivalent à argc, argv du C) 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 Exécute le code défini dans la méthode main contenue dans le fichier applivisage1.class 30 Janvier 2012 5
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 (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 : Applet : Principe de fonctionnement init(), start(), stop(), paint(), destroy() 31 32 1ère séance de TP Utilisation depuis ligne de commande des outils de base pour le développement d'applications Compilation : javac Exécution : java (applications) appletviewer (applets) Documentation javadoc Archivage jar 1ère séance de TP Pourquoi ne pas utiliser tout de suite un environnement de développement intégré? (ou IDE pour Integrated Development Environment) Être capable de travailler avec quelque soit l'environnement Comprendre des mécanismes parfois masqués par des environnements intégrés (ex. CLASSPATH) Open-source et/ou freeware 33 34 Janvier 2012 6