le langage java - cloudfront.net

publicité
Annexe B :
Le langage java
B. Le Langage JAVA
1. PRESENTATION DU LANGAGE
Java est un langage orienté objet, simple et compact, très proche du C++,
mais avec une certaine simplification de quelques mécanismes ( comme la
gestion automatique de la mémoire et l’absence des pointeurs …).
Ses caractéristiques sont à l’origine de son sucée comme langage privilégie
sur le Web.
Simple, ne veut pas dire que c’est un langage aisé à maître en œuvre, mais
qu’il supprime quelques difficultés rencontrées en C++, comme sa
surcharge d’opérateurs, l’héritage multiple de la gestion de la mémoire .
Java est composé de 3 éléments :
- Un langage de programmation.
- Une machine virtuelle ( JVM ).
- Un ensemble de classes standard réparties dans
différentes API.
2. PRINCIPALES CARACTERISTIQUES DE JAVA
2.1.
Java est orienté objet
Au–delà des concepts qu’il met en œuvre ( notions de classe,
d’instance, de méthode, d’héritage ), il permet de développer des
applications professionnelles robustes et maintenables.
2.2.
Java est orienté réseau
Il permet d’accéder à des ressources distribuées, n’importe où sur
l’Internet ou l’Intranet, via des URL, aussi aisément qu’un accès à des
fichiers locaux.
2.3.
Java est portable
Il s’appuie sur un ensemble de bibliothèques ( le code est indépendant
de la plate –forme matérielle).
Du fait que le programme source est compilé en pseudo code, toute
machine possède à l’intérieur un interpréteur Java pourra l’interpréter.
De plus, l’implémentation physique des différents types de données est
indépendante de la machine d’accueil contrairement à C et C++.
Annexe B :
2.4.
Le langage java
Java est sûr
-Au niveau du langage
La gestion de la mémoire et l’absence des pointeurs assurent un certain
niveau de sécurité.
-Au niveau de l’environnement
Un gestionnaire de sécurité, qui teste la qualité et le format du pseudo-code,
est inclus dans le compilateur.
En fin, l’accès aux fichiers externes du client est sévèrement limité ( même
interdit par certains navigateur ), mais peut être explicitement étendu en
fonction de besoins ponctuels.
Le compilateur Java génère un byte code exécutable par la JVM. Grâce à
ce mécanisme un programme Java est exécutable dans n'importe quel
environnement disposant d'une JVM. Cela permet aussi de faire du
chargement dynamique de classes. Le chargement des classes est géré par
un classloader redéfinissable et permettant, par exemple, de
télécharger le byte code d'une classe par HTTP. Une fois la classe chargée
dans la JVM, il est possible de créer des instances ou de faire de
l'introspection.
Annexe B :
Le langage java
3. LES API DE JAVA
Java est accompagné d'une librairie standard composée, actuellement, de
500 classes réparties en plus de 20API dont :
 JDK API :
 java.util : classes utilitaires (gestion des dates, tableaux
dynamiques, piles, ...)
 java.io : manipulation des entrées/sorties sous forme de flux.
 java.net : accès réseaux via les sockets TPC, les
datagrammes UDP, le multicast et les URL.
 java.awt et javax.swing : classes permettant de
construire une interface graphique (reposant sur le système de
fenêtrage de la plateforme).
 Java entreprise API
 jdbc : accès homogène aux bases de données.
 rmi : invocation de méthodes sur des objets distribués.
 javaIDL : mapping Java pour CORBA.
 jndi* : interface d'accès unifiés aux service d'annuaires.
 jts : accès aux services transactionnel.
 Java Beans API : architecture de composants logiciels
 Java Security API : signature digitale, cryptage et authentification
 Java Server API : classe pour le développement de serveurs extensibles
grâce au concept de Servlets
 Java Commerce API* : classes pour le commerce électronique
 Java Media API* : classes pour le multimédia (java Media Framework,
java 2D, java 3D, java Animation, java Telephony, java Speech, ...)
 Java Management API : classes pour l'administration réseau
