vendredi 12 février 2010

Veille technologique semaine 6

Pour le bulletin de cette semaine, je vous propose les sujets suivants :
  • Le HTML 5 et Flash, suite : le problème de la licence du format de codage H264 utilisé par la TV HD,
  • Le site FaceBook a réalisé un compilateur Just In Time (JIT) pour le langage PHP (langage utilisé par le site lui-même) : les "langages de scripts" sont donc de plus en plus compilé en natif pour être performant (c'est déjà le cas de JavaScript qui a un JIT dans les navigateur Firefox, Chrome et Safari). Langages de script : mais cela veut dire quoi alors ? Langages à typage faible (dynamique) ?,
  • L'intégrité de conception : c'est quoi ? La même solution technique pour le même problème, éviter les patchworks de solutions,
  • Les compilateurs LLVM (Low Level Virtual Machine) : une machine virtuelle universelle, pour tout les langages de programmation et tout les proceseurs cibles ?,
  • Le JDK 7 et la classe java.util.Objects : les méthodes de la classe Object dans une classe utilitaire,
  • Le langage Groovy++ : une extension du langage groovy avec un typage statique qui permet de meilleure performance,
  • L'interropérabilité entre JavaFX et Swing : c'est une cohabitation indispensable,
  • L'outil de composition visuelle pour GWT intègre la version GWT 2.0,
  • JavaFX et le threading : attention au multi-threads (comme d'habitude),
  • La simplicité des Timer avec les EJB 3.1 : le code déclaratif est toujours plus allégé que le code impératif. On a du mal à faire plus simple,
  • Le mode de passage des arguments de méthode en C# : ref ou out. Cela est-il suffisant pour les applications multi-threadées ? L'exemple en Java dans le prochain bulletin.

Bonne lecture.


HTML5, H.264 and Flash roundup
Last week, InfoQ published a piece on YouTube offering HTML5 beta for its videos, in H.264 format. Shortly thereafter, Vimeo announced an HTML5 beta as well, also using H.264 as the video codec.


Facebook Releases HipHop JIT
Facebook announced the HipHop for PHP runtime environment. HipHop provides JIT capabilities to PHP that supercede the traditional PHP runtime and provide better page rendering performance with lower CPU usage. HipHop helps to provide massive PHP scalability and optimal interfacing with Java, Python, and C++ back-ends.


Design integrity.
Design integrity is about consistency, is about using always an ORM or always SQL to access the database, is also about using a the same dependency injection approach, or the same mechanism to communicate the different components of the application.

The main risk of failing to have an integrated design is technical debt. Technical debt is one of the biggest risks in software development: take too much debt and your project is gonna be in serious trouble.


LLVM's Clang Compiler Achieves Self-Hosting
The LLVM is a virtual machine and compilation system that enables optimization of intermediate code at compile, link, and runtime. The project initially focused on working with C/C++ code, but the project's community has since developed front-ends for Java byte code, Python, Ruby, ActionScript 3 (as mentioned before), and Microsoft's CIL.


Article complet: java.util.Objects : Simple et efficace
En jettant un oeil aux nouveautées du JDK7, j'étais tombé sur la classe java.util.Objects qui proposait quelques méthodes utilitaires concernant les opérations de base des objets. On y retrouve surtout des méthodes permettant de gérer les valeurs null. A première vue il n'y a rien d'extraordinaire là dedans, et je dois dire que je ne m'y étais pas vraiment attardé...
Mais aujourd'hui je suis tombé sur un billet de Joe Darcy présentant ces méthodes un peu plus en détail. Et mine de rien cela s'annonce bien plus pratique que ce que je ne l'avais soupçonné...


Groovy++: bientôt dans votre JVM ?

Nous avons éhontément passé sous silence nombre de news du monde Groovy récemment:

Alors pour nous rattraper, nous ne passerons pas à coté de la nouvelle suivante : le développement de Groovy++ ! Alex Tkachman, l'initiateur du projet nous explique dans une interview de quoi il retourne et Roshan Dawrani nous explique ce qu'il retient du projet. En fait, malgré tous ses avantages, Groovy est encore assez lent. En tout cas beaucoup plus que Java, à cause de son coté dynamique. L'idée de Groovy++ est de continuer à utiliser Groovy normalement, mais en pluggant un compilateur spécial pour certaines parties du code annotées avec @Typed. Le code ainsi annoté devra respecter de légères contraintes (contraintes par rapport au laxisme de Groovy, mais légères par rapport au typage fort de Java). Le compilateur pourra donc effectuer des optimisations, notamment grâce à l'inférence de type, et nettement améliorer les performances. Les premiers résultats semblent encourageant en tout cas : 197 fois plus rapide d'après ce micro-bench et 33% plus rapide d'après cet article lu sur le Touilleur Express.

Alors ce Groovy++, une révolution ? Difficile à dire ! En effet, d'un coté Groovy est de plus en plus utilisé (notamment à travers Grails) et un coup de boost ne peut pas lui faire de mal. Mais d'un autre coté, l'interaction de Groovy et Java étant très avancée, on peut se contenter d'écrire en Java les parties du programme nécessitant des performances optimales. On peut aussi voir en Groovy++ l'ajout d'une énième librairie dans le développement, avec ses contraintes, ses bugs… D'autant que, pour des problèmes de licence sur certaines parties de code, le compilateur n'est pas encore OpenSource (ce qui est prévu pour la suite). Donc, si vous sous sentez l'âme d'un aventurier ou que vous avez désespérément besoin de gains de performances tout en gardant la « Groovy attitude », n'hésitez pas à nous faire vos retours sur l'utilisation de Grovvy++ !


Insider's Guide to Mixing Swing and JavaFX
Injecting the "extreme" into this year's GUI Makeover session at JavaOne, Jasper's finale of blowing up junk email with rocket explosions was really fun and of course completely absurd.
You can blend the strengths of Swing and JavaFX to give your Java applications that visual edge that users are coming to expect from modern clients.


GWT Designer Now Supports GWT 2.0
GWT Designer v7.3, Instantiations' popular graphical user interface (GUI) building product, stays in sync with the major new release of the open source Google Web Toolkit (GWT) version 2.0, adding support for the new GWT 2.0 Development
Mode, Layout Panels, Widgets and more. This new release of GWT Designer supports Windows, Linux and Mac OS X operating systems.

GWT Designer is the leading GUI building Eclipse plug-in for GWT and has become the defacto standard since its launch in late 2006. Based on Instantiations' award-winning WindowBuilder product, named Best Commercial Eclipse-Based Developer Tool of 2009 by the Eclipse Foundation, GWT Designer allows developers to focus on creating rich Internet applications without worrying about the complexities of Ajax coding. It supports features such as drag-and-drop visual design and bi-directional code generation, and provides several useful wizards that help make GWT development easier.


JavaFX, Sockets and Threading: Lessons Learned
Java/JavaFX, JNI or the Java Native Interface, having been created for just such a task, would likely be the first mechanism that comes to mind. Although JNI works just fine thank you, a group of us ultimately decided against using it for a small project because, among others:

Errors in your JNI implementation can corrupt the Java Virtual Machine in very strange ways, leading to difficult diagnosis.

JNI can be time consuming and tedious, especially if there's a varied amount of
interchange between the Native and Java platforms. For each OS/Platform supported, a separate JNI implementation would need to be created and maintained.


Simplest Possible EJB 3.1 Timer
A timer doesn't have to be a singleton - it can be a @Stateless and even a @Stateful bean. The method doWork() will be invoked every second. There is no registration or configuration needed.


C# Language Reference: Method Parameters (C# Reference)
If a parameter is declared for a method without ref or out, the parameter can have a value associated with it. That value can be changed in the method, but the changed value will not be retained when control passes back to the calling procedure. By using a method parameter keyword, you can change this behavior.

This section describes the keywords you can use when declaring method parameters:
• ref
• out

Aucun commentaire: