vendredi 28 novembre 2008

Veille technologique semaine 48

Pour le bulletin de cette semaine 48, je vous propose les sujets suivants :
  • un article de wikipédia au sujet des transactions en mémoire. Ces transactions permettent de prendre en compte la préoccupation de la gestion du multi-thread d'une manière fiable. Ce concept provient des systèmes de gestion de base de données, avec les propriétés ACID bien définies. La version transaction mémoire correspond à : ACID = Atomique (c'est entièrement fait ou pas du tout), Cohérence (si l'application est cohérente, la transaction le sera), Isolation (chaque thread travail comme si il est tout seul) et Durable (en mémoire, visible des autres threads). Cette gestion des transactions doit être prise en charge par l'infrastructure et non pas par le développeur. Sans les transactions, c'est le développeur qui doit écrire (directement ou indirectement) le code de gestion des verrous avec tous les risques que cela comporte (accès concurrent non thread safe, dead lock, gestion imbriqué compliqué, ...). Il est donc temps d'intégrer les transactions mémoire dans nos infrastructures.
  • un article sur OpenCL qui est un standard géré par le groupe Khronos, et qui propose une API qui permet d'utiliser la puissance de calcul des GPU (Graphic Processeur Unit).
  • l'article suivant est la version pour utiliser les GPU par NVidia : CUDA.
  • un problème récurrent dans les IHM (en dehors de l'ergonomie) relatif à la perception des couleurs en fonction des couleurs voisines. Le cerveau humain fait des corrections qui mettent en évidence ou qui atténue la perception relative de ces couleurs. Il faut donc en tenir compte pour construire des IHM. Il est parfois nécessaire d'ajuster les couleurs avec l'image finale de l'IHM. Il faut avoir un processus de composition visuel : WYSIWYG (What You See Is What You Get).
  • la gestion des fenêtres semi transparentes et non rectangulaires avec JavaFX.
  • la distribution d'objet Ruby avec le produit Terracotta : c'est encore un exemple de solution qui montre l'intérêt d'avoir des objets Java et Ruby (JRuby) qui partagent le même runtime : ils peuvent tous être répliqués par Terracotta.
  • la liste des modifications du langage Java proposée pour le JDK 7. Cette liste n'est toujours pas validé officiellement.
  • le Beans Binding for Java (JSR 295) du JDK 7 permet de faire le lien entre un JavaBean et un objet Swing. Il ne permet pas de faire le lien avec un objet Java tout simple (POJO : Plain Ordinary Java Object) et un objet Swing.
Bonne lecture.


Software transactional memory
In computer science, software transactional memory (STM) is a concurrency control mechanism analogous to database transactions for controlling access to shared memory in concurrent computing. It functions as an alternative to lock-based synchronization. A transaction in this context is a piece of code that executes a series of reads and writes to shared memory. These reads and writes logically occur at a single instant in time : intermediate states are not visible to other (successful) transactions.


OpenCL - The open standard for parallel programming of heterogeneous systems
OpenCL (Open Computing Language) is the first open, royalty-free standard for general-purpose parallel programming of heterogeneous systems. OpenCL provides a uniform programming environment for software developers to write efficient, portable code for high-performance compute servers, desktop computer systems and handheld devices using a diverse mix of multi-core CPUs, GPUs, Cell-type architectures and other parallel processors such as DSPs.
OpenCL supports a wide range of applications, from embedded and consumer software to HPC solutions, through a low-level, high-performance, portable abstraction. By creating an efficient, close-to-the-metal programming interface, OpenCL will form the foundation layer of a parallel computing ecosystem of platform-independent tools, middleware and applications.
OpenCL is being created by the Khronos Group with the participation of many industry-leading companies and institutions including 3DLABS, Activision Blizzard, AMD, Apple, ARM, Barco, Broadcom, Codeplay, Electronic Arts, Ericsson, Freescale, HI, IBM, Intel, Imagination Technologies, Kestrel Institute, Motorola, Movidia, Nokia, NVIDIA, QNX, RapidMind, Samsung, Seaweed, Takumi, Texas Instruments and Umeå University.


CUDA, QU'EST-CE QUE C'EST ?
La technologie NVIDIA CUDA est le seul environnement en langage C permettant aux programmeurs et aux développeurs de développer un logiciel et de résoudre des problèmes de calcul complexes en un rien de temps en accédant à la puissance multi-coeur de traitement parallèle des GPU. Avec les millions de GPU déjà déployés et disposant de la fonction CUDA, des milliers de programmeurs de logiciels utilisent les outils de développement CUDA en libre accès pour accélérer les applications (encodage vidéo et audio, forages pétroliers et gaziers, design de produits, imagerie médicale et recherche scientifique).


Colors and the UI
As the name suggests, GUIs (Graphical User Interfaces) present their features and functions visually. The human-computer interaction is heavily based on seeing things, looking for things and interacting with graphical UI elements. Color is a main characteristic of any visual scene, not only on computer screens, but in any situation where we see something. Because most of what we see and interact with in our everyday life is colored (as opposed to shades of white-gray-black), we are very familiar with colors – maybe so much that we don't think about them a lot. On the other hand, it does bother us when we need to read a dark-gray label on a black button. So colors have the potential to boost or wreck the user experience. This article will introduce the concept of user experience and highlight some aspects of colors and color perception together with recommendations for UI design.



Clustered JRuby - Transparent Clustering of JRuby with Terracotta
Similar projects have been attempted in the past. Gemstone also experimented with supporting JRuby on top of their Java based product and there was a previous attempt of JRuby on Terracotta, although that hasn't been updated in some time.


How to Create Translucent and Shaped Windows
The article describes a feature that allows creating applications with translucent and shaped windows.

JavaFX Script is a capable new language that offers a set of APIs for creating RIAs. It also provides you with access to the rich features of the the standard Java language. One of the major features introduced in the Java SE 6u10 release is the ability to create translucent and shaped windows. This includes:
  • making application windows translucent (tuning the general opacity of the window and using a per-pixel translucency effect)
  • setting shapes on application windows
Contents - Introduction
  • Feature Overview
  • Translucent Windows
  • Shaped Windows
  • API Overview
  • Using the Feature
  • Determining the Support for a Desired Effect
  • Making a Window Translucent
  • Setting the Opacity Level of a Window
  • Enabling Per-Pixel Translucency
  • Setting the Opacity Level of a Window
  • Translucent and Shaped Windows Demo
  • Summary


Les nouveautés du langage dans Java 7
  • Support des propriétés JavaBean
  • Support des opérateurs numérique pour le type BigDecimal
  • Comparaison pour les énumérations
  • Invocation chainée
  • Méthodes d'extension
  • Clause catch améliorée
  • Instruction invokedynamic et langages dynamiques
  • Support natif XML
  • Comparaisons de chaines de caractères dans la clause switch
  • Tiered Compilation
  • Garbage collector G1
  • Types et génériques
  • Closures et blocs de gestion automatique des ressources


Beans Binding: A Java Data-Binding Solution with a Serious Problem
Data binding simplifies how you sync a data object's properties with their visual representations, and Beans Binding for Java (JSR 295) aims to deliver a default data-binding specification for the Java platform. Find out how to use Beans Binding and work around its onerous overhead.
In the past couple of years, data binding has emerged as an important concept for GUI development in Java. Its main objective is to simplify the task of syncing a data object's properties with their visual representations on the screen (text fields, tables, combo boxes, etc). JSR 295 (Beans Binding for Java, or simply Beans Binding) aims to deliver a default data-binding specification for the Java platform.

Binding to POJOs (Where Beans Binding Fails)
At this point you likely are ready to jump into Beans Binding. Alas, this library contains a major hidden flaw that makes it extremely cumbersome to use. The flaw is not the fault of Beans Binding itself, but rather the lack of required binding plumbing in the Java language. To be two-way bindable, each object on both the source and target sides must be a full JavaBean with manually-coded property change support—in other words, a simple POJO like this is not fully bindable out of the box.

Aucun commentaire: