32
Cours "Réseaux et systèmes répartis" NFP 214 par Jacques LAFORGUE ([email protected] ) version du 27/11/2014 slide numéro 1 Présentation du langage JAVA

Présentation du langage JAVA...Le code java s’exécutant sur une client ne peut pas faire n’importe quoi, comme par exemple gérer les fichiers du système cible. Cours "Systèmes

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Présentation du langage JAVA...Le code java s’exécutant sur une client ne peut pas faire n’importe quoi, comme par exemple gérer les fichiers du système cible. Cours "Systèmes

Cours "Réseaux et systèmes répartis" NFP 214 par Jacques LAFORGUE ([email protected]) version du 27/11/2014 slide numéro 1

Présentation du langage JAVA

Page 2: Présentation du langage JAVA...Le code java s’exécutant sur une client ne peut pas faire n’importe quoi, comme par exemple gérer les fichiers du système cible. Cours "Systèmes

JAVA est un vrai langage

JAVA est un langage de programmation à part entièreL’objectif premier de ce langage était de définir un langage de programmation portable sur toutes les plates-formes existantes (1990). Il est devenu un langage moderne et incontournableA ne pas confondre avec Javascript

Cours "Systèmes et réseaux répartis" NFP 214 par Jacques LAFORGUE ([email protected]) version du 27/11/2014 slide numéro 2

Page 3: Présentation du langage JAVA...Le code java s’exécutant sur une client ne peut pas faire n’importe quoi, comme par exemple gérer les fichiers du système cible. Cours "Systèmes

Historique de Java

