vendredi 29 octobre 2010

Veille technologique semaine 43

Pour le bulletin de la semaine 43, je vous propose les sujets suivants :
  • du rifif autour le Java : problème au JCP (Java Community Process) : suite aux grandes manœuvres ? ...
  • Apple ne fournira plus le JDK sur MacOSX. Oracle devrait prendre le relais ?
  • Adobe présente un outil de construction de site web pour le HTML 5 : c'est le début du remplacement de sa technologie AIR (flash + flex) par le HTML5 ?
  • Plus de 50% des vidéos sur internet sont passées au format HTML5.
  • Qui utilise la librairie Swing de Java ? : l'industrie de défense, ....
  • Les technologies du multi-touch : le framework MT4J (Multi-Touch For Java) : explications.
  • L'utilisation des transactions mémoire à la place des verrous (lock) : résultats sur la productivité.
  • Quelle est la différence entre l'architecture logicielle et la conception logicielle : le quoi et le comment ?
  • Les EJB 3.1 : un modèle de composant avec une injection de dépendance.
  • Le pointeur null : une erreur de conception de 1965 qui a coûté, depuis, un milliards de dollars ?
Bonne lecture.



Du rififi au JCP
Doug Lea a annoncé qu'il claquait la porte du comité exécutif du JCP. Spécialiste de programmation concurrentielle, et à ce titre leader de la JSR-166, il est une figure importante du monde Java et sa défection est très symbolique. Il justifie son départ car selon lui le JCP n'est plus crédible dans sa capacité à fournir un standard et des spécifications réellement ouverts.
Ceci rejoint d'autres critiques sur le manque de transparence du JCP. Si l'annonce l'IBM de rejoindre OpenJDK est une bonne nouvelle pour ce projet, ceci laisse sur le carreau la fondation Apache et son projet Harmony, une autre version open source de Java. Or ce projet n'a jamais réussi à être labellisé Java Standard Edition. Pour cela il faut être passé par les TCKs (Test Compatibility Kits) Java qui valident les spécifications du JCP. Mais comme ces TCKs ne sont pas libres, Apache se plaint de ne pas pouvoir valider son projet. Et IBM ayant quitté le navire, il est encore moins sûr qu'un jour ce module devienne libre.
De plus, Dalvik, la JVM d'Android, est justement construite sur un sous ensemble d'Harmony. Avec les attaques en justice d'Oracle contre Google pour des histoires de brevet, voici donc une deuxième ligne de front qui s'ouvre entre les deux géants.
Le mois prochain auront lieu les élections pour choisir les nouveaux membres du comité exécutif du JCP. Cette élection sera vraiment la première depuis l'ère Oracle et compte-tenu des enjeux devrait être déterminante pour l'avenir de Java. A noter que Bob Lee (aka « Crazy » Bob Lee), le charismatique leader de Guice, s'est porté candidat à la succession de Doug Lea pour les indépendants.


Can Oracle Turn Java Around?
A lot has happened in the last week or two in the Java space. Oracle has remained silent throughout, but the silence is deafening. The start of the proceedings kicked off with IBM joining OpenJDK and (effectively) disbanding Harmony. One JVM down, one to go. The Apache Software Foundation board has made their thoughts known since; they thank IBM for their contributions to date and very much hope for Harmony's continued survival with other contributors. This prompted a number of responses across, included Mike Milinkovich at Eclipse, leading to his thoughts on Java 7 adoption as a result. However, he clarified that as it currently stands, the Java 8 proposal needs a re-think on the modularity layer to work better with existing de-facto standards.

Stephen Colebourne has been digging into the JCP and initially suggested that the JCP should be split in two as it has become clear that the Java SE components are controlled solely by Oracle rather than being voted as part of the JCP itself. However, he then claimed that Oracle are stuffing the ballot by bringing on one of their long-term customers, Hologic, onto the JCP board. This is the first time that most in the Java community have heard their name; the other two Oracle nominees are Apache and Red Hat. Up for re-election are Google and Eclipse, amongst others.



