Java est une technologie composée d'un
langage de programmation orienté objet et d'un environnement d'exécution.
Préalablement nommé Oak, il a été créé par James Gosling et Patrick
Naughton chez Sun Microsystems avec le soutien de Bill Joy.
Le langage Java fut officiellement présenté le 23 mai 1995 au SunWorld.
Le concept Java est basé sur le langage Java, la machine virtuelle Java et
l'API Java (ces deux derniers composants forment l'environnement
d'exécution, ou JRE, pour Java Runtime Environment). Toutefois, il existe
des variantes :
permettant de compiler le langage Java nativement, c’est-à-dire de
produire un exécutable capable de fonctionner hors de l'environnement
Java, et même de produire un exécutable capable de fonctionner dans
l'environnement CLR de Microsoft .NET, grâce à la variante J# de Java,
créée par Microsoft.
permettant de produire un exécutable Java à partir d'autres langages,
comme Python à l'aide du compilateur Jython, ou encore Groovy.
Concepts de Base
Quatre buts primaires présidaient la création du langage Java. Il devait :
Être orienté objet ;
Être indépendant de la plate-forme du client ;
Contenir des aides et des bibliothèques pour le réseau;
Avoir la capacité d'exécuter du code de source extérieure de façon
sécurisée.
Orienté objet
La première caractéristique, l'orienté objet, réfère à une méthode moderne
de programmation et de conception de langage. Sa principale
caractéristique est de rassembler (encapsuler) en une seule entité logique
(Classe) un ensemble de données (Propriétés) et les fonctions qui les
traitent (Méthodes). Le code devient ainsi plus facilement réutilisable
car intrinsèquement modulaire.
D'autres mécanismes tels l' héritage permettent d'exploiter toutes les
caractéristiques d'une Classe précédemment écrite (la plupart du temps par
quelqu'un d'autre) dans ses propres programmes sans même avoir à en
connaitre le fonctionnement interne, on en voit que l'interface (les
principales commandes).
Comme toujours, le but de ce paradigme de programmation est de rendre les
grands projets logiciels plus faciles à 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 vis à vis de la
plate-forme, signifie que les programmes écrits en Java doivent
fonctionner sur plusieurs types de matériel informatique. Un programmeur
doit pouvoir écrire un programme une seule fois et, le faire fonctionner
dans n'importe quel ordinateur. Ceci est permis en compilant le code
source d'un programme Java dans un pseudo-code intermédiaire appelé
bytecode Java -- des instructions machine standardisées et destinées à un
processeur virtuel. Le code est par la suite exécuté par une
implémentation de cette machine virtuelle (JMV), 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 le graphisme ou le réseau -- d'une manière unifiée. Le
langage Java offre aussi le support des programmes avec plusieurs
processus légers (threads).
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 que
les programmes compilés nativement, comme ceux écrits 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 consiste à 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é
(cf. GCJ). 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 machine virtuelles plus sophistiquées utilisent également
la recompilation dynamique, qui permet à la machine d'analyser le
comportement du programme et de recompiler et d'optimiser les parties
critiques. Ces deux techniques permettent à l'application de prendre
avantage de la vitesse d'exécution du code natif tout en conservant 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 les machines virtuelles 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).
Les machines virtuelles développées sous licence par Microsoft ne sont pas
étrangères à cette réputation. En effet l'éditeur de Redmond avait
singulièrement 'adapté' ses machines virtuelles à ses besoins propres. Il
a été condamné à cesser l'exploitation de la licence et à retirer les
machines virtuelles non conformes de ses produits.
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 Web 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, en revanche, sans problème. 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és mais sont aussi des outils très
puissants. (En revanche, la technologie Java offre le Java Native
Interface (interface native Java ou JNI), une méthode permettant d'appeler
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.
Certaines personnes pensent en revanche que, pour certains projets, la
conception orientée objet rend plus difficile plutôt que plus facile la
programmation. Cette critique, infondée surtout 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.
Une opinion répandue est que Java combine l'efficacité du Smalltalk
langage dit objet à l'élégance du C++, bien que le contraire eût sans
doute été préféré de bien des programmeurs.
Versions
Java est une marque déposée de Sun Microsystems. Kits de développement
Java (Java development kit ou JDK) publiés par Sun, utilisables
gratuitement :
JDK 1.0, 1996
JDK 1.1, 1997
JDK 1.2, 1998 dite Java 2
JDK 1.3, 2000
JDK 1.4, 2002
JDK 1.5, 2004 dite Java 5.0
Le langage est stable depuis le JDK 1.0; les bibliothèques de classes
fournies 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.
Du fait de l'accroissement des bibliothèques et des changements entre
version, la compatibilité est assurée dans un seul sens : les programmes
Java compilés avec une version antérieure du JDK (par exemple 1.2)
continueront à fonctionner avec un JRE plus récent (par exemple 1.5), mais
le contraire n'est pas vrai. Ceci contribue à remettre aussi en question
la slogan de Sun Write once, run anywhere (écrire une fois, exécuter
n'importe où) du fait de l'hétérogénéité des versions de Java déployées
dans le monde.
Frameworks et API
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 :
J2SE : Ce framework est destiné aux applications pour poste de travail.
J2EE : Ce framework est spécialisé dans les applications serveurs. Il
contient pour ce faire un grand nombre d'API et d'extensions.
J2ME : Ce framework est spécialisé dans les applications mobiles.
JavaCard : Ce framework est spécialisé dans les applications liées aux
cartes à puces et autres SmartCards
On trouve toutefois de nombreuses autres technologies, API et extensions
optionnelles pour Java :
JavaMedia : Framework multimédia, contenant notamment les API Java2D,
Java3D, JavaSound, Java advanced Imaging
Java Telephony
Java TV
JXTA : Système de peer-to-peer reposant sur Java
Jini
Jiro
JAIN
JDMK
JavaSpeech
JMI
JavaSpaces
Java Telematics
Source wikipedia
A1 JAVASCRIPTS:
nombreux scripts
ANFY JAVA: 52 splendides applets
APPLETS: quelques applets pour vos pages
APPRENDRE le JAVASCRIPT: pour débutants et avancés
AUTOSCRIPTER: des scripts prêts à être utilisés (en anglais)
CALENDRIERS: quelques exemples
DYNAMIC DRIVE: un excellent site pour trouver des javascripts efficaces et
avec indication des tests réalisés sur plusieurs browsers
EDITEUR JAVASCRIPT: éditez vos JavaScripts sans savoir programmer!
ESPACE JAVASCRIPT: le site de référence!
FREE JAVA: de nombreux liens vers des sites offrant des scripts java
FREEBIE APPLETS: quelques applets pour vos sites
FREEJAVASCRIPT: quelques outils pour mettre en valeur des pages: à niveaux
multiples (fonctions récursives), zoom, diaporamas, infobulle...
FREEWAREJAVA: des rubriques et plusieurs centaines d'applets pour vos
sites
HORLOGES: pour vos sites (exemples)
JARS: site à explorer, liens, applets, informations...
JAVA: un guide comportant des exemples de codes et de sites internet en
java
JAVA APPLET COLLECTION: applets à télécharger
JAVA BOUTIQUE: très nombreuses ressources, scripts, liens...
JAVA CAVERNE: des javascripts, des scripts, des ressources...
JAVA CENTER: multiples ressources gratuites pour webmasters
JAVA REPOSITERY: de nombreuses ressources, applets, servlets, jsp, outils
divers...
JAVAMANIALAND: une blibliothèque d'applet java et de javascripts libres de
droit et téléchargeables
JAVASCRIPT 2: plus de 8.000 scripts à trouver avec ce moteur de recherche
JAVASCRIPT GATE: des dossiers et informations en anglais et de nombreux
scripts
JAVASCRIPT KIT: des informations et plus de 400 scripts
JAVASCRIPT LEARNING CENTER: des leçons pour apprendre...mais en anglais
JAVASCRIPT PAGE: des scripts prêts à être utilisés, des liens...
JAVASCRIPT PLANET: très nombreuses ressources et scripts
JAVASCRIPT SEARCH: des scripts, des informations...
JAVASCRIPT SOURCE: très nombreuses ressources et scripts
JAVASCRIPTS-(1): proposés par Swisstools (en français)
JAVASCRIPTS-(2): Java-Scripts, belle collection sur ce site en anglais
JAVASEARCH: moteur de recherche pour la documentation java
JAVASIDE: des nouvelles, des informations, des applets...
JAVAWEB: bibliothèque d'animations pour le Web!
JE JAVASCRIPT: ce site vous propose des javascripts, générateurs, multi
moteur et autres astuces pour vos sites
NETBUGS: des scripts pour vos pages
PARAZITYK: ce site va vous expliquer qu'est ce que le JavaScript et
comment en faire soi même...
PETITE BOUTIQUE: Java et JavaScript, conseils, informations, scripts,
liens...
RECHERCHE de SCRIPTS: java et autres
SCRIPTS-FRANCE: des exemples en JavaScripts avec leur sources qui sont
directement copiables et collables
SCRIPTSJAVA: toute une série de scripts pour vos pages
SOUTHEAST SOFTWARE: un ensemble de scripts à télécharger
TEMPLE du JAVA: quelques scripts...
TOUT le JAVASCRIPT: plusieurs scripts..., des conseils...
W1000W: répertoire multilingue de scripts ASP, C/C++, Perl, PHP, Java,
JavaScript...
WEMASTERTOOLS: un lot de scripts à télécharger gratuitement
|