vendredi 26 novembre 2010

Veille technologique semaine 47

Pour le bulletin de cette semaine, je vous propose les articles suivants :
  • le début de la fin pour IPv4 : il reste moins de 160 millions d'adresse IPv4 disponible (durée prévue de 1 ans d'après penrose.uk6x.com).
  • un résumé des contenus JDK 7 et JDK 8 et leur dates respectives.
  • Des programmes au modèles : l'évolution ou révolution ?
  • Evolve : un outil pour utiliser les JavaBeans comme des composants UML 2.
  • Adobe et le HTML 5 : quelle stratégie ?
  • OSGi : les fondations d'un middleware.
  • Le projet WebM : pour une vidéo sans brevet sur le web.

Bonne lecture.


100 days of IPv4 left
The internet is based upon a networking protocol called IPv4, which is the underlying basis for both TCP (used by HTTP and chat applications) and
UDP (used for video and audio applications). This uses a 4-byte IP address, like 192.168.54.32, to identify both of the end-points in the channel.
(Most humans and many applications use a DNS name instead, which translates www.infoq.com into a numeric IPv4 address like 63.246.7.184.)

Unfortunately, the IPv4 address space is running out, and quickly. According to @ipv4countdown, we have passed the 100 day mark for available
addresses; the total stands at less than 160 million addresses left. To put it in perspective, that's around 9.137.0.0 addresses left. We've burnt
through (or aren't able to allocate) 245.0.0.0 IPv4 addresses, so they're running out fast. The data is shown in a countdown at Hurricane Electric, an
IPv6 provider.


JDK7 & JDK8 arrivent !
Non, nous ne reviendrons pas sur les récentes news autour de OpenJDK et de Oracle/Google/Apache/IBM/Apple etc... car cette fois c'est bon, on sent réellement que Java 7 est sur les rails! En effet, Oracle a profité de Devoxx pour annoncer officiellement les JSRs "umbrella" pour Java 7 et Java 8. Ce sont donc des JSRs qui en regroupent d'autres, déjà existantes et sur lesquelles InfoQ nous faitun petit topo.
Java 7 est défini par la JSR 336, regroupant elle-même:
  • la JSR 203, connue sous le nom de NIO 2 et améliorant la gestion des filesystems et des sockets. On se réfèrera à la description complète sur le blog de Masoud Kalali en 6 parties: 1, 2, 3, 4, 5 et 6.
  • la JSR 292, apportant l'instruction bytecode invokedynamic, très attendue par des langages comme Groovy ou JRuby afin de gagner en performances.
  • la JSR 334, connue en tant que "Project Coin", apporte du sucre syntaxique. Des petits détails pas fondamentaux mais contre lesquels nous pestons souvent en nous demandant "mais pourquoi on ne peut pas faire ca en Java ?!". Avec le JDK 7, on pourra !
Mais d'autres bonus pourraient aussi être inclus nous indique Alex Miller: citons en vrac Unicode 6, des modifications des Locale, JDBC 4.1, des améliorations de Swing...

Pour le JDK 8, spécifié par la JSR 337, les choses commencent aussi à prendre forme avec la vraisemblable inclusion des JSR 308(annotations sur les types), JSR 310 (like API inspirée de Joda-Time) et JSR 335 (le projet Lambda apportant les fameuses closures). Le projet Jigsaw, qui apporte lui la modularité d'une manière plus developer friendly que OSGI, devrait aussi être de la partie.
Cerise sur le gâteau, ces 2 JDKs sont même datés: juillet 2011 pour le JDK 7 et fin 2012 pour le JDK 8.
Pendant ce temps, un
sondage complètement informel a permis de prendre le pouls des Devoxxiens et de leur attentes envers les futurs JDKs. Il semble que beaucoup d'entre nous, dans la communauté, seraient prêts à payer le prix d'une incompatibilité ascendante de Java pour permettre au langage de s'améliorer en réparant certaines de ses erreurs. Devrons nous en passer par là ? En tout cas ce n'est pas pour tout de suite et nous devrons nous contenter t'attendre le Next Big Java Language !


From Programs to Mograms [1]
Changes in Software Engineering

[1] Mogram is a contraction of "model" and "program" suggested by A. Kleppe. A mogram is not always computer-excutable, but it is nevertheless precise and conforms to a given metamodel.



Evolve: Using Components to Improve on Dependency Injection
Evolve is a lightweight tool for creating, wiring up and executing JavaBeans, allowing them to be treated as full components. Developers can use
Evolve to graphically describe JavaBeans and also optionally generate the Java code for the setters and getters. It supports four primary activities:
creating or importing JavaBeans, wiring these up to make more complex components, reusing and evolving them, and executing them. The Evolve
system includes the following parts:
  • Component Model with Connectors
  • Resemblance and Evolution
  • Backbone Interpreter
  • UML2 Wiring Editor


HTML5 vs. Flash: Where does Adobe Stand?
In the last year Adobe seems to be embracing HTML5 and integrating it into its product strategy. During the Adobe developer's conference (MAX),
Lee Brimelow tried to clarify his company's plans for HTML5 and especially regarding competing platforms like Flash and Flex.
Adobe Illustrator, one of the company's flagship products recently got an HTML5 add-on. This add-on provides basic support for HTML5 and CSS3,
extends SVG capability and helps developers design both web and device content:


Is OSGi the Right Foundation for Java Middleware?
The OSGi working group started in 1997 as the JSR 8, mostly focusing on embedded Java with the goal of supporting modular updates to embedded software. OSGi became mainstream after solving the inextricable dependencies of Eclipse plugins. Right about 2005, several approaches converged towards bringing more modularity to Enterprise Java by leveraging assembly mechanisms and well defined dependencies, including Spring and Service Component Architecture while EJBs, slowly faded away. Today most Enterprise Java vendors have rewritten their middleware on an OSGi foundation.


Open video for the web
What is WebM?
WebM project goals :
  • Focus on video for the web
  • Make web video a great user experience
  • Support WebM in all browsers in HTML5 <video>
  • Provide an open choice to the market
  • Collaborate with our developer community
  • Fundamental innovation in all aspects of web video
  • Proliferate WebM widely in hardware
  • Make web video easy

vendredi 19 novembre 2010

Veille technologique semaine 46

Pour le bulletin de cette semaine, je vous propose les sujets suivants :
  • Le Model Driven à la conférence annuelle MDDAY 2010,
  • Un accord entre Apple et Oracle : Apple collabore à OpenJDK et Oracle fournis le JDK pour MacOSX,
  • Oracle et Apache en désaccord au sujet de la licence Java,
  • Le principe du scout appliqué au logiciel : il faut toujours laisser le code plus propre que l'état dans lequel on l'a trouvé,
  • Les erreurs souvent constatés lors de la mise en oeuvre des méthodes agiles,
  • Oracle annonce les spécifications (JSR : Java Specification Request) pour le JDK 7 et le JDK 8, avec un premier planning pour le JDK 7 : fin juillet 2011,
  • Un article sur l'implication des équipes logiciels,
  • Une explication sur le principe "convention over configuration : ou comment réduire le besoin de configurer une application :les applications se basent sur des conventions au lieu de se baser sur des fichiers (ou autre) de configuration,
  • La JVM et sa modularization,
  • Les benchs de la synchronisation en Java : à prendre en compte dans vos applications Java.
Bonne lecture.



Le MDDAY 2010
Conférence annuelle sur le Model Driven : MDDAY 2010 (www.mdday.fr)
le 25 novembre prochain dans les locaux de Microsoft à Paris.

Programme 2010 : accueil à 8H30, fin à 18h00

Journée placée sous le thème de l'agilité

Qui ? Des experts reconnus du domaine, les sociétés organisatrices et leurs clients.
Quoi ? Discussions et conférences sur l'approche « Model-Driven ».
Comment ? Une série de conférences par des experts, clients et éditeurs de logiciels "Model Driven"...


Inscription à MD DAY 2010
Participation gratuite mais sur inscription obligatoire, le nombre de places étant limité.
http://register.mdday.fr/seminaire/viewRegisterForm.do


Java : un accord entre Apple et Oracle
Oracle et Apple viennent de dévoiler un accord relatif à Java. Les deux sociétés travailleront de concert sur le projet OpenJDK pour Mac OS X.

Dixit
le communique de presse : "Apple apportera la plupart des principaux composants, outils et technologies nécessaires à la mise en œuvre de Java SE 7 sur Mac OS X, y compris une machine virtuelle Java HotSpot 32 bits et 64 bits, des bibliothèques de classes, une pile de mise en réseau et les bases d'un nouveau client graphique. Grâce au programme OpenJDK, les développeurs de projets open source pourront accéder à la technologie Java d'Apple et contribuer à son amélioration".

Pour Bertand Serlet, il s'agit de proposer aux utilisateurs de Mac OS X une version à la fois récente, performante et stable de Java sur Mac.

Enfin, si Apple va continuer à distribuer Java SE 6 dans Snow Leopard et Mac OS X Lion, les prochaines versions de Java, à commencer par Java SE 7, seront disponibles auprès d'Oracle.



Oracle and Apple announce OpenJDK Project for Java on Mac OS X
Oracle and Apple on Friday announced a new partnership that will bring the Java SE 7 and future versions of Java for Mac OS X to users directly from Oracle.

With the OpenJDK project for Mac OS X, Apple will contribute most of the key components, tools and technology required for a Java SE 7 implementation on Mac OS X, including a 32-bit and 64-bit HotSpot-based Java virtual machine, class libraries, a networking stack and the foundation for a new graphical client. OpenJDK will make Apple's Java technology available to open source developers so they can access and contribute to the effort.

"We are excited to welcome Apple as a significant contributor in the growing OpenJDK community," said Hasan Rizvi, Oracle's senior vice president of Development. "The availability of Java on Mac OS X plays a key role in the cross-platform promise of the Java platform. The Java developer community can rest assured that the leading edge Java environment will continue to be available on Mac OS X in the future. Combined with last month's announcement of IBM joining the OpenJDK, the project now has the backing of three of the biggest names in software."

Apple also said that Java SE 6 will continue to be available from Apple for Mac OS X Snow Leopard and the upcoming release of Mac OS X Lion. Java SE 7 and future versions of Java for Mac OS X will be available from Oracle.

"We're delighted to be working with Oracle to insure that there continues to be a great version of Java on the Mac," said Bertrand Serlet, Apple's senior vice president of Software Engineering. "The best way for our users to always have the most up-to-date and secure version of Java will be to get it directly from Oracle."

Java is a general purpose software development platform that is specifically designed to be open and enable application developers to "write once, run anywhere." The Java platform is most widely used in business software, Web and mobile applications.

In October, Apple announced it would
deprecate Java for Mac OS X, meaning the company would no longer issue its own updates for Java. Apple's note said that the Java runtime could be removed altogether from future versions of Mac OS X.

An e-mail claimed to be from Apple CEO Steve Jobs said that his company decided it would no longer develop their own Java for Mac because their updates were always
a version behind the official releases from Oracle and Sun. Jobs allegedly said that the current method "may not be the best way to do it."


Oracle et Apache: de l'eau dans le gaz
Le début de la semaine passée a vu la Fondation Apache émettre un billet qui a fait beaucoup de bruit. Dans celui-ci, elle reproche à Oracle de ne pas respecter les termes du JSPA (pour Java Specification Participation Agreement) et qui, d'après la Fondation, l'autorisent à obtenir un TCK (Test Compatibility Kit) lui permettant de redistribuer Harmony, son JDK, sous la licence Apache. Le problème, qui reste un problème de brevet et de propriété intellectuelle, est ouvert depuis un moment: en 2007 déjà, Apache avait écrit une lettre ouverte à Sun. Les choses n'ont que peu changé depuis. Sauf qu'aujourd'hui, la Fondation menace carrément de quitter le processus du JCP ! Comme l'analyse InfoQ, c'est peut-être la seule arme qui reste à la Fondation Apache. Mais serait-ce vraiment une bonne chose ?
Pour mieux comprendre les termes et enjeux de l'imbroglio dans lequel se sont empêtrées les parties, un excellent document reste
la FAQ publiée à l'époque par Apache pour expliciter sa lettre ouverte à Sun. Oracle vient d'ailleurs de publier sa réponse et… le moins que l'on puisse dire, c'est que la situation semble dans une impasse, chacun restant campé sur ses positions.
Par ailleurs, il faut aussi replacer les choses dans leur contexte actuel:
  • IBM, le plus gros contributeur à Harmony, le JDK d'Apache, a récemment indiqué se rapprocher d'Oracle à travers OpenJDK. Ainsi, il se détache d'Apache qui se retrouve donc isolé.
  • Oracle a par ailleurs attaqué Google sur son implémentation d'Android, basée en grande partie sur ce même Harmony.
  • enfin, le récent regain d'intérêt envers Java SE for embedded devices n'est peut-être pas étranger à tous ces problèmes. Même si le produit « date d'avant Android », Oracle semble vouloir le renforcer. Et la première étape, comme annoncé lors de l'ARM Conference consiste à faire correspondre les numéros de versions et implémentations des versions Java SE classic etembedded. Cette version est-elle appelée à se retrouver rapidement dans les téléphones portables à grande échelle maintenant que Java ME semble dépassé ? Oracle pourrait le souhaiter, car elle n'est pas gratuite !

Always leave the campground cleaner than you found it.
Don't forget to clean up the trash that we've left lying around:
  • duplicated code
  • poorly named classes, methods, and variables
  • huge functions
  • magic numbers
  • inappropriate combinations of differing levels of abstraction
  • tight coupling
  • low cohesion
  • high cyclomatic complexity (otherwise known as "spaghetti code")

and the list goes on...


Common Mistakes in Agile Adoptions
A number of commentators have written about common mistakes and anti-patterns of Agile adoption. They have posted "Top X" lists of things to avoid and mistakes they have seen in Agile implementations across a variety of organisations.
Michael Dubakov of Target Process wrote two blog entries about of the "10 Most Common Mistakes in Agile Adoption" (Part 1 & Part 2). He maintains that "Companies are making the same mistake during agile adoption over and over again."


Oracle Announces JSRs for Java 7 and Java 8
Oracle has announced the umbrella JSRs for Java 7/8, covering a number of the features known from the earlier Plan B. The way JavaSE and JavaEE specifications are defined are by reference to other JSRs, rather than defining new content directly – but often will do so after those referenced JSRs are completed. In this case, many of the referenced JSRs are still works-in-progress, or in the case of modularity, not even known at this stage.


It's Full of JSRs!
The proposed contents for inclusion in Java SE 7 include:
The Java SE 8 JSR is necessarily a bit more sketchy but contains:


Enfin des JSRs pour Java 7 & 8
Les JSRs sont des documents primordiaux du Java Community Process, puisqu'il s'agit des documents de travail qui seront soumis aux votes de la part des membres du-dit JCP.


JDK 7

The feature list has been updated and at this point is not expected to change. The
milestone schedule will be updated soon, but in the meantime here is the highlevel
schedule for the remainder of the release:
  • 2010/12/16 Feature Complete
  • 2011/04/12 Rampdown start: P1-P3 bugs only
  • 2011/04/28 API/interface changes: Showstoppers only
  • 2011/05/11 All targeted bugs addressed
  • First release candidate built
  • 2011/05/18 Bug fixes: Showstoppers only
  • 2011/06/08 Final test cycle starts
  • 2011/07/28 General Availability

Architecture – Etre toujours impliqué
Nous avons vu dans un précédent billet que le rôle de l'architecture pouvait être remis en perspective au travers de la poursuite de trois objectifs : Etre Connecté aux objectifs métier de l'entreprise ; Assurer la Cohésion des solutions ; Accueillir favorablement le Changement. Voici un premier principe à appliquer afin d'atteindre ces objectifs. Il concerne l'architecte et son rôle
et s'intitule « Etre toujours impliqué ».
Le rôle d'un architecte ne se limite pas à un projet ou à une phase d'un projet. Pour être efficace, un architecte doit avoir des perspectives bien plus larges. Un architecte Lean communique en permanence avec toutes les parties prenantes de la DSI (du métier aux opérations). Il joue un rôle actif dans la réalisation des projets. Il s'assure que les leçons apprises sur les projets passés ou en cours sont sues et qu'elles sont appliquées dans tous les projets qui le nécessitent.


Convention over Configuration
"Convention over Configuration" (on trouve parfois une traduction par "convention plutôt que configuration"),
ce design pattern (ou patron de conception, pour faire plaisir aux francophones intransigeant) est un des plus intéréssant de ceux à la mode en ce moment.

Le principe en est très simple :
les applications se basent sur des conventions au lieu de se baser sur des fichiers (ou autre) de configuration.

Plus clairement:
  • Réduire le nombre de fichiers de configuration,
  • Configurer par défaut les applications (donc, sans aucun fichiers, base de données ou autres stockant ces informations de configuration) en se basant sur les standard (les conventions) du milieux,
  • Possibilité d'écraser cette configuration par convention par un fichier de configuration : l'application se configure toute seule en se basant sur des conventions, et si nécessaire, on peut écraser cette configuration par défaut via des informations de configurations dans un fichiers de configuration (ou base de données ou autre).

Modularisation de la JVM
Cette session présente JigSaw, qui continue son lobbying pour imposer à la JVM une modularisation autre que celle proposée par OSGi ...
A quoi ça sert ? A sortir du classpath Hell, à accélérer le lancement de la JVM, à alléger le runtime, à approvisionner automatiquement (comme le font les Linux avec apt ou yuml), et à assurer la prédictibilité de l'environnement d'exécution.
La vérification du classpath à l'installation plutôt qu'au runtime, associé à la construction de profils pour une application (liste des classes effectivement chargées lors du premier lancement) doivent nous apporter un gain significatif de fiabilité et de réactivité.


Java Synchronization (Mutual Exclusion) Benchmark
I've created another benchmark. This time, I've benchmarked the different ways of synchronizing a little code using mutual exclusion on this code.

mercredi 10 novembre 2010

Veille technologique semaine 45


Pour le bulletin de cette semaine, je vous propose les sujets suivants :
  • on parle beaucoup du HTTML 5 : un résumé des fonctionnalités de la spécification en cours, avec cette RefCard,
  • Oracle confirme sa proposition d'un service payant d'assistance pour la technologie Java. C'est le même schéma que BEA (avec JRockit) avec un JDK qui reste gratuit, mais des outils de monitoring et de réglage de la JVM payant.
  • Un article au sujet du rôle de l'architecture logicielle et des architectes correspondant.
  • Le club Java de Paris a proposé une soirée au sujet des BRMS (Business Rule Management System) avec deux COTS bien connus : JRules de ILog/IBM et Drools de JBoss.
  • Un article au sujet des deux approches pour être indépendant du socle technique : le Model Driven Architecture (MDA) et la programmation par aspects (AOP). Différences et complémentarités.
  • Le CEP : le Complexe Event Processing est un domain en plein essor avec des COTS. C'est un exemple d'architecture orienté événements (EDA : Event Driven Architecture).
  • La maîtrise du garbage collector : une synthèse des algorithmes et leurs réglages.
  • Les références sur les objets en Java : forte ou faible (strong ou weak) ?
  • Les invocations remote asynchrones avec la plateforme OSGi : c'est un schéma limité au invocation remote (pas d'asynchronisme local) avec une intrusion technique dans l'interface remote : ce n'est pas transparent.
  • Java et la programmation concurrente : les executors et les pools de thread.


