vendredi 6 mai 2011

Veille technologique semaine 18

Pour le bulletin de cette semaine, je vous propose les sujets suivants :
  • Intel annonce la création d'un transistor en 3D en 22 nm : réduction de la consommation et augmentation de la fréquence d'utilisation.
  • Tous les navigateurs web intègrent un compilateur Just In Time (JIT) pour améliorer les performances de JavaScript des pages HTML. C'est le cas de Firefox avec IonMonkey.
  • Un outil de qualimétrie : Sonar 2.7 : cette version apporte la gestion de la dette technique.
  • Un article sur la séparation des préoccupations dans la construction d'une architecture logicielle : c'est une synthèse de différents types de préoccupations.
  • Trois articles sur Groovy 1.8 et les compléments de ce langage compatible Java.
  • La classe Void en Java : pour quel usage.
Bonne lecture.

Intel Reinvents Transistors Using New 3-D Structure
New Transistors for 22 Nanometer Chips Have an Unprecedented Combination of Power Savings and Performance Gains.

Intel announces a major technical breakthrough and historic innovation in microprocessors: the world's first 3-D transistors, called Tri-Gate, in a production technology. The transition to 3-D Tri-Gate transistors sustains the pace of  technology advancement, fueling Moore's Law for years to come. An  unprecedented combination of performance improvement and power reduction to enable new innovations across a range of future 22nm-based devices from the smallest handhelds to powerful cloud-based servers. Intel demonstrates a 22nm microprocessor – codenamed "Ivy Bridge" – that will be the first highvolume chip to use 3-D Tri-Gate transistors.


IonMonkey: Mozilla's new JavaScript JIT compiler
IonMonkey is the name of Mozilla's new JavaScript JIT compiler, which aims to enable many new optimizations in the SpiderMonkey JavaScript engine. InfoQ had a small Q&A with Lead Developer David Anderson, about this new development that could bring significant improvements in products that use the SpiderMonkey engine like Firefox, Thunderbird, Adobe Acrobat, MongoDB and more. This new JIT infrastructure, will feature SSA compiler intermediate representations which will facilitate advanced optimizations such as type specialization, function inlining, linear-scan register allocation, dead-code elimination, and loop-invariant code motion.

Main driving forces for IonMonkey are to:
  • Provide a backend that can match or beat the Trace JIT or Crankshaft in speed. Sub-goals:
  • Fine-grained specialization and de-specialization.
  • Integration with type inference.
  • Clean, textbook IR so optimization passes can be separated and pipelined with well-known algorithms.
  • Document and comment well so the implementation and its side effects can be easily understood.
  • Recompilation, debugging, bailouts are all related - and should be solved up-front.
  • First SpiderMonkey JIT that starts off with peer reviews!
  • (Unknown feasibility) Act as a baseline compiler to replace JM2.
  • Manage memory much better, in part to avoid range problems on x64.

Sonar 2.7
The Sonar Team is pleased to announce the release of Sonar 2.7. This version focuses on providing further control on technical debt.
Prior to version 2.5, Sonar was really useful to assess application's technical debt but was not so handy to manage evolution over time. In Sonar 2.5 was added the ability to see metrics evolution and monitor the apparition of new violations over a period of time or since an event.
A similar functionality has now been added with version 2.7 for code coverage by unit tests on new / updated source code. It is now possible to follow what percentage of changed code over a period of time is covered by unit tests.


La séparations des préoccupations
La séparation des préoccupations (en anglais : Separation of Concerns - SoC) est un concept présent depuis de nombreuses années dans l'ingénierie du logiciel. Les différentes préoccupations des concepteurs d'un système à base de logiciel, apparaissent comme les premières motivations pour organiser et décomposer ce système en un ensemble d'éléments compréhensibles et facilement manipulables. La séparation en préoccupations apparaît dans les différentes étapes du cycle de vie du système et sont donc de différents ordres. Il peut s'agir de préoccupations d'ordre fonctionnel (séparations des fonctions du système), technique (séparation des propriétés non fonctionnelles du système), ou encore liées à utilisateur du système (séparation des actions de l'utilisateur du système).
Avec ces séparations, le système n'est plus abordé dans sa globalité, mais par point de vue, par parties. Cette approche réduit la complexité de conception, de réalisation, mais aussi de maintenance d'un système et en améliore la compréhension, la réutilisation et l'évolution. Cette séparation est la motivation d'approches telles que la programmation en couches logicielle ou la programmation par aspects.


Groovy 1.8
Guillaume Laforge, le chef de projet de Groovy, vient d'annoncer sur son blog la sortie de la version 1.8 du célèbre langage de scripting pour la JVM.
Le millésime semble de qualité avec de nombreuses fonctionnalités nouvelles et améliorations – certaines fonctionnalités très populaires ont d'ailleurs été backportées sur la version 1.7. A noter également que, comme le signale Burt Beckwith sur son blog, Grails 1.4 a été mis à jour pour supporter cette nouvelle version.
Nous vous proposons ici un bref aperçu des principales nouveautés; les exemples sont tirés ou inspirés des notes de version, très complètes. Signalons encore une série d'articles publiés très récemment par Mr. Haki sur son blog et qui donnent une description encore plus détaillée de certaines nouveautés de Groovy 1.8.


Command chains for nicer Domain-Specific Languages
Thanks to its flexible syntax and its compile-time and runtime meta-programming capabilities, Groovy is well known for its Domain-Specific Language capabilities. However, we felt that we could improve upon the syntax further by removing additional punctuation symbols when users chain method calls. This allows DSL implementors to develop command descriptions that read almost like natural sentences.
Before Groovy 1.8, we could omit parentheses around the arguments of a method call for top-level statements. But we couldn't chain method calls. The new "command chain" feature allows us to chain such parentheses-free method calls, requiring neither parentheses around arguments, nor dots between the chained calls. The general idea is that a call like a b c d will actually be equivalent to a(b).c(d). This also works with multiple arguments, closure arguments, and even named arguments. Furthermore, such command chains can also appear on the right-hand side of assignments. Let's have a look at some examples supported by this new syntax:


Groovy 1.8 release notes
compile-time meta programming : New AST Transformations
The Groovy compiler reads the source code, builds and Abstract Syntax Tree (AST) from it, and then puts the AST into bytecode. With AST transformations, the programmer can hook into this process. A general description of this process, an exhaustive description of all available transformations, and a guide of how to write you own ones can be found for example in Groovy in Action, 2nd Edition (MEAP), chapter 9. Below is a list of all new transformations that come with Groovy 1.8. They save you from writing repetitive code and help avoiding common errors.



Why does Void class exist in JDK
I always try to bring some thing new and useful on this blog. This time we will understand the Void.class (which in itself looks something tricky) present in rt.jar. One can consider the java.lang.Void class as a wrapper for the keyword void.
Some developers draw the analogy with the primitive data types int, long, short and byte etc. which have the wrapper classes as Integer, Long, Short and Byte receptively. But it should be kept in mind that unlike those wrappers Void class doesn't store a value of type void in itself and hence is not a wrapper in true essence.

Aucun commentaire: