Introduction à Java. Philippe Genoud. Philippe.Genoud@imag.fr. http://www.inrialpes.fr/helix/people/genoud/ensjava



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

Java pour le Web. Cours Java - F. Michel

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

Vulgarisation Java EE Java EE, c est quoi?

TP1 : Initiation à Java et Eclipse

Initiation à JAVA et à la programmation objet.

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

TP1. Outils Java Eléments de correction

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

Environnements de Développement

Chapitre I Notions de base et outils de travail

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

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

Programmeur Java 1.4 et 5.0

Introduction à la plateforme J2EE

Compte Rendu d intégration d application

TP1 : Initiation à Java et Eclipse

Mise en œuvre des serveurs d application

Programmation Orientée Objet

Annexe : La Programmation Informatique

Europa. Développement JEE 5. avec Eclipse. K a r i m D j a a f a r. A v e c l a c o n t r i b u t i o n d e O l i v i e r S a l v a t o r i

Java - la plateforme

Java c est quoi? Java pourquoi?

Java Licence Professionnelle CISII,

as Architecture des Systèmes d Information

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)

1 JBoss Entreprise Middleware

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

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

Bases Java - Eclipse / Netbeans

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

La technologie Java Card TM

Cours 1: Java et les objets

Web Tier : déploiement de servlets

Remote Method Invocation (RMI)

Projet de Veille Technologique

Notre Catalogue des Formations IT / 2015

INITIATION AU LANGAGE JAVA

Utilisation de Jakarta Tomcat

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

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

Refonte front-office / back-office - Architecture & Conception -

Les tableaux de bord de pilotage de nouvelle génération. Copyright PRELYTIS

CAHIER DES CHARGES D IMPLANTATION

Point sur les solutions de développement d apps pour les périphériques mobiles

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

Applications distribuées: le retour du client "riche"

Projet de développement. Introduction à Eclipse. Application à votre projet. Philippe Collet. Organisation. Cours 1 : principes généraux - svn

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

Projet de développement

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

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

Eclipse atelier Java

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

JOnAS 5. Serveur d application d

java : Langage et Environnement

Installation et prise en main

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

DotNet. Plan. Les outils de développement

JOnAS Day 5.1. Outils de développements

Module BD et sites WEB

Catalogue des Formations Techniques

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

PRIMAVERA P6 ENTERPRISE PROJECT PORTFOLIO MANAGEMENT WEB SERVICES

Virginie!SALAS Janvier!09! NFE107

Cours Plugin Eclipse. Université Paris VI / Parcours STL / Master I Pierre-Arnaud Marcelot - Iktek - pamarcelot@iktek.com

Traitement de données

Bien programmer. en Java ex. couleur. Avec plus de 50 études de cas et des comparaisons avec C++ et C# Emmanuel Puybaret.

J2EE - Introduction. Développement web - Java. Plan du chapitre

Éléments de programmation et introduction à Java

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

WEBSPHERE & RATIONAL. Jacques Rage

Machines Virtuelles. et bazard autour. Rémi Forax

Présentation de Java. Olivier de Pertat IT GROUP

JAVA 8. JAVA 8 - Les fondamentaux du langage. Les fondamentaux du langage Java. Avec exercices pratiques et corrigés JAVA 8 29,90.

Les architectures 3-tiers Partie I : les applications WEB

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

Nouvelles Plateformes Technologiques

Utiliser Java sans BlueJ

2 Chapitre 1 Introduction

Hébergement de sites Web

JavaServer Pages (JSP)

Machine virtuelle Java pour Palm TX

Les Fondements du langage Java & son évolution actuelle.

Comparaison des architectures J2EE et.net

RMI le langage Java XII-1 JMF

Évaluation et implémentation des langages

Les nouvelles architectures des SI : Etat de l Art

Création d une application JEE

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

W4 - Workflow La base des applications agiles

Cedric Dumoulin (C) The Java EE 7 Tutorial

Projet. But: consultation en temps réel d événements (cours de bourse, trafic d envoi SMS ) sur des téléphones portables. Serveur de diffusion

Youssef LYHYAOUI Ingénieur Java/J2EE, SOA, ESB, Web services 31 ans Statut : Indépendant SITUATION ACTUELLE

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

