![]() |
Emploi
|
![]() |
Start-up
|
![]() |
Evénements 01 | ![]() |
Avis d'expert | ![]() |
Vidéos | ![]() |
Indicateurs
|
![]() |
Distribution
|
![]() |
Telecharger Pro
|
![]() |
Livres blancs | |||||||||||||||||||||












Noop se définit comme un langage testable tournant dans la JVM (Java Virtual Machine). Selon Google, qui présente le projet sur le site de Noop, « il tente de tirer les leçons des anciens et des nouveaux langages, tout en encourageant à travers sa syntaxe les bonnes pratiques de l'industrie et en décourageant les mauvaises pratiques d'écriture de code ». Derrière ce projet, on trouve des ingénieurs de Google et quelques développeurs provenant d'autres sociétés.
Noop – en référence à l'instruction en langage machine NOP ou NOOP, ne rien faire – est en réalité un Java-like, autrement dit un langage doté d'une syntaxe similaire à celle de Java. Son objectif est, d'une part ,d'intégrer dans sa syntaxe les bonnes pratiques actuelles telles que l'injection de dépendance, la testabilité, l'écriture d'un code source lisible, une documentation exécutable toujours à jour et un typage fort des variables. Et, d'autre part, d'éviter les mauvaises pratiques telles que le code et les variables statiques, l'héritage d'implémentation, les primitives… Sur le wiki des développeurs, on trouvera la liste des fonctionnalités prévues ou proposées pour le langage.
Première innovation, l'injection de dépendance. Popularisée par le framework open source Spring, cette technique a modifié la manière dont on programme en Java aujourd'hui, au point d'éclipser le modèle EJB (Enterprise JavaBean) de Sun. Elle met en œuvre l'inversion de dépendance, qui est une implémentation du patron de conception Inversion de Contrôle (IoC, Inversion of Control) : lorsqu'un module effectue un traitement, le contrôle de ce dernier est déporté vers l'appelé et non vers l'appelant. On évite ainsi que les objets contiennent trop de comportements, ils sont ainsi plus faciles à maintenir.
La testabilité du code (capacité à tester un développement) est un autre élément clé de ce nouveau langage. Celui-ci favorisera en effet le test automatisé, en particulier pour les tests unitaires. Cette pratique mise en avant par les méthodes agiles est désormais largement adoptée dans les projets modernes. Elle implique des relations privilégiées entre code de production et de test, et préconise l'implémentation du code de test en tant que classe avec des méthodes.
On l'aura compris : l'idée de Noop est au final d'intégrer dès le départ dans sa syntaxe toutes ces avancées, qui font le succès des langages modernes, contribuant à la qualité et à la lisibilité du code produit, et évitant ainsi le recours à des bibliothèques et des outils externes.
Pour l'instant, Noop est à l'état de projet en phase initiale, toutes ces fonctionnalités ne sont que des intentions ou des propositions. Il est soumis à la licence Apache 2.0 et hébergé par Google. Le projet a été présenté au JVM Language Summit et a reçu un accueil très favorable.
Google prévoit trois moyens pour utiliser les fichiers source Noop :
- Un traducteur Java, il produira du code Java à partir de code Noop. Il permettra ainsi d'utiliser Noop progressivement sans avoir à convertir tous les codes source Java. Mais toutes les fonctionnalités du runtime du langage ne seront pas fournies dans ce traducteur ;
- Un interpréteur, il lira et évaluera le code Noop à travers un interpréteur et aura une interface en ligne de commande ;
- Un compilateur, il compilera en bytecode Java.
Sun prend la nouvelle plutôt bien. Pour Alexis Moussine-Pouchkine, architecte Java chez Sun, Noop est une bonne idée : « Le langage Java n'est pas parfait. La profusion de langages alternatifs sur la JVM (Groovy, JRuby, Python, Scala, Clojure et d'autres) en est la meilleure démonstration, et que Noop fonctionne également au-dessus de la JVM est une excellente chose. Que le meilleur de ces langages gagne ! En revanche, il ne faut pas tomber dans l'excès de critique envers Java, qui restera vraisemblablement par sa lisibilité, par son ubiquité et par son accessibilité au plus grand nombre, la colonne vertébrale des applications de gestion en entreprise pendant encore de nombreuses années. »
Après GWT (Google Web Toolkit), un Java-like pour les RIA et Java for GAE (Google App Engine) un Java-like pour le cloud, Google investit dans un Java-like générique et démontre encore une fois une stratégie tous azimuts autour de Java.
