Bonne lecture.


ABOUT HTML5
HTML5 is a standard for structuring and presenting content on the Web. It incorporates features such as geolocation, video playback and drag-and-drop. HTML5 allows developers to create rich internet applications without the need for third party APIs and browser plug-ins.
HTML5 is still under specification, and is currently in the Working Draft stage in the W3C, but many aspects of HTML5 are now stable and can be implemented in browsers.
This DZone Refcard highlights the main features in HTML5 and illustrates the JavaScript APIs available to work with those features.


Oracle proposera une JVM Premium
La semaine dernière au QCon, le monde Java a lancé la machine à rumeur. La faute à Adam Messinger, vice président du développement pour l'entité Fusion Middleware d'Oracle, qui a annoncé qu'il y aurait une version Premium (comprendre payante) de la JDK en plus de la version gratuite.
En réalité les plus avertis avaient déjà noté cette information au dernier JavaOne:
Premium offerings such as JRockit Mission Control, JRockit Real Time, Java for Business and Enterprise Support will continue to be made available for an additional charge.
En clair, Oracle a l'intention de vendre une version payante de la JDK qui comprendra, entre autres, les outils JRockit Mission Control (outil de monitoring), Real Time (outil de temps réel) et un support donnant accès par exemple à des corrections sans attendre les versions officielles. L'offre reste encore à définir, entre autre le prix, et des inconnus demeurent sur les différences entre les JDKs.
Par ailleurs Adam Messinger se veut plutôt rassurant sur le maintien d'une version gratuite. L'objectif d'Oracle reste de fusionner Hotspot et JRockit vers OpenJDK.
Néanmoins Stephen Colebourne (membre la fondation Apache et Java Champion) souligne les risques entourant cette annonce:
  • Est-ce que la version gratuite et la version premium sortiront en même temps ?
  • Est-ce que la version gratuite sera supporté sur la même quantité d'OS ?
  • Quels sont précisément les fonctionnalités de la version premium ?
  • Est-ce qu'il s'agira seulement de fonctionnalités pour le management ?
  • Ou s'agira aussi de fonctionnalités sur les performances ?
  • Quel est le marché ciblé ?