République Algérienne Démocratique et Populaire Université Abou Bakr Belkaid Tlemcen Faculté des Sciences Département d Informatique

Formation en Logiciels Libres. Fiche d inscription

Transcription:

Introduction à Java Philippe Genoud Philippe.Genoud@imag.fr http://www.inrialpes.fr/helix/people/genoud/ensjava http://membres-liglab.imag.fr/genoud/ensjava/m2cci/ 1

JAVA c'est quoi? Une technologie développée par SUN Microsystems lancée en 1995 Un langage de programmation Une plateforme, environnement logiciel dans lequel les programmes java s'exécutent. Présente dans de très nombreux domaines d application : des serveurs d applications aux téléphone portables et cartes à puces (JME) Quelques chiffres (Java One 2005): 4,5 millions de développeurs Java 700 millions de PC équipés d'une JVM 708 millions de téléphones Java 600 millions de périphériques mobiles 1 milliard de Java Cards Septembre 2010 Ph. Genoud Université Joseph Fourier 2

Le Langage Java Dans un des premiers papiers* sur le langage JAVA, SUN le décrit comme suit : «Java : a simple, object-oriented, distributed, robust, secure, architecture neutral, portable, high-performance, multithreaded, and dynamic language» * White Paper :The Java Language Environment - James Gosling, Henry McGilton - May 1996 http://java.sun.com/docs/white/langenv/ Septembre 2010 Ph. Genoud Université Joseph Fourier 3

Le Langage Java Mon premier programme Java (pas très objet ) Le code de la classe doit être enregistré dans un fichier de même nom (casse comprise) que la classe 3 HelloWorld.java public class HelloWorld { 1 Tout code java doit être défini à l'intérieur d'une classe Le point d'entrée pour l'exécution est la 4 méthode main() public static void main(string[] args) { } int i = 0; while (i < 5) { System.out.println("Hello World!"); i++; } 2 La description de la classe est effectuée à l'intérieur d'un bloc { } } Compilation : javac HelloWorld.java HelloWorld.java javac Exécution : java HelloWorld Hello World! Hello World! java Hello World! Hello World! HelloWorld.class Hello World! Septembre 2010 Ph. Genoud Université Joseph Fourier 4

Le langage Java Un langage compilé / interprété Compilation d'un programme JAVA : génération de byte-code public class Test { } public static void main(string[] args) { for (int i = 0; i < 10; i++) System.out.println("Hello " + i); } Test.java code source Le byte-code est : proche d'un langage machine javac 01100001 11100000 11111010 11101...... Test.class byte-code indépendant de la plateforme d'exécution (matériel + OS) javap c Test Désassemble Test.class 0 iconst_0 1 istore_1 2 goto 30 5 getstatic #10 <Field java. 8 new #5 <Class java.lang.st 11 dup 12 ldc #1 <String "Hello ">. 27 iinc 1 1 30 iload_1 31 bipush 10 33 if_icmplt 5 36 return Septembre 2010 Ph. Genoud Université Joseph Fourier 5

La machine virtuelle Java Exécution d'un programme Java compilé byte-code assure la portabilité des programmes Java langage d'une Machine Virtuelle à l'exécution un interpréteur simule cette machine virtuelle javac java PC Java VM Windows.java source.class byte-code Java VM PowerPc MacOS X Java VM Sun Sparc Solaris Linux Septembre 2010 Ph. Genoud Université Joseph Fourier 6

La machine virtuelle java Principes de fonctionnement Chargement chargement sélectif et dynamique des classes vérification statique du code (tentatives de modification de la machine virtuelle,...) Protection lors de l'exécution Le "security manager" possède un droit de veto (accès "sauvages" au système de fichiers,...) Cette protection peut-être modulée.class Réseau ou Système de fichiers JVM Class Loader Classes locales Byte-Code verifier Security Manager Interpreter Septembre 2010 Ph. Genoud Université Joseph Fourier 7

