TechnoBabble
Comment JAVA ?
Java, une saveur de café mais plus encore un langage, est né chez Sun d’un besoin de développer des
applications distribuées dans des réseaux hétérogènes. Java est un langage orienté objet, distribué,
interpreté, portable, multi-thread et dynamique. Il s'agit d'une version du langage C++ qu'on aurait
allégé de sa complexité formelle. Java est conçu pour la programmation distribuée et est capable
d'ouvrir et accéder des objets à distance via différents protocoles. Java utilise pour ses transferts une
technique d'encryption basée sur le système de clé publique. Pour accentuer le caractère portable des
données, Java utilise un format neutre de fichier objet capable d'être interprété puis utilisé sur un grand
nombre de plates-formes et processeurs différents. La création d'applications incluant plusieurs
processes ou threads est facilitée par la présence de primitives vouées à la synchronisation de ces
threads.
Les opérateurs sont identiques à ceux du langage C, des librairies C pouvant aussi être ajoutées à une
application Java. Il y a quelques différences mineures par rapport au langage C. Si les entiers sont de
type byte sur 8 bits, int sur 32 bits ou long sur 64 bits, il n’y a pas de types unsigned. Par contre, pour
jouer sur le signe, on dispose d’un opérateur >>> pour des décalages logiques vers la droite. Les
nombres réels sont soit des float sur 32 bits soit des double sur 64 bits. Le type char est particulier
puisqu’il supporte d’office le standard Unicode et est stocké sur 16 bits comparé aux 8 bits du C. Le
type Array permet de créer des tableaux multidimensionnels pour n’importe quel type d’objet. Il n’est
pas possible en Java de bidouiller comme en C en faisant de l’arithmétique de pointeurs pour se
ballader dans de tels tableaux. La String est un objet et non un tableau. Elle se déclare aussi simplement
que ceci
String hello = “salut à tous”
On peut aisément concaténer de telles chaînes avec un simple opérateur +. Finie la programmation
spaghetti, l’infâme goto a disparu du langage Java. Par contre, Java dispose contrairement au C d’un
véritable garbage collector, l’allocation et la désallocation de la mémoire est gérée automatiquement.
Pas de malloc ou de free ici. Ceux qui se méfient des garbage collectors lents et poussifs comme en
LISP peuvent être rassurés, le garbage collector de Java tourne dans un thread à basse priorité et
n’intervient que pendant des périodes d’inactivité.
Java est décrit à travers une machine virtuelle, 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". Un interpréteur Java peut directement exécuter du code sur n’importe quelle machine où il a été
porté.
Toute une série de classes prédéfinies permettent de jongler avec des objets de base aux noms
évocateurs d'Url, Ftp, Http, telnet, smtp, nntp ou sockets. Bref, on dispose d'une librairie de classes
World Wide Web très fournie et le développement d'applications Internet en est considérablement
simplifié
Si, à côté de Objective C, Eiffel ou Dylan, Java fait autant parler de lui, c’est à cause de son intérêt
crucial pour les applications Internet. Wide Web est encore jeune et ses navigateurs souffrent de
lacunes. Ils ont été pensés en terme d'information statique, ne s'accomodent que de données de type
texte, son ou image et se prêtent encore difficilement à la programmation dynamique. L'ambition de
Sun avec son langage Java est d'insuffler une philosophie dynamique à l'information, de transférer en
même temps que l'objet le module logiciel qui sera capable de le traiter, le représenter ou le visualiser.
Netscape a été la première société à acquérir une licence pour java qu’on retrouve dans la version 2.0
de son célèbre navigateur Web.
Lorsqu'un navigateur 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. Un navigateur Java 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 ou Netscape 2 peuvent accepter dynamiquement de
nouvelles formes de protocoles incluant par exemple de l'encryption. Chaque concepteur d'un protocole