A quoi sert Java ?

VulcanBrain

Architecte en herbe
22 Août 2015
256
5
75
Bonjour,

Ma question est un peu spéciale, car elle traite plus de l'environnement java que de Minecraft.
Je sais que Java est un langage de programmation et une plateforme pour les applications.

Mais c'est pas très clair pour moi. En fait à quoi sert le programme java qu'on utilise conjointement avec les jeux, applis et navigateurs web ? Que fait il ?

Merci de vos lumières.

Cordialement

VulcainBrain
 

robin4002

Expert en informatique et systèmes d'information
Staff
Responsable technique
Responsable forum
12 Novembre 2012
20 857
157
3 002
347
26
Alsace
www.minecraftforgefrance.fr
Salut,
L'asm, le C, le C++ sont des langages natifs. Les instructions générés par ces derniers sont exécutés directement par le processeur, ce dernier est donc capable de les comprendre.

Un programme Java contient des instructions qui ne peuvent pas être comprit par le processeur. C'est le byte code java. La JVM (java virtual machine) s'occupe de transformer à la volé le byte code java en instructions natives qui peuvent être comprit par le processeur. Le processeur exécute ensuite ces derniers.

Le programme Java que tu installes sur ton ordinateur est le JRE (Java Runtime Environment), c'est justement lui qui contient la JVM ainsi que toutes les bibliothèques Java de base.

L'intérêt principal de l'approche de Java et qu'il est possible de faire un binaire unique qui pourra être exécuté sur n'importe quel ordinateur ayant une JVM (peu importe l'architecture du processeur et le système d'exploitation utilisé).

Un programme en ASM doit être presque complètement réécrit pour fonctionner sur une autre architecture. Et il y a du code à modifier pour le faire fonctionner sur un autre OS.
Un programme en C doit être compilé pour chaque architecture et chaque OS. Il peut avoir des variantes dans le code en fonction de l'OS ou de l'architecture. En général on utilise des conditions et les préprocesseurs afin d'avoir un code unique pour tous les OS (mais qui devrait être quand même compilé pour chaque OS / architecture, donc il y aura plusieurs binaires).


Je déplace la discussion dans la section informatique, ça me semble plus approprié.
 

VulcanBrain

Architecte en herbe
22 Août 2015
256
5
75
Merci pour le cours professeur aha. J'ai appris un truc maintenant. Du coup le JRE, si on vulgarise la chose, c'est un interpréteur de code en gros ? Il traduit le code java ayant été programmé sur Minecraft pour le processeur, afin qu'il le comprenne ? C'est ça ?

Désolé de ne pas avoir choisi la bonne section.

EDIT : pour aller plus loin : le java n'est pas compris par le processeur ? Pourtant il a bien fallu un ordi, avec un process, pour avoir créé le code java non ? :D
 

VulcanBrain

Architecte en herbe
22 Août 2015
256
5
75
Hello, je crois que j'ai compris, le C est natif et compris de base depuis le processeur, mais le java est donc un code non natif, qui a été programmé à la base en C. Mais comment rend on un langage natif ? N'est il pas possible de programmer les processeurs pour y rendre le java natif ?
 

robin4002

Expert en informatique et systèmes d'information
Staff
Responsable technique
Responsable forum
12 Novembre 2012
20 857
157
3 002
347
26
Alsace
www.minecraftforgefrance.fr
La JVM est en C, pas le Java. Le java est un langage, pas un programme.

Pour qu'un langage soit natif il que ses instructions soit compréhensible pas le processeur.
Or les instructions du byte code Java ne le sont pas.

Il est peut-être possible de concevoir un processeur capable de comprendre nativement les instructions byte code, mais je ne suis pas sûr, ça dépasse mes connaissances.
 

VulcanBrain

Architecte en herbe
22 Août 2015
256
5
75
Haha, les miennes aussi, mais je projette, je ne suis limité que par mon imagination.
 

Clen

pessimiste repenti
22 Février 2016
1 507
286
167
21
Lille
Théoriquement, c'est possible, mébon, ça serait se faire chier pour rien.
Faudrait sans doute créer une nouvelle architecture etc...
Pour commencer, il faudrait que Apple et Windows se réconcilient question compatibilité...c'est pas gagné !