jeudi 18 octobre 2012

Open World Forum : Edition 2012

Ce week end se tenait à Paris la cinquième édition de Open World Forum (Le premier forum Open Source en Europe). Comme son nom l’indique c’est un forum mondial sur les solutions Open Source, tant sur le niveau technologique, sociétal qu’économique. Les présentations du forum s’articulaient autour de trois volets :
  • Think qui se concentrait sur des réflexions tels que l’Open Data, le Cloud Computing, la Neutralité sur le net, l’internet des objets…
  • Code qui traitait du développement logiciel et des plateformes Open Source logicielles (Java, Javascript, Python, Android, Dart , PHP …)
  • Experiment qui était dédié à l’expérimentation de logiciels et de matériels.
Le volet Code, étalé sur les trois jours, était découpé en plusieurs sessions regroupées par thèmes :
  • Cloud computing : Google App Engine
  • Big Data : Hadoop , Talend, Websemantique
  • Mobililé : Android
  • Web : JavaScript, AngularJ, PHP, HTML 5, Dart
  • Java

Session DART

Pour « Moi Développeur Normal » le JavaScript a tout d’un vrai générateur de frustrations. Pas d’IDE efficace, pas d’ Autocompletion, pas de Refactoring. La faiblesse du typage ouvre la porte à tous les effets de bord possibles. Les librairies utilisées pour rendre le langage moins difficile à pratiquer comme JQuery, Dojo ou nodeJS, sont incompatibles entre eux. Quand on en choisit un on est contraint de faire avec jusqu’au bout, au risque d’avoir de mauvaises surprises.
Pour pallier ces insuffisances dans un contexte de projets web complexes Google propose Dart. L’objectif est de rendre les projets web plus structurés avec des IDE plus évolués et un gain de performance à l’exécution par l’optimisation du code. Il peut être utilisé côté serveur comme côté client.
Dart c’est un nouveau langage (orienté objet), une machine virtuelle et des librairies. Il est créé par Google pour surfer sur les lacunes de JavaScript. L’annonce a fait beaucoup de bruits (voir et/ou ), certaines rumeurs voudraient que ce soit le futur remplaçant de GWT. Google, à travers ses différents spkeakers, soutien que les deux outils continueront à être maintenus. DART devrait être vu comme une alternative de GWT qui est orienté Java.
Le code peut être compilé en JavaSript pour tourner dans tout navigateur compatible JavaScript ou interprété et exécuté directement par une machine virtuelle (souvent embarquée dans un navigateur, exemple Chromium).
Fonctionnement
Les outils :
  • Editeurs : DartEditor, plugin eclipse
  • Compilateurs : Dartium, dart2js
  • Librairies : dart.core, dart.io, dart.math, dart.html, …
La syntaxe :
class Point {
  int x, y;
  Point(int x, int y){
   this.x = x;
   this.y = y;
  }
public double distance() {
 return sqrt(x*x + y*y);
  }
}

main() {
  Point point = new Point(2,3);
  print(point.distance());
}
La syntaxe est inspirée de Java. Mais en plus on a...

… du sucre syntaxique
Point(this.x, this.y); // pour le constructeur

… un style fonctionnel
distance() => sqrt(x*x + y*y);

… un typage static optionnel
Tout comme le JavaScript le typage reste le maillon faible. Les types n’ont aucun impact sur la compilation ou l’exécution du code, il n y a aucune vérification. L’usage des types statics permet uniquement de faciliter l’écriture de code comme c’est écrit dans les specs “ Dart programs may be statically checked. The static checker will report some violations of the type rules, but such violations do not abort compilation or preclude execution.
  var x, y;
  Point(var x, var y){
   this.x = x;
   this.y = y;
  }
Multi threading avec Isolate Dart est monothread. Pour exploiter le multi core Google introduit les Isolate, des composants qui communiquent par message à travers des ports logiques (ReceivePort, SendPort). Chaque Isolate a son propre espace mémoire qui est inaccessible aux autres Isolate. 

Il n’y a pas encore de release, mais avec un langage aussi structuré, un éditeur moderne, une VM et une syntaxe familière on est tenté d'aller voir plus.