Blog

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

L’accueil a été chaleureux. A l’entrée on trouve des revues informatiques offertes par les sponsors (Linux Mag, Programmez, L’Informatique…). Du matériel a été mobilisé pour l’évènement, mon badge a été imprimé sur place juste à mon arrivée. On peut noter également la présence de la ministre délégué de l’économie numérique. Les contenus des sessions étaient riches et variées. Il y a toutefois des corrections à apporter au niveau de la communication. C’est une fois dans la salle qu’on a les détails d’une session, au moment où c’est trop tard de changer pour aller voir une autre plus « intéressante » (Je fais la comparaison avec Devoxx où il y avait plus de transparence à ce niveau). Des changements de salles étaient effectués à la dernière minute sans laisser de trace d’informations.

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.

admin

Written by

The author didnt add any Information to his profile yet

  • On peut comparer les ports à l’API message de javascript utilisée par les workers ?

  • Johann Hilbold

    non

  • Yakhya Dabo

    Non pour répondre comme Johann ! La comparaison peut se faire entre les Isolate de DART et les Workers de JavaScript, à la différences qu’un Isolate a son propre espace mémoire qu’il peut cacher aux autres.

  • Ouais … donc en quelque sorte oui quand même … on peut les comparer …
    On ne peut sans doute pas dire que c’est pareil, mais on peut les comparer !!!
    Après, ma question était peut être mal formulée :)

    En revanche, je ne comprends pas vraiment quand tu dis « pour exploiter les multi core » … à mon sens, sur un langage de ce type, c’est surtout pour éviter de flinguer l’UI qu’on fait du multi-thread, non ? Après, peut-être que ça marche encore mieux avec des multi-fruits, mais bon, est-ce le but ?

  • Johann Hilbold

    c’est clairement pas le but

  • Guillaume Rams

    Et spécialement pour Oxiane-canal-historique : « An introduction to Dart for Smalltalkers »
    http://www.dartlang.org/slides/2012/03/smalltalk-industry-conference/DARTtalk-20120319.pdf

  • Grams

    Non seulement ils sont comparables, mais quand Dart est compilé vers Javascript les isolates deviennent… des web workers !

  • Christophe Marchand

     Oxiane-canal-historique : c’est ceux qui ont un écran à leur nom ?

  • Mickaël Poulachon

    Qui est ce qui s’y colle pour nous pondre une formation digne de ce nom ^^

  •  toi t’es à deux doigts de pas avoir de cookie à la prochaine fournée fais gaffe !

  • ça peut être un mug, une tasse à thé ou tout autre objet mobilier

    pour ça, suffit juste que JL retrouve sa dymo et qu’il soit bien disposé :D

  •  Alors faut faire gaffe quand on fait des blagues de ce genre o_o

  • Yakhya DABO

    Super idée de faire découvrir DART à travers Smalltalk !