Java (Langage)

« Java (Langage) » expliqué aux enfants par Vikidia, l’encyclopédie junior
(Redirigé depuis Java (langage))
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 James Gosling et Patrick Naughton, employés de Sun Microsystems (entreprise aujourd'hui rachetée par Oracle Corporation), 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, mais pas que, de nombreuses sociétés de développement de jeux vidéo, comme Maxis, ou encore Scimob ont utilisé ce langage pour développer des jeux vidéo comme SimCity ou encore Akinator. Du fait du développement de l’informatique qui est aujourd’hui de plus en plus omniprésent dans notre monde, ce langage est de plus en plus utilisé par les entreprises, entrainant une augmentation d’emplois et de métiers dans ce domaine et un intérêt de plus en plus grand pour ce langage qui peut être appris aujourd’hui dans de nombreuses écoles, ou encore sur internet à l’aide de plusieurs plateformes comme Youtube ou OpenClassRoom.

Il ressemble au C++ mais leurs différences font qu'ils ne sont généralement pas utilisés pour les mêmes choses :

  • 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 graphiques, du multi-threading, du réseau, 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-plateforme.


Exemples[modifier | modifier le wikicode]

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

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

Le langage Java permet aussi de créer et coder avec des structures conditionnelles, c'est-à-dire une énumération de conditions. Si une ou plusieurs condition(s) est/sont vérifiée(s), le programme va alors effectuer les actions codées dans la structure correspondante. En Java, la structure la plus utilisée est la suivante : IF, ELSE IF, ELSE.

Le programme ci-dessous, servant d'exemple à l'utilisation d'une structure conditionnelle, permet de comparer et d'afficher l'entier le plus grand parmi deux nombres entiers pris au hasard. Le code en français peut s'écrire de cette forme :

Exemple, en français, d'une structure conditionnelle en Java
En reprenant l'exemple ci-dessus, le programme Java correspondant est celui-ci :
public class Structures_conditionnelles{
    
    public static void main(String[] args){
        
        int n1, n2;     //On crée deux variables n1 et n2 de type entier correspondant aux deux nombres entiers à comparer
        
        n1 = (int) (Math.random() * 100);		//La fonction Math.random permet de générer aléatoirement un nombre décimal (nombre à vigule) entre 0 et 1.
        n2 = (int) (Math.random() * 100);		//On le multiplie par 100 pour obtenir un nombre décimal entre 0 et 100.
        
        //On rajoute "(int)" devant pour transformer le nombre décimal obtenu en nombre entier.
        
        //Début de la structure conditionnelle
        
        if(n1 > n2)			//On affiche l'entier n1 car dan ce cas, n1 est plus grand que n2 (n1 > n2)
        	System.out.println(n1 + " est plus grand que " + n2);
        
        else if(n1 < n2)        //On affiche l'entier n2 car dan ce cas, n2 est plus grand que n1 (n1 < n2)
        	System.out.println(n2 + " est plus grand que " + n1);
        
        else        //On affiche les deux entiers n1 et n2 car ils sont égaux (règle logique -> si n1 n'est pas plus petit et plus grand que n2, cela signifie que n1 = n2)
        	System.out.println(n1 + " et " + n2 + " sont égaux.");
        
    }
    
}

Le langage Java n'est pas seulement un langage de programmation, il inclut aussi des outils permettant de développer des interfaces graphiques via des logiciels comme Android Studio pour le développement d'applications mobiles. Ces différents outils peuvent alors créer les interfaces ci-dessous, ce qui étant le champ des possibles de ce langage.

La machine virtuelle[modifier | modifier le wikicode]

Java Virtual Machine[modifier | modifier le wikicode]

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 | modifier le wikicode]

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 | modifier le wikicode]

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).

Applications[modifier | modifier le wikicode]

Jeux-vidéo (Minecraft)[modifier | modifier le wikicode]

Miniature de l'une des premières saisons de Taupe Gun

L'un des grands domaines dans lequel le langage Java est utilisé est le jeux-vidéo. De nombreuses applications mobiles, web ou logiciels sont programmées grâce à ce langage. Le jeux-vidéo Java le plus connu est le jeu Minecraft, l'un des jeux les plus vendus de l'histoire. D'un point de vue informatique, ce dernier constitue un jeu open-source, c'est-à-dire que le code source (code exécuté lors du lancement du jeu) est accessible et modifiable par tous. Cela signifie donc qu'il est possible d'ajouter au jeu des éléments manquant que nous souhaitons voir et utiliser, comme des armes customisées, des armures ou même des blocs entiers. De plus, Minecraft permet, via le langage Java, de créer ses propres mini-jeux : certains développeurs ont même reprogrammé d'autres jeux-vidéo pour, par la suite, les adapter et les implémenter dans Minecraft. Des jeux comme Hunger Games ou encore le jeu complet Garry's Mod ont donc fait leur apparition dans le jeu cubique. En France, l'un des mini-jeux les plus appréciés se nomme ''Taupe Gun'', où l'objectif est de tuer la taupe désignée au hasard dans chaque équipe avant que cette dernière ne les tue ou rejoigne les taupes des autres équipes. Ce mini-jeu a également fait l'objet d'une série YouTube de plusieurs saisons et est désormais disponible sur les serveurs les plus importants de Minecraft.

Effets d'un shader dans Minecraft

Cependant, pour ajouter ou créer ces types de jeux, il est nécessaire de les programmer et donc, d'avoir des connaissances plus poussées en Java. Pour créer un mini-jeu dans Minecraft, les connaissances basiques du langage sont requises, mais il faut ajouter à cela des packages (paquetages en français) de méthodes et fonctions comme Spigot ou CraftBukkit. Cela donne donc naissance, lors de l'exécution du code final, à un plugin Java, c'est-à-dire à un module d'extension permettant de compléter et/ou d'ajouter du contenu et des fonctionnalités au jeu. Pour mettre en relation un plugin et le jeu, il suffit de déplacer le plugin dans un dossier spécifique et de lancer le jeu via un launcher comme Forge, ce dernier étant aussi un plugin Java. Il est également possible de télécharger des plugins prêt à l'utilisation : c'est ce que l'on appelle des "Mods". En ce qui concerne les modifications open-sources de Minecraft, chaque utilisateur peut modifier l’apparence de son jeu via des packs de textures, modifiant l'aspect des blocs et items, mais aussi des shaders, modifiant cette fois-ci les animations de l'environnement (mouvement de feuilles, de l'eau, des nuages, etc...). Pour plus d'information à ce sujet, une partie ''Mods et Shaders'' est disponible sur la page Vikidia Minecraft.

Cette application du langage Java montre donc qu'il permet de créer des jeux quasiment infini, d'une part via des cartes de jeu (map) infinie, mais également avec de très nombreuses possibilités d'extensions, d'ajouts et de modifications. Des jeux comme Minecraft constituent donc un espace de création à part entière pour les plus jeunes : certaines écoles n'hésitent pas à se servir du jeux pour développer la créativité des élèves et/ou expliquer certaines notions mathématiques et géométriques.

Lien externes[modifier | modifier le wikicode]

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 —  Tous les articles sur son histoire, les logiciels, Internet…