La promesse du « write once, run anywhere » de Java à partir des années 90 est de retour sous une forme nouvelle. En effet, Google vient d’annoncer un nouvel outil nommé Portable Native Client (prononcé pNaCl) dans le but d’apporter du code natif dans plus en plus de plateformes.
Voici donc la promesse de Google : l’outil va permettre aux développeurs de compiler leur code une fois, et que celui-ci pourra fonctionner sur n’importe quelle plateforme matérielle et intégrer leur application pNaCl dans n’importe quel site Web.
Pour ceux qui ne connaissent pas, pNaCl a récemment été intégrée dans Chrome 31 bêta, fournissant aux développeurs la possibilité d’exécuter du code natif dans le navigateur. Il leur permet de compiler du code en C/C++ au sein d’un unique fichier exécutable qui fonctionne sur toutes les versions de bureau de Chrome et Chrome OS sans nécessiter une installation de la part de l’utilisateur.
« Sous le capot, pNaCl fonctionne en compilant du C et C++ natif pour une représentation intermédiaire, plutôt que des représentations spécifiques à l’architecture comme dans Native Client », écrit un ingénieur de Google, David Sehr. « Le bytecode est alors encapsulé dans un fichier exécutable portable, qui peut être hébergé sur un serveur web comme n’importe quel autre site Web », poursuit-il. « Lorsque le site est accessible, Chrome récupère et convertit le fichier exécutable portable dans une architecture spécifique du code machine, optimisé directement pour le périphérique sous-jacent ».
PNaCl est basé sur le Native Client de Google (NaCl), qui « apporte la performance et le contrôle bas niveau du code natif pour les navigateurs web modernes, sans sacrifier les avantages de sécurité et de portabilité des applications web », indique Google. NaCl permet aux développeurs de construire des applications Web, en passant par le domaine de la photo, de l’audio, aux jeux 3D et la modélisation CAO, laissant à ces derniers la possibilité d’obtenir directement la puissance du CPU et GPU.
En bref, Native Client permet aux développeurs d’exécuter du code natif sur le Web et Portable Native Client de porter leurs applications pour le Web. Google veut bien sûr continuer à pousser les applications en ligne pour une raison simple : c’est là que l’entreprise fait la plus grande majorité de ses revenus via des publicités.
Google vante donc le fait que les développeurs n’auront pas besoin de recompiler les applications pour qu’elles fonctionnent à travers les différentes architectures de puces.
Toutefois, si tout ceci peut paraître magique, il y a encore une grande réserve : pNaCl est seulement compatible avec Chrome, même si Google laisse entendre que cela pourrait changer. Les développeurs peuvent rendre leurs applications compatibles pNaCl avec d’autres navigateurs via pepper.js, mais c’est le seul travail supplémentaire à faire.
Tout cela semble terriblement semblable à la démarche de l’applet Java qui a fait ses débuts avec un tel principe, avant que les problèmes n’arrivent…