Il remarque également que ces craintes seraient levées si la JSR 924, qui spécifie la JVM, pouvait être implémentée librement, en s'abstrayant entre autre des champs d'utilisation (une vieille querelle entre Apache et Sun). Ceci permettrait d'avoir un standard et aux implémentations telle qu'Harmony d'être certifiées.
Depuis la prise en main de Java par Oracle, la communauté, qui est historiquement tournée vers l'Open Source, a quelques sueurs froides et l'annonce récente de monter les prix du support de MySQL n'arrangera rien.


Oracle prédit le futur de Java… ou au moins en parle
En ce moment, nous parlons beaucoup du futur de Java. A l'origine de ce petit séisme communautaire, il y a le rachat de Sun par Oracle il y a un an. Depuis la mi-2010, Oracle montre plutôt des signes encourageants, qu'il faut cependant parfois décrypter, car la communication vers la communauté Java n'est pas encore parfaite.


Architecture Lean – Connexion, Cohésion, Changement
Le rôle de l'architecture et la place des architectes au sein d'une organisation font souvent débat et sont  souvent mal compris. Cette incompréhension est principalement due au fait que la contribution de l'architecture à la réalisation des objectifs métier de l'entreprise n'est pas (ou peu) visible.
Le rôle de l'architecture peut être remis en perspective si on le considère au travers du prisme de trois objectifs clés (les 3 C de l'architecture) :

  • Etre Connecté aux objectifs métier de l'entreprise.
  • Assurer la Cohésion des solutions.
  • Accueillir favorablement le Changement.

