Le langage Java est né au milieu des années 90 comme une alternative au C++ et s’est rapidement imposé comme un standard pour les applications web.
Mais derrière le terme Java que tous connaissent, se cachent des langages et des modes de fonctionnement fondamentalement différents les uns des autres.
Le Java de Sun
Java est avant tout un langage de programmation objet, supposé gommer certaines complexités du C++ (notamment le concept de pointeur et une gestion de la mémoire dévolue au programmeur). Java peut être compilé pour améliorer ses performances et en conséquence a vocation à fonctionner dans le mode natif de la machine : en pratique à bas niveaux avec des accès très élevés. Il va donc permettre de réaliser des applications serveur : les servlets ou des applications clientes, les applets.
La JRE et les applets
La JRE (Java Runtime Environment), c’est l’environnement client des applets, une sorte de machine virtuelle dédiée à leur fonctionnement. Après avoir été présente nativement dans les navigateurs de Microsoft, elle est devenue un composant facultatif tant pour des raisons de droits de licence que de sécurité.
Elle est aujourd’hui très défavorablement vue des DSI et des navigateurs modernes, autant parce qu’elle est notoirement connue pour ses problèmes de sécurité que parce qu’elle donne de fait un accès trop élevé à des applications venant d’Internet.
Elle est vouée à disparaitre à court terme, malgré le fait qu’aucune solution viable et indépendante ne s’est présentée à ce jour.
Les servlets
Au travers d’environnements serveurs runtime complets ou simplement comme programmes compilés, les servlets sont une des meilleures alternatives à PHP ou aux technologies propriétaires telles qu’ASP ou .NET.
Elles sont notamment très utilisées pour la conception de serveurs Web, néanmoins des récentes failles de sécurité au sein de librairies ou même des Frameworks courants ont nui à leur crédibilité. Ces applications s’appuient en effet sur de nombreux composants, d’origines diverses et avec un niveau de maintenance variable.
Et Javascript dans tout cela ?
Javascript est d’architecture différente, c’est un composant intégré aux navigateurs, et cela depuis très longtemps avec d’importants progrès en termes de sécurité et de performance.
Il n’a en fait quasiment que le nom en commun avec Java.
Javascript est utilisé pour améliorer la dynamique des pages web en étendant les possibilités de l’HTML ou pour assurer le traitement et la mise en forme des flux issus des Web Services. Il est donc forcément coté client et son code est en général embarqué dans le site Web.
Il possède beaucoup moins de possibilités d’interactions avec la machine mais n’est pas exempt de vulnérabilités.
Et la sécurité au final ?
Que ce soit Java ou Javascript, l’un comme l’autre se voient découvrir des failles de sécurité graves, directement au sein des moteurs ou par le biais de librairies ou de composants externes.
Cela devient une responsabilité conjointe des utilisateurs et des éditeurs de maintenir à jour les produits utilisés pour les premiers et les composants mis en œuvre pour les seconds.
Cet article pourrait vous intéresser :
Architectures applicatives et bases de données : le Web et les serveurs applicatifs
Olivier Piochaud, Président Directeur Général d’Apsynet