VT2016 JerryScript

=Présentation=


 * Sujet : JerryScript et IoT.js
 * Auteur : Elsa Navarro
 * Enseignants : Didier DONSEZ, Georges-Pierre BONNEAU
 * Date : 25/11/2016



=Résumé= JerryScript et IoT.js sont deux projets développés par Samsung pour l'internet des objets (IoT). Ces deux projets sont complémentaires et permettent de développer des applications dédiées à l'IoT. Le but du projet développé par Samsung est de sensibiliser la grande communauté de développeurs JavaScript à l'IoT et de le rendre accessible à un plus grand nombre de développeurs.
 * JerryScript est un moteur JavaScript spécifique à l'IoT, c'est-à-dire qu'il respecte ses contraintes de mémoire, de performance et de portabilité.
 * IoT.js est une plateforme qui se base sur JerryScript et qui permet de développer des applications IoT en JavaScript.

=Synthèse=

JerryScript
JerryScript est un moteur JavaScript destiné à des objets petits et embarqués. Il a donc été soumis à différentes contraintes lors de son développement.

Pour toucher un maximum d'objets IoT, il est important de s'intéresser à l'espace de stockage (ROM) du dispositif. En effet, pour des raisons de place et de batterie la plupart des objets ne disposent pas de la même configuration qu'un ordinateur. Il a donc été envisagé par Samsung de développer un moteur capable tenir sur moins de 200 KB de mémoire. On peut également souligner le fait que JerryScript propose la technologie bytecode, qui permet d'embarquer sur l'objet connecté uniquement le code JavaScript compilé et donc d'obtenir un gain de place significatif.
 * Mémoire

Les objets connectés sont souvent accompagnés d'une faible performance CPU, ce qui a motivé Samsung à contraindre leur moteur JavaScript à tourner sur moins de 64KB de RAM.
 * Performance du système

JerryScript respecte la norme ECMAScript 5.1, c'est donc un interpréteur JavaScript standardisé.
 * Standard

JerryScript est écrit en C99 ce qui lui permet une très grande portabilité dans le domaine de l'IoT.
 * Portabilité

Voici un exemple d'utilisation de JerryScript pour JavaScript :

Pour conclure, le but de Samsung étant de rendre l'IoT accessible à un maximum de développeurs, leur projet est OpenSource et disponible sur GitHub.

IoT.js
Toujours dans l'idée d'être accessible, Samsung a développé une plateforme qui permet de développer en JavaScript : IoT.js. IoT.js est une version allégée de Node.js, interpréteur JavaScript dédié aux applications réseau. IoT.js permet une certaine compatibilité ascendante avec Node.js, c'est-à-dire que les applications développées avec Node.js sont compatibles avec IoT.js.

IoT.js est écrit en JavaScript et se base donc sur JerryScript pour l'interprétation. Il se base également sur une librairie d'évènements I/O asynchrone développée également par Samsung : libtuv.

On peut donc schématiser le fonctionnement du langage de la façon suivante :



Améliorations & release
Samsung a donc apporté tout un environnement de développement dédié à l'IoT permettant de développer des applications en JavaScript avec JerryScript et IoT.js. Mais cet environnement n'est pas encore complet et de nombreuses amélioraitons sont encore à prévoir pour les prochaines release du projet.

Dans un premier temps, JerryScript ne fonctionne actuellement que sur les cartes STM32F4 et sur les machines linux, ce qui réduit considérablement leur champ d'action le but étant, à terme, de fonctionner sur un maximum d'objets. Dans la même optique, les performances seront optimisées à l'avenir tout comme la mémoire, afin d'être compétitif et performant dans le domaine de l'IoT.

=Bibliographie= http://iotjs.net/ http://jerryscript.net/ https://github.com/Samsung/iotjs https://github.com/Samsung/jerryscript http://events.linuxfoundation.org/sites/events/files/slides/openiot-summit-2016-iotjs.pdf https://www.infoq.com/news/2015/08/iotjs-jerryscript-samsung https://www.youtube.com/watch?v=afSHg2-CPjo