Utiliser ces objectifs comme principes fondamentaux d'une « architecture lean » met l'emphase sur ce qui doit être fait sans perdre de vue le pourquoi. Cela permet ainsi de mieux positionner l'architecture au sein d'une organisation.


Business rule management system
From Wikipedia
A BRMS or Business Rule Management System is a software system used to define, deploy, execute, monitor and maintain the variety and complexity of decision logic that is used by operational systems within an organization or enterprise. This logic, also referred to as business rules, includes policies,
requirements, and conditional statements that are used to determine the tactical actions that take place in applications and systems.


JRules


Explore Model Driven Architecture and Aspect-oriented Programming, Birds of a Feather
In recent years, two new trends in software engineering have been established—Aspect Oriented Programming (AOP) was developed to extend and ease programming, and the Model Driven Architecture (MDA) was introduced to take full advantage of the power of modeling. Many people are confused when confronted with both AOP and MDA. This article provides a crash-course on both topics and explains the differences and similarities between the two.


Le CEP, un domaine en expansion
Le domaine du CEP, pour Complex Event Processing ou Traitement d'évènements complexes, est un domaine dont on entend peu parler mais dont l'utilité, une fois que l'on se penche dessus, semble évidente. Rappelons que le CEP est un concept dans lequel des suites d'évènements sont analysées, de façon automatisée, pour en dégager des informations qui ne seraient pas déductibles à partir de chaque événement pris séparément. La corrélation d'une suite d'évènements « simples » permet donc de déduire d'autres informations, plus complexes. Pour être concret, le CEP peut servir à détecter des fraudes bancaires par des suites d'évènements louches survenant sur un compte, ou alors pour détecter des problèmes dans un système suite à la réception, à une fréquence plus élevée que la moyenne, d'un certain type d'évènement.
Toujours est-il que de nombreuses solutions existent, Open Source ou non, pour satisfaire les divers besoins d'analyse. Dans un récent article, Marc Palmer de Streambase qui édite ses propres solutions CEP, revient sur la publication de chiffres semblant indiquer que les CEP ne représentent qu'un petit marché. Et pour contrer ces chiffres, il cite nombre de sociétés utilisatrices de la solution de Streambase. Même si c'est surtout un coup de pub pour sa compagnie, nous pouvons malgré tout réaliser à quel point les CEP sont importants dans le domaine du Capital Market.
Pour aller plus loin et découvrir différentes solutions, citons cet article de Debu Panda (de EJB3 in Action) vu sur ServerSide et dans lequel il évoque la solution de Starview. Mais si vous voulez vraiment être pris par la main pour avoir une première approche du CEP, Michal Bali, auteur de Drools JBoss Rules 5.0« , nous livre un tutorial complet implémentant la détection de fraude dans un système bancaire en utilisant Drools Fusion, solution de JBoss. Ce dernier article est très complet et permettra au lecteur d'avoir une bonne première approche des possibilités de l'outil.


