HotJava Mai 95 : Netscape prend la licence Sept. 95 : JDK 1.0 b1 (200 Classes) Déc. 95 : Microsoft se dit intéressé Début des API spécialisées (multimédia, commerce) et JavaComputing (JavaOS…)"> HotJava Mai 95 : Netscape prend la licence Sept. 95 : JDK 1.0 b1 (200 Classes) Déc. 95 : Microsoft se dit intéressé Début des API spécialisées (multimédia, commerce) et JavaComputing (JavaOS…)">

La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Présentation de Java Olivier de Pertat. Qu'est-ce que Java ? Un langage de programmation orienté objets Une architecture de Virtual Machine Un ensemble.

Présentations similaires


Présentation au sujet: "Présentation de Java Olivier de Pertat. Qu'est-ce que Java ? Un langage de programmation orienté objets Une architecture de Virtual Machine Un ensemble."— Transcription de la présentation:

1 Présentation de Java Olivier de Pertat

2 Qu'est-ce que Java ? Un langage de programmation orienté objets Une architecture de Virtual Machine Un ensemble d'API variées Un ensemble d'outils : le Java Runtime Enviromnent le Java SDK Standard Edition le Java SDK Entreprise Edition

3 Historique 1991 : Sun "Green Projet" (informatisation de l’électronique grand public) 1993 : projet Oak (langage embarqué indépendant CPU) 1994 : recentrage sur Internet, réalisation d’un browser en Oak 1995 : Mai 95 : Java (23 mai). WebRunner -> HotJava Mai 95 : Netscape prend la licence Sept. 95 : JDK 1.0 b1 (200 Classes) Déc. 95 : Microsoft se dit intéressé Début des API spécialisées (multimédia, commerce) et JavaComputing (JavaOS…)

4 Historique 1996 : Java 1.0 - 200 Classes Janv. 96 : JDK 1.0.1 Eté 96 : Java Study Group ISO/IEC JTC 1/SC22 Fin 96 : RMI, JDBC, JavaBeans,... 1997 : JDK 1.1 – nouveaux services quelques modifications du langage. 1998 : Plateforme Java 2 - JDK 1.2 - 1250 classes – consolidation vers maturité 2000 : Plateforme Java 2 – version 1.3 : amélioration des performances, incorporation d’extensions dans le noyau 2002 : Plateforme Java 2 – version 1.4.1

5 Principe de compilation C

6 Principe de compilation Java

