Présentation de - Java - L'environnement Java - 1996-2003- Java Présentation - Version du cours 3.0

La page est créée Christelle Boyer
 
CONTINUER À LIRE
Présentation de - Java - L'environnement Java - 1996-2003- Java Présentation - Version du cours 3.0
L’environnement Java

                                   Présentation de

                                                Java
© Rémy Courdier (Révisions M. Gangat)   1996-2003- Java Présentation - Version du cours 3.0   1
Sommaire

             Présentation de Java

                   Historique
                   L’environnement Java et le JDK
                   Caractéristiques
                   Java par l’exemple
                   L’environnement de génération et d’exécution
                   Gestion des aspects de sécurité
                   Java et Javascript
                   Plate-forme JAVA et librairies (API)
                   Ecrire une application
                   Bibliographie & @ Internet

                   ANNEXE : Terminologie

© Rémy Courdier (Révisions M. Gangat)   1996-2003- Java Présentation - Version du cours 3.0   2
Historique
       Dates clés

           1991 James Gosling à Sun MicroSystems développe Oak
                 programmer tous les processeurs (ordinateurs ou appareils électroménagers, ...)
                 caractéristiques initiales: robustesse, compatibilité,petite taille du runtime ou des codes
                 générés, facilité de programmation.
                 plateforme pour interpréter les programmes du langage

           1994 Abandon du projet

           1995 Après une présentation à Netscape
                 Reprise du projet
                 Intégration dans Netscape sous forme d’applet

           Versions Majeures
                 1.0
                 1.1 modèle événementiel,exceptions..
                 1.2 extensions javax, swing, J2EE
                 1.3 Hotspot
                 1.4 Java NIO…

            ...Java signifie café en Slang (argot américain)...

© Rémy Courdier (Révisions M. Gangat)    1996-2003- Java Présentation - Version du cours 3.0                   3
Historique
       Un nouvel environnement pour de nouvelles solutions informatiques

             C++ commence à s’écrouler
                   Complexité des environnements C++
                         Langage C, incrément objet, bibli de classes d’encapsulation des OS.
                   Différences des environnements :
                         Multiplication des Technologies de compilation (dépendance entre le
                         langage et le processeur)
                         Faible durée de vie des composants logiciels
                   Problème de fiabilité et sécurité en utilisation WWW.
                         Utilisation de pointeurs,...

             Un nouveau langage
                   Quelque part entre Smalltalk et C++
             Un nouvel environnement d’exécution adapté au Web
                   interprétation du byte code par une machine virtuelle
© Rémy Courdier (Révisions M. Gangat)     1996-2003- Java Présentation - Version du cours 3.0   4
L’environnement Java
       Langage et JDK

             Langage de programmation orienté objets
                   Situé entre SMALLTALK et C++, permet de développer des applications de taille importante
                   Intégrant les besoins de l’informatique actuelle
                   Répond à des objectifs de portabilité

             Une plateforme de déploiement
                   Une machine virtuelle (JVM)
                   Des librairies de base (API).

             Un ensemble d’outils : Le JDK
                   Compilateur
                   Débugger
                   Documentation
                   …

             Fournisseur
                   Sun fournit des JDK pour les principales plate-formes :
                         WIN32, MacOS, Solaris et Linux

                   autres éditeurs d'environnement Java :
                         IBM, Microsoft, Novell, Tower J, Blackdown, Appeal Jrockit …