Taming the Java Garbage Collector
Tuning the garbage collection in JVM is one of those things that developers often tend to ignore and overlook. But if done properly, it can save you hundreds of megabytes worth precious memory, without making a significant impact on the
application performance. Also GC tuning becomes an absolute necessity in certain applications due to various QoS requirements such as real-time processing, low response time and high throughput. So today I'm going to discuss a little bit about GC in JVM and how to properly tune up GC for best application performance. My discussion is entirely focused on Java 5 and 6, so if you are using an older JVM you are at the wrong place.
Before we jump into the discussion on GC tuning we need to have a basic understanding on the various concepts associated with GC. So here goes...


Know the JVM Series - When Weaker is Better: Understanding Soft, Weak and Phantom
How many times have we created various object instances, and assign those to reference variables? We all know very well that Java has automatic garbage collection; so we just play around the reference variables, and once those variables are assigned null or falls out of scope, JVM takes care of it. No need to worry about .free' as in C / C++. It's a headache-less approach, which minimizes the risk of introducing memory leaks to our programs, and it works out great day in day out in billions of Java applications running out there 24×7. Kudos to John McCarthy for inventing GC for Lisp, and to all the folks who implemented the concept in Java.

Asynchronous Remote Services
ECF's Remote Services API, which is used to implement OSGi 4.2 remote services, has had the ability for consumers/clients to use asynchronous/non-block remote method calls for at least the last 2 years.