1993 : projet Oak(langage pour l'électronique grand public)

Mai 95 : Netscape prend la licenceSept. 95 : JDK 1.0 b1Mai 96 : JDK 1.0.2, première version réellement utilisableFin 96 : RMI, JDBC, JavaBeans, ...Fév. 97 : JDK 1.1Déc. 98 : Java 2 SDK 1.2, apparition du terme Plate-forme Java

Cours "Systèmes et réseaux répartis" NFP 214 par Jacques LAFORGUE ([email protected]) version du 27/11/2014 slide numéro 3

Déc. 98 : Java 2 SDK 1.2, apparition du terme Plate-forme Java1999 : Forte orientation de Sun vers le coté serveur

plate-forme J2EE : Servlets, JSP et serveurs d ’application.2000 : Java 2 SDK 1.32001 : Java 2 SDK 1.42006 Java 2 EE (SDK 1.5)2007 Java 2 EE (SDK 1.6)

Page 4: Présentation du langage JAVA...Le code java s’exécutant sur une client ne peut pas faire n’importe quoi, comme par exemple gérer les fichiers du système cible. Cours "Systèmes

JAVA est :

simple,orienté objet, familier, distribué, robuste, sûre, portable, dynamique

Cours "Systèmes et réseaux répartis" NFP 214 par Jacques LAFORGUE ([email protected]) version du 27/11/2014 slide numéro 4

dynamique et multithread

JAVA est plus qu'un langage

Page 5: Présentation du langage JAVA...Le code java s’exécutant sur une client ne peut pas faire n’importe quoi, comme par exemple gérer les fichiers du système cible. Cours "Systèmes

JAVA est robuste

A l’origine, c'est un langage pour les applications embarquées.Gestion de la mémoire par un garbage collector.Pas d’accès direct à la mémoire.Mécanisme d'exception.Accès à une référence null exception.compilateur contraignant (erreur si exception non gérée, si utilisation d’une variable non affectée, ...).Tableaux = objets (taille connue, débordement exception).

Cours "Systèmes et réseaux répartis" NFP 214 par Jacques LAFORGUE ([email protected]) version du 27/11/2014 slide numéro 5

Tableaux = objets (taille connue, débordement exception).Seules les conversions sûres sont automatiques.Contrôle des cast à l'execution

Page 6: Présentation du langage JAVA...Le code java s’exécutant sur une client ne peut pas faire n’importe quoi, comme par exemple gérer les fichiers du système cible. Cours "Systèmes

L'architecture de JAVA (1/3)

Cours "Systèmes et réseaux répartis" NFP 214 par Jacques LAFORGUE ([email protected]) version du 27/11/2014 slide numéro 6

Page 7: Présentation du langage JAVA...Le code java s’exécutant sur une client ne peut pas faire n’importe quoi, comme par exemple gérer les fichiers du système cible. Cours "Systèmes

L'architecture de JAVA (2/3)

Les Java SDK (Software Development Kit)J2SE (Java 2 Platform, Standard Edition)J2EE (Java 2 Platform Enterprise Edition)

JSTL : Java server page Standard Tag LibraryC'est un ensemble de tags personnalisés développé s ous la JSR 052 qui propose des fonctionnalités souvent rencontrées dan s les JSP :Tag de structure (itération, conditionnement ...) Internationalisation Exécution de requête SQL

Cours "Systèmes et réseaux répartis" NFP 214 par Jacques LAFORGUE ([email protected]) version du 27/11/2014 slide numéro 7

Exécution de requête SQL Utilisation de document XML

AVK permet d'évaluer le niveau de portabilité d'une application (après tout si on a choisi Java et J2EE c'est au moins en partie pour ses qualités de portabilité). Ce kit propose des outils pour vérifier de manière statique et dynamique (exécution de l'application) tout code J2EE 1.2, 1.3 ou 1.4.

Page 8: Présentation du langage JAVA...Le code java s’exécutant sur une client ne peut pas faire n’importe quoi, comme par exemple gérer les fichiers du système cible. Cours "Systèmes

L'architecture de JAVA (3/3)

JSF simplifie le développement d'interface utilisateur Web. Rendre indépendant la logique de présentation et ses rendus JSF permet de représenter des composants IHM et gérer leurs états, gérer leurs événements, valider les saisies, définir la navigation des pages, supporter l'internationalisation et accessibilité.

Cours "Systèmes et réseaux répartis" NFP 214 par Jacques LAFORGUE ([email protected]) version du 27/11/2014 slide numéro 8

Page 9: Présentation du langage JAVA...Le code java s’exécutant sur une client ne peut pas faire n’importe quoi, comme par exemple gérer les fichiers du système cible. Cours "Systèmes

JAVA est un LOO

JAVA est un langage orienté objet :Tout est classe (pas de fonctions) sauf les types primitifs (int, float, double, ...) et les tableauxToutes les classes dérivent de java.lang.ObjectHéritage simple pour les classesUne classe peut implémenter plusieurs interfaces : héritage multiple des méthodes.Les objets se manipulent via des référencesUne API objet standard est fournie

Cours "Systèmes et réseaux répartis" NFP 214 par Jacques LAFORGUE ([email protected]) version du 27/11/2014 slide numéro 9

Une API objet standard est fournieLa syntaxe est proche de celle de C

Page 10: Présentation du langage JAVA...Le code java s’exécutant sur une client ne peut pas faire n’importe quoi, comme par exemple gérer les fichiers du système cible. Cours "Systèmes

JAVA est portable

JAVA est portable :Le compilateur Java génère du byte code.La Java Virtual Machine (JVM) est présente sur Unix, Win32, Mac, OS/2, Linux, Netscape, IE, ...Le langage a une sémantique très précise.La taille des types primitifs est indépendante de la plate-forme.Java supporte un code source écrit en Unicode. Java est accompagné d'une librairie standard.

Cours "Systèmes et réseaux répartis" NFP 214 par Jacques LAFORGUE ([email protected]) version du 27/11/2014 slide numéro 10

Page 11: Présentation du langage JAVA...Le code java s’exécutant sur une client ne peut pas faire n’importe quoi, comme par exemple gérer les fichiers du système cible. Cours "Systèmes

Les "exécutables" de JAVA

Il n'y a pas vraiment d'exécutable au sens communTout programme Java est interprété

soit c'est une classe contenant une méthode mainsoit c'est un package qui contient une classe qui contient une méthode mainsoit c'est un applet qui s'exécute dans un AppletViewer ou un navigateur

Cours "Systèmes et réseaux répartis" NFP 214 par Jacques LAFORGUE ([email protected]) version du 27/11/2014 slide numéro 11

Page 12: Présentation du langage JAVA...Le code java s’exécutant sur une client ne peut pas faire n’importe quoi, comme par exemple gérer les fichiers du système cible. Cours "Systèmes

La classe JAVA

La création de classe est la base de l'architecture logicielle d'un programme JAVA. Elle représente le seul composant logiciel du langage. Il est impossible d'écrire un programme JAVA sans créer au moins une classe.Il est possible de créer des classes publiques, privées, ou abstraitesDepuis la version 1.2 de JDK, il est possible d'imbriquer les classes.Quelle que soit sa nature, une classe :

est constituée d' attributs (private, public, protected, final, static) et de méthodes

Cours "Systèmes et réseaux répartis" NFP 214 par Jacques LAFORGUE ([email protected]) version du 27/11/2014 slide numéro 12

méthodeshérite d'une autre classe (par défaut hérite de la classe Object)appartient ou non à un package

Le type "Record" n'existe pas dans le langage JAVA. La seule manière de créer une structure de données est de créer une classe dont chaque attribut est un élément de la structure de donnée. Cette contrainte oblige le programmeur de toujours créer des classes pour ses données.

Page 13: Présentation du langage JAVA...Le code java s’exécutant sur une client ne peut pas faire n’importe quoi, comme par exemple gérer les fichiers du système cible. Cours "Systèmes

Exemple d'un fichier JAVA

class Individu{

public String nom;public String prenom;public int age;public String toString(){

return(nom+" "+prenom+" ("+age+"ans)");}

}.....public class Couple{

Individu mari;

Cours "Systèmes et réseaux répartis" NFP 214 par Jacques LAFORGUE ([email protected]) version du 27/11/2014 slide numéro 13

Individu mari;Individu femme;Individu enfants[];public void afficher(){

int i;System.out.println(mari.toString+" marié à "+femme.toString());String s=new String();for(i=0;i<enfants.length;i++)

s=s+enfants[i].toString()+" ";System.out.println("Enfants: "+s);

}.....

}

Page 14: Présentation du langage JAVA...Le code java s’exécutant sur une client ne peut pas faire n’importe quoi, comme par exemple gérer les fichiers du système cible. Cours "Systèmes

Les phases de génération

Fichiers sources .java de type texteappartenant ou non à un packagecontenant une ou plusieurs classes mais une seule classe publique

La classe publique contenue dans le fichier doit être de même nom que celui du fichier.Les classes non publiques ne sont pas visibles par les autres classes des autres fichiers. On appelle ces classes des classes locales de l'unité de programmation (à ne pas confondre avec les classes imbriquées).

Il n’existe pas de séparation entre l’interface et l’implémentation d’une classe, comme cela peut être le cas en C++ ou en ADA. Cela est inutile en JAVA. Tout le code nécessaire à l’écriture d’une classe est dans son fichier .java

Cours "Systèmes et réseaux répartis" NFP 214 par Jacques LAFORGUE ([email protected]) version du 27/11/2014 slide numéro 14

Tout le code nécessaire à l’écriture d’une classe est dans son fichier .java associé.Il n’existe plus de .h !!!

Compilation des fichiers sources en .classLa compilation d'un fichier .java génère autant de fichier .class que de classesdéfinies dans le fichier. Cela impose que toutes les classes Java doivent être de nom différent, dans un même packageNous verrons que l'utilisation des ces fichiers générés peut devenir complexe (ordre de l'appel en fonction de CLASSPATH, chargement dynamique, transfert à travers le réseau, ...).

Page 15: Présentation du langage JAVA...Le code java s’exécutant sur une client ne peut pas faire n’importe quoi, comme par exemple gérer les fichiers du système cible. Cours "Systèmes

La machine virtuelle de JAVA

La phase de compilation ne génère pas du code directement exécutable mais un code appelé P-CODE qui est un code intermédiaire. Ce code est ensuite interprété durant la phase d’exécution. Ceci confère à JAVA deux propriétés très importantes :

le langage JAVA est un langage à liaison dynamique,le code est portable immédiatement sur des plates-formes différentes

Les trois machine virtuelles les plus connues sont :java la commande d'exécution de programme autonomeun AppletViewer qui visualise un applet

Cours "Systèmes et réseaux répartis" NFP 214 par Jacques LAFORGUE ([email protected]) version du 27/11/2014 slide numéro 15

un AppletViewer qui visualise un appletun navigateur (Netscape,InternetExplorer, ...)

Ce principe d'interprétation de pseudo-code permet une portabilité de toutes les classes JAVA sur toute plate-forme qui possède un navigateur. Cela explique la généralisation de la création d'applets.De plus, un certain nombre de contrôle peut être réalisés durant l'interprétation afin d'interdire certaines instructions dans certains cas de figure. Comme par exemple: un applet Java ne peut pas exécuter des instructions systèmes.

Page 16: Présentation du langage JAVA...Le code java s’exécutant sur une client ne peut pas faire n’importe quoi, comme par exemple gérer les fichiers du système cible. Cours "Systèmes

Compilation et règles de dépendance

Il n'existe plus de "makefile". Compiler une classe ou un programme Java consiste à faire la compilation de la classe "principale". Le compilateur compilera les autres classes Java automatiquement si elles ont évoluées. La recherche de ces classes se fait en fonction du "classpath"

Cours "Systèmes et réseaux répartis" NFP 214 par Jacques LAFORGUE ([email protected]) version du 27/11/2014 slide numéro 16

Page 17: Présentation du langage JAVA...Le code java s’exécutant sur une client ne peut pas faire n’importe quoi, comme par exemple gérer les fichiers du système cible. Cours "Systèmes

L'exécution d'un programme JAVA (1/2)

Le langage Java est dynamique et s’adapte à l’évolution du système sur lequel il s’exécute. Les classes sont chargées au fur et à mesure des besoins, à travers le réseau s’il le faut. On peut parler de distribution des classes avant celle des objets.La sécurité est un point fort de Java. Des principes et des classes spécifiques permettent de contrôler l’exécution du code Java sur une machine. Le code java s’exécutant sur une client ne peut pas faire n’importe quoi, comme par exemple gérer les fichiers du système cible.

Cours "Systèmes et réseaux répartis" NFP 214 par Jacques LAFORGUE ([email protected]) version du 27/11/2014 slide numéro 17

comme par exemple gérer les fichiers du système cible.

Page 18: Présentation du langage JAVA...Le code java s’exécutant sur une client ne peut pas faire n’importe quoi, comme par exemple gérer les fichiers du système cible. Cours "Systèmes

L'exécution d'un programme JAVA (2/2)

Cours "Systèmes et réseaux répartis" NFP 214 par Jacques LAFORGUE ([email protected]) version du 27/11/2014 slide numéro 18

Page 19: Présentation du langage JAVA...Le code java s’exécutant sur une client ne peut pas faire n’importe quoi, comme par exemple gérer les fichiers du système cible. Cours "Systèmes

Le typage

JAVA est un langage fortement typé. Toute donnée utilisée appartient à un type de classe (ou interface) bien précis. Par contre le mécanisme d'héritage et d'abstraction inhérent à tout langage objet permet de "caster" un objet en un autre type de donnée que sa déclaration.Ce fort typage est essentiel afin d'assurer la robustesse du code développé à travers les nombreux contrôles de compilation de JAVA.Toute entité d'un langage JAVA doit être déclarée, puis initialiser avant son utilisation. L'initialisation d'un objet est assurée par le(s) constructeur(s) définit(s)

Cours "Systèmes et réseaux répartis" NFP 214 par Jacques LAFORGUE ([email protected]) version du 27/11/2014 slide numéro 19

L'initialisation d'un objet est assurée par le(s) constructeur(s) définit(s) dans sa classe d'appartenance. Deux familles de type :

les types primitifsles types d'objet (classes, interfaces)

L'interface joue un grand rôle dans la programmation en Javacontrat, abstraction, généricité, polymorphisme, délégation

Page 20: Présentation du langage JAVA...Le code java s’exécutant sur une client ne peut pas faire n’importe quoi, comme par exemple gérer les fichiers du système cible. Cours "Systèmes

La syntaxe du langage

La syntaxe du langage JAVA est très rigoureuse et grâce à son fort typage la majorité des erreurs de développement est détectée durant la phase de compilation.

Par contre, cela implique une certaine habitude à utiliser les mécanismes de conversion de type (casting).

On peut résumé la situation en disant qu’il ne faut pas confondre “ fortement ” avec “ souplesse ”. Bien que JAVA type toutes ces données et qu’il soit rigoureux sur ses contrôles, de part la nature objet de ces données, JAVA rend compatible la plupart des types entre eux (dans la mesure où ces types appartiennent même de loin à une autre classe).

Cours "Systèmes et réseaux répartis" NFP 214 par Jacques LAFORGUE ([email protected]) version du 27/11/2014 slide numéro 20

mesure où ces types appartiennent même de loin à une autre classe).La syntaxe générale du langage JAVA est celle du langage C et C++.

On peut résumer la situation en disant que JAVA a pris ce qu'il y avait de bon dans le C/C++ et éliminer ce qui était mauvais ou peu recommandable à utiliser dans un vrai langage objet.

On retrouve notamment toutes les structures de contrôles du langage C et la forme générale de déclaration d'une classe du C++. Il y a eu notamment une grande simplification pour la déclaration des méthodes et la façon de passer les paramètres.

Page 21: Présentation du langage JAVA...Le code java s’exécutant sur une client ne peut pas faire n’importe quoi, comme par exemple gérer les fichiers du système cible. Cours "Systèmes

Les mécanismes de JAVA (1/3)

Allocation et désallocation dynamique et transparente des objets Ainsi, la notion de "destructeur" disparaît complètement du langage Il existe des cas exceptionnels pour lesquels il est nécessaire de définir un destructeur. Ce sont les cas où des allocations de ressources ne sont pas assurées par le langage (programmation système, utilisation du langage C, …) L'activation du garbage-collector se fait durant l'exécution du programme. Pour des raisons de performances, il peut être utile de maîtriser son activation. Pour cela, la classe System contient la méthode gc() permettant d'activer le garbage-collector.

Cours "Systèmes et réseaux répartis" NFP 214 par Jacques LAFORGUE ([email protected]) version du 27/11/2014 slide numéro 21

d'activer le garbage-collector. Plus de pointeurs

La notion de pointeur en tant qu'élément du langage disparaît complètement.

Ainsi, la grande majorité des erreurs désastreuses de pointeurs mal initialisés, confondus, ... n'existent plus en JAVA.Les objets sont référencésLes tableaux contiennent soit des types primitifs, soit des référencesLes tableaux sont des objets au sens LOO

Page 22: Présentation du langage JAVA...Le code java s’exécutant sur une client ne peut pas faire n’importe quoi, comme par exemple gérer les fichiers du système cible. Cours "Systèmes

Les mécanismes de JAVA (2/3)

Les exceptionsLa gestion des exceptions est le seul moyen moderne et robuste de gérer les cas d'erreur d'un programme. Les exceptions en JAVA sont de véritables objets et héritent toutes de la classe prédéfinies Exception. Il est ainsi possible de créer ses propres "familles" d'exception sous forme de sous-classes et de particulariser les traitements d'erreur.Un grand nombre d'exceptions prédéfinies existent. Chacune d'entre elles est liée à une classe bien précise.

Cours "Systèmes et réseaux répartis" NFP 214 par Jacques LAFORGUE ([email protected]) version du 27/11/2014 slide numéro 22

Chacune d'entre elles est liée à une classe bien précise.Toutes les erreurs d'exécution sont récupérées par ces dernières et peuvent être traitées par le programmeur. La pile des appels successifs des méthodes qui a entraîné l'erreur est accessible et permet de situer très facilement le problème. La difficulté réside dans la connaissance de toutes ces exceptions qui sont très nombreuses. Chaque package défini ses exceptions.

Page 23: Présentation du langage JAVA...Le code java s’exécutant sur une client ne peut pas faire n’importe quoi, comme par exemple gérer les fichiers du système cible. Cours "Systèmes

Les mécanismes de JAVA (3/3)

La réflexivité du langageexploration du contenu des classes et des interfacescréation dynamique de classeinvocation par nom des éléments du langage

Le chargement dynamique des classesLes mutex sont intégrés dans les classes du langage

Cours "Systèmes et réseaux répartis" NFP 214 par Jacques LAFORGUE ([email protected]) version du 27/11/2014 slide numéro 23

Page 24: Présentation du langage JAVA...Le code java s’exécutant sur une client ne peut pas faire n’importe quoi, comme par exemple gérer les fichiers du système cible. Cours "Systèmes

Le passage de paramètre

L'unique forme de passage des paramètres à une méthode est le passage par valeurLa seule manière de retourner un résultat est de retourner cette valeur par la valeur de la méthodeLes méthodes Java peuvent retourner un objet, un type primitif ou un void

L'objet retourné est unique Cela impose de formaliser sous forme d'objet les valeurs retournées (ce qui n'est pas plus mal en programmation objet).

Pour changer le contenu d'un objet le passage par valeur est suffisant

Cours "Systèmes et réseaux répartis" NFP 214 par Jacques LAFORGUE ([email protected]) version du 27/11/2014 slide numéro 24

Pour changer le contenu d'un objet le passage par valeur est suffisant puisque c'est la référence à l'objet qui est passée en paramètre

Mais attention à cette pratique: elle est contraire à tous les usages d'une programmation objet

Page 25: Présentation du langage JAVA...Le code java s’exécutant sur une client ne peut pas faire n’importe quoi, comme par exemple gérer les fichiers du système cible. Cours "Systèmes

Les API de JAVA (1/3)

Cours "Systèmes et réseaux répartis" NFP 214 par Jacques LAFORGUE ([email protected]) version du 27/11/2014 slide numéro 25

Page 26: Présentation du langage JAVA...Le code java s’exécutant sur une client ne peut pas faire n’importe quoi, comme par exemple gérer les fichiers du système cible. Cours "Systèmes

Les API de JAVA (2/3)

Cours "Systèmes et réseaux répartis" NFP 214 par Jacques LAFORGUE ([email protected]) version du 27/11/2014 slide numéro 26

Page 27: Présentation du langage JAVA...Le code java s’exécutant sur une client ne peut pas faire n’importe quoi, comme par exemple gérer les fichiers du système cible. Cours "Systèmes

Les API de JAVA (3/3)

Cours "Systèmes et réseaux répartis" NFP 214 par Jacques LAFORGUE ([email protected]) version du 27/11/2014 slide numéro 27

Page 28: Présentation du langage JAVA...Le code java s’exécutant sur une client ne peut pas faire n’importe quoi, comme par exemple gérer les fichiers du système cible. Cours "Systèmes

Propriétés avancées

Java est sécuriséIndispensable avec le code mobile.Pris en charge dans l'interpréteur.Trois couches de sécurité :

Verifier : vérifie le byte code.Class Loader : responsable du chargement des classes.Security Manager : accès aux ressources.

Code certifié par une clé.

Java est multi-threadIntégrés au langage et aux API :

synchronized

Cours "Systèmes et réseaux répartis" NFP 214 par Jacques LAFORGUE ([email protected]) version du 27/11/2014 slide numéro 28

synchronized garbage collector dans un thread de basse prioritéjava.lang.Thread, java.lang.Runnable

Accès concurrents à objet gérés par un monitor.Implémentation propre à chaque JVM.

Java est distribuéAPI réseau (java.net.Socket, java.net.URL, ...).Chargement de code dynamique.Applet.Servlet.Remote Method Invocation.JavaIDL (CORBA)

Page 29: Présentation du langage JAVA...Le code java s’exécutant sur une client ne peut pas faire n’importe quoi, comme par exemple gérer les fichiers du système cible. Cours "Systèmes

Résumé des différences avec le C++ (1/2)

Pas de structures ni d’unionsPas de typedefPas de préprocesseurPas de variables ni de fonctions en dehors des classesPas d'héritage multiple de classesPas de "template" (sauf depuis la 1.5)Pas de surcharge d’opérateursPas de passage par référence des paramètres

Cours "Systèmes et réseaux répartis" NFP 214 par Jacques LAFORGUE ([email protected]) version du 27/11/2014 slide numéro 29

Pas de passage par référence des paramètresPas de pointeurs, seulement des référencesExceptions : plus formels et plus étendues

Page 30: Présentation du langage JAVA...Le code java s’exécutant sur une client ne peut pas faire n’importe quoi, comme par exemple gérer les fichiers du système cible. Cours "Systèmes

Résumé des différences avec le C++ (2/2)

Garbage-collector intégré: inutile de détruire les objets créésPas de « makefile »Packages = répertoiresArchivages (.jar)Les tableaux sont des objetsLes chaînes de caractères sont toutes des constantesLa syntaxe est celle du C++Pas de .h

Cours "Systèmes et réseaux répartis" NFP 214 par Jacques LAFORGUE ([email protected]) version du 27/11/2014 slide numéro 30

Pas de .hL'interfaceLes commentaires sont ceux du C++ (// /*..*/)Commentaires de documentation (/**..*/)Pas de "dynamic-cast" : un cast uniqueJava est un langage objet à liaison dynamiqueA partir de la version 1.5, "auto-boxing" des types primitifs

Page 31: Présentation du langage JAVA...Le code java s’exécutant sur une client ne peut pas faire n’importe quoi, comme par exemple gérer les fichiers du système cible. Cours "Systèmes

Les outils (1/2)

Développement et exécutionEnvironnements de développement :

Sun JDK 1.1.x (compilateur, JVM, appletviewer,...)Sun Java 2 SDK 1.x (x > 2) (compilateur, JVM, appletviewer,...)java-mode emacsIDE : IBM Visual Age, Borland JBuilder, Sun Forte,Symantec Visual Café, Metrowerks CodeWarrior, MS Visual J++, ...

Browsers :Netscape NavigatorInternet Explorer

Cours "Systèmes et réseaux répartis" NFP 214 par Jacques LAFORGUE ([email protected]) version du 27/11/2014 slide numéro 31

Internet ExplorerSun HotJava

Machines virtuellesSun JREAutre JVM : IBM, ...

AutresConvertisseur : c2j, j2c, Tabo...Décompilateur/ 'obscurcisseur' : Mocha / CremaGénérateur de parseurs : JavaCC, JavaCUPProfiler : Jprobe, Optimize It, Quantify, ...

Page 32: Présentation du langage JAVA...Le code java s’exécutant sur une client ne peut pas faire n’importe quoi, comme par exemple gérer les fichiers du système cible. Cours "Systèmes

Les outils (2/2)

Java / Software Développement Kitjavac : compilateur de sources javajava : interpréteur de byte codeappletviewer : interpréteur d'appletjavadoc : générateur de documentation (HTML, MIF)javah : générateur de header pour l'appel de méthodes nativesjavap : désassembleur de byte codejdb : debuggerjavakey : générateur de clés pour la signature de code

Cours "Systèmes et réseaux répartis" NFP 214 par Jacques LAFORGUE ([email protected]) version du 27/11/2014 slide numéro 32

javakey : générateur de clés pour la signature de codermic : compilateur de stubs RMIrmiregistry : "Object Request Broker" RMI….