© Rémy Courdier (Révisions M. Gangat)        1996-2003- Java Présentation - Version du cours 3.0          5
L’environnement Java
       Principe

                        Appli. Java                                       Appli. Java
                          Appli. Java
                        Applets Java                                        Appli. Java
                                                                       Applications Java
                       Navigateurs
                   HotJava, Netscape,...                   API Java
                             Java Base API                               Java Standard ExtensionAPI

                         Classes de bases Java                      Classes Standards d’extension
                   AWT, Net & IO, applet, memory, thread           3D, Video, MIDI, Telephonie, Entreprise,...
 Machine
                                         Java Run Time : platform independant
 Virtuelle
                                           Interpréteur Byte Code -Garbage Collector
   Java
                  libutil libawt libnet                             platform dependant             Java OS
                                                  libio      ...          libraries               512 Ko ROM
                                                                                                   256 RAM
                                                                           AIX, MVS,HPUX,
                Win32          OS/2        MacOS             Solaris       Hitachi OS, Irix,...   Puce Java
                                                                                                  picoJava,
                                                             Sun                                  microJava,
                  Intel PC              PowerPC
                                                          SPARCstation
                                                                                     ...          ultraJava

                      code Java                                           Electronique grand public :
                      codeC ou assembleur                                 NC, TV, Téléphone, Jeux,...
© Rémy Courdier (Révisions M. Gangat)      1996-2003- Java Présentation - Version du cours 3.0                   6
Caractéristiques

             Simple
                   Syntaxe proche du C / C++
                   Pas de pointeurs
                   Organisation du code (packages)
                   Pas de gestion explicite de la mémoire (ramasse miettes)
                   Tout est objet (sauf les type primitifs)
                   Pas d’héritage multiple(utilisation d’interfaces)
                   Librairies de classes (sockets, BD, graphiques…)

             Orienté Objet
                   paradigme de programmation le plus utilisé
                   tout est classe

© Rémy Courdier (Révisions M. Gangat)   1996-2003- Java Présentation - Version du cours 3.0   7
Caractéristiques
             Interprété, architecturalement neutre et portable
                   Code Source transformé en Bytecode indépendant de l’OS
                   Bytecode interprété par une machine virtuelle

                                                                 // Bytecode consists of opcode and
                                                                 operands.

                                                                 // Bytecode stream:
                                                                 03 3b 84 00 01 1a 05 68 3b a7 ff f9

                                                                 // Disassembly:
                                                                 iconst_0               //    03
                                                                 istore_0               //    3b
                                                                 iinc 0, 1              //    84 00 01
                                                                 iload_0                //    1a
                                                                 iconst_2               //    05
                                                                 imul                   //    68
                                                                 istore_0               //    3b
                                                                 goto -7                //    a7 ff f9

                   Taille des types primitifs indépendants de l’OS
                   Bibliothèques de classes « standard »

© Rémy Courdier (Révisions M. Gangat)   1996-2003- Java Présentation - Version du cours 3.0              8
Caractéristiques

             Robuste,Fiable et Sécurisé
                   Langage pour les applications embarquées.
                   Gestion de la mémoire par un ramasse miettes (garbage collector)
                   Impossible de corrompre la mémoire
                         Pas d’accès direct à la mémoire
                         Pas de pointeurs
                         Contrôle du débordement dans les tableaux
                   Mécanisme d'exception.
                   Compilateur strict (erreur si exception non gérée, si utilisation d’une
                   variable non affectée, ...).

                   Bytecode vérifié avant l’exécution par l’interpréteur
                   Accès aux ressources contrôlé

© Rémy Courdier (Révisions M. Gangat)   1996-2003- Java Présentation - Version du cours 3.0   9
Caractéristiques

             Distribué
                   API réseau (java.net.Socket, java.net.URL, ...).
                   API pour les objets distribués (RMI,CORBA)
                   API pour le Web (servlets)

             Multi-thread (processus légers)
                   Intégrés au langage et aux API :
                   Gestion de la synchronisation

             Dynamique
                   Chargement dynamique des classes
                   Introspection…

© Rémy Courdier (Révisions M. Gangat)   1996-2003- Java Présentation - Version du cours 3.0   10
Points faibles

             Pas aussi rapide qu’un programme natif

             Gourmand en mémoire

             Absence de surcharge d’opérateurs comme en C++

             Absence dans le langage des types paramétriques –
             templates

