|
|
Le Java est un langage de programmation orienté objet. Il a été créé par James Gosling et d'autres ingénieurs chez Sun Microsystems. L'existence du langage Java fut officiellement présentée le 23 mai 1995 au SunWorld.
Java est basée sur le langage Java, la machine virtuelle Java et l'API Java.
La première implémentation du langage utilisait une machine virtuelle pour offrir la portabilité, et plusieurs implémentations le font encore. Ces dernières produisent des programmes qui fonctionnent plus lentement les programmes compilés nativements, comme ceux écrit en C. Cette situation a conféré une réputation de lenteur aux programmes Java. Toutefois, des implémentations plus récentes de la machine virtuelle Java produisent des programmes qui s'exécutent beaucoup plus vite grâce à l'utilisation de diverses techniques.
La première technique est de simplement compiler directement en code natif comme les compilateurs traditionnels, sans passer par le pseudo-code. Cette méthode permet une meilleure performance, mais au prix de la portabilité. Une autre technique, la compilation à la volée (just-in-time ou JIT), compile le pseudo-code Java en code natif à l'exécution du programme. Les MV plus sophistiquées utilisent même la recompilation dynamique, lors de laquelle la machine analyse le comportement du programme et recompile et optimise les parties critiques. Ces deux techniques permettent à l'application de prendre avantage de la vitesse d'exécution du code natif en ne perdant pas la portabilité.
La portabilité est un but techniquement difficile à atteindre, et le succès de Java à ce but est sujet à controverse. Même s'il est en effet possible d'écrire des programmes pour la plate-forme Java qui se comportent de façon cohérente sur différentes plates-formes, le grand nombre de plates-formes avec des petites erreurs ou incohérences a mené à une parodie du slogan de Sun Write once, run anywhere (écrire une fois, exécuter n'importe où) en Write once, debug everywhere (écrire une fois, déboguer partout).
Certaines personnes pensent par contre que, pour certains projets, la conception orientée objet rend plus difficile plutôt que plus facile la programmation. Cette critique, infondée dès qu'un projet prend de l'ampleur, n'est pas spécifique au langage Java, mais s'applique à tous les langages de programmation orientés objet.
Il est possible de mettre une étiquette avant toute instruction :
L'étiquette peut être utilisée pour sortir d'une boucle interne for, while, ou do en écrivant une ligne du type break uneÉtiquette;
Une expression continue termine l'itération en cours et continue à la prochaine. Elle s'écrit comme suit : continue;
De plus, avec une instruction comme continue uneÉtiquette, le contrôle du programme peut être amené directement vers une boucle externe.
L'énoncé return; termine une méthode.
Avec return uneValeur, uneValeur sera renvoyée à la méthode appelante.
Sun fournit un grand nombre de frameworks et d'API afin de permettre l'utilisation de Java pour des usages très diversifiés.
On distingue essentiellement 4 grands frameworks :
Le monde du logiciel libre a produit beaucoup de bibliothèques Opensource pour Java :
Aperçu
Il y avait quatre buts primaires lors de la création du langage Java. Il devait :
Orienté objet
La première caractéristique, l'orienté objet, réfère à une méthode moderne de programmation et de conception de langage. Son but est de rendre les grands projets logiciels plus facile à gèrer, à améliorer la qualité et à réduire le nombre d'échecs de projet.Indépendance face à la plate-forme
La seconde caractéristique du langage, l'indépendance envers la plate-forme, signifie que les programmes écrits en Java doivent fonctionner sur plusieurs types de matériel (informatique). Un programmeur devrait pouvoir écrire un programme une seule fois et pouvoir le faire fonctionner n'importe où. Ceci est permis en compilant le code source d'un programme Java dans un pseudo-code intermédiaire appelé bytecode Java -- des instructions machine qui se conforment à un standard établi. Le code est par la suite exécuté par une machine virtuelle (MV), un programme écrit en code natif sur le matériel cible qui traduit le pseudo-code Java en code utilisable pour le matériel concerné. De plus, des bibliothèques sont offertes pour fournir l'accès à des fonctionnalités propres à la machine cible -- comme les graphiques ou le réseau -- d'une manière unifiée. Le langage Java offre aussi le support des programmes avec plusieurs fils d'exécution -- une nécessité pour plusieurs programmes de réseau.Exécution sécurisée de code distant
La plate-forme Java fut l'un des premiers systèmes à offrir le support de l'exécution du code à partir de sources distantes. Une applet peut fonctionner dans le navigateur d'un utilisateur, exécutant du code téléchargé d'un serveur HTTP. Le code fonctionne dans un espace très restrictif, ce qui protège l'utilisateur des codes erronés ou mal intentionnés. Les éditeurs d'applet peuvent alors demander un certificat pour leur permettre de signer numériquement une applet comme sécuritaire, leur donnant ainsi la permission de sortir de l'espace restrictif et d'accéder au système de fichier de l'utilisateur et au réseau.Évaluation
Selon la plupart des gens, la technologie Java atteint raisonnablement bien ces buts. Le langage n'est pas, par contre, sans problèmes. Quelques fonctionnalités du C++ que Java n'offre pas, comme des types de données spécifiques au matériel hôte, les pointeurs vers des espaces mémoire arbitraires et des techniques de programmation comme la surcharge d'opérateurs, peuvent être mal utilisées ou abusées par des programmeurs mais constituent aussi des outils très puissants. (Par contre, la technologie Java offre le Java Native Interface (interface natif Java), une méthode permettant d'appeller du code natif à partir de code Java.) Quelques programmeurs se plaignent aussi du manque d'héritage multiple, une fonctionnalité puissante du C++ et d'autres langages orientés objet. Le langage Java sépare l'héritage et l'implémentation, permettant l'héritage multiple via les interfaces, mais seulement un héritage via une hiérarchie de classes. Ceci offre la plupart des avantages de l'héritage multiple tout en évitant la plupart de ses dangers. De plus, grâce à l'utilisation de classes concrètes, de classes abstraites et d'interfaces, un programmeur Java a le choix de faire une implémentation complète, partielle ou nulle d'un type d'objet qu'il définit, assurant un maximum de flexibilité dans la conception d'applications.Le langage
Voici un exemple d'un programme Hello world typique écrit en Java :
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
Structures de contrôle
Boucles
Structure tant que :
while (
Structure faire tant que :
do {
instruction(s)
} while (Structure pour :
for (
Structures conditionnelles
Structure si simple :
if (
Structure si... sinon :
if (
Avec else if, des constructions if-then arbitrairement complexes peuvent être construites.
if (
Structure cas de ... :
switch (
Traitement des exceptions
try {
instruction(s)
}
catch (Énoncés GOTO (aller à)
uneÉtiquette: uneInstruction;
La commande break; termine la boucle en cours.Versions
Java est une marque de déposée de Sun Microsystems.
Kits de développement Java (Java development kit ou JDK) publiés par Sun, utilisables gratuitement :
Le langage est stable depuis le JDK 1.0; les bibliothèques de classes founies se sont agrandies et ont changé en partie. À partir de la version 1.2, les JDK ont été renommés en J2SDK (Java 2 Software Development Kit, kit de développement de logiciels Java 2) et on appelle souvent ces versions Java 2.Frameworks et API
On trouve toutefois de nombreuses autres technologies, API et extensions optionnelles pour Java :
Version interprétée
Il y a une version interprétée de Java appelée beanshell, qui peut être utilisée comme un langage de script shell.
L'interpréteur peut aussi être embarqué dans une application Java pour la rendre scriptable.Java et le logiciel libre
Voir aussi
Liens externes