Contents
1 Normal/Synchronous Services
2 Asynchronous Services
2.1 Example
2.1.1 Original Service Interface
2.1.2 Asynchronous Service Interface
2.2 A Second Example
2.2.1 Original Service Interface
2.2.2 Asynchronous Service Interface
3 Future Results
4 Full Example with Source


Java Concurrency – Part 7 : Executors and Thread Pools
Let's start with a new post in the Java concurrency series. This time we'll learn how to start new threads cleanly and to manage thread pools.

vendredi 5 novembre 2010

Veille technologique semaine 44

Pour le bulletin de cette semaine, je vous propose les sujets suivants :
  • Microsoft change de stratégie pour sa technologie Silverlight : elle devient uniquement pour le client lourd (plus pour le Web), et Microsoft confirme son orientation pour le HTML 5 sur le client léger. C'est une annonce majeur pour le soutient du HTML 5.
  • Adobe a fait une démonstration d'un outil de conversion de flash en HTML 5.
  • L'université de l'Illinois propose une version de programmation concurrente du langage Java pour bénéficier d'un comportement d'exécution parallèle déterministe : pour alimenter les processeurs multi-cores : Deterministic Parallel Java (DPJ).
  • Quelques règles de bon sens pour faire des diagrammes UML utilisables.
  • La gestion correcte de la transparence des composants d'IHM Swing : exemple sur le gestion de la propriété opaque.
  • L'interface Iterable du JDK : comment ça marche.
  • Les derniers benchs des langages de programmation : ce sont des mesures de performance qui comparent les mêmes algorithmes de calcul sur des implémentations de différent langages, avec une normalisation à 1 pour le plus rapide. Le C est le plus rapide normalisé à 1, Java 6 en mode steady est à 1,3 plus lent, l'ADA 2005 est 2 fois plus lent, C# est 3,1 fois plus lent, Java en mode interpréteur est 20 fois plus lent, Ruby est 38 fois plus lent et PHP est 58 plus lent. Il faut noter que ces mesures ne mettent pas en oeuvre beaucoups d'objets et ne mesure pas la productivité.