(*) En cours d'élaboration.
4. NOTIONS DE BASES
4.1.
Les Objets de Java
Alors dans une programmation dite structurée, les données et
instructions sont dissociées au niveau du code(La partie données décrit
les structures de données et la partie procédures manipule ses données ).
La programmation objet s’acharne à les rassembler, données et
procédures sont en capsulées, C’est à dire regroupées dans une entité :
L’Objet.
4.2.
Les classes java
Une classe est la description d’une famille d’objets ayant la même
structure et le même comportement. Elle regroupe un ensemble de
données et de procédures ou des méthodes.
Chaque classe possède deux types deux composants :
- La partie statique : les données qui sont des champs nommées
pouvant recevoir une valeur.
Annexe B :
-
Le langage java
La partie dynamique : les procédures ou les méthodes qui
représentent le comportement de l’objet.
4.3. La notion d’héritage
L’héritage donne à tout objet la possibilité d’utiliser les propriétés et les
méthodes appliquées à un objet dont il dérive. Un modèle qui hérite, peut
évidemment décrire en plus des variables et méthodes qui peuvent à leurs
tours être héritées d’ un autre modèle.
4.4. Le polymorphisme
Le polymorphisme est une technologie qui permet d’envoyer un même
message à des objets issus de classes différentes. Les objets acquièrent ainsi
la capacité de répondre à la requête suivant des règles de comportement
propre à leur classe.
4.5. L’encapsulation
Un programme contient deux composants indissociables : les données et le
code. En programmation structurée classique, le développeur découpe son
application en fonctions et utilise un nombre irréductible de variables et
constantes.
Il se concentre alors sur le développement de ces routines au détriment des
données. Souvent alors l’ajout de nouveau pointeurs n’est pas
automatiquement pris en compte par le code déjà existant. Face à ces
problèmes coûteux en maintenance, la programmation objet fourni une
solution avec le concept d’encapsulation : données et procédure sont
regroupées dans un élément : la classe.
4.6.
Les applications
Une application java est un programme général écrit dans le langage java et
qui ne nécessite aucun navigateur ou une interaction obligatoire avec un
serveur Web pour son exécution.
Par exemple le programme SUN Hotjava est une application java.
L’application se rapproche de la notion habituelle de programme, hormis le
fait qu’elle est interprétée au fur et à mesure par l’interpréteur java.
Une application est un fichier local présent sur le client ( et non télécharger
de puis un serveur ).
L’application correspond à la définition d’une nouvelle classe, qui doit
posséder un point d’entrée : la méthode main().
On exécutera cette application à partir du système d’exploitation, en faisant
appel à l’interpréteur et en lui passant le nom du fichier .class en paramètre
d’entrée .
Annexe B :
4.7.
Le langage java
Les applets
L’applet java est une application particulière, stockée dans un serveur Web
et télécharger par le navigateur, puis exécutée et interprétée par le client.
L’applet est exécutée automatiquement, sans qu’il faille cliquer ou
déclencher un avènement particulier, dés le téléchargement de la page
HTML.
Les résultats ne sont pas envoyer à la sortie standard comme pour
l’application, mais à l’intérieur de la page d’appel, selon des méthode
d’affichage particulières.
Une applet est une classe Java compilée. Cette classe hérite d'une classe
mère (java.applet.Applet) qui lui donne une certaine interface
(init(), start(), paint(), stop()).
L'applet spécifie son comportement en redéfinissant les méthodes de cette
interface. Les applets sont véhiculées dans les pages HTML. Lorsqu'un
browser, compatible Java (i.e. : possèdant une JVM), reçoit une page HTML
contenant l'URL d'une applet, il télécharge (par HTTP) le code de cette
classe, crée une nouvelle instance, lui alloue une zone dans la page HTML
et enchaîne l'invocation des méthodes propre à l'applet (init(), start(), ...).
C'est alors une véritable application qui s'exécute dans la page HTML, qui
peut construire et gérer une interface graphique, créer de nouveaux threads,
ouvrir des connections réseau, etc. Néanmoins, pour des raisons évidentes
de sécurité, l'applet est soumise au Security Manager du browser qui peut
lui interdire (c'est le cas pour Netscape Navigator et Internet Explorer)
l'accès en lecture et en écriture au disque du client, les connections réseau
sur une autre machine que celle d'où elle provient, le lancement de
processus, le chargement d'une libraire partagée, etc.
Grâce aux applets on peut envisager de nouvelle perspective pour le Web en
diffusant :
- Des applets affichants des ressources, éventuellement
interactives, que ne savent pas gérer les browsers
(documents structurés, images 3D, animations, ….).
- Des
applications
traditionnelles
(outils
bureautiques,
applications pédagogiques , jeux )
- Des client d'applications distribuées(accès aux bases de données,
forum de discutions, jeux multi-joueurs, ...)
La transformation d'une application Java (possèdant une interface
graphique) en applet ne nécessite que quelques lignes de code en plus. Ceci
permet, pour un coût unique, de développer une application qui pourra être
exécutée localement ou bien diffusée sur le Web.
Annexe B :
Le langage java
Figure : Les étapes d’exécution d’une applet
5. QU’EST CE QU’APPORTE JAVA ?
Java offre un environnement complet et homogène de développement
d'applications généralistes. Il permet des conceptions élégantes et souples
(interfaces, exceptions, threads, ...) et des implémentations rapides
(nombreuses API), portables (byte code), robustes (exceptions) et réutilisables
(pacakges et Java Beans).
L'engouement pour Java d'une grande partie de la communauté informatique
(constructeurs, éditeurs, développeur, chercheurs et enseignants) lui assure un
certain dynamisme. La portabilité et la réutilisabilité du code Java permettent
au programmeur de voir ses développements diffusés à grande échelle.
Du point de vue de la distribution, l'apport essentiel de Java est la possibilité
de télécharger dynamiquement des classes et de faire de l'introspection sur ces
classes (renseignements sur les attributs et les méthodes, instanciation,
invocation de méthodes connues seulement à l'exécution, ...). Ces
mécanismes, ajoutés aux classes de sérialisation (i.e. : la possibilité de
convertir une instance en une suite d'octets et vice-versa) sont les couches de
base pour le développement de mécanismes de plus haut niveau tel que RMI,
JavaSpace ou les aglets.
Tout ceci permet la mise en place de systèmes distribués à moindre coût et
avec une grande portabilité.
Annexe B :
Le langage java
6. QUE MANQUE-T-IL A JAVA ?
Dans ce suit on site quelques points noirs :





La lenteur est le principal point faible de Java. Les techniques de
compilation à la volée (JIT) devrait permettre d'atteindre des vitesses
proches de celle d'un code compilé. Plusieurs JVM intégrant ce concept
sont en cours de développement. De son coté, Sun a annoncé à la
conférence JavaOne qu'une nouvelle architecture de JVM était à l'étude et
qu'elle devrait apporter des performances équivalentes à un programme
binaire sans recourir à un JIT.
Certaines API du JDK , sont encore en cours de spécifications et de
nouvelles API sont présentées tous les mois. D'autre part, le client doit être
équipé d’un browser compatible à la version de java utilisée sinon on doit
développer les applets en 1.0.2 et donc à se priver des apports de la 1.1 et
1.2 ….(RMI, sérialisation, beans, ...).Ce qui a poussé Netscape et Microsoft
ont annoncé une mise à niveau de leur browser .
Des API mieux conçues. Certaines API sont très décevantes ou incomplètes
(e.g. : la classe String est pauvre, on ne peut pas faire de select sur les
sockets, ...).
Des outils de développement. Le debugger Java est rudimentaire et ne
possède pas d'interface graphique, des profilers viennent juste d'apparaître
et il n'existe pas de générateur d'interfaces graphiques simple d'emploi.
Une JVM supportant la migration d'objets.
La migration se décompose en 3 parties : la migration du comportement (ce
que permet le téléchargement de classes), la migration de l'état (ce que
permet la sérialisation) et la migration du contexte d'exécution, pour
laquelle Java n'offre pas de solutions. Ceci n'est nécessaire que lorsque
l'objet est géré dans un thread indépendant (sinon l'objet est dans un état
stable). Bien que l'on puisse suspendre puis redémarrer un thread, il n'est
pas possible de faire migrer une thread entre deux JVM car Java n'offre
aucune solution pour connaître et gérer le contexte d'exécution d'un thread.
Les systèmes d'agents mobiles (Aglet, Mole , JAT,….), pour lesquels la
migration est fondamentale, contourne le problème en avertissant l'objet
avant sa migration afin qu'il se met dans un état stable, puis en informant
l'objet, après sa migration, qu'il peut reprendre son exécution.
Annexe B :
Le langage java
7. CONCLUSION
En moins de deux ans, Java s'est imposé sur le Web et est de plus en plus
reconnu en tant que langage de développement. Java est devenu primordial
pour Sun car c'est le cheval de Troie qui va lui permettre de pénétrer le marché
juteux de l'Intranet et d'imposer sa technologie dans les architectures des
Network Computeur.
Pour renforcer la crédibilité de Java, Sun passe de nombreux accords de
développement avec les grands noms du marché, fait un gros effort sur les API
et a entamé une procédure de standardisation de Java.
Java a intégré l'informatique répartie, fournit plusieurs API dans ce sens et
offre les couches de bases pour le développement rapide d'application
distribuées.
Peut-on échapper à Java ? Non ! Java va devenir incontournable pour car :
a) il intègre beaucoup d'innovations attendues par les développeurs.
b) Sun se donne les moyens de ses ambitions.
c) il offre une alternative à Microsoft.
Pour ce dernier point, il va attirer tous les éditeurs qui ne veulent plus être liés
aux API Windows pour diffuser leurs produits (Corel et Applix vont dans ce
sens), tous ce qui ne veulent pas voir Microsoft dominer le marché de l'intranet
(Netscape, Lotus, Novell, Apple) et ceux qui veulent imposer les NC (Sun,
IBM et Oracle).
Téléchargement