Cette notion est relative mais par rapport au C++, JAVA est plus simple à utiliser. En particulier, il n'existe pas de pointeurs explicites et la gestion de la mémoire est transparente pour le programmeur.
Un objet informatique est une entité munie de propriétés et de méthodes capables d'agir sur ses propriétés ou de réaliser certaines actions. Un objet contient des données et du code permettant de les manipuler. Dans JAVA, cette notion est poussée à l'extrême puisque dans ce langage tout est objet y compris le programme.
Le typage des données est extrêmement strict. Aucune conversion de type implicite pouvant provoquer une perte de précision n'est possible. Comme les pointeurs ne sont pas accessibles les erreurs de gestion mémoire sont impossibles. Pour les applets, il est en principe impossible d'accéder aux ressources de la machine hôte. Enfin lors de l'exécution, on vérifie que le code généré par le compilateur n'a pas été altéré.
Le compilateur génère un code universel le « byte-code ». Un interpréteur spécifique à l'ordinateur hôte appelé « machine-virtuelle » permet l'exécution des programmes. La représentation des données étant indépendante de la machine qui exécute le code, les résultats des calculs sont indépendants de cette machine.
Dans les versions récentes des machines virtuelles, un compilateur génère un code directement exécutable sur la machine ce qui permet d'obtenir des performances comparables à celle d'un langage directement compilé.
JAVA permet l'exécution en apparence simultanée de plusieurs processus. En réalité on accorde de façon séquentielle un peu du temps processeur à chaque processus. On dit aussi multithread.
JAVA permet de développer soit des applications classiques ayant accès à toutes les fonctionnalités du langage soit des applets qui sont des programmes destinés à être exécutés dans un navigateur WEB. Pour des raisons évidentes de sécurité, une applet ne peut pas manipuler la mémoire ni les fichiers de la machine hôte.
Lors du chargement d'une applet JAVA, le « byte-code » est vérifié par la machine virtuelle. En cas d'erreurs involontaires ou volontaires (pour essayer d'enfreindre les règles de sécurité) ce code est rejeté. Si le code est correct, la machine virtuelle l'exécute dans une fenêtre de dimensions invariables qui sont précisées dans la balise html qui demande le chargement de l'applet. Voici un exemple de code html (minimal) pour appeler une applet.
<html>
<head> <title>calcomp</title> </head>
<body>
<applet code=calcomp.class name=calcomp width=450 height=510></applet>
</body>
</html>
Le fait que dans une applet la fenêtre d'exécution soit fixe doit être pris en compte lors de l'écriture du code : il n'y aura pas de mise à l'échelle possible selon la résolution écran de la machine.
JAVA est un langage puissant et doté de possibilités graphiques faciles à mettre en ouvre ; il permet l'animation des pages html ce qui constitue la principale raison de son succès. Tous les navigateurs contiennent maintenant une machine virtuelle JAVA. Toutefois il se pose des problèmes de compatibilité. SUN a développé une nouvelle version 1.2 de JAVA qui n'est pas prise en compte directement par la machine virtuelle des navigateurs ; pour pouvoir l'utiliser, il faut charger sur les machines des « plug-in » qui modifient la machine virtuelle. Pour cette raison, je me limiterai à la version 1.0.2. et à la version 1.1.