Bonne lecture.


Silverlight, HTML5, and Microsoft's opaque development strategy
For reasons that are not immediately clear to me, it seems that a lot of developers who attended Microsoft's recent PDC event were surprised to hear that the company now sees HTML5 as the way forward for developing rich Internet applications—and not, as they had been expecting, Silverlight. Their surprise surprises me, because past statements by the company had already made this repositioning obvious, though perhaps not explicit.



Silverlight Is for the Client, HTML5 for the Web
After saying about Silverlight that "our strategy has shifted" during PDC 2010, Bob Muglia attempted to clarify what he meant. Steve Ballmer and Tim Heuer also commented on Silverlight, trying to reassure the community on Microsoft's commitment to Silverlight, but also pointing to the fact that HTML5 is the solution for cross-platform development, leaving Silverlight to the client and Windows Phone.


Adobe shows off Flash-to-HTML5 conversion tool
Even though its Flash technology is used as a punching bag by Web standards fans, Adobe has been building tools that embrace HTML5. The company recently released its own HTML5 video player, and Adobe Illustrator and Dreamweaver CS5 now contain a number of new HTML5 export tools.


Parallel Java Programming System Launched by University
A team of researchers at the University of Illinois' Universal Parallel Computing Research Center (UPCRC) has developed a parallel implementation of Java.
With an emerging need for programs that take advantage of today's multicore and parallel systems, the University of Illinois has come up with an effort to deliver a parallel version of the Java language.


