La confusion est grande dans les esprits entre JavaScript et Java. La plupart d'entre nous ne connait pas vraiment les différences fondamentales entre ces 2 langages. On peut dire que le seul élément qui les rapprochent se trouve dans le nom.
Je vais donc essayer de lister les principales différences.
1 - A quoi servent-ils ?
JavaScript est un langage de scripts développé à l'origine par Netscape et destiné uniquement (à ma connaissance) à s'intégrer dans les pages HTML.
Java est un langage développé par Sun. Il peut être intégré sous forme d'applet à des pages web, mais il permet également de développer des applications ou des logiciels complètement indépendants du net.
2 - Comment fonctionnent-ils ?
JavaScript est un langage interprété. C'est-à-dire que le code source du script est celui qui va servir à son éxecution. Le navigateur lit le code source intégré aux pages, dans le langage HTML, et interprète ce code pour en donner une exécution. Chaque navigateur a sa propre interprétation du script.
Java est un langage compilé. C'est d'ailleurs le cas pour la plupart des langages de programmation. Le développeur conçoit un programme et le code. Le code source est ensuite compilé en langage illisible pour nous, mais qui sera exécuté par la machine virtuelle Java. La machine virtuelle est intégrée à votre navigateur. Dans le code HTML des pages, est codé un appel à une applet Java. L'applet Java, compilée par le développeur, est téléchargée puis exécutée.
3 - Interprété et compilé, les implications
Le code source JavaScript est interprété. En distribuant un javascript, il est impossible de cacher le code source puisque le code source est directement utilisé pour l'exécution. Avec JavaScript, il est ABSOLUMENT IMPOSSIBLE de cacher à vos visiteurs les secrets de vos si belles pages.
Le code compilé de Java, souvent assez lourd à télécharger est illisible. Le code source est protégé. (Même si on me signale l'existence de logiciels destinés à décompiler)
En Java, on parle d'applets, pour désigner de petites applications. En JavaScript, on parle plutôt de scripts, qui impliquent plus l'idée de code source lisible.
4 - Les possibilités et les faiblesses de JavaScript
JavaScript est assez simple à comprendre et il est possible de réaliser rapidement de petits scripts impressionnants. De plus, c'est un langage très riche et qui offre beaucoup de possibilités.
Le principal avantage de Javascript réside dans la sécurité. En effet, les concepteurs ont interdit toutes les opérations qui pouvaient porter atteinte à la sécurité du visiteur. Le vol d'information, la destruction de fichiers sont impossibles. Ce qui peut paraître une faiblesse : il est impossible de créer un fichier, d'accéder à une base de données en JavaScript est en fait un gros atout : PRATIQUEMENT TOUS LES VISITEURS ACCEPTENT LE JAVASCRIPT. Le véritable inconvénient de JavaScript est sa compatibilité très limitée entre navigateurs Internet Explorer et Netscape ont parfois des visions très différentes du JavaScript. Cela oblige souvent à coder 2 scripts pour la même action.
5 - Les forces et faiblesses de Java
Je ne connais pas très bien Java. Et j'avoue ne pas être très objectif.
L'avantage principal de Java est qu'il permet tout ce que JavaScript interdit pour des raisons de sécurité : écriture de fichiers, échange de données, etc. De même, graphiquement, Java est bien plus puissant. Mais au prix d'un temps de chargement que je juge prohibitif.
Java est aussi peu fiable et souvent le navigateur plante à cause d'une applet. Ce qui explique que de nombreux visiteurs refusent les applets Java. C'est le problème des autres technologies plus récentes (Flash et autres) qui ne sont pas acceptées par tous les visiteurs.
Les 2 inconvénients majeurs de Java sont donc (à mon avis) les temps de chargement et les problèmes de sécurité qui réduisent ainsi le nombre de visiteurs susceptibles d'exécuter vos applets.
Finalement
J'espère avoir réussi à montrer les différences entre ces 2 langages. N'hésitez pas à apporter votre contribution...
Je vous invite à lire la page Les limites de javascript pour en savoir plus.