Outils et langages de développement géo-informatique (GMT-4101) Cadres de développement logiciel en géomatique (GMT-7020) Capsule 01 Introduction, historique et premier programme en langage Java Thierry Badard & Frédéric Hubert Université Laval, Dép. des sciences géomatiques Québec, Canada {Thierry.Badard; Frederic.Hubert}@scg.ulaval.ca Semaine 03
Plan du cours (1/2) Introduction Différents langages de programmation Compilé versus interprété Le cas Java Java c est quoi? Un petit historique Les différentes moutures de Java Les outils liés à Java Bibliographie Ouvrages, Documentation, Tutoriels, cours et notes en ligne
Plan du cours (2/2) Structure d un programme Java 1er programme : le programme «Bonjour» Conventions de nommage Compilation et exécution Les commentaires Arguments d un programme Les mots réservés du langage Conclusion/Synthèse
Introduction au langage Java
Différents langages de programmation (1/2) En informatique, il existe différents langages de programmation : Assembleur Cobol Fortran Pascal C Basic Perl Php HTML Javascript ADA Lisp Prolog C++ Smalltalk C# Java etc.
Différents langages de programmation (2/2) À quoi servent ils? Pourquoi autant de langages? Estce qu il existe des différences entre ces langages? Certains sont dédiés (fonctionnalités spécifiques) à des types d application, d autres plus généralistes. Certains sont procéduraux, d autres orientés-objet. Certains sont compilés, d autres interprétés. Dans tous les cas, il s agit de pouvoir exprimer dans un langage compréhensible par l humain (code source) des ordres que la machine doit exécuter, celle-ci ne comprenant que des suites de 0 et de 1 (langage machine ou code binaire).
Compilés vs. interprétés Compilation (1/2) La compilation est effectuée en 2 grandes étapes : Assemblage Édition des liens Elle poursuit plusieurs objectifs : Vérifier la correction lexicale, syntaxique des codes sources. Vérifier «le plus possible» la sémantique : ex. les types de données manipulés. Produire du code dans un langage plus «simple» pour la machine, i.e. plus proche de ce qu elle «comprend» (le langage machine ou binaire). Produire des «briques» de code assemblables. Exemples de langages compilés: C, C++,...
Compilés vs. interprétés Compilation (2/2) Code source Code source Code source Analyse des sources et vérifications puis traduction en langage machine (texte) Code objet (binaire) (texte) (1) Assemblage Code objet (binaire) (texte) Code objet (binaire) Résolution des références et fabrication de l exécutable (2) Edition des liens Programme exécutable (binaire)
Compilés vs. interprétés Interprétation (1/2) Dans le cas de l interprétation, le code source : est analysé/vérifié par l interpréteur (syntaxe,...), puis traduit à la volée en langage machine, et enfin exécuté. Nécessite de disposer de l interpréteur sur sa machine pour exécuter le programme. Exemple de langages interprétés : Php, Perl, HTML, Javascript,...
Compilés vs. interprétés Interprétation (2/2) Code source («script» texte) Analyse et vérification des sources, puis traduction en langage machine et exécution Interpréteur Instructions en langage machine (binaire)
Compilés vs. interprétés Comparatif Avantages et inconvénients : langage compilé Rapidité d exécution du programme (car traduit en langage machine). Par contre, obligation de recompiler si on change d environnement (type de processeur, système d exploitation - OS -). Le code n est donc pas portable. langage interprété Nécessite de disposer de l interpréteur sur sa machine pour exécuter le programme. Donc moins rapide («en théorie») et consomme de la mémoire supplémentaire. Portable sur différentes machines et OS. Impose de fournir les sources pour pouvoir exécuter le programme.
Le cas du langage de programmation Java Java est un langage compilé et interprété! Code source Java (texte) Compilateur Java Code objet Java (BYTECODE) Le code de l objet est vérifié et chargé dans la machine virtuelle Java (interpréteur) Le programme est exécuté par l interpréteur Machine virtuelle Java (JVM) Interpréteur Java L interpréteur gère toutes les communications avec le système d exploitation de la machine réelle Système d exploitation de l ordinateur
Avantages / Inconvénients de la JVM Portable Un code source compilé sur un PC sous Windows s exécutera sans modifications sur une station SUN sous Solaris ou un PC sous Linux ou encore un Mac sous MacOS, etc. Pas nécessaire de fournir les sources, juste le BYTECODE pour exécuter le programme sur une machine cliente. JVM disponible sous de nombreux systèmes d exploitation (OS) et architectures matérielles. Source : http://fr.wikipedia.org/wiki/machine_virtuelle_java La JVM (Java Virtual Machine) est continuellement optimisée. Exécution de plus en plus rapide (maintenant proche de celle d un compilé). Par contre, gourmand en mémoire.
Java, c est quoi? (1/2) Un langage spécifié par SUN Microsystems Propriétaire, puis spécifications publiques Maintenant, ~ standard Un langage de programmation orienté-objet On étudiera les fonctionnalités objets de Java plus tard dans ce cours! Une architecture de Virtual Machine Un ensemble de bibliothèques variées (API - Application Programming Interface) Un ensemble d outils (le JDK, Java Development Kit) Il existe différents JDK (SUN Microsystems, IBM, etc.)
Java, c est quoi? (2/2) Fausses rumeurs concernant Java: Java n'a rien de commun avec HTML. Java n'est pas un langage de script (type Perl ou TCL). Java!= JavaScript (c'est un langage généraliste, type C++). Java!= C++ (c'est un langage purement objet, de plus haut niveau, plus proche de SmallTalk). Java ne sert pas seulement à faire des applets (petites applications tournant dans les navigateurs web).
Les caractéristiques de Java (1/2) Orienté objet Compilé et interprété Portable Génération de BYTECODE + JVM sur de nombreux OS Taille des types primitifs indépendants de l OS Support de l Unicode Simple Sémantique précise, proche de C Concepts simples (plus simples que C++) Robuste Allocation de mémoire derrière la scène (garbage collector ou ramasse miettes) Mécanisme d exception (interception des erreurs possibles), compilateur contraignant
Les caractéristiques de Java (2/2) Sécurisé Prise en charge dans l interpréteur Code certifié par une clé Capacités de cryptage embarquées Indispensable pour le code mobile Multi-threads Possibilité d exécuter des processus concurrents Intégrés au langage et aux API Meilleures performances Distribué API réseau fournie en standard Applet/Servlet Possibilité d exécuter des traitements distants (autres machines)
Petit historique (1/2) 1990 Internet peu connu, World Wide Web inexistant boom des PC (puissance) 1991 Projet OAK de SUN Microsystems (langage pour la communication des appareils électroniques de poche et domotique) 1993 Mars : le NCSA lance MOSAIC (1er navigateur Internet) été : OAK change d orientation et s adapte à Internet 1995 Mai : annonce officielle de la naissance de Java (issu de OAK) Netscape prend une licence Sept. 95 : sortie du JDK 1.0 b1 (version beta) Déc. 95 : Microsoft se dit intéressé
Petit historique (2/2) 1996 Janvier : sortie du JDK 1.0.1 (1ère version stable) été : création du Java Study Group ISO/IEC JTC 1/SC22 sorties de Netscape 2 et MS Explorer 3 (intégrant Java pour l animation de pages web) 1997 Février : Sortie du JDK 1.1 Sortie du JavaOS (un système d exploitation basé sur Java) 1998 Sortie de la Java 2 Platform (JDK 1.2) 2002 Sortie d une version majeure de Java 2, le JDK 1.4.1 2005 Nouvelle évolution importante : Java 5 (JDK 1.5) Décembre 2006 Sortie de la version actuelle : Java 6!
Quelques statistiques Plus de 6,5 millions de développeurs de logiciels utilisent le langage Java. Java équipe plus de 4,5 milliards de périphériques, notamment : plus de 800 millions de PC 2,1 milliards de téléphones portables et autres périphériques de poche (source : Ovum) 3,5 milliards de cartes à puce Des décodeurs, des imprimantes, des webcams, des jeux, des systèmes de navigation automobile, des terminaux de loterie, des appareils médicaux, des bornes de paiement de parking, etc. Source : http://www.java.com/fr/about/
Les différentes moutures de Java (1/2) Java ME Java SE Java EE Source : http://www.javaman.com.br/apres/files/javaeditions.pdf
Les différentes moutures de Java (2/2) Source : http://www.javaman.com.br/apres/files/javaeditions.pdf
J2EE Permettre le déploiement des applis Source : http://www.javaman.com.br/apres/files/javaeditions.pdf
Les outils liés à Java Environnements de développement : Sun JDK (compilateur, interpréteur, appletviewer,...) java-mode emacs IDE : Visual Age, Café, CodeWarrior, Java Studio Creator (SUN), JBuilder (Borland), Visual J++ (MS), Eclipse,... Navigateurs : Sun HotJava Netscape Communicator Internet Explorer Mozilla Firefox Apple Safari, etc.
Les outils 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
Bibliographie Ouvrages: D.Flannagan, Java in a Nutshell, O'Reilly. Bruce Eckel, "Thinking in Java ", http://www.mindview.net/books Ivor Horton, Beginning Java 2, JDK 5 Edition, Wrox Press Deitel & Deitel, "Java How to Program". W. Clay Richardson et al., Professional Java, JDK 6 Edition, Wrox Press Documentation: SUN: http://java.sun.com Tutoriels, cours, notes complémentaires en ligne: SUN : http://java.sun.com/developer/onlinetraining IMAG : http://membres-liglab.imag.fr/donsez/cours/#java CNAM : http://cedric.cnam.fr/~farinone/java/index.html Developpez.com : http://java.developpez.com/cours/ Penser en Java : http://penserenjava.free.fr/
1er programme : le programme Bonjour import java.lang.*; /* Programme Bonjour. */ public class Bonjour { static String mot = "bonjour"; // Méthode retournant mot public static String getmot() { return mot; } Importation de bibliothèques (packages) Commentaire Début du programme Instanciation d une variable Commentaire Développement d une méthode (fonction) } public static void main(string args[]) { System.out.println(getMot()); } Méthode principale d exécution Fin du programme Ce programme affiche simplement sur la sortie standard le contenu de la variable «mot», i.e. : bonjour
Conventions de nommage import java.lang.*; /* Programme Bonjour. */ public class Bonjour { static String mot = "bonjour"; Le fichier DOIT être nommé : Bonjour.java } // Méthode retournant mot public static String getmot() { return mot; } public static void main(string args[]) { System.out.println(getMot()); } Sous peine de ne pas pouvoir être compilé! De façon générale, un programme Java est nommé: <Nom_classe>.java Un nom de programme DOIT TOUJOURS commencer par UNE LETTRE. Il peut contenir des chiffres et NE DOIT PAS inclure des symboles comme + ou.
Compilation et exécution Écriture du code de l application dans un éditeur de texte (ex. Notepad ou XEmacs) Enregistrement du code (<Nom_classe>.java) Compilation du code : javac <Nom_classe>.java Un fichier <Nom_classe>.class est alors créé sur le disque. C est le bytecode Java. Exemple : javac Bonjour.java ( création de Bonjour.class) Exécution (interprétation) du programme: java <Nom_classe> Exemple : java Bonjour (Pas d extension.class)
Les commentaires Ils servent à décrire un programme, un bloc, une variable Très utiles quand on reprend du code après une longue période ou pour d autres programmeurs (travail en équipe) pour comprendre plus vite ce que fait le code. 3 types de commentaire : // Pour commenter une ligne /* */ Pour commenter un ensemble de lignes /** */ Pour générer des commentaires javadoc (HTML) Exemples : // Ceci est un exemple de commentaire sur 1 ligne /* Les commentaires utilisés ici peuvent être placé n importe où dans le code de java. Attention : Tout code inclus ne pourra être pris en compte. */
Arguments de lancement... } public static void main(string args[]) { System.out.println(getMot()); } La fonction d exécution «main» d un programme dispose d un argument particulier: args[] args[] représente les paramètres entrés après le nom du programme à l exécution. Exemple: java Bonjour Raoul Chmouldu args[0] = Raoul (1er argument) args[1] = Chmouldu (2ème argument), etc. (args[n], le nième). Le nombre d arguments saisis est donné par : args.length
Les mots réservés du langage Tous les mots suivants sont des instructions Java et ne peuvent pas être utilisés pour nommer un élément d un programme (nom du programme, méthode, variable, etc.) :
Conclusion/Synthèse Dans cette capsule de cours, on a vu : Différents langages (compilés / interprétés). Java est compilé et interprété. Java est portable, robuste, généraliste et ouvert vers Internet. C est un langage structuré et rigoureux. Le nom du fichier doit être <nom_classe>.java Compilation (javac <nom_classe>.java) et exécution (java <nom_classe>). Les commentaires dans vos codes sont importants! args[] permet de récupérer les arguments de la ligne de commande.