Présentation de - Java - L'environnement Java - 1996-2003- Java Présentation - Version du cours 3.0
←
→
Transcription du contenu de la page
Si votre navigateur ne rend pas la page correctement, lisez s'il vous plaît le contenu de la page ci-dessous
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