|
JAVA est interprété |
Un programme source JAVA est d'abord compilé en pseudo-code. Sur le plan de la structure, ce dernier se rapproche du langage machine ce qui lui donne une certaine rapidité. Une fois compilé, le programme en pseudo-code est exécuté par un interpréteur JAVA. Ce dernier fait généralement partie d'un programme de navigation (par exemple Netscape Navigator à partir de la version 2.0). |
JAVA est indépendant de toute plate-ferme |
Le code source JAVA est optimisé pour être neutre du point de vue de la plate-forme utilisée. Ceci veut dire qu'une applet (petite application Internet) programmée en JAVA fonctionnera sur la quasi-totalité des systèmes 32 bits usuels Il n'est plus nécessaire de procéder à une compilation spécifique à la plate-forme comme c'était le cas avec C++. La définition des variables est révélatrice à cet égard. Les variables entières de base (type int) occupent systématiquement 32 bits et les variables entières longues 64 bits. |
JAVA fonctionne comme un système d'exploitation virtuel |
Pour rester indépendantes du système d'exploitation, les applets JAVA utilisent une astuce. Elles ne sont exécutées que dans le cadre d'un programme de navigation compatible. Le programme de navigation prend en charge les fonctions d'un débogueur et fonctionne comme un système d'exploitation virtuel. Il établit le contact avec le système d'exploitation. |
JAVA est orienté objet |
Du point de vue de sa conception, JAVA se rapproche de différent langages évolués tels Eiftel, C+ +, Pascal et Modula 3. Mais contrairement au langage Basic, JAVA ne fonctionne pas de manière procédurale. Comme C++ JAVA organise un programme en unités logiques constituées de donnée (variables et constantes) et de méthodes (fonctions). Ces unités sont décrites sous forme de classes. Une classe est en quelque sorte un modèle d'algorithme. Un modèle de ce genre permet au programmeur de créer des objets. Les objets disposent des variables et constantes de leur classe et peuvent être remplis avec des données qui leur sont propres. Les méthodes de la classe décrivent ce qui peut arriver aux données et régissent la communication avec les autres objets. |
JAVA est simple |
Les
inventeurs du langage ont voulu supprimer tout ce qui s'avérerai
inutile. Les expériences tirées d'autres langages, notamment
de C++, on montré la voie à suivre. C'est ainsi qu'ont été
abandonnés les pointeurs (impossible de provoquer un incident en
manipulant directement la mé moire), et la notion de polymorphisme
(héritage multiple). Le polymorphisme permet à une classe
d'hériter de plusieurs autres en même temps. Cette technique
connue de C++ ouvre au programmeur des perspectives étourdissantes
lorsqu'il construit des classes par modules. Mais, dans la pratique, il
s'est avéré que la manipulation de telles hiérarchies
de classes était dangereuse en raison de son manque de visibilité
et qu'elle conduisait facilement à des programmes défectueux.
L'adressage mémoire direct des données, tel qu'il est souvent
pratiqué dans Cet C++, n'est pas non plus possible en JAVA. L'arithmétique
des pointeurs ne fait pas partie de la syntaxe du langage. JAVA emploie
différents mécanismes de sécurité pour interdire
les accès mémoire abusifs et éviter ainsi le plantage
des applications ou du système d'exploitation. Ce point sera approfondi
ultérieurement. En plus des points cités, JAVA renonce aux
fonctions d'un préprocesseur, aux structures (struct) et aux unions
(union). La surcharge des opérateurs est également interdite.
Tout ceci peut laisser penser que la puissance de JAVA est relativement limitée par rapport à des langages comme C++ et Pascal. Mais tel n'est pas le cas. L'équipe de développement de Sun a simplement voulu supprimer les éléments mal compris ou mal exploités des autres langages. Vous allez vous rendre compte très vite que JAVA ne mettra pas votre imagination à l'étroit. |
JAVA est orienté objet |
Du point de vue de sa conception, JAVA se rapproche de différent langages évolués tels Eiftel, C+ +, Pascal et Modula 3. Mais contrairemer à Basic, JAVA ne fonctionne pas de manière procédurale. Comme C+ + JAVA organise un programme en unités logiques constituées de donnée (variables et constantes) et de méthodes (fonctions). Ces unités sor décrites sous forme de classes. Une classe est en quelque sorte un modèl d'algorithme. Un modèle de ce genre permet au programmeur de crée des objets. Les objets disposent des variables et constantes de leur classE et peuvent être remplis avec des données qui leur sont propres. Le.' méthodes de la classe décrivent ce qui peut arriver aux données e régissent la communication avec les autres objets. |
JAVA est simple |
Les
inventeurs du langage ont voulu supprimer tout ce qui s'avérerai
inutile. Les expériences tirées d'autres langages, notamment
de C+ +, on montré la voie à suivre. C'est ainsi qu'ont été
abandonnés les pointeur~ (impossible de provoquer un incident en
manipulant directement la mé moire), et la notion de polymorphisme
(héritage multiple).
Le polymorphisme permet à une classe d'hériter de plusieurs autres er même temps. Cette technique connue de C++ ouvre au programmeui des perspectives étourdissantes lorsqu'il construit des classes par modules. Mais, dans la pratique, il s'est avéré que la manipulation de telles hiérarchies de classes était dangereuse en raison de son manque de visibilité et qu'elle conduisait facilement à des programmes défectueux. L'adressage mémoire direct des données, tel qu'il est souvent pratiqué dans Cet C++, n'est pas non plus possible en JAVA. L'arithmétique des pointeurs ne fait pas partie de la syntaxe du langage. JAVA emploie différents mécanismes de sécurité pour interdire les accès mémoire abusifs et évtter ainsi le plantage des applications ou du système d'exploitation. Ce point sera approfondi ultérieurement. En plus des points cités, JAVA renonce aux fonctions d'un préprocesseur, aux structures (struct) et aux unions (union). La surcharge des opérateurs est également interdite. Tout ceci peut laisser penser que la puissance de JAVA est relativement limitée par rapport à des langages comme C++ et Pascal. Mais tel n'est pas le cas. L'équipe de développement de Sun a simplement voulu supprimer les éléments mal compris ou mal exploités des autres langages. Vous allez vous rendre compte très vite que JAVA ne mettra pas votre imagination à l'étroit. |
JJAVA est rigoureusement typé |
JAVA
traite les variables avec une grande sévérité et fait
partie des langages rigoureusement typés. La conversion automatique
de type n'est pas implémentée.
Si
le code source présente une initialisation ou une affectation erronées,
la compilation détecte l'erreur, évitant ainsi la construction
de programmes défectueux à un stade précoce du développement.
|
JAVA organise la mémoire |
Si
vous avez quelque expérience dans la programmation en C ou C+t,
vous connaissez bien ce problème. Au moment de leur création,
les nouveaux objets demandent qu'on leur réserve de la mémoire.
Jusqu'ici JAVA fonctionne de la même façon. Mais lorsque l'objet
ainsi créé ne sert plus, les difficultés commencent.
La libération de la mémoire accaparée est souvent
délicate à gérer, et de ce fait, elle n'est pas toujours
effectuée.
Dans le cadre d'un projet complexe, beaucoup de programmeurs son dépassés par le problème. Il se produit ainsi une fuite de ressourcec jusqu'à ce que le système d'exploitation soit réinitialisé. Pour remédier à ce problème, JAVA dispose d'un excellent mécanisme La récupération automatique de mémoire (garbage collector), qui consti tue une fonction du système d'exécution du langage, restitue spontané. ment les zones de mémoire qui ne sont plus utilisées. La mémoire se trouvE ainsi constamment gérée de façon optimale, et l'exploitation des ressour ces ne bute plus sur leur limite. Les amateurs de C peuvent ainsi remisei aux oubliettes l'instruction delefe. |
JAVA est sûr |
Au
cours du développement de JAVA, SUN a accordé une importancE
particulière à la sécurité. Contrairement à
beaucoup d'autres langagec évolués, les structures de sécurité
font partie intégrante du systèmE d'exécution et du
compilateur.
Depuis Basic, la manière la plus répandue d'intercepter et de traiter dec erreurs est de prévoir des routines se situant à un niveau spécial. Dans CE cadre, on peut lire le code de l'erreur apparue et déclencher le traitemen qui s'impose. Mais souvent les erreurs sont Si graves qu'elles peuven conduire au plantage de l'ensemble du système d'exploitation. JAVA emprunte une autre voie dans ce domaine. Le programmeur écri une série de routines de traitement d'erreurs. Lorsqu'un événement impré. vu conduit à un dysfonctionnement du programme, JAVA détermine auto matiquement la routine la plus appropriée pour traiter l'erreur. Le~ différentes routines sont disposées dans un ordre séquentiel, la liste ains établie étant parcourue de bas en haut en cas de besoin. Lorsque lE programme a découvert une méthode qui convient, il l'exécute et essaiE ensuite de poursuivre. Mais il est clair que, même en JAVA, il peut se produire des erreun empêchant toute continuation du programme. L'incident le plus grav~ susceptible de se produire à cette occasion est une interruption prématurée du programme JAVA. A aucun moment le système d'exploitation n'est menacé. La sécurité passe aussi par la réglementation de l'accès à la mémoire disponible. Contrairement aux programmes C+ +,les programmes JAVA ne peuvent pas accéder à n'importe quelle zone de la mémoire. D'abord, un accès direct est par nature impossible et par ailleurs JAVA ne fait appel qu'à des blocs de mémoire non utilisés par le système d'exploitation ni par d'autres ressources importantes. Un
autre facteur de sécurité primordial est la définition
des droits d'accès au disque dur. Les programmes JAVA ne peuvent
pas accéder sans précaution à un disque dur. Ce point
est particulièrement important lorsqu'on programme des applets pour
Internet. La première version bêta du k~t de développement
JAVA posait quelques problèmes sur ce plan mais ils sont maintenant
largement résolus.
|
JAVA est rapide |
Une applet développée en JAVA réunit deux technologies jusque là séparées. Comme nous l'avons mentionné, le code source d'un programme est d'abord compilé en pseudo-code JAVA. Puis l'applet ainsi créée est exécutée par un interpréteur intégré dans le programme de navigation. Les bibliothèques de classes requises par le projet ne sont liées qu'à l'exécution. L'avantage est de maintenir les applets à une taille relativement réduite. Cet aspect des choses ainsi qu'un pseudo-code proche du langage machine assurent aux applets JAVA une vitesse d'exécution élevée. Il est vrai que comparées aux programmes C+ +, les applets sont environ vingt fois plus lentes. Différentes sociétés, parmi lesquelles Microsoft et Borland, travaillent àla mise au point d'accélérateurs de code pour JAVA. Ils pourraient bientôt permettre à JAVA d'atteindre la vitesse d'exécution du C. |
JAVA est économe |
A
l'origine JAVA n'était pas conçu pour les ordinateurs personnels.
Le système d'exécution, I 'interpréteur indispensable
au fonctionnement d'un programme, se montre de ce fait très économe
des ressources disponibles. Seuls quelques centaines de kilo-octets sont
mis à contribution. En théorie, JAVA peut fonctionner sur
une plate-forme disposant de 4 Mo de mémoire de travail. Mais cette
affirmation est naturellement à relativiser face aux exigences du
système d'exécution mis en oeuvre.
Si on les compare à des programmes écrits en C, les applets sont relativement petites. Cette taille réduite est essentiellement due à l'absence des bibliothèques de classes liées temporairement qu'en cours d'exécution. Les classes de base, comparables à la classe iostream mise en service par C, font partie du logiciel de navigation. Ainsi, les composants essentiels d'une applet JAVA n'ont pas besoin d'être chargées depuis le réseau à chaque appel. |
JAVA autorise le multitîche |
Le
multitâche est une notion à la mode. Plus aucun système
d'exploitation pour ordinateur personnel n'oserait faire sa publicité
sans mentionner ses performances en la matière. Mais seuls de rares
systèmes sont en mesure de pratiquer le véritable multitâche.
On appelle ainsi l'exécution simultanée de plusieurs processus
parallèles. En réalité, compte tenu de l'architecture
des processeurs couramment utilisés, chaque opération nécessiterait
en fait une CPU indépendante. Si les machines multiprocesseurs font
déjà partie de la technologie existante, les systèmes
d'exploitation et logiciels prévus pour ces plates-formes sont encore
très rares : Windows NT de Microsoif supporte les systèmes
multiprocesseurs, le multitâche authentique est donc possible, par
contre, Windows 95 ne fonctionne qu'avec un seul processeur.
Pour dissimuler cette faiblesse, l'industrie informatique a introduit le concept de multitâche préemptif. Dans ce cas, les opérations ne sont pas effectuées en parallèle mais le temps de travail du processeur est découpé en intervalles. Plusieurs opérations peuvent alors se partager les ressources de calcul d'un processeur unique. Pour permettre la description des algorithmes appropriés, JAVA met à la disposition du programmeur la syntaxe des threads. Un thread est une unité d'exécution isolée. Il est possible en théorie de définir un nombre illimité de threads. Pendant l'exécution du programme, les threads accèdent au processeur par un mécanisme d'interruption. A condition de disposer d'un processeur puissant, on peut ainsi simuler le multitâche jusqu'à un certain degré. L'implémentation des threads se révèle difficile dès que le programme comporte un branchement vers une séquence interactive. Les routines de traitement doivent alors harmoniser la communication et le comportement des threads. Pour résoudre ces problèmes, JAVÂ fournit au programmeur toute une série d'aides syntaxiques. |
JAVA est dynamique |
En développant Java, Sun a surtout mis l'accent sur la neutralité des programmes vis-à-vis des plates-formes matérielles. Les progrès dans le domaine électronique sont Si rapides que la compilation d'un code source perd tout intérêt Si elle est liée à un système particulier. L'équipe de développement de JAVA a donc décidé de ne lier les classes de base d'une manière dynamique, au moment de l'exécution du programme. Les modifications à apporter aux bibliothèques de classe pour assurer la compatibilité système peuvent donc être effectuées tardivement à n'importe quel moment. En tant que langage orienté objet, JAVA n'accède aux fonctions et paramètres de ces classes que par l'intermédiaire d'objets. Pour peu que l'identification des méthodes et des classes soit conservée, un code source écrit en JAVA peut être réutilisé à tout moment sans nouvelle compilation. |
JAVA est un langage de programmation ouvert |
La technologie des langages mélangés (mixed Ian gua ges) a connu une certaine faveur ces dernières années. La pratique consiste à écrire les modules d'un même programme en différents langages. On peut ainsi tirer profit des avantages de chacun d'eux; car chaque langage a ses points forts et ses points faibles. Pour desserrer les contraintes imposées par un langage, le programmeur recoure ainsi à un autre. Dans ce cadre, JAVA permet d'intégrer des modules étrangers. Pour ce qui est de la neutralité de la plate-forme et des considérations de sécurité, la technique pose cependant quelques problèmes. |