LibreDA : JavaScript pour un logiciel administratif Le retour de JavaScript Louis Martin Martin Simoneau 2 avril 2015
1 Objectifs 2 Le fureteur 3 JavaScript 4 Écosystème de développement 5 NoSQL 6 Exemples 7 Conclusion
Objectifs Développer et maintenir des systèmes modernes et performants : Indépendants des systèmes d exploitation Respectant les meilleures pratiques du génie logiciel Pouvant être déployés de façon flexible Utilisant des composants libres Permettant des gains de productivité
Excellent!
Le fureteur : client universel Le fureteur : client universel Omniprésence sur toutes les plateformes Environnement virtuel d exécution nous isolant du système d exploitation Abandon des plugiciels plugins Séparation des aspects separation of concerns CSS3, HTML5, JavaScript Application web monopage Web adaptatif
Le mobile Le mobile protéiforme Téléphones Tablettes Phablettes Montres Téléviseurs (hors compétition) Internet des objets (hors compétition)
Le mobile Mobile versus poste de bureau pour 2013 http ://www.intelligentpositioning.com/blog/2014/01/mobile-and-tablet-traffic-set-to-overtake-desktop-by-mid-2014/
Le mobile Le mobile dominant http ://www.studionorth.com/is-your-business-strategy-as-mobile-as-your-customers/
Le mobile Temps passé par type d appareil aux États-Unis http ://searchenginewatch.com/article/2353616/mobile-now-exceeds-pc-the-biggest-shift-since-the-internet-began
Le mobile Fureteurs les plus populaires aux États-Unis http ://marketingland.com/report-googles-chrome-android-browser-edge-microsoft-ie-lead-market-share-86443
Les débuts JavaScript : la création Apparu en 1995 LiveScript Conçu en une semaine par Brendan Eich de Netscape Communications Corporation Influencé par Self, Scheme, Perl, C, Java, Python
Les débuts JavaScript : les caractéristiques Langage de script léger Principalement connu comme le langage de script des pages web Utilise le concept de prototype, dispose d un typage faible et dynamique Permet plusieurs paradigmes de programmation : fonctionnelle, impérative et orientée objet.
Les débuts JavaScript : les défauts Incompatibilité entre les fureteurs Lenteur Spaghetti avec le code HTML Utilisé pour les effets visuels Difficile à tester Inapte pour du développement professionnel
La transformation JavaScript : la transformation Ajax The Good Parts JQuery AngularJS CSS DOM vers une prise en charge par les cadriciels Node.js JavaScript sur le serveur JSON remplacement de XML
La transformation The Good Parts
La transformation JSON JavaScript Object Notation "dossier": { <dossier> "personne": { <personne> "nom": "Einstein", <nom>einstein<nom> "prénom": "Albert" <prénom>albert</prénom> }, </personne> "adresse": { <adresse> "nocivique": "1234", <nocivique>1234</nocivique> "rue": "Notre-Dame", <rue>notre-dame</rue> "ville": "Montréal", <ville>montréal</ville> "codepostal": "H3C3P8" <codepostal>h3c3p8</codepostal> } </adresse> } </dossier>
Aujourd hui Nombre de modules pour certains dépôts 2013-2014 http ://www.modulecounts.com/
Aujourd hui Évolution des dépôts sur GitHub http ://redmonk.com/dberkholz/2014/05/02/github-language-trends-and-the-fragmenting-landscape/
Les meilleures pratiques Les meilleures pratiques Structures normalisées pour les projets Utilisation d un gestionnaire de version pour le code source Normes de codification Tests unitaires Construction/intégration continue Déploiement automatisé test, pré-production, production Pilotage des points précédents
Les meilleures pratiques Java vs JavaScript Outil Java JavaScript Construction Ant, Maven, Graddle Grunt, Gulp, Brunch Codification Checkstyle JSLint, JSHint Tests unitaires JUnit Unit.js, Jasmine, mocha Intégration Jenkins, CruiseControl Jenkins, React, Yoeman
Écosystème de développement Normes de codification JSHint
Écosystème de développement Gestionnaire de sources GIT
Écosystème de développement Serveur d intégration Jenkins
Écosystème de développement Couverture de tests Istanbul
Écosystème de développement Couverture de tests Istanbul
Écosystème de développement Tableau de bord Jenkins
Écosystème de développement Tableau de bord Jenkins
Écosystème de développement Tableau de bord Jenkins
Écosystème de développement Tableau de bord Jenkins
Écosystème de développement Tableau de bord Jenkins
Écosystème de développement Tableau de bord Jenkins
Écosystème de développement Suivi de projet Trello
Qu ont-ils en commun? Google Facebook Twitter LinkedIn Amazon
NoSQL 150 BD NoSQL http ://nosql-database.org/ Particularités : Sous licence libre Pour des volumes extrêmes Avec une forte résilience Supporte des modèles de données multiples Orientées : Colonne Document Clé valeur Graphe
Simplicité JavaScript associé à MongoDB Exemple de trois types de représentation des données versus un seul
Abstraction Choix du bon niveau d abstraction
Le portail mobile de l UQAM Le portail mobile de l UQAM Petit vidéo du portail mobile de l UQAM
Productivité accrue Productivité accrue JavaScript est un langage puissant L écosystème JavaScript est très évolué et en pleine croissance Node.js (entre autres) permet d utiliser JavaScript sur le serveur Plusieurs types de BD acceptent le format JSON (ex. MongoDB et PostgreSQL) Il est possible d utiliser JavaScript de bout en bout pour plusieurs types d application Des gains de productivité appréciables sont possibles