coursjava: lebasesdulangage java - .java enquelquesmots comparatif java etc++...

Download CoursJAVA: Lebasesdulangage Java - .Java enquelquesmots Comparatif Java etC++ Programmationorientéeobjets

Post on 12-Sep-2018

219 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

  • Cours JAVA :Le bases du langage Java.

    Version 3.02

    Julien Sopena1

    1julien.sopena@lip6.frquipe REGAL - INRIA RocquencourtLIP6 - Universit Pierre et Marie Curie

    Licence professionnelle DANT - 2015/2016

    J. Sopena (INRIA/UPMC) Le bases du langage Java. 1 / 35

  • Grandes lignes du cours

    Java en quelques motsComparatif Java et C++Programmation oriente objets.

    Conception par traitements.Conception par objets.

    J. Sopena (INRIA/UPMC) Le bases du langage Java. 2 / 35

  • Outline

    Java en quelques motsComparatif Java et C++Programmation oriente objets.

    J. Sopena (INRIA/UPMC) Le bases du langage Java. 3 / 35

  • Java cest quoi ?

    I Un langage : Orient objet fortement typ avec classesI Un environnement dexcution (JRE) : Une machine virtuelle

    et un ensemble de bibliothquesI Un environnement de dveloppement (JDK) : Un compilateur

    et un ensemble doutilsI Une mascotte : Duke

    J. Sopena (INRIA/UPMC) Le bases du langage Java. 4 / 35

  • Java cest qui ?La plate-forme et le langage Java sont issus dun projet deSun Microsystems datant de 1990.Gnralement, on attribut sa paternit a trois de ses ingnieurs :

    I James GoslingI Patrick NaughtonI Mike Sheridan

    Figure 1990 Barbecue chez James Gosling

    J. Sopena (INRIA/UPMC) Le bases du langage Java. 5 / 35

  • Java pourquoi ?

    Java est devenu aujourdhui lun des langages de programmationles plus utiliss.

    Il est incontournable dans plusieurs domaines :I Systmes dynamiques : Chargement dynamique de classesI Internet : Les Applets javaI Systmes communicants : RMI, Corba, EJB, etc.

    J. Sopena (INRIA/UPMC) Le bases du langage Java. 6 / 35

  • Java pour qui ?

    Pour tous : Le 13 novembre 2006, Sun annonce le passage deJava, cest--dire le JDK (JRE et outils dedveloppement) sous licence GPL.

    Pour vous : Cette UE sur Java servira de base lensemble desUE techniques du deuxime semestre.

    J. Sopena (INRIA/UPMC) Le bases du langage Java. 7 / 35

  • Lenvironnement actuel Java 2 Standard EditionJ2SE

    Loutil de base : le JDK (Java Development Kit) de SUN :I http://java.sun.com.I gratuit.I Dernire version : 1.6.I comprend de nombreux outils :

    I le compilateur.I le compilateur la vol "JIT".I le dbogueur.I le gnrateur de documentation.

    Des environnements de dveloppements gratuitsI NetBeans : http://www.netbeans.org/I Eclipse : http://www.eclipse.org/

    J. Sopena (INRIA/UPMC) Le bases du langage Java. 8 / 35

  • Java volue tout le temps

    Java nest pas un langage normalis et il continu dvoluer. Cettevolution se fait en ajoutant de nouvelle API, mais aussi enmodifiant la machine virtuelle.

    Lensemble de ces modifications est gr par le JCP (JavaCommunity Process ; http ://www.jcp.org/) dans lequel Suncontinue de tenir une place prpondrante.

    Il peut alors tre ncessaire didentifier une version prcise ducompilateur et/ou de la machine virtuelle : a nest pas simple.

    La numrotation des versions :

    1.0 1.1 1.2 1.3 1.4 5.0 Toutes ces versions : Java 2

    6.0

    J. Sopena (INRIA/UPMC) Le bases du langage Java. 9 / 35

  • Tout se complique

    Attention, avec larrive de la GPL tout se complique :

    J. Sopena (INRIA/UPMC) Le bases du langage Java. 10 / 35

  • Les versions de Java

    JDK 1.0 (1996 - 211 classes et interfaces)Version initiale.

    JDK 1.1 (1997 - 477 classes et interfaces)Ajoute : classes internes, JavaBeans, JDBC, JavaRemote Invocation (RMI).

    J2SE 1.2 (1998 - 1 524 classes et interfaces) PlaygroundAjoute : rflection, SWING, compilateur JIT (Just inTime), Java IDL pour Corba.

    J2SE 1.3 (2000 - 1 840 classes et interfaces) KestrelAjoute : HotSpot JVM, service de nomage (JNDI) etJavaSound.

    J. Sopena (INRIA/UPMC) Le bases du langage Java. 11 / 35

  • Les versions de Java (suite)

    J2SE 1.4 (2002 - 2 723 classes et interfaces) MerlinAjoute : mot-cl assert, expressions rationnelles, chanagedexception, parser XML et du moteur XSLT (JAXP),extensions de scurit JCE (Java Cryptography Extension)et Java Web Start.

    J2SE 5.0 (2004 - 3 270 classes et interfaces) TigerAjoute : syntaxe la foreach, enumerations (enum),classe Integer, autoboxing/unboxing

    Java SE 6 (2006 - 3 777 classes et interfaces) MustangAjoute : covariance (redfinition avec modification dutype de retour), @overhiding.

    Java SE 7 Nom de code DolphinAjoutera : des closures (en cours de spcifications).Ce sera la premire Version 100% open source.

    J. Sopena (INRIA/UPMC) Le bases du langage Java. 12 / 35

  • Outline

    Java en quelques motsComparatif Java et C++Programmation oriente objets.

    J. Sopena (INRIA/UPMC) Le bases du langage Java. 13 / 35

  • Java versus C++

    I Filiation historique :I 1983 (AT&T Bell) : C++I 1991 (Sun Microsystems) : Java

    I Java est trs proche du langage C++ (et donc du langage C).

    I Toutefois Java est plus simple que le langage C++, car lespoints "critiques" du langage C++ (ceux qui sont loriginedes principales erreurs) ont t supprims.

    I Cela comprend :I Les pointeursI La surcharge doprateursI Lhritage multiple

    J. Sopena (INRIA/UPMC) Le bases du langage Java. 14 / 35

  • Java versus C++ : concepts (2)De plus,

    - Tout est dynamique : les instances dune classe sontinstancies dynamiquement.

    - La libration de mmoire est transparente pour lutilisateur. Ilnest pas ncessaire de spcifier de mcanisme de destruction.La libration de lespace mmoire est prise en charge ungestionnaire appel garbage collector charg de dtecter lesobjets dtruire.

    NotesI gain de fiabilit (pas de dsallocation errone).I a un cot (perte en rapidit par rapport au C++).

    J. Sopena (INRIA/UPMC) Le bases du langage Java. 15 / 35

  • Java versus C++ : production du binaire

    Une fois acheve la production du logiciel, un choix doit tre faitentre fournir le source ou le binaire pour la machine du client.

    Gnralement, une entreprise souhaite protger le code source etdistribuer le code binaire.

    Le code binaire doit donc tre portable sur des architecturesdiffrentes (processeur, systme dexploitation, etc.).

    J. Sopena (INRIA/UPMC) Le bases du langage Java. 16 / 35

  • Java versus C++ : compilateur C++

    linstar du compilateur C, le compilateur C++ produit du codenatif, i.e., quil produit un excutable propre lenvironnement detravail ou le code source est compil.

    On doit donc crer les excutables pour chaque type darchitecturepotentielle des clients.

    J. Sopena (INRIA/UPMC) Le bases du langage Java. 17 / 35

  • Java versus C++ : chane de production du C

    source.c

    compilation : gcc source.c -o monProg

    monProg

    Execution : ./monProg

    J. Sopena (INRIA/UPMC) Le bases du langage Java. 18 / 35

  • Java versus C++ : compilateur JavaEn Java, le code source nest pas traduit directement dans lelangage de lordinateur.

    Il est dabord traduit dans un langage appel "bytecode", langagedune machine virtuelle (JVM Java Virtual Machine) dfinie parSun.

    PortabilitLe bytecode gnr par le compilateur ne dpend pas de larchi-tecture de la machine o a t compil le code source, cest--direque les bytecodes produits sur une machine pourront sexcuter(au travers dune machine virtuelle) sur des architectures diff-rentes.

    J. Sopena (INRIA/UPMC) Le bases du langage Java. 19 / 35

  • Excution du bytecode

    Le bytecode doit tre excut par une Machine Virtuelle Java.

    Cette JVM nexiste pas. Elle est simule par un programme qui :1. lit les instructions (en bytecode) du programme .class2. fait une passe de vrification (type oprande, taille de pile, flot

    donnes, variable bien initialis,...) pour sassurer quil ny aaucune action dangereuse.

    3. fait plusieurs passes doptimisation du code4. les traduit dans le langage natif du processeur de lordinateur5. lance leur excution

    J. Sopena (INRIA/UPMC) Le bases du langage Java. 20 / 35

  • Java versus C++ : chane de production du Java

    source.java

    Compilation : javac source.java

    source.class

    Machine virtuelle : java source.class

    J. Sopena (INRIA/UPMC) Le bases du langage Java. 21 / 35

  • Cot de la JVM sur les performances.

    Les vrifications effectues sur le bytecode et la compilation dubytecode vers le langage natif du processeur, ralentissentlexcution des classes Java.

    Mais les techniques de compilation la vole "Just In Time (JIT)"ou "Hotspot" rduisent ce problme : elles permettent de netraduire quune seule fois en code natif les instructions qui sont(souvent pour Hotspot) excutes.

    J. Sopena (INRIA/UPMC) Le bases du langage Java. 22 / 35

  • Java versus C++ : en rsum...Le langage Java est :

    I C-like : Syntaxe familire aux programmeurs de CI Orient objet : Tout est objet, sauf les types primitifs (entiers,

    flottants, boolens, ...)I Robuste : Typage fort, pas de pointeurs, etc.I Code intermdiaire : Le compilateur ne produit que du

    bytecode indpendant de larchitecture de la machine o a tcompil le code source

    Note

    Java perd (un peu) en efficacit par rapport C++// mais gagne(beaucoup) en portabilit.

    J. Sopena (INRIA/UPMC) Le bases du langage Java. 23 / 35

  • Outline

    Java en quelques motsComparatif Java et C++Programmation oriente objets.

    Conception par traitements.Conception par objets.

    J. Sopena (INRIA/UPMC) Le bases du langage Java. 24 / 35

  • Problmatique de la programmation

    Le schma simplifi dun systme informatique peut se rsumer parla formule :

    Systme informatique = Structures de donnes + Traitements

    Le cycle de vie dun systme peut tre dcompos en deux grandesphases :