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.

Slides:



Advertisements
Présentations similaires
Internet et le client- serveur Licence Pro IE Cours Internet / Intranet Le Web HTML Protocoles Le client universel Contenus dynamiques.
Advertisements

A RECUPERER EN ENTRANT Le polycopié de Caml Partie 1
Cours 5 : XML et les architectures N-tier Janvier Version 1.0 -
« Les Mercredis du développement » Introduction Office « 12 » Présenté par Bernard Fedotoff Microsoft Regional Director Agilcom.
Introduction à Eclipse
Programmation par Objets 1 Module IN504 Animé par : Marianne Huchard Marie-Laure Mugnier Khalil Ben Mohamed
A propos de java Sun, fin 1995 C++ nettoyé semi-interprété
Au programme du jour …. Ce que vous navez pas encore vu Constantes et variables de classe Main et Tests Utilisation de lAPI Existence des packages Existence.
ESSI AM Dery Merci à Rémi Vankeisbelck, Michel Riveill etc
1 Plan de lenseignement Cours Introduction au réseau via les objets distants (Application à RMI) Ce que cache RMI : programmation socket – mode connecté
ESSI AM Dery Merci à Rémi Vankeisbelck, Michel Riveill etc
Architecture. Architecture Enjeux Les Enjeux Trouver une solution e-Business Accessible à partir d’un navigateur Web Accédant au système via un Portail.
L’architecture .net et ASP.net
Exposé de Système - Informatique et Réseau
Programmation Web Les JSP.
TRANSFER Alger – Serveur Web Nicolas Larrousse Septembre Petit historique du Worl Wide Web Notion dHypertexte Extension à internet par Tim Berners.
Cours 6 : XML et les architectures N-tiers – Tier Applicatif
INTRODUCTION A JAVA Chapitre 1 : Introduction
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe
Présentation de Java Stéphane Frénot INSA lyon
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance

JSP Java Server Pages. Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java propose trois solutions.
Servlet JAVA.
1 Une introduction à Java IFT 287 (Semaine 1). 2 Java - Historique Développé par Sun Microsystems en 1994 –Inventeur James Gosling (canadien!) Objectif.
Common Gateway Interface
Le Téléphone Russe Le Téléphone Russe. Le Téléphone Russe Le Téléphone Russe.
LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet
Projet de veille technologique
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
© 2007 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java et les Exceptions Peter Van Roy Département dIngénierie Informatique,
Introduction à la programmation (Java)
Programmation Orienté Objet Application Au Langage JAVA Licence professionnelle ATC ~ 07/08 Bessem BOURAOUI
Formation JAVA. Par: SILMI.S
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 1 : Introduction.
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
1 CSI 2532 Lab6 Application Web et DB Février 27, 2012.
Document élaboré à Centrale Paris par Pascal Morenton LES TECHNOLOGIES DU WEB 1. LES PHASES D UN DEPLOIEMENT DE RESEAUX 2. LE LANGAGE HTML 3. LE LANGAGE.
Java vs. C++ Pierre-Yves ALIZON – Ingénieurs 2000.
J2EE vs .NET Réaliser par : SEIF ENNACER BADRA && CHETOUI RIM.
Une introduction à Java
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
M2 – MIAGE/SID Servlet M2 – MIAGE/SID
La Programmation CGI Principe Général Traitement des informations
Développement Web Open Source haXe et les outils « open source » Première partie.
Internet et le client- serveur Licence Pro IE Cours Internet / Intranet Le Web HTML Protocoles Le client universel Contenus dynamiques.
APPLETS. Applets : généralités Applet : application s'exécutant dans une page HTML Le ByteCode (fichiers.class) est téléchargé depuis un serveur. L'exécution.
Approche fonctionnelle Approche objet JAVA
Introduction à la programmation objet avec java
Android Kévin Giroux.
Premiers pas dans le langage Java 2012/ Premiers pas dans le langage Java TI3.4 Responsable : M lle Sana Ezzedine
Introduction à la plateforme .NET
© 2005 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java Peter Van Roy Département d’Ingénierie Informatique, UCL
Dyalog.Net Peter Donnelly Managing Director Dyadic Systems Toronto 30/10/2002.
Auvray Vincent Blanchy François Bonmariage Nicolas Mélon Laurent
Conférence Technique Java 2 Frédéric Jacquet. Au programme  Présenter les différents outils  Découverte - Java coté serveur  Appréhender l ’existant.
Struts.
Classe 1 CSI2572 Autres modificateurs de déclaration de variables: & volatile & register & static & auto & extern & const volatile Indique au compilateur.
Introduction à JAVA Sylvie Billot
Introduction au langage JAVA
Les Servlets Présentation Cycle de vie Principe de fonctionnement
PaCO++ André Ribes Réunion Hydrogrid Rennes 15/09/03.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 2 – Java Premiers pas Master 1 SIGLIS1 Java Lecteur - Chapitre 2 - Java Premiers Pas.
Serveurs Web à contenu dynamique Emmanuel Cecchet INRIA Rhône-Alpes, Projet Sardes Rice University, Systems lab
22 Concepts de base du langage Java. 2-2 Objectifs A la fin de ce cours, vous serez capables de : Identifier les éléments essentiels de Java Identifier.
Présentation Sur Java Serhani Mohamed Adel Septembre 2001.
pour les programmeurs en C++ Java 2 Part 1 3 Histoire de Java Projet de connexion des machines: 1991 Le nom Java a été introduit dans un café Développé.
Java Réalisé par: Mouna POKORA. PLAN: Définition : Historique: Caractéristiques: un langage orienté objet: un langage interprété : un langage portable:
Applications distribuées Introduction Jean-Jacques LE COZ.
JAVA.
Transcription de la présentation:

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 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 Classes Janv. 96 : JDK Eté 96 : Java Study Group ISO/IEC JTC 1/SC22 Fin 96 : RMI, JDBC, JavaBeans, : JDK 1.1 – nouveaux services quelques modifications du langage : Plateforme Java 2 - JDK 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 !"); }

Principe : Byte Code $ od -x Hello.class feca beba e00 1d00 000a f a c06 6e e f c0f 6e69 4e d c d e b28 6a4c f61 616c 676e f e69 3b a 756f c a c6c 2e6f a c c c c6c f 646c c1a 1b00 1c [………EOF…]

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

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(" Hello world ! "); }

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\JARFile] "EditFlags"=dword: Java ARchive (exécutables)" Files\\Java\\j2re1.4.1\\bin\\jinstall.exe,0" [HKEY_CLASSES_ROOT\JARFile\shell\open] -jar \"%1\""