Performances Exécution d'un programme Java le code Java est compact, le chargement des classes nécessaires est sélectif et dynamique,... mais Java est interprété Palier aux lenteurs de l'interprétation utilisation d un JIT (compilateur «Just-in-Time») compilation à la volée du byte-code réutilisation du code déjà compilé intégration du JIT HotSpot dans JVM depuis version 1.3 Performance of Java versus C++ J.P.Lewis and Ulrich Neumann (http://www.idiom.com/%7ezilla/computer/javacbenchmark.html) Septembre 2010 Ph. Genoud Université Joseph Fourier 8

Types de programmes Java Les Applications indépendantes Programmes autonomes (stand-alone) Demo Demo Les Applets Programmes exécutées dans l environnement d un navigateur Web et chargés au travers de pages HTML Seuls diffèrent les contextes d'invocation et d exécution Les droits des applets et des applications ne sont pas les mêmes Septembre 2010 Ph. Genoud Université Joseph Fourier 9

Types de programmes Java Application indépendante Application est définie par un ensemble de classes dont une jouera le rôle de classe principale AppliVisage.java VisageRond.java Dessin.java La classe "principale" Dessine un visage Gère une liste de visages javac AppliVisage.java La compilation de la classe principale entraîne la compilation de toutes les classes utilisées javac make AppliVisage.class VisageRond.class Dessin.class Pour exécuter l'application on indique à l'interpréteur java le nom de la classe principale java AppliVisage java charge les classes nécessaires au fur et à mesure de l'exécution Septembre 2010 Ph. Genoud Université Joseph Fourier 10

Types de programmes Java Application indépendante Application doit posséder une classe principale classe possédant une méthode de signature public static void main(string[] args) Tableau de chaînes de caractères (équivalent à argc, argv du C) Cette méthode sert de point d entrée pour l exécution l exécution de l application démarre par l interprétation de cette méthode ex : java AppliVisage1 Exécute le code défini dans la méthode main contenue dans le fichier AppliVisage1.class Septembre 2010 Ph. Genoud Université Joseph Fourier 11

Types de programmes Java Applet Classe principale ne posséde pas de méthode main() Hérite de java.awt.applet ou javax.swing.japplet Son bytecode réside sur un serveur http Elle est véhiculée vers un client http (navigateur Web) via une page html qui contient son url Lorsqu un navigateur compatible Java (avec sa propre machine virtuelle java (JVM)) reçoit cette page HTML, il télécharge le code de la classe et l exécute sur le poste client l applet doit posséder un certain nombre de méthodes pour permettre cette exécution init(), start(), stop(), paint(), destroy() Septembre 2010 Ph. Genoud Université Joseph Fourier 12

Types de programmes Java Applet : Principe de fonctionnement <HTML> <HEAD> <TITLE>A Clock (1.1)</TITLE> </HEAD> <BODY> <h1>a Clock (1.1)</h1> <hr> <applet code="clock2.class" width=170 height=150> <param bgcolor="c0c0c0"> </applet>... </BODY> 5. Exécution de l applet dans la JVM du client Client http Navigateur intégrant une machine virtuelle Java http://java.sun.com/jdk1.3/demo/applets/clock/example1.html 1. Demande de chargement d une page web contenant une applet 2. Chargement de la page html example1.html 3. Demande de chargement de l applet référencée dans la page 4. Chargement du bytecode des classes de l applet Clock2.class Serveur http HTML HTML HTML HTML HTML HTML HTML.class.class.class.class Septembre 2010 Ph. Genoud Université Joseph Fourier 13

La plateforme Java Plateforme Environnement matériel et/ou logiciel dans lequel un programme s'exécute. La plus part des plateformes sont la combinaison d'un OS et du matériel sousjacent (MS Windows + Intel, Linux + Intel, Solaris + Sparc, Mac Os X + Power PC) La plateforme Java est entièrement logicielle et s'exécute au dessus des plateformes matérielles Plateforme Java MonProgramme.class API Java JVM (Machine virtuelle) Plateforme matérielle (OS + hardware) API (Application Programming Interface) Java : Bibliothèques Java standards sur lesquelles le programmeur peut s'appuyer pour écrire son code Septembre 2010 Ph. Genoud Université Joseph Fourier 14

La plateforme Java API Java API Java (très) vaste collection de composants logiciels (classes et interfaces) organisée en bibliothèques (packages) offre de nombreux services de manière standard (indépendamment de la plateforme matérielle) MonProgramme.class Plateforme Java API Java JVM (Machine virtuelle) Plateforme matérielle (OS + hardware) Programmer en Java nécessite une bonne connaissance de l'api. Attention à la courbe d'apprentissage (learning curve) qui est peut être longue Septembre 2010 Ph. Genoud Université Joseph Fourier 15

La plateforme Java Les différentes éditions de Java 3 éditions de Java Standard Edition JSE Fourni les compilateurs, outils, runtimes, et APIs pour écrire, déployer, et exécuter des applets et applications dans la langage de programmation Java Entreprise Edition JEE Destinée au développement d applications «d entreprise» («business applications») robustes et interopérables. Simplifier le développement et le déploiement d applications distribuées et articulées autours du web. Mobile Edition JME Environnement d exécution optimisé pour les dispositifs «légers» : Carte à puce (smart cards) Téléphones mobiles Assistants personnels (PDA) Versions MS Windows, Linux, Solaris téléchargeables gratuitement sur java.sun.com Septembre 2010 Ph. Genoud Université Joseph Fourier 16

La plateforme Java Evolution de l'api Standard Evolutions du langage : Généricité, Types Enumérés, Autoboxing, Nouvelles API : Concurrence, Management (gestion et supervision de la JVM) Java 5 (Tiger) 4000 3500 3000 Swings, Collections, JNDA. Du fait de l ajout de très nombreuses fonctionnalités la plateforme a été Java 2 2757 3279 3799 Services Web Langages de scripts Accès au compilateur Plus d API pour applis desktop. Java 6 (Mustang) Dec 2006 2500 2000 1500 1520 classes packages 1000 500 0 504 212 8 23 59 135 166 203 java 1.0 java 1.1 java 1.2 java 1.4 java 1.5 java 1.6 java 1.7 Java 7 (Dolphin) Open Source 2010? 2011? 2012??? Modification du langage :classes internes Modification du modèle événementiel pour awt Java Beans Amélioration des performances de la VM Amélioration des performances Assertions, Nouveau package pour i/o, Nouvelles classes pour collections Nombreux nouveaux packages (XML, log des applications, préférences utilisateur ) Septembre 2010 Ph. Genoud Université Joseph Fourier 17

JSE : Java Standard Edition Organisation générale Septembre 2010 Ph. Genoud Université Joseph Fourier 18

JSE : Java Standard Edition Organisation générale JRE JRE (Java Runtime Environnement) pour l'exécution de code java compilé Septembre 2010 Ph. Genoud Université Joseph Fourier 19

JSE : Java Standard Edition Organisation générale JDK JDK (Java Developper's Kit) outils de base pour le développement d'applications Java Septembre 2010 Ph. Genoud Université Joseph Fourier 20

JEE Java Entreprise Edition Plateforme définie par SUN pour le développement d applications réparties basée sur un ensemble de technologies Java Servlets, JSP(Java Server Pages), JSF (Java Server Faces) : pages web dynamiques EJB (Entreprise Java Beans) : objets métiers JDBC : API d'accès à des SGBD JNDI (Java Naming an Directory Interface) : API pour nommage des objets JTA (Java Transaction API) ; API pour gestion des transactions JAAS (Java Authentication and Authorization Service) Et de nombreuses autres S'appuie sur un modèle d'architecture multi-tiers (multi-couches) Septembre 2010 Ph. Genoud Université Joseph Fourier 21

Architecture des applications JEE Architecture multi-tiers Client léger (navigateur web) Tier client Poste client présentation Client riche (application Java) Conteneur WEB Pages JSP Pages JSP Servlets Tier web Serveur JEE métier Conteneur EJB EJB EJB EJB EJB EJB Tier métier Serveur d'applications JEE données Tier Système d'information de l'entreprise Serveur de bases de données Logique de l'application : Composants web (Servlet, JSP,JFS) Composants métiers (EJB) Services standards (cycle de vie des composants, multithreading, transactions, persistance ) pris en charge par les conteneurs Web et EJB du serveur d'application JEE Septembre 2010 Ph. Genoud Université Joseph Fourier 22

JEE situation actuelle Une spécification (Sun) : JEE 5 (2006), JEE 6 (2009) Différentes implémentation de la plateforme implémentation de référence (JEE 5 SDK Java Application Platform) fournie gratuitement par Sun Des implémentations commerciales WebLogics (BEA),WebSphere (IBM), Sun Java System Application Server, Oracle Application Server Ou open-source JBoss, Geronimo (Apache), Glassfish, JOnAS Processus de certification TCK (Test Compatibility Kit) (~ 20000 tests) Payant sauf pour plateformes open-source Septembre 2010 Ph. Genoud Université Joseph Fourier 23

Environnements de développement intégrés Nombreux IDE (Integrated Development Environment) pour java Editeur syntaxique, débogueur, compilateur, exécution Commerciaux JDeveloper Oracle JCreator Xinox WebSphere Studio Site Developer for Java IBM Open-source et/ou freeware JBuilder Codegear IntelliJIDEA JetBrains... Visual J++ Microsoft C#.net NetBeans www.netbeans.org Eclipse www.eclipse.org BlueJ www.bluej.org Emacs + JDE http://sunsite.auc.dk/jde Septembre 2010 Ph. Genoud Université Joseph Fourier 24

Java aujourd'hui Une maturité certaine Technologie largement reconnue dans le monde industriel Evolutions de JAVA contrôlées par organisation indépendante Java Community Process (www.jcp.org) Évolutions du langage (généricité dans version 1.5(Tiger)) Nouvelles API Passage de Java dans la communauté open source (2007) Jusqu'à présent JAVA était une marque propriétaire de SUN Bataille avec C#.NET sur la plateforme Windows Rachat de SUN par Oracle (avril 2009) Septembre 2010 Ph. Genoud Université Joseph Fourier 25

1 ère séance de TP utilisation depuis ligne de commande des outils de base pour le développement d'applications Java Compilation : javac Exécution : java (applications) appletviewer (applets) Documentation javadoc "Archivage" jar Pourquoi ne pas utiliser tout de suite un IDE Java? Être capable de travailler avec Java quelque soit l'environnement Comprendre des mécanismes parfois masqués par des environnements intégrés (ex. CLASSPATH) Septembre 2010 Ph. Genoud Université Joseph Fourier 26

2 ème séance de TP Objectif : expérimenter les constructions de base du langage Java (types simples, instructions de contrôle, itérations) qui sont très proches syntaxiquement de celles utilisées par le langage C Ecriture de programmes simples Thème 1 : expressions Thème 2 : instructions conditionnelles Thème 3 : itérations Thème 4 : instanciation d'objets - envois de messages http://www.inrialpes.fr/helix/people/genoud/ensjava/cours/ http://www.inrialpes.fr/helix/people/genoud/ensjava/cours/java/typessimples.html Septembre 2010 Ph. Genoud Université Joseph Fourier 27

Références «Java - tête la première» Kathy Sierra, Bert Bates,2ème édition, O Reilly, septembre 2005 «Cahiers du Programmeur - Java - 1.4 et 5.0» Emmanuel Puybaret, Eyrolles, mars 2006 «Introduction à Java», 2e édition Pat Niemeyer et Jonathan Knudsen, O Reilly, déc. 2002 «Au coeur de Java 2 - Volume 1 : Notions fondamentales» Cay S. Horstmann, Gary Cornell, CampusPress, nov. 2003 «Thinking in Java», Bruce Eckel - Prentice-Hall ( www.bruceeckel.com, www.penserenjava.free) «JAVA in a nutshell, 5th Edition», David Flanagan - O'Reilly 2005 Septembre 2010 Ph. Genoud Université Joseph Fourier 28

Références (suite) URLs http://java.sun.com - Site officiel Java de SUN JDK, Tutoriels, Documentations, spécifications, http://www.javaworld.com Magazine électronique http://www.jguru.com, http://www.jdance.com Sites dédiés à la technologie java http://www.oracle.com/technetwork/java/index.html applets, applications, notes techniques, forums de discussions ORACLE www.developpez.com des tutoriels, des FAQ, des ressources. http://penserenjava.free.fr une traduction du livre de BruceEckel «Thinking in Java» Septembre 2010 Ph. Genoud Université Joseph Fourier 29