7 Principe : Code Source $ cat Hello.java public class Hello { public static void main(String [] args) { System.out.println("Hello World !"); }

8 Principe : Byte Code $ od -x Hello.class 0000000 feca beba 0000 2e00 1d00 000a 0006 090f 0000020 1000 1100 0008 0a12 1300 1400 0007 0715 0000040 1600 0001 3c06 6e69 7469 013e 0300 2928 0000060 0156 0400 6f43 6564 0001 4c0f 6e69 4e65 0000100 6d75 6562 5472 6261 656c 0001 6d04 6961 0000120 016e 1600 5b28 6a4c 7661 2f61 616c 676e 0000140 532f 7274 6e69 3b67 5629 0001 530a 756f 0000160 6372 4665 6c69 0165 0a00 6548 6c6c 2e6f 0000200 616a 6176 000c 0007 0708 1700 000c 0018 0000220 0119 0c00 6548 6c6c 5720 726f 646c 2120 0000240 0007 0c1a 1b00 1c00 0001 4805 [………EOF…]

9 Les points faibles de Java Les JVM sont beaucoup plus lentes que du code C compilé ; Java est très gourmand en mémoire ; Certaines constructions du langage sont décevantes ; Certaines API sont décevantes ; Java est extrêmement vaste ; Java est tributaire de son évolution rapide.

10 Les caractéristiques du langage Java Orienté objets Interprété Portable Simple Robuste Sécurisé Multi-threads Distribué

11 Un langage orienté objets Tout est classe (pas de fonctions) sauf les types primitifs (int, float, double,...) et les tableaux Toutes les classes dérivent de java.lang.Object Il respecte : l’encapsulation, communication par message, polymorphisme et hérite Les objets se manipulent via des références Une API objet standard est fournie La syntaxe est proche de celle de C

12 Java est portable Le compilateur Java génère du byte code. La Java Virtual Machine (JVM) est présente sur Unix, Win32, Mac, OS/2, Netscape, IE,... Le langage a une sémantique très précise. La taille des types primitifs est indépendante de la plate-forme. Java supporte un code source écrit en Unicode. Java est accompagné d'une librairie standard.

13 Java est robuste A l’origine, c'est un langage pour les applications embarquées. Gestion de la mémoire par un garbage collector. Pas d’accès direct à la mémoire. Mécanisme d'exception. Accès à une référence null ® exception. compilateur contraignant (erreur si exception non gérée, si utilisation d’une variable non affectée,...). Tableaux = objets (taille connue, débordement ® exception). Seules les conversions sûres sont automatiques. Contrôle des cast à l'execution.

14 Java est sécurisé Indispensable avec le code mobile. Pris en charge dans l'interpréteur. Trois couches de sécurité : Verifier : vérifie le byte code. Class Loader : responsable du chargement des classes. Security Manager : accès aux ressources. Code certifié par une clé.

15 Java est multi-thread Intégrés au langage et aux API : synchronized garbage collector dans un thread de basse priorité java.lang.Thread, java.lang.Runnable Accès concurrents à objet gérés par un monitor. Implémentation propre à chaque JVM. Difficultés pour la mise au point et le portage.

16 Java est distribué API réseau (java.net.Socket, java.net.URL,...). Chargement / génération de code dynamique. Applet. Servlet. Protocole / Content handler. Remote Method Invocation. JavaIDL (CORBA).

17 Les performances Actuellement le byte code est interprété. Plusieurs types de génération de code machine : Compilation en code machine à la volée (JIT, HotSpot) ; Machine Virtuelle spécifiques aux Application Servers commerciaux ; Conversion statique en C (j2c, Tabo,...) ; Conversion statique en code natif.

18 Les différences avec C++ Pas de structures ni d’unions Pas de types énumérés Pas de typedef Pas de préprocesseur Pas de variables ni de fonctions en dehors des classes Pas de fonctions à nombre variable d’arguments Pas d'héritage multiple de classes Pas de types paramétriques (template) Pas de surcharge d’opérateurs Pas de passage par copie pour les objets Pas de pointeurs, seulement des références

19 Les fausses rumeurs sur Java Java n'a rien de commun avec HTML Java n'est pas un langage de script (type Perl ou TCL) Le JavaScript n’est pas du Java ! Java est un langage généraliste type C++ Java != C++ (c'est un langage purement objet, de plus haut niveau, plus proche de SmallTalk)

20 Les outils Environnements de développement : Java 2 standard edition SDK 1.4.x Editeur de texte : VIM, java-mode emacs, Ultra Edit, JEdit Environnements de compilation : ANT, make Outils de test : JUnit IDE : Forte, JBuilder, Visual Age, WebGain, CodeWarrior Atelier UML : Together, Rational Rose Décompileur de byte-code : jad Browsers : Sun HotJava Netscape Navigator 4 et 6 Internet Explorer 4 et 5 (plus pour la prochaine version) Java-Plug-in (tous les browsers)

21 Java 2 Standard Edition SDK 1.4 javac : compilateur de sources java java : interpréteur de byte code (JVM) appletviewer : interpréteur d'applet jar : fabrique les fichier distribuables (bin & lib) jarsigner : signatures numérique des fichiers JAR 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 keytool : gestion des clefs et des certificats orbd :ORB Corba rmic : compilateur de stubs RMI rmiregistry : "Object Request Broker" RMI servertool : Outil d’administration du bus CORBA

22 Les options de la JVM C:\>java Usage: java [-options] class [args...] (to execute a class) or java -jar [-options] jarfile [args...] (to execute a jar file) where options include: -client to select the "client" VM -server to select the "server" VM -hotspot is a synonym for the "client" VM [deprecated] The default VM is client. -cp -classpath set search path for application classes and resources -D = set a system property -verbose[:class|gc|jni] enable verbose output -version print product version and exit -showversion print product version and continue -? -help print this help message -X print help on non-standard options -ea[:...|: ] -enableassertions[:...|: ] enable assertions -da[:...|: ] -disableassertions[:...|: ] disable assertions -esa | -enablesystemassertions enable system assertions -dsa | -disablesystemassertions disable system assertions C:\>java -X -Xmixed mixed mode execution (default) -Xint interpreted mode execution only -Xbootclasspath: set search path for bootstrap classes and resources -Xbootclasspath/a: append to end of bootstrap class path -Xbootclasspath/p: prepend in front of bootstrap class path -Xnoclassgc disable class garbage collection -Xincgc enable incremental garbage collection -Xloggc: log GC status to a file with time stamps -Xbatch disable background compilation -Xms set initial Java heap size -Xmx set maximum Java heap size -Xss set java thread stack size -Xprof output cpu profiling data -Xrunhprof[:help]|[: =,...] perform JVMPI heap, cpu, or monitor profiling -Xdebug enable remote debugging -Xfuture enable strictest checks, anticipating future default -Xrs reduce use of OS signals by Java/VM (see documentation) -Xcheck:jni perform additional checks for JNI functions

23 Intégration Windows

24 Intégration Internet Explorer

25 Exécutables Java Applications autonomes classiques (Stand Alone applications) Applications sont directement exécutées depuis le système hôte. Possèdent une méthode main Signature : public static void main(String [] args) Composants : Programme hébergé par une autre application. Respecte un protocole défini au préalable (Interfaces). Applets : application Java s’éxecutant au sein d’une page WEB dans un navigateur Internet (Internet Explorer, Mozilla, Netscape … ) ; Servlets : application Java traitant des requêtes client dans un serveur d’application. But généraliste, mais le plus traite des requêtes HTTP. EJB (Entreprise Java Bean) : Application Java Distribuée reflétant l’état d’une session utilisateur (Session Bean), d’une donnée (Entity Bean) ou d’un message (Message Driven Bean). Composant géré par uniquement par des Serveurs d’application Java. Peuvent être transactionnels

26 Application Autonome Programme Java : Exemple : class HelloWorld { public static void main(String args) { System.out.println("Hello World !"); } Invocation classique : $ java -classpath. HelloWorld Hello World !

27 Exécutables Java (2/2) Applet : exécution dans un Navigateur Internet public class HelloWorldApplet extends Applet { public void paint(Graphics g) { g.drawString("Hello World !", 50, 20); } Servlet : exécution dans un serveur d’application (Web Container) public class HelloWorldExample extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { out.println(" Hello world ! "); }

28 JAR Invocation depuis une Archive JAR : $ cat MANIFEST.MF Manifest-Version: 1.0 Main-Class: HelloWorld $ jar cfm MyHelloPack.jar MANIFEST.MF HelloWorld.class $ jar –i MyHelloPack.jar $ java -jar MyHelloPack.jar Hello World !

29 Rendre exécutable les JAR FICHIER JARFile.reg : Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\.JAR] @="JARFile" [HKEY_CLASSES_ROOT\JARFile] "EditFlags"=dword:00000000 "BrowserFlags"=dword:00000008 @="Fichier Java ARchive (exécutables)" [HKEY_CLASSES_ROOT\JARFile\DefaultIcon] @="C:\\Program Files\\Java\\j2re1.4.1\\bin\\jinstall.exe,0" [HKEY_CLASSES_ROOT\JARFile\shell] @="open" [HKEY_CLASSES_ROOT\JARFile\shell\open] [HKEY_CLASSES_ROOT\JARFile\shell\open\command] @="\"C:\\WINDOWS\\System32\\javaw.exe\" -jar \"%1\""


Télécharger ppt "Présentation de Java Olivier de Pertat. Qu'est-ce que Java ? Un langage de programmation orienté objets Une architecture de Virtual Machine Un ensemble."

Présentations similaires


Annonces Google