NectarJS, compile votre JS en code natif

Dans cet article Adrien Thierry nous parle de NectarJS, ce projet un peu fou apparu sur KickStarter il y a peu permet de compiler du code JavaScript vers n’importe quelle plateforme en natif, en WebAssembly ou encore en ASM.js.

Bonjour Adrien, et merci pour cet interview je te propose tout d’abord de te présenter :

Bonjour Mathieu, je suis un entrepreneur français, expert en sécurité informatique et passionné par les nouvelles technologies. J’ai monté Seraum, une entreprise de conseil et formation en sécurité informatique, il y a 5 ans. J’ai notamment mené diverses recherches sur la sécurité des paiements en ligne et la sécurité des accès en général. Je développe plusieurs solutions de sécurité et les tests en en temps sur hackmyfortress.com, un challenge de hacking qui offre 30 000$ à celui qui réussira à le pirater.

Peux-tu nous expliquer ce qu’est NectarJS ?

NectarJS est un compilateur JavaScript cross-platform en SAAS, ou CAAS (Compiler As A Service). Il permet de compiler du JavaScript depuis n’importe quelle plateforme, vers n’importe quelle plateforme. Actuellement, il est possible de compiler vers Windows (32 & 64 bits), Linux (32, 64 bits et ARM), Arduino (UNO et Mega), en WebAssembly et ASM.JS. Il est donc possible de compiler du JavaScript depuis un Rasbperry PI 3 vers un Arduino. Je parle bien de compilation, le résultat obtenu est un fichier binaire exécutable ou un firmware propre à la plateforme ciblée. On peut également compiler depuis sont téléphone Android vers Windows ou Linux. La plateforme de développement n’est plus un frein. Au sein d’une équipe de développeurs, il n’y aura plus à se soucier de telle version de VM ou de telle environnement de test ou compilation.

NectarJS en action
nectarjs
Tout cela fonctionne déjà et est testable avec un simple navigateur : http://nectar-lang.com

Comment avez-vous eu l’idée de ce projet ?

En faisant des benchmark : j’ai découvert Crystal, qui permet de compiler du code très proche du Ruby. Le résultat compilé est 5 à 10x plus rapide que NodeJS sur des requêtes HTTP. J’avais 2 choix pour gagner en vitesse, migrer ma stack NodeJS vers Crystal (qui est restreint à Linux), ou compiler JavaScript pour gagner en vitesse. J’ai opté pour le second choix et ai obtenu des résultats encourageants très rapidement. Divers benchmark m’ont conforté dans mes choix et m’ont poussé à continuer le dev. J’ai posté une news au hasard sur hacker News qui a fait le buzz (137 points et 78 commentaires).

Ce projet parait vraiment trop fou pour être vrai, peux-tu nous expliquer un peu son fonctionnement sans pour autant donner toute la recette ?

NectarJS crée un AST (abstract syntax tree), et génère à partir de ce dernier un langage intermédiaire (IL) que l’on peut ensuite compiler vers n’importe quelle plateforme. Le client NectarJS, installé sur les machines souhaitant compiler, va simplement chiffrer le code et l’envoyer aux serveurs pour compilation.

Quelles sont les limitations actuelles du projet, est-ce que je peux compiler mon application Node/Express ?

Pas encore, nous sommes au début du développement et il nous reste beaucoup de librairies à coder ou retranscrire. On peut déjà compiler quelques morceaux de la librairie FS (FileSystem) ou Process de NodeJS, mais il y a encore du chemin à faire. A terme, il n’y aura pas de limitations. Nous comptons compiler complètement JavaScript en norme ES5, puis en ES6 et ES7. Nous avons également l’algorithmie qui nous permet de compiler “eval()” ou “this.”.

Comment je débuggerais mon application compilé en natif ?

Il y aura plusieurs moyens de débugger son application. Le navigateur, via WebAssembly, pourra être un moyen simple d’analyser avec des outils de tous les jours le fonctionnement de son code. Nous avons également planifié d’intégrer à NectarJS tous les outils de tracing et débuggage, ce qui permettra de compiler en mode debug et de faciliter les investigations. Nous voulons vraiment démocratiser le développement, et feront tout pour le rendre le plus simple et efficient possible.

Tu pense que ton projet pourrait remplacer les langages des app mobiles natives à terme ?

S’il est massivement adopté, il pourrait remplacer beaucoup de choses : le développement mobile, mais aussi le développement pour l’IOT, le développement serveur, le développement web … Avec NectarJS, le JavaScript devient universel et efficient. N’importe qui peut coder avec n’importe quoi, la puissance de calcul importe peu puisque ce sont les serveurs de NectarJS qui font le travail. NectarJS réduit également la consommation énergétique et de fait permet de rendre l’informatique plus écologique.

Il est également possible de permettre à des personnes ayant de faibles moyens de coder : un simple Raspberry permet de développer pour tout type de plateforme avec NectarJS.

NectarJS permet à un développeur JavaScript d’être aussi efficient qu’un développeur bas niveau. Certains benchmark montre que certaines opérations mathématiques compilées avec NectarJS vont plus vites que du C.
NectarJS pourra également être utilisé dans des milieux ou la rapidité est un facteur clé de succès (trading algorithmique etc).

Est-ce que le projet as déjà rencontré beaucoup de succès ?

On est en contact avec des entreprises qui veulent utiliser NectarJS tous les jours. Démarrer une communauté à partir de zéro est très complexe, et la campagne de crowdfunding sur KickStarter me permet de voir les problèmes de communication et la résistance au changement des développeurs. Pour beaucoup, le JavaScript n’est pas un langage de programmation mais un langage de scripting. Cependant, Paypal et d’autres grands groupes utilisent au quotidien JavaScript avec NodeJS. Je suis en contact avec plusieurs grands développeurs très connus de la communauté JavaScript (NativeScript par ex), et qui soutiennent le projet. Beaucoup de personnes pensent que c’est du fake, ce qui est bien dommage.
NectarJS a fait le buzz au Japon par exemple, et a été relayé sur beaucoup de sites de news en très peu de temps. Je cherche à présent à faire la même chose aux Etats Unis et en Europe.

Si le projet KickStarter fonctionne qu’elles seraient les prochaines étapes ?

Finir de compiler la norme ES5 de JavaScript, et ensuite passer à NodeJS. En parallèle, on rajoutera très rapidement les plateformes manquantes à la compilation (Mac Os, différents Arduino et plateformes de développement). Nous allons également mettre en place une marketplace pour que les développeurs puissent donner ou vendre du code ou des librairies. Le but de la campagne est de permettra à la communauté de développeurs de choisir les prochaines améliorations de NectarJS.
Dans le cas ou la campagne échoue, nous avons des investisseurs privés en backup, mais les choix de développement seront fait en priorité pour leurs besoins.

Le mot de la fin ?

A tous ceux qui aiment le JavaScript ou qui sont passionnés de technologie, de robotique ou d’IA, n’hésitez pas à faire circuler l’information et la campagne de crowdfunding : http://kickstarter.com/projects/adrien-thierry/nectarjs-compile-javascript-for-and-from-any-devic
Merci beaucoup pour cette Interview Adrien et bonne chance pour ton projet.
Mathieu Breton, CTO de JS-Republic.
[actionbox color=”default” title=”” description=”JS-REPUBLIC est une société de services spécialisée dans le développement JavaScript. Nous sommes centre de formation agréé. Retrouvez toutes nos formations techniques sur notre site partenaire dédié au Training” btn_label=”Nos formations” btn_link=”http://training.ux-republic.com” btn_color=”primary” btn_size=”big” btn_icon=”star” btn_external=”1″]