Présentation de Java. Olivier de Pertat IT GROUP



Documents pareils
RN2-Programmation Orientée Objet - JAVA CH 1 Introduction à la POO et Java

Java Avancé. Le langage Java. Rémi Forax

Initiation à JAVA et à la programmation objet.

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

Vulgarisation Java EE Java EE, c est quoi?

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

JAVA. Introduction à la programmation objet avec java 1/4. Nadir BOUSSOUKAIA

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

TP1. Outils Java Eléments de correction

as Architecture des Systèmes d Information

Java - la plateforme

Java Licence Professionnelle CISII,

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Introduction à Java. Philippe Genoud.

Environnements de développement (intégrés)

Bases du langage. Historique Applications et applets Éléments de base du langage Classes et objets Les exceptions

Web Tier : déploiement de servlets

Derrière toi Une machine virtuelle!

Cours 1: Java et les objets

La technologie Java Card TM

Remote Method Invocation (RMI)

RMI le langage Java XII-1 JMF

Machines Virtuelles. et bazard autour. Rémi Forax

Traitement de données

Plan du cours. Historique du langage Nouveautés de Java 7

Java c est quoi? Java pourquoi?

Chapitre I Notions de base et outils de travail

Mise en œuvre des serveurs d application

Remote Method Invocation Les classes implémentant Serializable

Intergiciel - concepts de base

TP1 : Initiation à Java et Eclipse

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

Systeme d'exploitation

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Introduction aux Machines Virtuelles avec VMKit

Java et les bases de données

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

La JVM. La machine virtuelle Java. La JVM. La JVM

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

INITIATION AU LANGAGE JAVA

Programmeur Java 1.4 et 5.0

Programmation Orientée Objet

Java Licence professionnelle CISII,

Java - RMI Remote Method Invocation. Java - RMI

SGDN. Projet: JAVASEC

Calcul Parallèle. Cours 5 - JAVA RMI

Application Web et J2EE

Java RMI. Arnaud Labourel Courriel: Université de Provence. 8 mars 2011

PROGRAMMATION PAR OBJETS

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Java pour le Web. Cours Java - F. Michel

2 Chapitre 1 Introduction

java : Langage et Environnement

Conception de serveurs d'applications ouverts

Remote Method Invocation en Java (RMI)

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Module BD et sites WEB

10. Base de données et Web. OlivierCuré

JOnAS 5. Serveur d application d

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

JavaServer Pages (JSP)

Généralités sur le Langage Java et éléments syntaxiques.

Cours Java Native Interface

Machines virtuelles. Brique ASC. Samuel Tardieu Samuel Tardieu (ENST) Machines virtuelles 1 / 40

Étude de l interopérabilité de deux langages de programmation basée sur la machine virtuelle de Java

Utilisation de Jakarta Tomcat

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)

Systèmes répartis. Fabrice Rossi Université Paris-IX Dauphine. Systèmes répartis p.1/49

Projet de Veille Technologique

Programmation répartie RPC & RMI

Programmation avancée et répartie en Java : interfaçage avec d autres langages

NFP111 Systèmes et Applications Réparties

Bases Java - Eclipse / Netbeans

Environnements de développement (intégrés)

Compte Rendu d intégration d application

Architecture Orientée Service, JSON et API REST

La carte à puce. Jean-Philippe Babau

Outils de développement Java sous Linux

DotNet. Plan. Les outils de développement

Programmer en JAVA. par Tama

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

Messagerie asynchrone et Services Web

Java Naming and Directory Interface

Les architectures 3-tiers Partie I : les applications WEB

Introduction au langage Java

Module.NET 3 Les Assemblys.NET

Une introduction à Java

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

CORBA. (Common Request Broker Architecture)

Apache Tomcat 6. Guide d'administration du serveur Java EE sous Windows et Linux. Résumé. Étienne LANGLET

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

Installation et prise en main

Évaluation et implémentation des langages

Initiation à la Programmation Java

Environnements de Développement

Langage Java. Classe de première SI

Transcription:

Présentation de Java Olivier de Pertat IT GROUP

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

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 )

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

Principe de compilation C

Principe de compilation Java

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

$ 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 ] Principe : Byte Code

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.

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

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

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.

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.

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é.

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.

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

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.

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

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)

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)

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

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 <directories and zip/jar files separated by ;> set search path for application classes and resources -D<name>=<value> 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[:<packagename>... :<classname>] -enableassertions[:<packagename>... :<classname>] enable assertions -da[:<packagename>... :<classname>] -disableassertions[:<packagename>... :<classname>] 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:<directories and zip/jar files separated by ;> set search path for bootstrap classes and resources -Xbootclasspath/a:<directories and zip/jar files separated by ;> append to end of bootstrap class path -Xbootclasspath/p:<directories and zip/jar files separated by ;> prepend in front of bootstrap class path -Xnoclassgc disable class garbage collection -Xincgc enable incremental garbage collection -Xloggc:<file> log GC status to a file with time stamps -Xbatch disable background compilation -Xms<size> set initial Java heap size -Xmx<size> set maximum Java heap size -Xss<size> set java thread stack size -Xprof output cpu profiling data -Xrunhprof[:help] [:<option>=<value>,...] 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

Intégration Windows

Intégration Internet Explorer

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

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!

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("<html>hello world!</html>");

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!

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\""