Deterministic Parallel Java
University of Illinois at Urbana-Champaign
Project Overview
The broad goal of our project is to provide deterministic-by-default semantics for an object oriented, imperative parallel language, using primarily compile-time checking. "Deterministic" means that the program produces the same visible output for a given input, in all executions. "By default" means that deterministic behavior is guaranteed unless the programmer explicitly requests nondeterminism. This is in contrast to today's shared-memory programming models (e.g., threads and locks), which are inherently non deterministic and can even have undetected data races. Our paper at HotPar 2009 states our research goals in more detail. The other pages of this site provide additional information about the DPJ type system and language.


Better UML diagrams in 5 easy steps
Documenting code can be a time consuming challenge, especially when dealing with unfamiliar spaghetti code.
Diagrams and UML tools can help with this but what appears to be a comprehensive diagram to one person might actually result in more confusion to someone else. It's important to maintain a clear idea of what concepts your diagram is conveying. There are several tricks I've found that make this task significantly easier.
  • Less is more
  • Highlight stumbling blocks
  • Images cannot survive in a vacuum
  • Organization and accessibility are key
  • Maintain your diagrams
  • (BONUS) Multiple versions

Custom Swing Component Development Tip: Not Everything is Transparent
This article explains transparency (opacity) and how to avoid some common pitfalls encountered when developing custom swing comppnents The previous article in this series, titled Insets Matter [1], introduced us to a new Swing developer named Toni and documented his efforts to create a custom swing component named the Orb. The purpose of the Orb is to draw a simple blue circle within the bounds of the component.


Au coeur du JDK : l'interface Iterable
Connaissez-vous l'interface java.lang.Iterable ?
Mais si, vous la connaissez : vous l'utilisez tous les jours, lorsque vous parcourez une Collection. Hé bien, voyons maintenant comment vous pouvez l'utiliser à votre avantage lorsque vous concevez un modèle objet.

Iterable, mode d'emploi



Computer Language Benchmarks Game
How big is the difference between programming languages?

Remember - these measurements are just of the fastest programs for each programming
language implementation, measured on this OS/machine.