Clojure est un dialecte de Lisp pour la JVM créé par Rich Hickey. En dehors d'être un langage fonctionnel de la famille de Lisp, il propose plusieurs caractéristiques intéressantes notamment par rapport à la gestion du "multithreading". Le mieux est d'aller voir le site officiel - http://clojure.org/ - sur lequel vous trouverez toutes les informations pertinentes.
Si après la première de 10 vidéos de présentation sur clojure. Je trouve cette série vraiment bien faite : elle présente dans des vidéos relativement courte (toujours d'une durée au maximum de l'ordre des 10 minutes) l'essentiel des caractéristiques de Clojure.
J'ai inclus la première vidéo ci-après et je vais mettre sur mon blog les 9 autres. L'URL de cette vidéo sur YouTube est http://www.youtube.com/watch?v=Aoeav_T1ARU. Vous pouvez toutes les retrouver directement (ainsi que d'autres sur d'autres thématiques informatiques comme JavaScript) sur la chaîne de briantwill : http://www.youtube.com/user/briantwill.
Désolé, en ce moment je m'intéresse à JavaFX et après une longue période d'inactivité sur ce blog qui faisait elle-même suite à une période d'activité très modérée, je publie coup sur coup plusieurs vidéos de Sun sur JavaFX... Je trouve que cette technologie est vraiment devenue intéressante et qu'elle mérite qu'on y jette un oeil, voire plus si affinité. Sun a quand même mi presque 2 ans à proposer quelque chose qui tienne la route face à Flex ou à Silverlight mais là la technologie commence à être mature et utilisable. L'intérêt est quand même de rester sur une plateforme Java.
Cette vidéo n'est pas vraiment une introduction. C'est plutôt une vidéo de présentation du concept de "Scene Graph", élément essentiel de JavaFX. La vidéo est courte et complète bien les 2 vidéos d'introduction de Sun publiées dans mes 2 derniers billets sur JavaFX.
La présentation dure environ 6 minutes, dont seule les 5 premières minutes ont réellement un intérêt pédagogique (c'est de bonne guerre, la fin de la présentation donne des informations sur le site www.javafx.com, et comment retrouver les informations et exemples dont il est question dans la présentation).
Cette courte vidéo présente les classes et concepts fondamentaux pour réaliser des applications graphiques avec JavaFX (ce qui est il faut bien l'avouer la raison pour laquelle en général on se penche sur JavaFX :-P).
La classe Stage représente le conteneur de haut-niveau (top-level container) qui correspond à une fenêtre classique par défaut mais peut être transparente ou sans la bordure et les autres "décorations" associées.
Un objet Stage contient un attribut scene de classe Scene. La classe Scene correspond à une surface de dessin pour y placer le contenu graphique. Un objet Scene a un attribut content qui est une séquence d'élément dans le Graph Scene (La traduction en graphe de la scène ne me plait guère est à défaut d'une qui me satisfasse, je préfère utiliser le terme anglais).
Le Graph Scene est un concept important de JavaFX : le contenu graphique est considéré comme un graphe d'éléments. Attention, il s'agit bien d'un graphe et non d'un arbre, il n'y a donc pas d'élément racine. C'est pour cela que l'on a une séquence d'éléments, pouvant eux-mêmes être constitués de séquence d'éléments.
Ces éléments graphiques peuvent être des classes Node, Group ou CustomNode. Un Node est une feuille du graphe, c'est-à-dire qu'il ne peut pas avoir de noeud graphique fils. Par contre, tout comme les 2 autres classes, un objet Node peut avoir 0 ou 1 parent. Les formes (Shape) et les éléments d'interface venant de Swing (slider, label, etc.) sont par exemple des Node.
Un Group est un regroupement de plusieurs Node, Group ou CustomNode. Un Group peut ainsi permettre de créer des formes complexes en regroupant plusieurs formes. De plus un objet Group permet d'appliquer un même effet à tous les élément du groupe en question. Ainsi un objet Group permet de manipuler un ensemble d'éléments graphiques comme un élément unique.
Enfin, la classe CustomNode est une classe abstraite que l'on sous-classe et dont on redéfinit (utilisation du mot clé override) la fonction create() qui définit le contenu de cet élément.
Voici une vidéo d'introduction à JavaFX qui fait suite à celle que j'ai posté dans mon billet précédent sur ce sujet.
Toujours en une quinzaine de minutes, cette vidéo présente des fondamentaux de JavaFX, en ce concentrant cette fois-ci sur les éléments de base pour produire des graphiques avec JavaFX alors que la première vidéo de cette série se focalisait sur les fondamentaux du langage.
Sans remplacer les tutoriaux, ces vidéos donnent une vision synthétique et rapide des différents aspects et peuvent ainsi servir de mise en jambe ou d'aide-mémoire.
Si vous souhaitez avoir une meilleure qualité de vidéo, je vous invite à la récupérer via Miro, une petite recherche sur "JavaFX" devrait vous permettre de les trouver facilement.
Voici une présentation des bases de JavaFX par Robert Eckstein de Sun. La présentation est bien faite et en 15 minutes donne tous les éléments de base nécessaire à un développeur Java pour se faire une idée sur ce nouveau langage.
Je m'étais intéressé à JavaFX en 2007. Je n'avais pas été convaincu à l'époque par la le langage et la plateforme qui - il est vrai - venait de sortir et manquait probablement de maturité.
Récemment (on va dire que cela fait un petit mois), j'ai ré-essayé et je suis par contre cette fois séduit. De gros progrès ont été réalisés, avec Netbeans vous avez maintenant un vrai IDE pour travailler avec JavaFX (il existe également un plugin Eclipse mais je ne l'ai pas essayé). Cette fois-ci je pense que cette plateforme "RIA" devient crédible par rapport à la concurrence. Bien sûr qu'elle s'impose c'est une autre histoire mais elle a des atouts indéniables. Reste à voir également comment le rachat de Sun par Oracle fera évoluer la stratégie par rapport à cette plateforme.
Ci-après une présentation de Ruby 1.9 par son créateur en personne... bon, cette vidéo date un peu (fin février 2008) mais je n'avais pas eu le temps de la regarder avant.
La présentation est relativement courte (une grosse demi-heure sans les questions) et va à l'essentiel. Ce que j'ai surtout retenu pour ma part, c'est que la version 1.8 est la dernière version stable assurant une compatilité ascendante avec les versions antérieures de Ruby alors que dans la 1.9, Yukihiro Mastumoto n'a pas hésité à casser ces compatibilités pour corriger ce qu'il considérait comme des erreurs de conception. Ce qui est important aussi avec la version 1.9 est le support d'Unicode (ce qui est un peu une des faiblesses de Ruby, si j'ai bien compris... mais bon je suis loin d'être un spécialiste en la matière) et une modification de la VM de Ruby qui semble apporter des améliorations de performance.
Ci-après, une présentation vidéo (un peu longue : un peu plus d'1h30) sur le langage Factor de Slava Pestov (qui est aussi le créateur de l'éditeur jEdit).
Factor est un langage de programmation dynamique concaténatif, dont les principales influences sont Joy, Forth, Lisp et Self.
Dans un langage concaténatif la composition de fonction est dénoté par juxtaposition contrairement à des langages applicatifs (traduction libre et probablement incorrecte de l'anglais "applicative language").
Dans un "applicative language" pour exprimer la composition de la fonction G de x par la fonction F vous serez amené à écrire quelque chose de la forme F(G(x)). Dans un langage concaténatif comme Factor vous écrirez x G F.
Comme les autres langages concaténatifs et comme l'exemple ci-dessus le laisse entrapercevoir, Factor utilise une syntaxe postfixée, ce qui signifie que vous écrivez les arguments d'une fonction avant son nom. Ainsi pour afficher le fameux "hello world" vous écrirez en Factor la ligne suivante :
"Hello world" print
Pour ce qui concerne Factor, tout comme l'un de ces ancêtres - Forth - c'est un peu plus subtil : c'est un langage de pile ("stacked-based language"). Dans un langage de pile, vous n'appelez pas une fonction ou une procédure en lui passant des arguments, vous déposez des arguments sur la pile et la fonction (en Factor ou en Forth on parle de mot ("word") dépile le nombre d'arguments dont elle a besoin de cette pile. Ainsi dans l'exemple "Hello world" print, en fait le littéral "Hello world" est déposé sur la pile, le mot print le dépile et réalise un affichage.
La programmation avec Factor est donc particulièrement dépaysante si vous n'avez pas déjà tâter de Forth ou de la programmation sous les calculatrices scientifiques HP.
Si le coeur de Factor est clairement du Forth, il propose un système de macros proche de celui de Lisp. De plus, tout comme Smalltalk, Lisp ou Forth, c'est un véritable environnement de développement qui est mis à votre disposition, que chaque création de nouveau mot vient enrichir. Par contre, il n'y a pas à proprement parler d'IDE façon Eclipse ou Netbeans.
Néanmoins, si Factor est un langage original sur bien des points, son créateur a une visée pragmatique : le système est multiplateforme (Windows, Linux, Mac), il propose tout ce dont un développeur peut actuellement souhaiter (GUI, API réseau, API pour le développement Web, tests unitaires, expressions régulières, I/O, etc.). Bref, ce n'est pas juste un langage jouet dans lequel on ne fera que de petits programmes, mais bien un langage complet qui permet de tout faire.
Idéal pour les geeks qui ont envie d'apprendre un nouveau langage complètement différent et qui va bousculer leurs habitudes mais n'ont pas envie de se retrouver limité par les possibilités des bibliothèques. Si vous pensez comme Alan Perlis que "A language that doesn’t affect the way you think about programming is not worth knowing", alors il est clair que Factor vaut très certainement le temps que vous lui consacrerez.
Par contre pour apprendre Factor mieux vaut ne pas avoir de problème de compréhension avec l'anglais et si tutoriaux et autres documents pour apprendre le langage existe, on ne croule pas sous le nombre. Par contre l'existant, au moins pour démarrer est complet.
Une petite vidéo qui explique comment installer et utiliser le plugin Eclipse pour faciliter le développement de projet utilisant Google Data en Java :
Par contre, j'ai fait l'essai avec Eclipse 3.4 (Ganymede), et si l'installation du plugin ne pose pas de soucis, la création d'un projet avec ce dernier n'a pas abouti. Dommage... comme écrirait Isaac Asimov, cela sera certainement pour Noël sur Ganymède... désolé je n'ai pas pu m'empêcher... shame on me ;-)
Ci-après, une courte vidéo d'introduction à "Google Data" pour ceux qui ne connaissent pas :
En tous les cas, le plugin semble intéressant dès l'instant où l'on souhaite réaliser des développements autour de l'API Google Data.
Si cela fait quelques temps que vous entendez parler régulièrement du langage Scala et que vous souhaitez quelques points d'entrée pour un savoir plus, voici quelques pistes.
Scala est un langage de programmation multi-paradigme conçu à l'EPFL pour exprimer les modèles de programmation courants dans une forme concise et élégante. Il intègre les paradigmes de programmation orientée objet et de programmation fonctionnelle, avec un typage statique.
J'ai inséré la vidéo juste après dans ce billet. Cependant cette dernière dure plus d'une heure. Cela peut-être sympa de la récupérer avec Miro et de la regarder tranquillement. Cela reprend pas mal de points évoqués dans la "présentation synthétique du langage" que l'on trouve sur le site officiel : certains passages sont assez techniques et difficiles à suivre quand on n'a pas de solides bases en théorie des langages.
Dans la vidéo qui suit, est effectuée une comparaison entre J2EE, Ruby On Rails, Zope/Plone, Turbogears et Django. Au travers de 2 exemples - d'abord un simple "Hello World" puis une application de suivi de temps ("Time Tracking Web App") - la comparaison porte sur le nombre de ligne de code produites, le nombre de fichiers de configurations à renseigner, le temps global mis pour réaliser l'application concernée, le nombre d'erreurs et de problèmes rencontrés.
Dans le cas du premier exemple (le "Hello World") sont comparés l'utilisation de Servlet, l'utilisation de JSP, RoR, Zope, Turbogears et Django.
Avec le deuxième exemple, la comparaison porte sur une première solution "partiellement J2EE" (Servlet + JSP + Hibernate), une solution purement J2EE (avec des EJB), Zope/Plone, RoR, Turbogears et Django.
J'ai trouvé cette vidéo intéressante et enrichissante pour se faire une idée sur les autres technologies pour le développement Web quand on n'a pas eu le temps de regarder et qu'on n'a que la possibilité de travailler avec des Frameworks Java pour le développement Web.
J'ai néanmoins étéun peu surpris qu'il n'y ait aucun framework PHP qui fassent parties de la comparaison (CakePHP par exemple) et que les solutions Java ne s'appuie que sur du J2EE pur et dur sans utiliser des frameworks Web (Struts, JSF ou Wicket par exemple). De plus, si Zope/Plone sort a priori grand vainqueur de la comparaison, je ne suis pas persuadé que le critère intégration avec l'existant dont il est fait mention au début de la présentation soit vraiment respecté... ceci étant je ne connais pas vraiment cette technologie.
Dans tous les cas, si comme dans toutes comparaisons de ce type, il y a probablement un certain biais, il est clair que J2EE peut-être très lourd et ne permet pas une productivité optimale.
Quant aux EJB, cela me fait penser à des discussions avec plusieurs collègues : on leur préfère souvent des solutions légères du type Spring et ils sont en fait assez peut utiliser. Les EJB3 semblent plus faciles à mettre en oeuvre mais pour l'instant beaucoup de projets n'ont pas encore migré vers J2EE 5.
Les 2 articles qui suivent sont cités dans la présentation, j'ai mis les liens ci-après :
Si, tout comme moi, vous n'avez pas eu la chance de pouvoir aller à la JavaOne 2007, vous pouvez toujours vous rabattre sur les WebCasts mis à disposition par Sun : vous pouvez accéder à plusieurs sessions directement en ligne ou les télécharger pour consultation ultérieure (juste la version "audio" ou la version vidéo complète).
JavaFX est une technologie récente et on trouve peu de tutoriels en dehors de ceux sur le site de Chris Oliver, sur le site OpenJFX et sur le Wiki PlanetJFX. Au moment où j'écris ce billet ce tutoriel (également en anglais) est une rare exception. Il y a cependant fort à parier qu'il y aura bientôt pléthore en la matière.
J'ai juste jeté un oeil sur JavaFX. En fait JavaFX est une famille de technologies liées dont l'un des objectifs me semble être de proposer un langage déclaratif (JavaFX Script) pour la programmation graphique et d'interface, plus facile à mettre en oeuvre que de la programmation directe en Java via Swing et Java 2D. Cela devrait augmenter la productivité des professionnels de la programmation et rendre les choses plus accessibles au "non-programmeur". Comme d'habitude avec les langages de haut niveau, l'objectif est de permettre de se concentrer sur le fond sans se prendre trop la tête avec les aspects techniques. Cela reste quand même un langage de programmation, un de plus pour la JVM (vous avez une liste encore plus complète sur ce site des langages pour la JVM). Et bien sûr il propose également une ouverture vers le monde des mobiles via JavaFX Mobile.
Une affaire à suivre dans tous les cas. Have a nice day !
je suis un développeur Java depuis des années mais cela ne m'empêche pas de regarder ce qui se passe du côté de la plateforme .NET et notamment les efforts pour porter cette dernière sous Linux (et Mac Os X dans une moindre mesure), je parle ici du projet Mono de Novell.
L'interview est relativement courte (2 min) et a été prise lors de Mix'07. Si la thématique Mono/Silverlight vous intéresse, voici un petit billet sur le sujet.
Encore un passionné de développement logiciel et de programmation qui se sent obligé de faire un blog.
Le contenu de ce blog reflète uniquement mes opinions personnelles et en aucun cas les opinions d'un de mes employeurs précédents ou de mon employeur actuel.