|
HISTORIQUE JAVA
Les débuts de Java remontent à avril 1991, quand un petit groupe d'employés de Sun ont
été déplacés dans un
autre département pour travailler à un projet baptisé 'Green' voué à la réalisation
d'application électronique commerciales.
L'équipe Green était libre de faire ce qu'elle voulait. Sa première mission fut de
créer un appareil capable de
controler plusieurs équipements électroniques é la fois. Un langage fut créé à cette
intention, le langage Oak, dont
les premiers pas remontent à aout 1991. Le nom Oak, trop proche d'une autre marque, fut
rebaptisé Java en 1995.
L'annonce officielle de Java et HotJava date, quant à elle, du salon SunWorld 1995. Le
projet Green était
originellement orientéé vers la création de systèmes d'exploitation pour Personal
Digital Assistant, set-top boxes
etc.
Le projet initial fut dissout et la technologie
recentre vers le CD-ROM, le multimédia en ligne et les environnements réseau.
Le maître d'uvre de Java est James Gosling, qui commence par vouloir étendre le
C++ avant de réaliser le
premier compilateur Java écrit en langage C. Arthur Van Hoff implanta le compilateur Java
en Java lui-même à la
fin 1994.
Architecture de Java.
L'avantage le plus important de Java est probablement sa portabilité, puisqu'il peut
tourner sur n'importe quelle
machine disposant d'un interpréteur Java. Cette portabilité est fondamentale sur
Internet, où un nombre
important de machines et systèmes d'exploitation différents inondent le marché.
Dans un environnement interprété, le code Java n'est conçu pour aucune plate-forme
spécifique mais est une
sorte de code intermédiaire qui doit être traduit en code natif machine par un programme
particulier faisant office
de compilateur. Le code intermédiaire ou bytecode est conçu pour une machine qui
n'existe pas, ou plutôt une
Java Virtual Machine. Cela s'explique par la lenteur habituelle des interpréteurs,
obligés de décoder chaque ligne
de code avant leur exécution. Java pallie à cette lenteur par une sorte de première
compilation générant du code
plus rapide à convertir en code natif.
Cette portabilité va jusqu'à codifier une taille unique pour chaque type de données.
Même si Windows 3.1 stocke
ses entiers sur 16 bits, Windows 95 sur 32 ou un DEC Alpha sur 64 bits, un entier Java a
la même taille mémoire
dans toutes ses implémentations.
PETIT
Java est tout petit. L'interpréteur de base tient dans 40 Ko plus 175 Ko pour le support
des threads soit 215 Ko
seulement.
JAVA VIRTUAL MACHINE
Java est décrit à travers une machine virtuelle ou Java Virtual Machine, un modèle
abstrait et logique incluant un
jeu d'instructions, un jeu de registres, un stack, un heap et une espèce de segment texte
baptisé ici "method
area".
JVM est l'équivalent d'un ordinateur virtuel résidant entièrement en mémoire. Cette
JVM doit être implentée sur
chaque plate-forme. Une JVM fournit un niveau d'abstraction entre le programme Java
compilé et une
plate-forme matérielle.
JAVA SOURCE CODE
Le code source Java est compilé sous forme de bytecode exécuté par la JVM. Le
compilateur lava lit un fichier
avec extension. Java et le convertit en bytecodes dans un fichier à extension. Class.
Ensuite, la JVM découpe le
bytecode du fichier.class en une séquence d'instructions. Chaque instruction consiste en
Ullopcode suivi
d'éventuels arguments.
JAVA STACK
L'adressage dans la JVM se fait sur 32 bits permettant l'accès à 4 Go de mémoire.
Chaque registre peut contenir
une adresse 32 bits. Chaque méthode est limitée à 32 Ko.
GARBAGE-COLLECTIONHEAP
Le hcap est la portion de mémoire dans laquelle sont allouées les instances de classe.
L'environnent runtime
garde une trace des références à chaque objet et libère automatiquement la mémoire
associée à un objet qui
n'est plus référencé. Le gartage collecter tourne comme thread en tâche de fond et
s'active pendant les périodes
d'inactivité du processeur.
INTERPRETE
Strictement parlant, Java est un langage interprété, bien que nous venons d'évoquer son
aspect compilé. En
effet, tout les codes de la JVM doivent être interprétés par chacune des plates-formes.
L'interprétation s'opère via
un navigateur World Wide Web ou un environnement runtime spécial.
JUSTIN TIME COMPILER
Un compilateur Just-in-Time ou JIT compile des méthodes Java en code natif. Il génère
du code natif pour une
plate-forme et n'est donc plus portable.
ROBUSTE
Java se veut robuste dans la mesure où le langage, fortement typé, permet moins de
"bidouillages" que le
langage C, par exemple. Des bugs classiques de programmeurs C comme le dépassement de
tableau sont
impossibles.
C et C++ sont plus difficilement portables puisqu'ils permettent l'usage de pointeurs pour
directement adresser
des portions de mémoire ou ne gèrent pas automatiquement la désallocation de la
mémoire. Cela débouche sur
des programmes sympathiquement corrects mais qui peuvent néanmoins provoquer un crash
système.
Pour garantir la robustesse de Java, celui-ci a été débarrassé des pointeurs : il est
impossible de références une
adressé mémoire, d'utiliser l'arithmétique de pointeurs pour se déplacer dans des
tableaux. De plus, Java vérifie
toujours lors de l'utilisation de tableaux que le programmeur ne cherche pas à utilises
des portions non allouées.
La gestion de la mémoire, sa désallocalion automatique via un garbage collecter sont les
garants d'une meilleure
stabilité des applications. Le garbage collector fonctionne comme un thread séparé
tournant en tâche de fond
avec une basse priorité. Il des pans de mémoire lorsque l'utilisation du CPU est faible
ou lorsqu'un besoin de
mémoire se fait sentir pour l'application.
SUR
La première tâche de l'interpréteur Java est de vérifier la conformité du programme,
analyser si le code n'a pas
été transformé entre la compilation et l'exécution du code. Un "bytecode
verifier" se charge d'observer si une
classe n'a pas accès aux registres, ne manipule pas le stack ou n'accède pas au
"file system" de manière
anormale. De plus, Java utilise pour ses transferts une technique d'encryption basée sur
le système de clé
publique.
Le chargement d'une classe Java via le réseau s'opère par le biais d'un Class-Loader qui
gère tous les
mécanismes de sécurité. Les applets chargées via le réseau sont restreintes au niveau
: des accès en lecture et
écriture des fichiers locaux de la création et de la copie de répertoires ou fichiers
d'établir des connexions réseau
à l'exception de la machine hôte de l'exécution de programmes externes via fork ou exec
ORIENTÉ OBJET
Le langage C++ est un compromis entre un langage C de troisième génération et un
langage purement orienté
objet comme Smalltalk. Même s'il s'inspire de la syntaxe du C++, Java a été réécrit
à partir de zéro, de manière à
être totalement orienté objet.
Java est un langage plus purement orienté objet que le C++, qui conserve de nombreux
aspects de
programmation procédurale puisqu'il n'est lui-même qu'une extension du langage C.
L'objet Java appartient à une classe. Cette classe est une collection de variables, de
méthodes encapsulées dans
un objet réutilisable et chargé dynamiquement en mémoire à l'exécution. Une classe
n'est donc qu'une collection
de code qui modélise sous forme logicielle le comportement d'objets.
Le concept d'héritage de classe est respecté puisqu'il est possible de dériver une
nouvelle classe d'objets à
partir d'une classe originale dont on conserve les fonctionnalités en les étendant.
Le chargement automatique de classes Java est essentiel pour son utilisation sur Internet.
Cela permet, lors du
chargement d'un type de fichier ou document inconnu, de télécharger le code qui
permettra de traiter ou
visualiser ce fichier.
Par rapport au langage C++, Java apporte de nombreuses différences : pas de structures et
d'unions pas de
define pas de pointeurs pas d'héritage multiple bien que Java permet à une classe
d'implenter plus d'une
interface. pas de goto pas de surcharge d'opérateurs
En gros, on pourrait voir Java comme un C++ allégé de sa complexité formelle.
Les opérateurs du langage Java sont identiques à ceux du langage C, des librairies C
pouvant aussi être ajoutées
à une application Java.
PERFORMANT
Java a été pensé de manière multitâche mais aussi
multithread. Le fait que le bytecode produit par un
compilateur Java soit très proche du code natif d'une machine rend son interprétation
plus efficace que celle d'un
interpréteur ordinaire.
DYNAMIQUE
Java s'impose de plus en plus comme un standard universel pour le transfert d'informations
dynamiques sur le
Net. Le World Wide Web statique des simples pages HTML fait place à des applications
réellement interactives où
le contenu des documents est généré dynamiquement au moment de l'exécution.
Lorsqu'un navigateur Web traditionnel rencontre un nouveau type d'objet pour lequel il
n'est pas préparé, il doit
céder la main à une application extérieure ou sauver l'objet sur disque, faute d'outil
de traitement adéquat.
HotJava, par contre, peut délivrer via Internet un objet et la pièce de code nécessaire
à son décodage. La même
conception objet est appliquée à la gestion des protocoles de transfert de données. A
côté du protocole HTTP,
HotJava peut accepter dynamiquement de nouvelles formes de protocoles, incluant, par
exemple de
l'encryption. Chaque concepteur d'un protocole propriétaire peut intégrer dans un
navigateur HotJava le code
nécessaire à son bon fonctionnement Si le client HotJava ne connaît pas encore le
nouvel objet ou le nouveau
protocole, il réclame simplement au serveur les portions logicielles requises.
Java peut également être utilisé pour réalisation d'applications plus classiques en
mode "stand-alone", comme
moteur gérant le comportement et l'intégration d'objets 3D dans la version 2.0 VRML ou
Virtual Reality Modeling
Le langage ou encore pour la création d'Agent intelligent s'acquittant de tâches
routinières pour le compte d'un
utilisateur Une classe Java a l'énorme avantage pouvoir contenir à la fois des données
les méthodes qui
permette de les traiter.
Java est conçu pour la programmation distribuée et est capable d'ouvrir et accéder des
objets à distance via
différents protocoles
Le futur de Java
L'interprétation de programmes Java une tâche gourmande à laquelle s'attaquent mal les
processeurs habituels
Aussi, Sun s'est mis en tête de produire des processeurs Java spécialement conçus pour
coller avec la fameuse
Java Virtual Machine. Sun développe à effet un ensemble de spécifications rassemblées
sous le terme
d'architecte picoJava. Sun promet de produire premiers processeurs dès le début 1997 et
d'offrir des contrats de
licence picojava pour les sociétés désireuses de produire leurs propres puces Java.
Le bas de gamme de l'offre picoJava s'appelle microJava, coûtera 50 $ et s'adaptera
spécialement aux
applications intégrées du PDA au téléphone cellulaire en passant par les set-top boxes
et les Network Computers.
Le haut de gamme est baptisé du nom d'ultraJava, un processeur coûtant une centaine de
dollars.
Micro ou Ultra, un processeur Java est capable d'exécuter directement du bytecode Java
sans devoir le convertir
dans un jeu d'instructions propre à un autre CPU et ne réclame donc pas toute la
mémoire nécessaire pour la
phase habituelle d'interprétation.
Le langage Java
4 TYPES D'APPLICATIONS JAVA
4 types d'applications sont générés en Java :
1.Les applets, des mini applications : tournant dans le cadre d'un navigateur Web
compatible Java
2.Des applications "stand-alone" tournant dans leur propre environnement.
3.Des applications en mode texte tournant dans une boîte DOS ou un shell Unix
4.Des librairies, des collections de classes intégrées dans un package
LE CYCLE DE CHARGEMENT D'UN APPLET
Tout comme un document HTML, un applet Java réside préalablement sur serveur Web.
Lorsque le navigateur client reçoit une page HTML, il interprète la balise
|
Contact,Commentaires, ecrivez-moi
stcad |
TROSSARD SYLVAIN Rue Bordelais, 200/32 4420 SAINT-NICOLAS BELGIQUE |
GSM :32-75-57.15.63 Envoyez-moi un message gratuitement de 120 caract. sur mon GSM en indiquant le N°:075-57.15.63, ici skynet Dernière mise-à-jour : 20/07/98 |