présentation de - lim.univ-reunion.frlim.univ-reunion.fr/staff/courdier/old/cours/java/chap1... ·...
Post on 14-Sep-2018
218 Views
Preview:
TRANSCRIPT
© Rémy Courdier (Révisions M. Gangat) 11996-2003- Java Présentation - Version du cours 3.0
L’environnement Java
Présentation de
Java
© Rémy Courdier (Révisions M. Gangat) 21996-2003- Java Présentation - Version du cours 3.0
Sommaire
Présentation de Java
HistoriqueL’environnement Java et le JDKCaractéristiquesJava par l’exempleL’environnement de génération et d’exécutionGestion des aspects de sécuritéJava et JavascriptPlate-forme JAVA et librairies (API)Ecrire une applicationBibliographie & @ Internet
ANNEXE : Terminologie
© Rémy Courdier (Révisions M. Gangat) 31996-2003- Java Présentation - Version du cours 3.0
HistoriqueDates clés
1991 James Gosling à Sun MicroSystems développe Oakprogrammer 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 à NetscapeReprise du projet Intégration dans Netscape sous forme d’applet
Versions Majeures1.0 1.1 modèle événementiel,exceptions..1.2 extensions javax, swing, J2EE1.3 Hotspot1.4 Java NIO…
...Java signifie café en Slang (argot américain)...
© Rémy Courdier (Révisions M. Gangat) 41996-2003- Java Présentation - Version du cours 3.0
HistoriqueUn 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 Webinterprétation du byte code par une machine virtuelle
© Rémy Courdier (Révisions M. Gangat) 51996-2003- Java Présentation - Version du cours 3.0
L’environnement JavaLangage et JDK
Langage de programmation orienté objetsSitué entre SMALLTALK et C++, permet de développer des applications de taille importanteIntégrant les besoins de l’informatique actuelleRépond à des objectifs de portabilité
Une plateforme de déploiement Une machine virtuelle (JVM) Des librairies de base (API).
Un ensemble d’outils : Le JDKCompilateurDébuggerDocumentation…
FournisseurSun 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) 61996-2003- Java Présentation - Version du cours 3.0
L’environnement JavaPrincipe
Win32 Puce JavapicoJava,
microJava, ultraJava
Java Run Time : platform independantInterpréteur Byte Code -Garbage Collector
Solaris AIX, MVS,HPUX,Hitachi OS, Irix,...
Intel PC PowerPC Sun SPARCstation ...
Classes Standards d’extension 3D, Video, MIDI, Telephonie, Entreprise,...
Appli. JavaAppli. Java
Applications JavaAppli. JavaAppli. JavaApplets Java
API Java
OS/2 MacOS
Electronique grand public : NC, TV, Téléphone, Jeux,...
Java OS512 Ko ROM
256 RAM
Java Base APIClasses de bases Java
AWT, Net & IO, applet, memory, thread
NavigateursHotJava, Netscape,...
Java Standard ExtensionAPI
code JavacodeC ou assembleur
MachineVirtuelle
Java
...libutil libawt libnet libio
platform dependantlibraries
© Rémy Courdier (Révisions M. Gangat) 71996-2003- Java Présentation - Version du cours 3.0
Caractéristiques
SimpleSyntaxe proche du C / C++Pas de pointeursOrganisation 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é Objetparadigme de programmation le plus utilisétout est classe
© Rémy Courdier (Révisions M. Gangat) 81996-2003- Java Présentation - Version du cours 3.0
Caractéristiques
Interprété, architecturalement neutre et portableCode Source transformé en Bytecode indépendant de l’OSBytecode interprété par une machine virtuelle
Taille des types primitifs indépendants de l’OSBibliothèques de classes « standard »
// Bytecode consists of opcode andoperands.
// Bytecode stream:03 3b 84 00 01 1a 05 68 3b a7 ff f9
// Disassembly:iconst_0 // 03istore_0 // 3biinc 0, 1 // 84 00 01iload_0 // 1aiconst_2 // 05imul // 68istore_0 // 3bgoto -7 // a7 ff f9
© Rémy Courdier (Révisions M. Gangat) 91996-2003- Java Présentation - Version du cours 3.0
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émoirePas de pointeursContrô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éteurAccès aux ressources contrôlé
© Rémy Courdier (Révisions M. Gangat) 101996-2003- Java Présentation - Version du cours 3.0
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
DynamiqueChargement dynamique des classesIntrospection…
© Rémy Courdier (Révisions M. Gangat) 111996-2003- Java Présentation - Version du cours 3.0
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) 121996-2003- Java Présentation - Version du cours 3.0
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) 131996-2003- Java Présentation - Version du cours 3.0
L’environnement de génération et d’exécution Java
Javasource(.java)
Java byteCode
(.class)
compilateurJava
BytecodesJava chargélocalement
ou par réseau
“class Loader”librairies de classes
interpreteurjava
compilateurtemps reéel
Runtime System
Operating System
Hardware
java virtual Machine
Environnement degénération
Environnement d’exécution(java Platform)
© Rémy Courdier (Révisions M. Gangat) 141996-2003- Java Présentation - Version du cours 3.0
Gestion des aspects de sécurité“On ne peut faire confiance à personne”
Javasource(.java)
Java byteCode
(.class)
compilateurJava
BytecodesJava chargélocalement
ou par réseau
“class Loader”
librairies de classes
interpreteurjava
compilateurtemps reéel
Runtime Systemjava virtual Machine
verifieur de pseudo-code
•pas de gestion del’Allocation dynamique
•Pas de pointeurs“élimination des erreurs
de prog. classiques...”
•un espace mémoire par source chargé par le réseau•un espace mémoire pour tous les sources locauxune classe ne peut référencer une classe importée qu’en la référençant explicitement
vérification des types et
des paramètresde chaqueinstruction
“parade auxcompilateurshostiles...”
“élimination des conflits
d’exécutions”
protection des fichiers et des accès réseaux :les classes du “networking package” permettent de configurer la platforme avec différents niveaux de
paranoia : interdir tout accès réseau,...“maîtrise de l’origine des info.”
Utilisation d’une machine virtuelle
“ parade aux accèsmémoire illicites”
© Rémy Courdier (Révisions M. Gangat) 151996-2003- Java Présentation - Version du cours 3.0
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 etpour les applets, locales ou téléchargées
© Rémy Courdier (Révisions M. Gangat) 161996-2003- Java Présentation - Version du cours 3.0
Java et JavaScriptJavaScript ?
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émentairepermet la programmation événementielle à l’intérerieur d’une page HTML<SCRIPT LANGUAGE=“JavaScript”> function calcule(form) { ... }
</SCRIPT>
supporte le chargement d’un script depuis un autre site<SCRIPT SRC =“http:iremia.courdier.rc”>... </SCRIPT>
© Rémy Courdier (Révisions M. Gangat) 171996-2003- Java Présentation - Version du cours 3.0
Java et JavaScriptComparaison
JavaScript utilise un nombre restreint de types de données du langage Java
JavaScriptInterprété par le client - non compilépas de classes ni d’héritage,...Encapsulé dans HTMLDéclaration optionnelle des variables Références vérifiées à la l’exécutionPas de fonctionnalité graphiquesIntégration dans l’architecture sous-jacente de navigateursIssu de Netscape Corporation
Javacompilé avant exécution sur le clientOrienté objetApplets distinctes de HTMLDéclaration obligatoire des variables (typage fort)Références vérifiées à la compilationFonctionnalités graphiques complètes de JavaEnvironnement indépendant de navigateurs (sauf LiveConnect)Issu de Sun Microsystem
© Rémy Courdier (Révisions M. Gangat) 181996-2003- Java Présentation - Version du cours 3.0
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érencesjava.appletjava.awt,javax.swing : Interfaces Graphiquesjava.io: Accès aux I/O par fluxjava.net: Socket (UDP, TCP, multicast), URL, ...java.lang.reflect : Introspectionjava.beans : Composants logicielsjava.sql,javax.sql: Accès aux bases de donnéesjava.security : signature, cryptographie, authentificationjava.rmi : Remote Method Invocationjava.xml
© Rémy Courdier (Révisions M. Gangat) 191996-2003- Java Présentation - Version du cours 3.0
Plate-forme JAVA et librairies (API)Les librairies d’extensions Standards
Les Extensions StandardsJava security :
cryptography, digital signature, encryption and authentificationJava Media API :
2D, Video, Audio, MIDI, Animation, Share, Telephony, 3DJava 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) 201996-2003- Java Présentation - Version du cours 3.0
Plate-forme JAVA et librairies (API)La plate-forme
© Rémy Courdier (Révisions M. Gangat) 211996-2003- Java Présentation - Version du cours 3.0
Ecrire une applicationOutils
Outils : Téléchargement du JDKJava Developpement Kit http://java.sun.com/j2se/1.4.1/download.hlUn Editeur (Bloc note,IDE….)
DocumentationDocumentation sur les API http://java.sun.com/docs/Tutorielhttp://java.sun.com/docs/books/tutorial/index.hlGoogle
© Rémy Courdier (Révisions M. Gangat) 221996-2003- Java Présentation - Version du cours 3.0
Ecrire une applicationEn ligne de commande
Pré requisUn Editeur de texte
EtapesEcrire 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) 231996-2003- Java Présentation - Version du cours 3.0
Ecrire une applicationEn ligne de commande
EtapesCompiler le code source
javac HelloWorldApp.java
Un fichier contenant du bytecode sera généréHelloWorldApp.class
Executer le bytecodejava HelloWorldApp
© Rémy Courdier (Révisions M. Gangat) 241996-2003- Java Présentation - Version du cours 3.0
Ecrire une applicationAvec un IDE (1)
Pré requisECLIPSE www.eclipse.org
EtapesCréer un projet
File – New ProjectJava – Java Project
Choisir un nom & Cliquer sur FINISH
Raccourci vers eclipse.exe.lnk
© Rémy Courdier (Révisions M. Gangat) 251996-2003- Java Présentation - Version du cours 3.0
Ecrire une applicationAvec un IDE (2)
EtapesCréer une classe
File – New – ClassEntrer 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) 261996-2003- Java Présentation - Version du cours 3.0
Ecrire une applicationAvec un IDE (3)
EtapesCompiler le code source
Project – Build All
Executer le byte codeMenu Run – RunDans launch configurations, choisir Java Application, puis cliquer sur newDans l’onglet Main, cliquer sur search et choisir la classe HelloWorldAppCliquer sur Run
Autres fonctionnalités de EclipseDébuggeurComplétion de codeRefactoring…
© Rémy Courdier (Révisions M. Gangat) 271996-2003- Java Présentation - Version du cours 3.0
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.htmlhttp://www.javasoft.comhttp://java.sun.com/tutorial/index.html
Java programming centerhttp://developer.java.sun.com/developer/onlineTraining/new2java/overview.hl
Cours JAVAhttp://www.univ-reunion.fr/~courdier/cours/javahttp://www-sor.inria.fr/~dedieu/java/cours/http://iridia.ulb.ac.be/~cmolter/CoursJavaHome.hlhttp://www.improve-technologies.com/pages/Java/Supports_de_cours_Java_gratuits/
…
© Rémy Courdier (Révisions M. Gangat) 281996-2003- Java Présentation - Version du cours 3.0
ANNEXETerminologie
AppletAn 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.
AWTThe 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) 291996-2003- Java Présentation - Version du cours 3.0
ANNEXETerminologie
JavaBeansJavaBeans 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) 301996-2003- Java Présentation - Version du cours 3.0
ANNEXETerminologie
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) 311996-2003- Java Présentation - Version du cours 3.0
ANNEXETerminologie
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) 321996-2003- Java Présentation - Version du cours 3.0
ANNEXETerminologie
JDBCJDBC 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.
JDKJDK 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.
JINIThe 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) 331996-2003- Java Présentation - Version du cours 3.0
ANNEXETerminologie
Project SwingThe 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.
RMIRemote 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.
ServletsA 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.
top related