Le JDK d'Apple: c'est fini
Alors que nous savions bien qu'il n'était pas question de développer sur l'iOS (IPhone, Ipod, Ipad) en Java, tout allait bien du cotédesktop. Mais Apple a annoncé récemment, par le biais d'une note technique, que « les développeurs ne devraient pas compter sur la présence d'un runtime Java dans les futures versions de MacOS X ». Pour parler concrètement, que fait tout bon développeur lorsqu'il se rend compte qu'une fonction publique de son API n'est pas adaptée alors que certains l'utilisent ? Il la marque @deprecated en espérant s'en débarrasser au plus tôt (mais tout en sachant que ca ne sera pas si facile que ca: il va falloir convaincre tous les utilisateurs d'abandonner les appels à cette fonction). C'est ce qu'Apple vient de faire à notre langage préféré. Le runtime Java risque de ne plus être présent dans les futures version de MacOS (10.7). Rude coup ? Pas complètement… En effet, SoyLatte, le port d'OpenJDK sur Mac semble fonctionnel. Le plus gros problème risque de venir de l'intégration des applications de type client lourd, basées sur Swing/AWT, et pour lesquelles Apple avait optimisé l'intégration à OSX. Et c'est pour cette raison qu'une pétition réclame à Apple de reverser son code actuellement propriétaire à l'OpenJDK. Mais il se murmure qu'Apple aurait utilisé nombre d'appels de méthodes non documentées de l'API Mac OS pour intégrer de façon la plus transparente possible les applications Java dans son OS. Rien n'est donc moins sûr que l'issue de cette pétition. Il risque d'être difficile aux développeurs de l'OpenJDK de pousser l'intégration aussi loin. James Gosling en profite pour rappeler que cette intégration poussée à l'extrême était justement nécessaire car que les applications d'Apple elle-mêmes étaient en Java ! Comme quoi…
Aller, oublions un peu ces problèmes politiques un instant et retournons coder des applications web: elles, au moins, ne nécessitent pas de composants graphiques natifs (bien que l'IDE…) .

 

Adobe Edge : HTML5 pour les nuls
Adobe a présenté récemment un prototype d'outil permettant de réaliser de manière simple et sans réelle connaissance en code des animations en utilisant les technologies HTML5 (et donc pas Flash, la solution maison pour gérer des sites web animés).
Cet assistant à la création de code HTML5 s'appelle Adobe Edge, et des esprits mal intentionnés pourraient y voir le premier pas d'Adobe vers l'abandon, à moyen terme, du Flash…ou plus simplement peut être la volonté de se positionner sur le créneau porteur du HTML5, mis à la mode en grande partie grace à Steve Jobs et son refus d'intégrer Flash sur ses OS mobiles.



HTML5 Video Available on the Web – October Update
Last May, we took a look at how much HTML5 compatible video is out there. 5 months on, we figured now it would be worth taking another look.
HTML5 compatible video available on the web is still experiencing substantial growth & the rate of adoption is picking up.

Some Discoveries We Made
  • 54% of web video is now available for playback in HTML5. Double in 5 months.
  • Flash remains the dominant player within desktop environments.
  • Mobile is driving HTML5 video adoption. HTML5 compatible (H.264 mostly) video is the most common format for mobiles (inc. iPhone, iPad and Android).
  • Publishers & platforms now offer iframe embeds, allowing them to switch players dynamically, depending on the access device.

Is Swing Dead
Periodically the question, "Is Swing Dead", pops up on one of the mailing lists. I usually ignore them because I consider it flame-bait and not worth the time to answer. However, with the recent announcement by Apple that they weren't going to be supporting Java on the Mac, and the resultant furor that it's caused on the mailing lists, I thought I would look at the question again and see if I could give it a serious answer.

To Whom Does Swing Matter?

If Swing died tomorrow, who would miss it? Strangely enough, most of the server-side developers would miss it, because it's the basis for most of the IDEs that people use. Beyond IDEs, where does it get used? I keep a Dice search agent running and invariably the hits I get for "Swing Developer" tend to fall into the following categories:
  • Defense Industry: Real-time telemetry from missiles, aircraft, and UAVs.
  • Health: Clinical telemetry from EKGs, infusion pumps, patient sensors and similar kinds of hospital equipment.
  • Finance: Day-traders, commodity and energy traders, etc.
  • Biotech: medical device, instrumentation and software vendors.
  • Telecommunications companies
  • Geospatial software

Framework MT4J et les technologies tactiles
La technologie Multi-touch n'est pas une technologie nouvelle mais le succès de l'iphone fait que cette technologie rentre dans sa phase d'utilisation à grande échelle. Les équipements multi-touch se multiplient, que ce soit avec les OS mobiles comme Android / Iphone, les ordinateurs tout-en-un sous windows 7 ou les écrans d'ordinateurs supportant le multi-touch et dernièrement avec l'annonce de la sortie de l'ipad de Apple.
La technologie multi-touch peut aussi être appliquée en utilisant le touchpad multi-point des pc portables ou en utilisant une palette graphique wacom multi-point.

Le domaine d'utilisation est assez varié, il va de la conception 3D, au dessin, à la consultation de plans et d'images et pour finir au jeu.



Is Transactional Programming Actually Easier?
This paper offers evidence that transactional programming really is less error-prone than high-performance locking, even if newbie programmers have some trouble understanding transactions. Students subjective evaluation showed that they found transactional memory slightly harder to use than coarse locks, and easier to use than finegrain locks and condition synchronization.



Architecte ou designer ?

Qu'est-ce que l'architecture logicielle ?
L'architecture logicielle est le pont qui relie les exigences et l'implémentation

Qu'est-ce que le design logiciel ?
Le design logiciel est l'action de définir la structure statique et dynamique d'un logiciel.

L'architecte est donc au designer ce que le designer est au développeur. Il offre une vision qui est située un niveau d'abstraction plus haut que celle donnée par le designer.


Enterprise JavaBeans 3.1 with Contexts and Dependency Injection: The Perfect Synergy
Version 3.1 of the Enterprise JavaBeans (EJB) specification greatly simplifies the EJB specification and provides declarative aspects, such as transactions, security, threading, and asynchronous processing. Contexts and Dependency Injection (CDI) provides Dependency Injection (DI) power and flexibility. Both are part of the Java Platform, Enterprise Edition (Java EE) 6 specification and ready to use. This article describes why there is perfect synergy between EJB 3.1 and CDI.


Null pointer
Null Object pattern 
I call it my billion-dollar mistake. It was the invention of the null reference in 1965.

vendredi 22 octobre 2010

Veille technologique semaine 42

Pour le bulletin de cette semaine, je vous propose les sujets suivants :
  • mise à jour du JDK 6 en update 22.
  • un article qui propose une vidéo sur le client server versus publish subscribe : exemple avec la DDS de l'OMG (proposé par OpenSplice),
  • un outil de conversion d'une IHM en Swing vers une IHM en Web : AjaxSwing. Il faut voir les exemples sur le site.
  • une mise à jour de la spécification des expressions lambda pour le JDK 8.
  • le design des API avec les types paramétrés : les génériques Java : quelques exemples de code.
  • les EJB 3.1 et les Timer : la forme descriptive : @Schedule
  • un résumé des méthodes synthétiques en Java : cas d'usage.
  • la construction d'énuméré dynamique : pourquoi faire ?
  • les "methodes defender" pour le JDK 7 : explications.


Bonne lecture.
 

Java Platform, Standard Edition 6 Update 22 Release Notes


Client Server versus Publish Subscribe
Event-driven architecture (EDA) is an asynchronous pattern which can be implemented with a publish/subscribe (pub/sub) mechanism. Pub/sub is basically a decoupling mechanism in a landscape of communicating systems. Not only the technology of the communicating systems is decoupled, but also presence in time of the communicating systems is decoupled and even locations are decoupled as there is no endpoint resolution applicable.




AjaxSwing - Automatic Conversion of Swing Applications to AJAX websites
CreamTec is proud the announce that AjaxSwing 3.1.1 is available for download.
AjaxSwing is a web deployment platform for Java Swing applications. It allows companies that built Java desktop applications to run them as web applications. AjaxSwing can be thought of as a Java Swing to HTML converter that creates HTML and JavaScript at runtime.
AjaxSwing 3.1.1 release notes:
3.1.1 is our next release of the 3.1 branch introducing following changes from previous (3.1.0) version:

  • Fixed dialog z-index issue when third level dialog appeared below others
  • Added support for inverted property in JSlider
  • Added support for invisible items in JMenu (were renderer as visible before)
  • Fixed JMenu rendering when it contains normal components (labels, panels, etc)
  • Improved ajax table scrolling
  • Added support for rendering JTableHeader on top a the table while you scroll it
  • Improved rendering of TitledBorder, support difference title placement and border styles
  • Fixed exception in TemporaryFileRemover thread
  • Improved layout for JScrollPane, JComboBox, JCheckBox, JButton
  • Other small fixes and improvements

AjaxSwing Home: http://www.creamtec.com/products/ajaxswing/
Online demos: http://www.creamtec.com/products/ajaxswing/demos.html
Download: http://www.creamtec.com/products/ajaxswing/install/index.html


Lambda Update
Now that the dust has settled on the future of OpenJDK and Plan B confirms the feature slip of Lambdas into JDK 8 (or later), what is the future of Lambdas themselves?
The initial lambda proposal was fairly wide reaching, in that it attempted to bring functional types to the Java language. However, some fundamental issues in the intersection of the Java type system and the newly proposed functional types resulted in these functional types (or structural typing) being dropped in favour of existing class-based (or nominal typing) representations. Partly, this is due to the fact that if X is a subtype of Object, then array[X] is a subtype of array[Object]; combined with functions that throw exceptions, it is possible to break the Java type system.


Designing APIs With the Java 5 Language Features :
While implementing a mid-sized framework, I've discovered that the following Java 5 language features can help improve the usability of APIs.
Generics can help avoid casts in more ways than one, especially if instances of Class are used (see my blog post on this subject).
Generics and constructors: Generic constructors always need a type argument, while static methods (such as factory methods) can infer type arguments from their actual (method) parameters, leading to shorter code.


Understanding the EJB 3.1 Timer service in Java EE 6 - Programmatic, Deployment Descriptor, @Schedule
EJB 3.1 has greatly simplified the ability to schedule events according to a calendar-based schedule, at a specified time, after a specified elapsed duration, or at a specific recurring intervals.
There are multiple ways events can be scheduled:
• Programmatically using Timer service
• Automatic timers based upon the metadata specified using @Schedule
• Deployment Descriptor


Java's Synthetic Methods
In this blog post, I look at the concept of Java synthetic methods. The post summarizes what a Java synthetic method is, how one can be created and identified, and the implications of Java synthetic methods on Java development.
The Java Language Specification (section 13.1) states "Any constructs introduced by the compiler that do not have a corresponding construct in the source code must be marked as synthetic, except for default constructors and the class initialization method." Further clues as to the meaning of synthetic in Java can be found in the Javadoc documentation for Member.isSynthetic(). That method's documentation states that it returns "true if and only if this member was introduced by the compiler." I like that very short definition of "synthetic": a Java construct introduced by the compiler.



Enum Tricks: Dynamic Enums
Introduced to Java 1.5, Enum is a very useful and well known feature. There are a lot of tutorials that explain enums usage in details (e.g. the official Sun's tutorial). Java enums by definition are immutable and must be defined in code. In this article I would like to explain use case when dynamic enums are needed and how to implement them.



Interface evolution via "public defender" methods
Problem statement
Once published, it is impossible to add methods to an interface without breaking existing implementations. The longer the time since a library has been published, the more likely it is that this restriction will cause grief for its maintainers.

vendredi 15 octobre 2010

Veille technologique semaine 41


Pour le bulletin de la semaine 41, je vous propose les sujets suivants :
  • Oracle et IBM viennent de s'associer pour le développement de Java sur l'implémentation OpenJDK. C'est une annonce très importante car elle exprime le soutient de deux poids lourds pour la plateforme Java. Plusieurs articles avec des commentaires.
  • La dette technique : une explication et des propositions de solutions
  • Le model driven : mais où sont les succès ?
  • Les 15 leçons apprises sur la pratique du model driven.
  • Conférence JavaOne 2010 : le JDK 7 et le JDK 8
  • JavaOne 2010 : le garbage collector et les myths
  • JavaOne 2010 : Aparapi (A PARallel API) : une API pour la programmation parallèle des processeur graphique (Graphic Processor Unit : GPU) proposé par AMD.
Bonne lecture.

IBM Joins the OpenJDK Project!
Posted by editor on October 11, 2010 at 1:24 PM PDT
Oracle and IBM have announced that IBM is joining the OpenJDK project:
the companies will collaborate to allow developers and customers to build and innovate based on existing Java investments and the OpenJDK reference implementation. Specifically, the companies will collaborate in the OpenJDK community to develop the leading open source Java environment.
With today's news, the two companies will make the OpenJDK community the primary location for open source Java SE development. The Java Community Process (JCP) will continue to be the primary standards body for Java specification work and both companies will work to continue to enhance the JCP.
The collaboration will center on the OpenJDK project, the open source implementation of the Java Platform, Standard Edition (Java SE) specification, the Java Language, the Java Development Kit (JDK) and the Java Runtime Environment (JRE).
Rod Smith, Vice President, Emerging Technologies, IBM, said:
IBM, Oracle and other members of the Java community working collaboratively in OpenJDK will accelerate the innovation in the Java platform. Oracle and IBM's collaboration also signals to enterprise customers that they can continue to rely on the Java community to deliver more open, flexible and innovative new technologies to help grow their business.
For additional commentary on this news, see:

IBM joins OpenJDK: A big day for Java
Filed under:
javase jdk jdk7 jdk8

Big news today. Wow.

IBM is joining the
OpenJDK !

There's already a
welcome note, and here's the joint press release, and more here from The Aquarium. But what does it really mean ?

  • It means that IBM will be joining Oracle engineers working on the roadmap for JDK 7 and 8 for OpenJDK.
  • It means that IBM's long involvement in the Java platform can be orders of magnitude deeper than it has even been before.
  • It means that IBMs engineers will be contributing their valuable fixes, code, optimsations directly into the OpenJDK platform
  • It means that OpenJDK will be the primary venue for Java SE impementation code: Direct, open discussions in the mailing lists + quicker fixes + better quality = better code.

And it will still leave plenty of room for
Oracle's JDK (which is of course based on OpenJDK code) and IBM's SDK to compete on other aspects of the platform than the core libraries: tuning, tools, deployment and so on.

A new era of co-oper-tition !

There's going to be a bunch more information following today's initial news, stay tuned.

And stay tuned for the
long awaited JSR for Java SE. Really coming soon.


There's not a moment to lose!
Mark Reinhold's Blog
IBM to join OpenJDK

I'm very pleased that IBM and Oracle are going to work more closely together, and that we're going to do so in the OpenJDK Community. IBM engineers will soon be working directly alongside Oracle engineers, as well as many other contributors, on the Java SE Platform reference implementation—starting withJDK 7.
I expect IBM's engineers to contribute primarily to the class libraries, working with the rest of us toward a common source base for use atop multiple Java virtual machines. We each have significant ongoing investments in our respective JVMs; that's where most of the enterprise-level feature differentiation between our respective products is found, and it makes sense for that to continue. Focusing our efforts on a single source base for the class libraries will accelerate the overall rate of innovation in the JDK, improve quality and performance, and enhance compatibility across all implementations.
Our tighter collaboration will be evident not just in OpenJDK but also in the Java Community Process. IBM has endorsed Oracle's proposal for Java SE 7 and Java SE 8, which already has strong support from across the community. We'll also join forces to enhance the Java Community Process so that it remains the primary standards body for Java specifications.
This is excellent news, for the Java SE Platform and for OpenJDK. I've gotten to know many of IBM's top Java engineers over the years, and I now look forward to working more closely with them.

IBM and Oracle to Collaborate on OpenJDK
 Posted by pelegri in General

Today, IBM and Oracle announced their intent to work together to accelerate innovation on the Java Platform, leveraging OpenJDK.
This is great news; IBM has been a pillar in the Java ecosystem since Dec, 1995 when they became a licensee(web.archive.org) and their commitment includes participation and leadership in JSRs, participation in the JCP EC, investment in community activities and projects, and a multitude of products and tools built on the Java platform. The new arrangement should indeed provide an acceleration of the development of the platform.
Today's announcements have these main components:

• IBM and Oracle will work together to make OpenJDK the primary forum for Open Source Java SE Development
• IBM and Oracle are committed to accelerate the pace of evolution of the Java Platform, and will jointly support the Java SE 7 and Java SE 8 schedule proposed at JavaOne and elaborated yesterday by Mark andHenrik.
• IBM and Oracle will work together to continue to enhance the JCP, which remains the primary standards body for work on Java Specifications.

Exciting times ahead. I expect plenty of reactions to this announcement through the next couple of days and I will update this entry to record them.
Main Links:

Reactions

Technical Debt a Perspective for Managers
It's iteration 10 and your project is starting to slow down. For the past few iterations the team hasn't been able to complete quite as many stories as they did in the past. In addition, more bugs have been recently found both in the new stories and also in regressions. The manager knows that the team members haven't changed and they're still working the same hours. The customer is asking "What happened? Is the team still working hard?"


Model-Driven Development: Where are the Successes?
experiences from using model-based development in industry from the EA-MDE project. The project is interested in understanding the factors that lead to success or failure with model-driven engineering (MDE) to help design the next generation of MDE tools. This question is not new, two years ago, Sven Efftinge, Peter Friese and Jan Köhnlein published an article "MDD best practices and Johan Den Haan, CTO of Mendix, published an article on the how an MDD initiative could fail. Adopting an MDE approach can be quite daunting.

Then, Johan concluded his article by:
It's not my goal to discourage you from starting with model-driven software development. I just wanted to show you the complexity of it and wanted to share some thoughts hopefully pointing you at directions helping you to overcome the complexity of MDE.


15 lessons learned during the development of a Model Driven Software Factory
Do you believe in Model Driven Software Development? Do you believe in modeling languages on a higher abstraction level and automated transformations to an executable business application?

I see Model Driven Software Development as an important part of the future of software development. However, I also see a lot of people struggle with actually using Model-Driven techniques and applying them in their daily business. It isn't trivial to build a successful Model-Driven Software factory (MDSF). In this article I want to share 15 lessons I learned during the development of a successful Model Driven Software Factory.
For more background information about Model Driven Software Factories or designing Domain Specific Languages please read the linked articles first. In short: a Model Driven Software Factory let's you design a software application using high
level models. These models are automatically translated into a working software application.

So, what's important to remember when building your own Model Driven Software Factory?


JavaOne 2010: Upcoming Java Features
In the Java booth, Jim Holmlund gave me an overview of upcoming features in Java. (Luckily for me, he had a copy of the speaker's slides. So it made up for the session I missed in the morning.)
Some of what's coming is pretty cool. Some is a bit dissapointing, compared to what I was hoping for. Here's my notes:

Java 7
  • Strings in Switch Statements
  • Underscores in constants
  • Multi-catch
  • Autoclose interface
  • Default methods for interfaces
  • Type "Inferencing"

Java 8(ish)
  • VM Support for Dynamic Languages:
  • LambdaJ:


JavaOne 2010: The Garbage Collection Mythbusters
As members of the Garbage Collector Group of the HotSpot Virtual Machine Development Team, John Coomes and Tony Printezis have the credentials for presenting "The Garbage Collection Mythbusters" at JavaOne 2010. The speakers took turns talking and they started by Coomes stating they wanted to "cover the strengths and weaknesses of Java garbage collection or at least the perceived strengths and weaknesses of Java garbage collection." They then proceeded to provide a brief background ("refresher course") into the basics of garbage collection.



Aparapi: New, "Pure Java" API for Executing Arbitrary Compute Tasks on GPUs Unveiled at JavaOne
This week Gary Frost from AMD unveiled an alpha release of Aparapi (A PARallel API), an API that allows programmers to write logic in Java to be executed on a GPU. GPUs are the massively parallel hardware acceleration chips originally installed in PCs to boost graphics rendering performance but that are now pushed to other kinds of compute-intensive tasks that have nothing to do with graphics.

vendredi 8 octobre 2010

Veille technologique semaine 40

Pour le bulletin de la semaine 40, je vous propose les sujets suivants :
  • la conférence Eclipse Day à Paris le 5 novembre 2010 : inscription gratuite,
  • sortie de la version 2.8 de mono qui est l'implémentation open source du framework DotNet : il propose toutes les fonctionnalité du langage C# 4.0,
  • sortie de la version 2.9 de LLVM (Low Level Virtual Machine) : le principe de la machine virtuelle pour le C, C++, Objectif C,
  • VMKit : l'unification des machines virtuelles : une base pour construire des machines virtuelles Java ou DotNet,
  • La programmation concurrente et le matériel,
  • La programmation concurrente : le point de vue du logiciel. La théorie du Fork/Join de Java 7 par son auteur Doug Lea,
  • Les options du compilateur Javac : pour des vérifications plus stricte du code source Java.
Bonne lecture


Eclipse Day Paris 2010 - Accueil
L'Eclipse Day Paris 2010 est l'événement français Eclipse de l'année 2010 rassemblant la communauté Eclipse autour d'une même et unique synergie.

Il se tiendra au Pavillon Royal le vendredi 5 Novembre 2010.
Il réunira les acteurs industriels français de l'écosystème Eclipse autour des thématiques suivantes :
  • Runtime
  • e4
  • embarqué
  • modélisation
  • data management
Cet événement est idéal pour les décideurs informatiques, les architectes logiciels et les responsables processus et méthodes qui souhaitent mettre en place Eclipse dans leurs projet.

A cette occasion vous aurez l'opportunité de rencontrer et discuter avec les acteurs qui font vivre l'écosystème Eclipse, les commiteurs, les éditeurs de solutions, ainsi que les membres de la fondation.

L'événement est ouvert à tous, dans la limite des places disponibles, de manière gratuite.


Mono 2.8 released with full support for C# 4.0
The Mono project, which produces an open source implementation of the .NET runtime, has released version 2.8. The update brings full support for version 4.0 of the C# programming language, substantial improvements to the optional LLVM-based Mono backend, and a new garbage collection implementation that is more efficient.

Mono was originally created to accelerate Linux application development and enable Windows developers to bring some of their existing code and skills to the Linux platform. The focus of the project has expanded in recent years as Novell has explored ways to monetize the underlying technology. Mono is increasingly viewed as a compelling tool for supporting rich embedded scripting in applications and bringing C# to environments where it wouldn't otherwise run.

Mono is used in a number of well-known applications, including the Second Life client and the Unity game development suite. Novell also offers its own Mono-based commercial development tools for building native iPhone
and Android applications with C#.


LLVM 2.8 Released
The LLVM team yesterday released LLVM 2.8, the low-level virtual machine infrastructure that includes a next-generation C/C++ compiler, optimiser, and run-time.

LLVM is actually a collection of projects which together form a means to do C, Objective-C and C++ compilation. Compilation itself is done with Clang, which has been able to compile both C and Objective-C for some time. Although C++ support was added in LLVM 2.7, the 2.8 release completes the C++ specification, which combined with libc++ provides a standard library for C++ applications. There's also a new LLDB debugger, which is a replacement for the erstwhile gdb debugger but uses the same parser and source code tools as the compiler does. Although it has been available for a while, LLDB sees its first release in LLVM 2.8.

Unlike GCC, which is a monolithic compiler released under the GPL, the LLVM family of tools are more modular – and thanks to a more permissive BSD license, can be embedded in commercial tools. As a result, applications like Apple's Xcode include Clang support which performs faster than the external gcc application – and not only that, but since the tool's AST can be introspected by the containing tool, gives the IDE much more power in understanding how the source code relates to the structure and compiled code.

In addition, the modular architecture allows for the Clang static analyzer to run over source code and identify potential bugs, as well as Klee, a symbolic virtual machine which can identify what sequence of events can occur within a program. One feature of Klee is that in the event of finding a bug, it can programmatically generate a test case to be able to exercise that condition to demonstrate that the fix has subsequently been made.


VMKit: a Substrate for Managed Runtime Environments
Abstract
Managed Runtime Environments (MREs), such as the JVM and the CLI, form an attractive environment for program execution, by providing portability and safety, via the use of a bytecode language and automatic memory management, as well as good performance, via just-in-time (JIT) compilation. Nevertheless, developing a fully featured MRE, including e.g. a garbage collector and JIT compiler, is a herculean task. As a result, new languages cannot easily take advantage of the benefits of MREs, and it is difficult to experiment with extensions of existing MRE based languages.

This paper describes and evaluates VMKit, a first attempt to build a common substrate that eases the development of high-level MREs. We have successfully used VMKit to build two MREs: a Java Virtual Machine and a Common Language Runtime. We provide an extensive study of the lessons learned in developing this infrastructure, and assess the ease of implementing new MREs or MRE extensions and the resulting performance. In particular, it took one of the authors only one month to develop a Common Language Runtime using VMKit. VMKit furthermore has performance comparable to the well established open source MREs Cacao, Apache Harmony and Mono, and is 1.2 to 3 times slower than JikesRVM on most of the DaCapo benchmarks.


Concurrency Revolution From a Hardware Perspective
Brian Goetz and Cliff Click spoke at JavaOne conference last week about the concurrency revolution from a hardware perspective. They started off the discussion saying that the clock rate has been increasing exponentially until recently, but not so any longer. And for years, CPU designers focused on increasing sequential performance with techniques like higher clock frequency and Instruction Level Parallelism (ILP) but this approach is limited.

Going forward, the designers will focus on parallelism for increasing the throughput.

Brian gave an overview the main periods in CPU history which includes the CISC and RISC systems era and now multi-core machines. Cliff discussed the impact of data caching on the system performance. He said, as a general principle developers should think about data, not code. Data locality should be a main design concern for high-performance software. It's also important to follow the principle of share less, mutate less. The combination of sharing the mutable data is not desired because this will cause cache contention and requires synchronization.

Some of the point solutions to achieve concurrency in applications are:
  • Thread Pools and Worklists
  • Fork/Join
  • Map/Reduce
  • Actors
  • Software Transactional Memory (STM)
  • Graphics Processing Units

A Java Fork/Join Framework
ABSTRACT
This paper describes the design, implementation, and performance of a Java framework for supporting a style of parallel programming in which problems are solved by (recursively) splitting them into subtasks that are solved in parallel, waiting for them to complete, and then composing results. The general design is a variant of the work-stealing framework devised for Cilk. The main implementation techniques surround efficient construction and management of tasks queues and worker threads. The measured performance shows good parallel speedups for most programs, but also suggests possible improvements.


javac's -Xlint Options
The Java programming language compiler (javac) provided by Oracle (and formerly by Sun) has several non-standard options that are often useful. One of the most useful is the set of non-standard options that print out warnings encountered during compilation. That set of options is the subject of this post.
The javac page section on non-standard options lists and provides brief details on each of these options. The following is the relevant snippet from that page.

vendredi 1 octobre 2010

Veille technologique semaine 39

Pour le bulletin de la semaine 39, je vous propose les sujets suivants :
  • La journée du model driven 2010 est prévue le 25 novembre 2010 à Paris. C'est gratuit mais il est indispensable de s'inscrire sur le site web car le nombre de place est limité : www.mdday.fr.
  • OpenOffice change (provisoirement ?) de nom et devient LibreOffice.
  • La transition IPV4 vers IPV6 : quel est le plan B ?
  • JavaOne 2010 : la plus importante des conférences du monde Java : les annonces majeurs avec une nouvelle sortie du JDK 7 mi 2011 avec une moitié des fonctionnalités prévues et l'autre moitiés repoussées pour le JDK 8 fin 2012, la confirmation de JavaFX 2.0 pour mi 2011, ...
  • Un article sur le concept de BigMemory : implémenté par le produit Terracotta.
Bonne lecture


La journée du « Model Driven » : 25 novembre 2010, Paris

Les principaux acteurs du MDA
Blu Age, Jaxio, Mia-Software, Obeo, Objecteering Software, Objet Direct, Microsoft, Sodius, SoftFluent, W4 vous invitent à la 4ème édition du MD Day, la journée consacrée aux approches « Model Driven .

Une rencontre unique pour échanger, confronter les retours d'expérience et enrichir sa vision des approches du Model-Driven.

Nouveauté cette année : l'agilité sera au cœur des conférences

Principaux temps forts : intervention de Steve Cook, Membre de l'OMG ; table ronde avec des acteurs incontournables de l'agilité comme Laurent Bossavit, Spécialiste des approches Agiles et d'Extreme Programming, Christophe Thibaut, Coach Agile chez OCTO Technology, entre autres.

Outre l'agilité, bon nombre d'autres thèmes seront abordés : modélisation fonctionnelle, génération de code, modernisation du SI, orchestration de processus métier, exécution des modèles, DDD Domain Driven Design, choix entre UML et DSL, ..


Site web :
www.mdday.fr

Le programme :
http://www.mdday.fr/programme.htm

inscription obligatoire sur le site :
register.mdday.fr/seminaire/viewRegisterForm.do


OpenOffice.org divorce et devient LibreOffice
Le couple OpenOffice.org / Oracle a divorcé. La communauté en charge du développement de la suite bureautique open source souhaite voler de ses propres ailes, sans la tutelle d'une entreprise commerciale.
Le développement d'OpenOffice.org (Ooo) était depuis 10 ans réalisé par des volontaires et des entreprises, mais sous l'égide de Sun. Le rachat de ce dernier par Oracle n'a visiblement pas rassuré la communauté Ooo. L'entreprise de Larry
Ellison aurait considéré ce groupe comme faisant davantage "partie du problème que de la solution" a commenté Charles-H. Schulz, l'un des membres d'OOo.



There is no Plan B: why the IPv4-to-IPv6 transition will be ugly
Twenty years ago, the fastest Internet backbone links were 1.5Mbps. Today we argue whether that's a fast enough minimum to connect home users. In 1993, 1.3 million machines were connected to the Internet. By this past summer, that number had risen to 769 million. and this only counts systems that have DNS names. The notion of a computer that is not connected to the Internet is patently absurd these days.
But all of this rapid progress is going to slow in the next few years. The internet will soon be sailing in very rough seas, as it's about to run out of addresses, needing to be gutted and reconfigured for continued growth in the second half of the 2010s and beyond. Originally, the idea was that this upgrade would happen quietly in the background, but over the past few years, it has become clear that the change from the current Internet Protocol version 4, which is quickly running out of addresses, to the new version 6 will be quite a messy affair.
 



JavaOne 2010
La version 2010 de JavaOne, sans doute la plus grosse conférence autour de Java, s'est tenue la semaine dernière et la blogosphère a déjà allégrement commenté cet évènement. Oracle en a profité pour donner sa feuille de route. Parmi les annonces les plus commentées on notera celles sur JavaFX et sur Java 7/JDK 7.
 
JavaFX
JavaFX prend une nouvelle direction avec l'abandon de JavaFX Script pour l'utilisation exclusive de l'API Java. Ces changements seront disponibles dans la version 2.0 prévue d'ici mi-2011. Cette orientation permettrait d'avoir plus de ponts vers les langages tournant sur la JVM (groovy, scala…) et pourrait mieux s'intégrer à Swing. Peut-être que cela donnera un nouvel élan à ce framework qui peine un peu à s'imposer.
 
Java 7 et JDK 7
Le plan, dont nous vous avions parlé, a été définitivement adopté, et le périmètre clairement défini. Annoncé par Mark Reinhold, les nouvelles fonctionnalités peuvent être trouvées ici.
 
Et aussi
Plus à la marge, quelques liens autour de l'événement :
  • Durant son passage à JavaOne, Stephen Colebourne s'est amusé à faire un petit sondage sur les exceptions vérifiées et donne son point de vue
  • John Coomes et Tony Printezis ont fait une présentation sur les mythes entourant le garbage collector
  • une application pour visualiser les différents concepts de l'API concurrent, très didactique
  • James Gosling s'est expliqué sur son départ d'Oracle

Replanification de la sortie de Java 7
Tout reste encore hypothétique mais Java 7 pourrait sortir moins en retard que prévu. Initialement planifiée pour septembre 2010 (maintenant!), il semble qu'une implémentation complète de toutes les fonctionnalités de Java 7 ne soit possible avant mi-2012. Mais Mark Reinhold, le responsable chez Oracle de Java 7, a proposé un plan B qui découperait le périmètre de Java 7 en deux. Une première version sortirait mi-2011, qui serait donc la version Java 7 officielle et une deuxième mi-2012, qui deviendrait donc Java 8.
Le périmètre de cette nouvelle version 7 n'est pas encore strictement défini. Seraient retirés du scope:
Par contre il est vraisemblable que ce qui est déjà utilisable dans les builds actuels se retrouvera dans cette version. Joseph Darcy liste les fonctionnalités possibles du projet Coin ici. Pas mal d'optimisations autour de la JVM feraient également leur apparition. Le fameux invokedynamic (JSR-292) serait aussi de la partie, permettant de nombreuses optimisations pour les langages dynamiques qui tournent sur la JVM comme Groovy ou JRuby. Et plein d'autres fonctionnalités qui trépignent dans leur coin.

4 ans après la sortie de Java 6, une certaine attente s'est créée dans la communauté Java. Cette proposition de nouvelle planification avait des allures de sondage auprès des développeurs et à lire les diverses réactions ici et , il y a de grandes chances qu'Oracle suive le plan B.


Oracle Announces JDK Roadmap for Advancing Java SE
JAVAONE, SAN FRANCISCO – Sept.21, 2010


Oracle Postpones Some Features in JDK 7
Oracle has made some decisions about Java: in order to release JDK 7 in the middle of next year, they have decided to change priorities and specifically, postpone three features: Jigsaw, Lambda and Coin.

From the linked article: "Jigsaw is an effort to make Java more modular, while Project Lambda aims to bring closures to Java, and Project Coin is an effort to make small changes to Java's behavior and syntax."
Although none of these, with the exception of closures, really speak to me (and Java is the language I earn a living with...), my personal feeling is summed up in the first question that came to my mind: why postpone features so that JDK 7 can get out of the pipes fast (i.e. 2011) and still have them in JDK 8 which is planned to be released in 2012?
 
Maybe that one of the reasons is to not lose too much momentum, but I still don't understand the logic behind the seemingly pressing need to release JDK 7. I don't deny that a 2D and 3D graphics engine would be useful, or that JavaFX bridging "the gap between Java applications and the browser's DOM, where HTML 5 and JavaScript exist" isn't important. I'm just puzzled by the timeline. Less than 18 months between two official JDK releases seems kind of hasty, even in the light of previous release dates. Take a look at JDK 6 and you'll wonder how "small language changes" (see the Oracle webpage linked below) could be unwieldy enough to not be baked in the next release.
 
In my eyes, Java is just fine as it is since it has always served any purposes I've ever had in my professional projects. I've always felt the language was overhyped for a long time, now it's threatened by the likes of Ruby, Lisp or Smalltalk. I feel like the way Java is either glorified or decried isn't how a language should be treated. I guess you can't fight the tides of progress. But keeping the final product consistent with the feature set until release time looks preferable to removing features, including the drastic change and power Lambda will bring into Java. Especially when the latest release is three months short of being four years old.
The ironic thing is that the "modularization" and "developer productivity" sections still list projects Jigsaw and Coin amongst the key features on Oracle's own website.


Oracle to scale back features for JDK 7
septembre 21, 2010 — Oracle is going with Plan B for JDK 7.

Thomas Kurian, executive vice president of Oracle, took the stage at Oracle OpenWorld and JavaOne on Monday night to remove the uncertainty that has surrounded the Java platform since Oracle closed its acquisition of Sun Microsystems earlier this year.

"I've been at JavaOne since 1997," said Kurian, "but this year is very special for us because it is the first year that Oracle is the steward and responsible for Java. What we want to do today is to make sure every developer is crystal clear on where we see the Java platform evolving."

Plan B calls for the elimination of projects Coin, Jigsaw and Lambda from the JDK 7 release train. This will push forward the completion date of JDK 7 to some time in 2011, and allow the Oracle team to push for JDK 8 in 2012.


JavaOne 2010 Alternative JVM Languages including JavaFX
You probably are already aware that JavaFX Script is no longer to be developed, by Oracle Corporation, beyond JavaFX 1.3.1 release. This is a cost-benefit decision and purely pragmatic business decision. JavaFX is now re-branded to Java API, in order it is JavaFX with Java API. I believe in the long term that Oracle has made a very wise decision. They are looking at the long-tail of computer development, especially in the consumer electronics and  portable device space. JavaFX is a client side technology, so they are going aggressively to the TTM (Time-to-market) launch and also answering in one fell swoop two questions that have always been difficult to respond regarding JavaFX. Personal disclosure: yours truly has been aware of Oracle's decision to change JavaFX 2.0 for a few weeks now.


JavaFX Rebooted: The Roadmap For Oracle's Alternative Approach
The big news at JavaOne so far has been the decision to ditch JavaFX Script and use a Java API for creating JavaFX applications instead. The big advantage of this is that JavaFX will be embeddable into Swing through it's embeddable web browser component, breathing some new life into Java desktop applications. It will now be much easier for JavaFX developers to integrate their applications with existing Java business logic, as well as get access to features such as generics and annotations. In these presentation slides from Stephen Chin and Jonathan Giles, you can see how JavaFX can work with alternative languages on the VM such as JRuby, Clojure, Scala and Groovy.

One feature that developers may miss from JavaFX Script is it's binding approach. While no solution is available just yet, according to these slides, there is work being invested into working out how to keep the binding feature alive for JavaFX.


BigMemory Explained a bit...
First you need some context. BigMemory is designed to provide what we call a tiered storage engine.

What it implies is a system that automatically and transparently works behind the cache to keep data as close to the app as possible. You can have a cache with 350GB of data in it, keeping the most frequently used (calculated at runtime) portion in memory with read / write latency under 1 microsecond. You can keep the remaining 350GB in memory but a bit further away from Java heap, and hidden from the Garbage Collector so that it never causes a pause in the JVM while it sits there resident, and that 350GB can be accessed at 100 microseconds. You have seen this before in the hardware. In that sense it is not new.

On-chip cache is faster than RAM and on-chip has multiple levels (L1, L2, L3). And, the caches transparently pull and push data from RAM to the core that needs the data. It works.