© Rémy Courdier (Révisions M. Gangat)   1996-2003- Java Présentation - Version du cours 3.0   11
Java par l’exemple
               class Exemple {
                  int unAttribut;
                  void uneMethode() {
                    unAttribut++; // équivaut à this.unAttribut++
                    System.out.println(“exécution de uneMethode”);
                    System.out.println(“valeur :” + unAttribut);
                  int sum (int arr[]) {
                    unAttribut = 0;
                    // les tableaux sont des objets et gèrent leur
                    // longueur accessible par la méthode length()
                    for (int i=arr.length; --i>=0;)
                             unAttribut += arr[i];
                    return unAttribut;
                  };
               };                  ...d’où les nombreuses comparaisons avec le langage C,
                                     et parfois l’appellation C++ ++ qui est donnée à Java...

© Rémy Courdier (Révisions M. Gangat)    1996-2003- Java Présentation - Version du cours 3.0   12
L’environnement de génération
       et d’exécution Java

                 Java                     librairies
                                                                            “class Loader”
                source                   de classes
                (.java)

                                                                    interpreteur        compilateur
                                         Bytecodes
             compilateur                                                java            temps reéel
                                         Java chargé
               Java                       localement
                                        ou par réseau                      Runtime System
                                                                   java virtual Machine
              Java byte
                                                                           Operating System
                Code
               (.class)
                                                                               Hardware

       Environnement de                                           Environnement d’exécution
          génération                                                    (java Platform)

© Rémy Courdier (Révisions M. Gangat)   1996-2003- Java Présentation - Version du cours 3.0           13
Gestion des aspects de sécurité
        “On ne peut faire confiance à personne”

        •pas de gestion de                   •un espace mémoire par source chargé par le réseau
     l’Allocation dynamique                  •un espace mémoire pour tous les sources locaux    “élimination
         •Pas de pointeurs                   une classe ne peut référencer une classe importée   des conflits
   “élimination des erreurs                  qu’en la référençant explicitement                 d’exécutions”
    de prog. classiques...”

              Java                       librairies             “class          verifieur de
             source                     de classes             Loader”         pseudo-code          vérification
             (.java)                                                                                des types et
                                                                                                  des paramètres
                                                                                                     de chaque
                                                              interpreteur    compilateur
                                    Bytecodes                                                        instruction
          compilateur                                             java        temps reéel
                                    Java chargé                                                    “parade aux
            Java                                                                                   compilateurs
                                     localement
                                   ou par réseau                    Runtime System                  hostiles...”
                                                             java virtual Machine
           Java byte
             Code              protection des fichiers et des accès réseaux :                  Utilisation d’une
            (.class)        les classes du “networking package” permettent de                 machine virtuelle
                             configurer la platforme avec différents niveaux de             “ parade aux accès
                                   paranoia : interdir tout accès réseau,...                 mémoire illicites”
                                     “maîtrise de l’origine des info.”

© Rémy Courdier (Révisions M. Gangat)         1996-2003- Java Présentation - Version du cours 3.0              14
Gestion des aspects de sécurité
       Le modèle de sécurité

            Le même modèle de sécurité est appliqué pour les applications et
            pour les applets, locales ou téléchargées
© Rémy Courdier (Révisions M. Gangat)   1996-2003- Java Présentation - Version du cours 3.0   15
Java et JavaScript
       JavaScript ?

             Quoi ?
                   JavaScript et une déclinaison simplifiée mais indispensable du langage
                   Java. Il permet de goûter aux plaisirs de Java sans se frotter aux
                   difficultés de la conception objet.
             JavaScript s’intègre dans une page HTML et va
             permettre de répondre à des actions utilisateurs.
                   réalisation d’actions sans exigence d’une connexion réseau
                   supplémentaire
                   permet la programmation événementielle à l’intérerieur d’une page
                   HTML
                     
                       function calcule(form) { ... }
                     
                   supporte le chargement d’un script depuis un autre site
                     ... 

© Rémy Courdier (Révisions M. Gangat)   1996-2003- Java Présentation - Version du cours 3.0   16
Java et JavaScript
       Comparaison

                         Java                                            JavaScript
             compilé avant exécution sur                   „    Interprété par le client - non
             le client                                          compilé
             Orienté objet                                 „    pas de classes ni d’héritage,...
             Applets distinctes de HTML                    „    Encapsulé dans HTML
             Déclaration obligatoire des                   „    Déclaration optionnelle des
             variables (typage fort)                            variables
             Références vérifiées à la                     „    Références vérifiées à la
             compilation                                        l’exécution
             Fonctionnalités graphiques                    „    Pas de fonctionnalité
             complètes de Java                                  graphiques
             Environnement indépendant                     „    Intégration dans l’architecture
             de navigateurs (sauf                               sous-jacente de navigateurs
             LiveConnect)                                  „    Issu de Netscape Corporation
             Issu de Sun Microsystem
         JavaScript utilise un nombre restreint de types de données du langage Java
© Rémy Courdier (Révisions M. Gangat)   1996-2003- Java Présentation - Version du cours 3.0        17
Plate-forme JAVA et librairies (API)
       Les librairies standards

                       Elles diminuent la charge de travail, standardisent les applications,
                            et fournissent des exemples de source Java de référence

             Les librairies standards :
                   java.lang : Types de bases, Threads, ClassLoader, Exception, Math, ...
                   java.util : Collections (Hashmap,ArrayList,TreeMap…), Ressources, Logging,
                   Compression, Préférences
                   java.applet
                   java.awt,javax.swing : Interfaces Graphiques
                   java.io: Accès aux I/O par flux
                   java.net: Socket (UDP, TCP, multicast), URL, ...
                   java.lang.reflect : Introspection
                   java.beans : Composants logiciels
                   java.sql,javax.sql: Accès aux bases de données
                   java.security : signature, cryptographie, authentification
                   java.rmi : Remote Method Invocation
                   java.xml

© Rémy Courdier (Révisions M. Gangat)   1996-2003- Java Présentation - Version du cours 3.0     18
Plate-forme JAVA et librairies (API)
       Les librairies d’extensions Standards

             Les Extensions Standards
                   Java security :
                         cryptography, digital signature, encryption and authentification
                   Java Media API :
                         2D, Video, Audio, MIDI, Animation, Share, Telephony, 3D
                   Java Enterprise API :
                         JDBC(Java Database Connectivity), IDL, RMI (Remote Methode Invocation)
                   Java Commerce API
                         gestion de services de paiements électroniques, cryptographie évoluée,...
                   Java Server
                         service de gestion de serveurs intranet / internet
                   …

© Rémy Courdier (Révisions M. Gangat)    1996-2003- Java Présentation - Version du cours 3.0         19
Plate-forme JAVA et librairies (API)
       La plate-forme

© Rémy Courdier (Révisions M. Gangat)   1996-2003- Java Présentation - Version du cours 3.0   20
Ecrire une application
       Outils

             Outils : Téléchargement du JDK
                   Java Developpement Kit
                   http://java.sun.com/j2se/1.4.1/download.hl
                   Un Editeur (Bloc note,IDE….)

             Documentation
                   Documentation sur les API
                   http://java.sun.com/docs/
                   Tutoriel
                   http://java.sun.com/docs/books/tutorial/index.hl
                   Google

© Rémy Courdier (Révisions M. Gangat)   1996-2003- Java Présentation - Version du cours 3.0   21
Ecrire une application
       En ligne de commande

             Pré requis
                   Un Editeur de texte

             Etapes
                   Ecrire le code source dans un fichier portant le nom de la classe
                   (ici HelloWorldApp.java)
                     /**
                       * The HelloWorldApp class implements an application that
                       * displays "Hello World!" to the standard output.
                       */
                     public class HelloWorldApp {
                          public static void main(String[] args) {
                              // Display "Hello World!"
                              System.out.println("Hello World!");
                          }
                     }
                   Attention: respecter la casse des caractères (majuscules/minuscules)
© Rémy Courdier (Révisions M. Gangat)   1996-2003- Java Présentation - Version du cours 3.0   22
Ecrire une application
       En ligne de commande

             Etapes
                   Compiler le code source
                         javac HelloWorldApp.java

                   Un fichier contenant du bytecode sera généré
                         HelloWorldApp.class

                   Executer le bytecode
                         java HelloWorldApp

© Rémy Courdier (Révisions M. Gangat)   1996-2003- Java Présentation - Version du cours 3.0   23
Ecrire une application
       Avec un IDE (1)

             Pré requis
                   ECLIPSE
                   www.eclipse.org

                 Raccourci vers eclipse.exe.lnk

             Etapes
                   Créer un projet
                           File – New Project
                           Java – Java Project

                           Choisir un nom &
                           Cliquer sur FINISH

© Rémy Courdier (Révisions M. Gangat)             1996-2003- Java Présentation - Version du cours 3.0   24
Ecrire une application
       Avec un IDE (2)

            Etapes
                  Créer une classe
                       File – New – Class
                       Entrer le nom HelloWorldApp.java

             /**
               * The HelloWorldApp class
               * implements an application
               * that displays "Hello World!«
               * to the standard output.
               */
             public class HelloWorldApp {
                           public static void main(String[] args) {
                                    // Display "Hello World!"
                                    System.out.println("Hello World!");
                           }
             }

© Rémy Courdier (Révisions M. Gangat)    1996-2003- Java Présentation - Version du cours 3.0   25
Ecrire une application
       Avec un IDE (3)

             Etapes
                   Compiler le code source
                         Project – Build All

                   Executer le byte code
                         Menu Run – Run
                         Dans launch configurations, choisir Java Application, puis cliquer sur new
                         Dans l’onglet Main, cliquer sur search et choisir la classe HelloWorldApp
                         Cliquer sur Run

             Autres fonctionnalités de Eclipse
                   Débuggeur
                   Complétion de code
                   Refactoring
                   …

© Rémy Courdier (Révisions M. Gangat)          1996-2003- Java Présentation - Version du cours 3.0    26
Bibliographie & @ Internet
       principales @ internet :
          java.sun.com et tous les liens associés...
                 http://java.sun.com/doc/programmer.html ,
                 http://java.sun.com/doc/devcorner.html
                 http://www.javasoft.com
                 http://java.sun.com/tutorial/index.html

           Java programming center
                 http://developer.java.sun.com/developer/onlineTraining/new2java/overview.hl

           Cours JAVA
                 http://www.univ-reunion.fr/~courdier/cours/java
                 http://www-sor.inria.fr/~dedieu/java/cours/
                 http://iridia.ulb.ac.be/~cmolter/CoursJavaHome.hl
                 http://www.improve-
                 technologies.com/pages/Java/Supports_de_cours_Java_gratuits/
           …
© Rémy Courdier (Révisions M. Gangat)   1996-2003- Java Présentation - Version du cours 3.0    27
ANNEXE
       Terminologie

             Applet
                   An applet is a Java program that runs within the web browser. Applets use a
                   graphical user interface and may have text, images, buttons, scrollbars, and
                   sound. AWT and SWING are frequently associated with articles and tutorials
                   about creating applets.

             AWT
                   The Abstract Window Toolkit (AWT) is a package of classes for creating
                   components such as buttons, menus, and scrollbars for applets and standalone
                   applications.

             Java API
                   The Java Application Programming Interface (API) is prewritten code, organized
                   into packages of similar topics. For instance, the Applet and AWT packages
                   include classes for creating fonts, menus, and buttons. The full Java API is
                   included in the Java 2 Standard Edition download.

© Rémy Courdier (Révisions M. Gangat)   1996-2003- Java Présentation - Version du cours 3.0       28
ANNEXE
       Terminologie

             JavaBeans
                   JavaBeans architecture provides a way of designing reuseable software
                   components that can be visually manipulated in builder tools. Beans can be
                   simple like buttons, or more complex like a tool to access to databases.

             Java Foundation Classes (JFC)
                   The Java Foundation Classes (JFC) are a set of GUI components and other
                   services simplifying the development and deployment of desktop and
                   Internet/Intranet applications.

             Java Native Interface (JNI)
                   JNI is the native programming interface for Java that is part of the JDK. The JNI
                   allows Java code to operate with applications and libraries written in other
                   languages, such as C, C++, and assembly. Recommended only for advanced
                   programmers.

© Rémy Courdier (Révisions M. Gangat)   1996-2003- Java Présentation - Version du cours 3.0        29
ANNEXE
       Terminologie

             JavaServer Pages (JSP)
                   Create dynamic web pages with JSP by embedding scriptlets (Java programming
                   language code) with HL. JSP pages process forms, perform calculations, or do
                   anything else that can be written with the Java programming language.

             Java 2 Platform, Enterprise Edition (J2EE)
                   The J2EE platform provides a component-based approach to the design,
                   development, assembly, and deployment of enterprise applications. The J2EE
                   platform gives you a multitiered distributed application model, the ability to reuse
                   components, a unified security model, and flexible transaction control.

© Rémy Courdier (Révisions M. Gangat)   1996-2003- Java Présentation - Version du cours 3.0          30
ANNEXE
       Terminologie

             Java 2, Micro Edition (J2ME)
                   Java 2 Micro Edition (J2ME) is targeted for the consumer and embedded market.
                   The API specifications are based on Java 2 Standard Edition (J2SE), but
                   modified to meet the unique requirements of each product. J2ME makes it
                   possible to write Java applications for cell phones, smart cards, pagers, and
                   other consumer devices.

             Java 2, Standard Edition (J2SE)
                   This download includes the essential compiler, tools, runtimes, and APIs for
                   writing, deploying, and running applets and applications in the Java programming
                   language.

             Java Virtual Machine (JVM)
                   The Java virtual machine executes instructions that a Java compiler generates.
                   This run time environment, or JVM, is embedded in various products, such as
                   web browsers, servers, and operating systems.

© Rémy Courdier (Révisions M. Gangat)   1996-2003- Java Présentation - Version du cours 3.0     31
ANNEXE
       Terminologie

             JDBC
                   JDBC is a Java API for executing SQL statements. By using the JDBC API, you
                   can access almost any data source, from relational databases to spreadsheets to
                   flat files. J2SE includes the JDBC API.

             JDK
                   JDK is the short-cut name for the set of Java development tools, consisting of the
                   API classes, a Java compiler, and the Java Virtual Machine interpreter,
                   regardless of which version. The JDK is used to compile Java applications and
                   applets. The most current version is the J2SE., the preferred term these days. If
                   you use J2SE 1.2 and later to develop applications, you are using what's known
                   as the Java 2 Platform.

             JINI
                   The Jini network technology enables any service--from enterprise systems to
                   kitchen appliances--to network smoothly and simply. The Jini architecture lets
                   each service (device or software) tell others how to talk to it, without any
                   administrator settings.

© Rémy Courdier (Révisions M. Gangat)   1996-2003- Java Présentation - Version du cours 3.0         32
ANNEXE
       Terminologie

             Project Swing
                   The javax.swing package of classes is used to create GUI components for
                   applets and applications. Project Swing classes enable programmers to specify a
                   different look and feel for each platform, or a uniform look across all platforms.
                   Swing is the project code name for the lightweight GUI components in JFC.

             RMI
                   Remote Method Invocation (RMI) lets Java applications communicate across a
                   network. The communicating applications can be running on different computers
                   on opposite sides of the planet. This higher-level and method-based approach to
                   network communications allows access to a remote object as easily as a local
                   object.

             Servlets
                   A servlet is an extension to a server that enhances the server's functionality.
                   Servlets are most commonly used to process forms, handle redirects or
                   authenticate user names and passwords, and create dynamic content.

© Rémy Courdier (Révisions M. Gangat)   1996-2003- Java Présentation - Version du cours 3.0          33
Vous pouvez aussi lire