Java (langage)

« Java (langage) » expliqué aux enfants par Vikidia, l’encyclopédie junior
Aller à : navigation, rechercher
Voir les articles homonymes Attention à ne pas confondre ! Pour les sujets ou articles dits homonymes, voir : Java.
Logo de Java
Duke, la mascotte de Java

Java est un langage de programmation créé par Sun Microsystems (entreprise aujourd'hui rachetée par Oracle Corporation) et lancé le 23 mai 1995.

Java est un langage dédié à la programmation orientée objet et l'un des deux langages de programmation les plus employés. À l'heure actuelle, il est très utilisé pour des programmes de moyenne envergure, dans la gestion des entreprises notamment. Il ressemble au C++ mais leurs différences font qu'ils ne sont généralement pas utilisés pour les mêmes choses. Par exemple :

  • Java s'exécute dans une machine virtuelle : il est donc plus lent que C++ mais dispose d'un ramasse-miettes qui simplifie la gestion de la mémoire ;
  • il est plus facile de faire des interfaces graphiquesPrécision, du multi-threadingPrécision, du réseauPrécision, etc. en Java qu'en C++ ;
  • Java est plus simple d'accès que le C++ (moins de symboles, moins de notions proches du C) mais le C++ permet des constructions plus puissantes et personnalisées ;
  • grâce à sa machine virtuelle, Java est multi-plateformePrécision.


Exemples[modifier]

Le programme Java ci-dessous affiche le texte « Bonjour tout le monde ! ».

public class BonjourMonde
{
    public static void main(String[] args)
    {
        System.out.println("Bonjour tout le monde !");
    }
}

Quelques applications graphiques réalisées en Java :

La machine virtuelle[modifier]

Java Virtual Machine[modifier]

On parle généralement de deux grandes familles de langages de programmation :

  • les langages compilés (comme le C), qui font des programmes directement « compris » par l'ordinateur (en code machine) ;
  • les langages interprétés (comme Perl), qui sont entièrement traduits (« interprétés ») par un programme appelé interpréteur qui se charge lui-même d'effectuer les actions demandées.

Java n'est ni compilé ni interprété mais on peut le considérer entre ces deux familles de langages. En effet, pour fonctionner, un programme Java a lui aussi besoin d'être compilé mais cette compilation ne produit pas du code machine (qui est directement exécuté par le processeur) ; à la place, on a du bytecode (en français code octet ou code objet), une sorte de code machine abstrait que le processeur ne peut pas comprendre. Le bytecode s'exécute dans une machine virtuelle, un programme qui reproduit lui-même le comportement d'un ordinateur. Pour Java, ce programme s'appelle la Java Virtual Machine (JVM).

Utilité du bytecode[modifier]

La JVM sert de « traducteur » entre le bytecode et le système d'exploitation.

L'intérêt d'un bytecode s'exécutant dans une machine virtuelle est d'être suffisamment simple pour être exécuté rapidement (parce qu'il est déjà compilé) tout en n'étant pas aussi concret que du code machine (c'est-à-dire pas aussi adapté à une machine particulière). En effet, un programme compilé (écrit en C++ par exemple) est adapté aux spécificités de l'ordinateur sur lequel il a été compilé : il ne fonctionnera pas forcément sur un autre système d'exploitation ou avec un processeur de type différent. En revanche, un même programme Java peut-être utilisé sur tous les ordinateurs pour lesquels il existe une machine virtuelle Java, parce que son bytecode ne dépend pas d'une architecture d'ordinateur particulière : on dit que les programmes Java sont portables. C'est la raison pour laquelle la majorité des programmes pour smartphones sont écrits en Java : le programmeur n'écrit qu'un seul programme pour tous les smartphones, sans se soucier des différences entre ceux-ci puisque le constructeur aura fourni une machine virtuelle Java.

Un autre avantage du bytecode est qu'il n'est pas aussi lisible que du code source : un programmeur Java peut donc distribuer son programme sans dévoiler comment il est fait (il peut donc le vendre). Dans le cas du Java, cela doit être nuancé car le langage fournit de puissants outils d'introspection (c'est-à-dire qui permettent aux programmes de s'analyser eux-mêmes). Par exemple, si une personne reçoit un programme A sous forme de bytecode Java, elle peut créer un nouveau programme B « enveloppant » A (B contient les fichiers de A) et B peut alors connaître le contenu des objets (au sens de la programmation orientée objet) de A.

Différence entre Java et les langages interprétés[modifier]

Puisque les deux ont besoin d'un programme qui les exécute, la différence entre un langage à bytecode et un langage interprété peut paraître mince, d'autant plus que certains interpréteurs (comme celui de Python) savent eux aussi produire du bytecode. Il ne faudrait cependant pas avoir une vision trop tranchée des langages : la frontière compilation/interprétation peut être assez floue (Lisp, par exemple, est un langage aussi bien compilé qu'interprété). On dit que Java n'est pas un langage interprété parce que son exécution passe nécessairement par la production de bytecode, et donc par une étape de compilation, alors que, pendant leur exécution, les programmes interprétés ne sont pas transformés aussi radicalement et conservent une forme beaucoup plus abstraite (généralement celle d'arbre de syntaxe abstrait).

Lien externes[modifier]

Langages de programmation.svg
Les langages de l’informatique
Portail des techniques - Tous les articles sur les moyens de transport, l'informatique, les outils et les matériaux.
Portail de l'informatique - Histoire, logiciels, Internet…