URL: https://linuxfr.org/news/nanoko-un-framework-javascript-open-source-pour-applications-web-mobiles Title: Nanoko, un framework JavaScript open source pour applications web & mobiles Authors: Rom1 Nÿco, baud123 et rootix Date: 2013年02月15日T10:59:36+01:00 License: CC By-SA Tags: framework, javascript et publicité Score: 23 Nanoko est un tout nouveau __framework JavaScript professionel__ supporté par le consortium open source européen [OW2](http://www.ow2.org). Publié sous licence Apache 2.0, il permet de concevoir des __applications web & hybrides__ (encapsulation via Phonegap par exemple) de manière __unifiée__. ![Nanoko](http://www.nanoko.org/Resources/logo-nanoko.png) ---- [Nanoko : pro javascript framework](http://www.nanoko.org/) [nanoko-project sur GitHub](https://github.com/nanoko-project/) [Ubidreams](http://www.ubidreams.com/) [Dynamis-Technologies](http://www.dynamis-technologies.com/) ---- ## Quelles ont été les motivations ayant conduit à la création de Nanoko ? Nanoko a été implémenté pour : * contourner l' __hétérogénéité__ et la __volatilité du marché du numérique__, sachant il est de plus en plus complexe et coûteux de mettre à disposition son application sur tout ou partie des appareils pour maximiser son potentiel d'utilisateurs * répondre aux nouvelles attentes du marché avec l'intégration de __services__ (DropBox, PayPal, Foursquare...), de __technologies__ (NFC, camera frontal et dorsale, Wifi-Direct, tactile...) et d' __usages__ (réseaux sociaux, _gamification_/ludification, paiement mobile, geomarketing) de plus en plus variés afin d'offrir une __expérience personnalisée et ubiquitaire__ à l'utilisateur * tirer partie des __fonctionnalités et des usages de chaque type d'appareils__ selon que l'application soit déployée sur un smartphone, une tablette, une TV connectée, ou sur le cloud ; et sur les montres, vêtements et lunettes connectés demain. ## Quels sont les concepts phares de Nanoko pour répondre à ces attentes ? L'approche du __client unifié__ requiert de pouvoir adapter l'application à chaque appareil, pour éviter de devoir développer _n_ applications pour cibler _n_ appareils comme le font la plupart des éditeurs d'applications et autres SSII à l'heure actuelle. Pour ce faire, __Nanoko permet de concevoir des applications modulaires__, chaque module représentant une fonctionnalité métier ou un fragment d'UI. Le framework intègre donc un __modèle à composants de services__ à l'instar d'[OSGi](http://www.osgi.org) dans le monde J2EE. Chaque composant décrit ses dépendances et les services qu'il offre. Nanoko va alors résoudre à l'exécution, en fonction du contexte et selon le type de plateforme les dépendances de services pour __activer les modules adéquats, en désactivant les autres__. ![Nanoko architecture](http://www.nanoko.org/slides/IntroMobile/images/nanoko-approche-modulaire.png) Par exemple, votre application permet de prendre une photo et de gérer vos photos sur le Cloud, si vous êtes sur un smartphone vous activez la prise de photo, si vous êtes sur une TV connectée non équipée de caméra vous désactivez la prise de photo. De plus, dans chacun de ces deux cas on active le fragment d'UI qui correspond. En effet, l'interface et l'ergonomie d'une application smartphone ou d'une application pour TV connectée diffèrent diamétralement. ## Quels sont les avantages de Nanoko ? Le gros avantage de l'approche unifiée est de __conserver un ensemble de composants JavaScript commun__ pour chaque plateforme et d' __offrir des composants spécifiques__ pour tel ou tel autre type d'appareils et selon les fonctionnalités qu'ils prennent en charge. L'approche modulaire permet d'offrir une solution logique à la diversification des devices et des usages. Mais Nanoko ne s'arrête pas là puisqu'il offre une __chaîne de compilation__ de l'application construite autour de la technologie [Maven](http://maven.apache.org) ainsi qu'un __watch mode__. ## Plus concrètement, comment cela s'architecture-t-il ? La chaîne de compilation effectue un ensemble de traitements (compilation, test unitaires, minification, obfuscation, optimisation, packaging) permettant __d'accélerer, de solidifier et de mutualiser__ le développement de l'application. La chaîne de compilation de Nanoko intègre une batterie de bibliothèques JavaScript adéquates telles que : * CoffeeScript et Less : pour une syntaxe allégée et l'accès à des fonctionnalités additionnelles (par rapport à JS et CSS) * Jasmine pour les tests unitaires : tout composant ne respectant pas ses jeux de tests ne sera pas agrégé dans l'application finale, et s'il est indispensable la chaîne de compilation renvoie gentiment le développeur à ses cahiers. * JSLint, JSHint, Dust, etc. Le __watch-mode__ quant à lui compile à la volée vos sources dès que vous sauvegardez un fichier et fait tourner automatiquement la chaîne de compilation. ![Nanoko build](http://www.nanoko.org/slides/IntroMobile/images/nanoko-architecture-buildprocess.png) Nanoko a donc fait pour vous une sélection des toutes dernières bibliothèques JS et les a combinées pour vous offrir un environnement de développement permettant d' __industrialiser vos développements web côté client__ tel que ce qui est fait côté serveur dans les langages professionnels (J2EE, Ruby, etc.). Enfin Nanoko encapsule les __meilleures bibliothèques multi-platformes__ du moment, dûment testées et sélectionnées par les auteurs du framework pour leur performance ou leurs fonctionnalités : [jQuery](http://jquery.com/), [EnyoJS](http://enyojs.com/) , [Bootstrap](http://twitter.github.com/bootstrap/), [CoffeeScript](http://coffeescript.org/), [Mootools](http://mootools.net/), [Less](http://lesscss.org/), [Dust](http://akdubya.github.com/dustjs/), [JSLint](http://www.jslint.com/), [JSHint](http://www.jshint.com/), [Jasmine](http://pivotal.github.com/jasmine/), [Node.js](http://nodejs.org), etc. Ces bibliothèques sont mises à disposition sur le dépôt [Maven Central](http://search.maven.org) de Sonatype, afin de permettre une __récupération automatique des bibliothèques requises__ par votre application par la chaîne de compilation de Nanoko. D'ailleurs, c'est la toute première fois que Sonatype accepte des artefacts Maven implémentés en JS car n'acceptant jusqu'alors uniquement des artefacts Java, tout ça __grâce à la publication de Nanoko en open source et un travail acharné__ de ses fondateurs. __Nanoko ne réinvente donc pas la roue__, le framework tire partie des bibliothèques mondialement utilisées à l'heure actuelle et y ajoute des concepts éprouvés du développement logiciel professionnel. Nanoko vous permet donc de __développer à un niveau industriel__ tout en utilisant vos __bibliothèques favorites__ ! Vous pouvez également __mettre à niveau industriel vos applications existantes__ en les modifiant très légèrement. ## Les perspectives __Avec Nanoko, une nouvelle ère s'ouvre donc aux développeurs JS__, en résolvant le manque d'industrialisation des développements JavaScript actuels et en adoptant l'approche révolutionnaire du client unifié, pour le développement d'applications web nouvelle génération, adaptables partout ! À vos IDE, commencez à développer les __applications multi-modales de demain__ ! D'ailleurs le projet a une feuille de route bien étoffée cette année qui devrait réserver quelques surprises à l'ensemble des communautés web & J2EE à l'échelle internationale. Comme quoi, l'innovation des TPE françaises peut sans problème rayonner mondialement, n'ayez pas peur de vous lancer vous aussi ! _Develop once & professionally, deploy everywhere!_ Testez au plus vite le tutoriel de Nanoko disponible sur le site web dans la section Developer>Docs. Le site a d'ailleurs été réalisé en Nanoko, ci-dessous l'égérie du framework ! ![Avatar Nanoko](http://www.nanoko.org/Resources/Avatar_nanoko.png) _Nanoko : La technologie sexy qui va faire mal !_

AltStyle によって変換されたページ (->オリジナル) /