15 Fév 2016

JSweet et TypeScript 1.x>2.x — Axa Web Center @ Paris TypeScript Meetup #5

JSweet et TypeScript 1.x>2.x — Un Ch’ti Dev @ Paris TypeScript Meetup #5

A l’occasion d’un déplacement sur Paris, j’ai décidé de participer au meetup TypeScript local car je vais devoir étudier le sujet de plus près prochainement: “Angular 2 ou ReactJS ou autre ? Et TypeScript dans l’histoire ? Et avec NodeJS ça fonctionne comment ?”

Me voila chez Valtech, dans les beaux quartiers, dans des locaux très sympas entourés d’une trentaine de développeurs.

Talk #1 : JSweet (Java => TypeScript => Javascript)

Auteur : Renaud PAWLAK (CINCHEO) // http://www.jsweet.org

JSweet est un transpileur de Java vers Javascript via TypeScript. Il a pour but de permettre de développer des applications web en utilisant le langage Java mais avec les librairies JavaScript habituelles comme Angular, JQuery, NodeJS… En bref, de TOUT pouvoir coder en Java sans toucher à JS

Forcément on pense à GWT mais dans le cas de JSweet le code généré est lisible, que ce soit en TS ou en JS. #cool Et c’est pas fini !

1-5Xu_Jcrt4oQWLwNyxvsmbA

Tableau comparatif de GWT/Vaadin, DukeScript et JSweet

 

On ne peut pas utiliser tout le langage et tout l’écosystème Java dans son application avec JSweet (c’est pour faire des applis web hein) mais tous les concepts de TypeScript sont disponibles, ce qui permet de coder une appli web dans un style objet/fonctionnel avec du contrôle de type tout de même ! Si tu as déjà codé une application en JS, tu sais que ça peut être très utile ^^

Les systèmes de modules du monde JS sont disponibles comme AMD, commonjs, UMD.

On peut debugger dans le navigateur le code JS généré avec des sourcesmaps qui font le lien avec le code Java. Magique !

Avec ses 1219 librairies disponibles, on doit pouvoir retrouver ses petits pour faire tout le nécessaire! JSweet s’appuie sur maven et introduit la notion de candies pour gérer les différentes librairies. L’équipe a développé des outils pour automatiser la génération des librairies par version, pas d’attente lors de la sortie du nouveau AngularJS 1.x, il est disponible dans la journée sur les repos JSweet.

Bref, vous voulez développer des applicatifs web avec une partie client et une partie serveur et vous préférez développer avec le même langage partout ? Et vous préférez vous appuyer sur Java plutôt que sur JS comme langage commun ? JSweet l’a fait! 😉

Bon, entre nous, il y a peu de chance que je l’utilise, primo, parce que je suis en deep diving JS depuis plusieurs années et que j’aime ça (beaucoup), secondo, je trouve que la complexité de la “double” transpilation trans-langage et la jeunesse de l’écosystème sont des freins trop grands à mon goût (dans mon contexte actuel).

Pour autant, je pense qu’effectivement il y a un marché sur le créneau de niche du développement fullstack Java, entre les déçus de GWT (la prochaine version sera super il parait #troll) et les fanatiques de Java, ça fait un pool d’utilisateurs potentiels assez intéressants. Je leur souhaite de réussir à se frayer un chemin sur ce créneau! A suivre.

Les slides: JSweet-Paris-TypeScript

 

Talk #2 : De TypeScript 1.0 à TypeScript 2.0

Auteur : Félix BILLON (DCube) // Durée : 20min

La v1 de TS a 18 mois, la v1.7 est de sortie, la 1.8 est beta et la v2 est déjà sur les rails! La concurrence est rude car il faut suivre la cadence entre les spécifications ES6, ES7, ES8 qui sortent et les concurrents comme BabelJS (et traceur) qui avancent très vite!

Avec l’arrivée d’Angular 2, dont le langage de développement par défaut sera TypeScript 1.7 (il sera également compatible avec Dart ou directement en JS), on peut s’attendre a un nouvel engouement de la communauté JS dans ce langage d’ici la fin 2016. Se pencher sur TS pour l’envisager comme langage full stack dès maintenant me parait intéressant pour le confronter justement à des solutions comme BabelJS ou autre.

Félix nous déroule les évolutions des différentes versions de la base à la 2.x

La base de TS

  • TS est un Transpileur de ES6 vers ES5/4/3 aka BabelJS, traceur
  • Apport des notions: Classe, Héritage, public/private au langage JS
  • Function arrow, default, rest params ❤ ❤ ❤
  • Inférence de type, Interface, Généricité, Modules

TS permet de base d’avoir un langage sûr, de haut niveau avec du typage pour combler les lacunes du JS.

L’évolution de TS vers ES6++ avec les versions 1.X

  • Let/const, For…of, Spread
  • Template literral, Symbol, Destructurator, Generator
  • Transpiler du TS vers ES6 (pour retranspiler ES6 vers ES5 mais avec BabelJS)
  • Classe abstraite, Configuration projet, Modules AMD, commonJS, ES6…
  • Type Union et Intersection pour la surcharge et la composition d’objet

La v2, le turfu vers ES7 and beyond!

Là, il ne faut pas s’affoler, on rentre dans la spéculation suite à la lecture des issues github, de twitter et du marc de café… qui est loin d’être une science exacte car soumise à interprétation ^^

  • Validation du flux de code pour déterminer quand on a oublié un cas pour le return ou du code inatteignable
  • Bind operator, Object Rest/Spread properties
  • Typage des paramètres de méthode via la JSDoc (sic)
  • Readonly getter (Immutabilité FTW)

Voici les slides de ce talk:

En résumé, ca bouge vite, très vite et le futur s’annonce passionnant! Felix nous a dressé un bon overview du langage en place dans un lap de temps très court, merci à lui!


Share