mardi 24 juillet 2012

Veille technologique semaine 28

Pour le bulletin de cette semaine, je vous propose les sujets suivants :
  • Microsoft et le multi-touch
  • La loi de Conway : l'architecture logicielle finie toujours par refléter l'organisation industrielle. C'est une pathologie.
  • Android 4.1 : à vos smartphones et tablettes.
  • Mise à jour de la spécification des expressions lambda pour Java : JSR 335
  • Un type de transistor plus rapide que ceux basés sur le silicium.
  • Sortie du COTS DataNucleus en version 3.1. COTS de persistances pour Java compatible JDO (Java Data Object) et JPA (Java Persistance API).
  • Le futur du COTS de test d'IHM : FEST.
  • C# : en manque d'idée pour la version 5 ?
  • Un exemple d'utilisation des modules du JDK 8 : définition et utilisation d'un service.
Bonne lecture.


Microsoft : l'amour du risque
Microsoft enfonce une nouvelle fois le clou : la vedette de sa Worldwide Partner
Conference (WPC) est un nouveau produit matériel. Il s'agit d'un écran multitouch de 82" qui de l'aveu de Steve Ballmer pourrait faire un tabac dans les grandes entreprises et dans le milieu de l'éducation. Une annonce qui pourrait paraître anecdotique, mais qui est en fait très révélatrice.


Architecture and Conway's Law
"…organizations which design systems … are constrained to produce
designs which are copies of the communication structures of these
organizations."
—Melvin Conway


Android 4.1: Open Sourced with UI, Connectivity, Services and Tools Improvements
The recently open sourced Android 4.1, aka Jelly Bean, comes with several UI, connectivity, services and SDK enhancements, including: smoother UI, better HTML5 rendering, cloud messaging, performance and debugging tools.


JSR 335: Lambda Expressions for the Java Programming Language
Part A: Functional Interfaces: Provides a definition of functional interfaces, which lambda expressions and method references can be used to instantiate.
Part B: Lambda Expressions: Defines the syntax of lambda expressions, including rules for the new kinds of parameter lists and statement lists.
Part C: Method and Constructor References: Defines the syntax of method and constructor references.
Part D: Poly Expressions: Describes poly expressions, which are a category of expressions that can adapt their typing to conform to a particular context.
Part E: Typing and Evaluation: Specifies the typing rules and evaluation behavior of lambda expressions, method references, and constructor references.
Part F: Type Inference: Redefines type inference to support lambda expressions, method references, and constructor references, and to allow context to be pushed down to nested poly expressions.
Part G: Default Methods: Describes the syntax and inheritance behavior of default methods, which are members of interfaces. Adapts the VM specification to support code-carrying methods in interfaces.


High-performance graphene transistors made using sticky tape
Graphene could be a useful material for high-performance transistors because it carries electrons faster than silicon.


DataNucleus
Almost a year from the release of version 3.0 and we move close to the release of version 3.1 (due late in July 2012). So what has changed in that time ?


The Future of Fest
'm very excited to be working on FEST again! It has been more than a year since my last commit and there is a lot of catch up for me to do.
I have put together a plan for the project and myself, which I'm going to share with
the rest of the team. The plan is the following:


Eric Lippert Reviews C# and Speculates on its Future
O'Reilly's Rachel Rouemeliotis recently spoke with Eric Lippert, Principal Software Design Engineer on Microsoft's C# Compiler Team. The conversation covered a number of topics and provided Lippert's brief summary of the C# world. This discussion prompted InfoQ to contact Lippert to provide greater context for his comments leading to a thoughtful analysis of the language's design philosophy.


Modular services with OpenJDK Jigsaw and Guice
This blog entry describes an experiment exploring the connection between Java modules and services in OpenJDK Jigsaw and the dependency injection framework Guice.
Modular services in Jigsaw define a very simple way to bind a (service) interface to implementations (service provider classes) and, using java.util.ServiceLoader, a way to iterate through all (service) instances of implementations bound to an interface.

samedi 7 juillet 2012

Veille technologique semaine 27

Pour le bulletin de cette semaine, je vous propose les sujets suivants :
  • Le fondateur du framework Spring quitte la société qu'il a créée et part vers de nouvelle aventure.
  • Arret du minitel : imaginer FaceBook sur le minitel.
  • Sortie de la version 2 du langage Groovy : typage statique, compilation statique, modularité et performances.
  • Les développeurs seniors : la pénurie dans les équipes. A qui la faute ?
  • Une comparaison détaillées des expressions lambda du JDK 8 et Scala.
  • Un résumé de la spécification Java Enterprise Edition 7 : prévue pour début 2013. Le cloud, le cloud et le cloud.
  • L'état du langage Java d'après Oracle.
  • Le langage Xtend propose d'étendre le langage Java.
  • JavaFX : les ombrages dynamiques. Exemple de code

Bonne lecture.


Spring Founder Moves On To New Adventures
Yesterday, Rod Johnson, the founder of Spring, announced that he is to leave
VMWare to pursue some new interests. In 2001, Rod changed the way we look at enterprise software when he published Expert One-on-One J2EE Design and Development.
And he followed through with those ideas in 2002 when he founded Spring,
bringing a credible alternative to the enterpise solutions available at the time.



Minitel, France's precursor to the Web, to go dark on June 30
Minitels like this one are set to go dark at the end of this week.

Facebook as re-imagined on Minitel :


Groovy 2.0 est là !
La nouvelle mouture du langage Groovy‬, la 2.0, est enfin livrée dans sa version définitive au public (comme par hasard, le jour de l'anniversaire de son project leader : Guillaume Laforge). Les améliorations les plus importantes sont :
  • le static type checking : apparition d'une annotation @TypeChecked pour avoir des erreurs de compilation (plutôt que de runtime) sur des choses comme des variables ou méthodes inexistantes, des assignements de types incorrect, etc.
  • la compilation statique : nouvelle annotation @CompileStatic pour obtenir de la compilation static et ainsi avoir un bytecode identique à celui produit par un javac sur un code Java, et aussi rapide à exécuter.
  • la modularisation : pour ne charger que ce dont vous avez besoin, le coeur de Groovy est deux fois plus léger, et 15 modules l'accompagnent : Console, JMX, Ant, Swing, etc.
  • de meilleures performances : notamment grâce au support de invokeDynamic pour les utilisateurs du JDK7, et beaucoup de travail a été fourni pour que les utilisateurs du JDK6 aussi y trouvent leur compte.
Pour plus de détails :
S'il en était encore besoin, la preuve de la vivacité de l'écosystème Groovy a été apportée ce mois-ci (mois de la GR8Conf) : les projets Groovy‬, Gaelyk, Griffon et Gradle‬ ont chacun livré une version majeure.
Pour les pratiquants, la mise à jour s'imposera d'elle même. Pour ceux qui n'ont pas encore testé,vraiment vous devriez!


What's new in Groovy 2.0? 
The newly released Groovy 2.0 brings key static features to the language with static type checking and static compilation, adopts JDK 7 related improvements with Project Coin syntax enhancements and the support of the new "invoke dynamic" JVM instruction, and becomes more modular than before. In
this article, we're going to look into those new features in more detail.


Pénurie de seniors dans les équipes de développement
Maître Yoda dans ton équipe, plus forte elle sera Après plusieurs années passées à développer, concevoir et architecturer des applications, les développeurs les plus expérimentés, dits seniors, sont souvent propulsés à des postes décisionnels et/ou organisationnels.
En France, ce phénomène est tel que l'écosystème des développeurs informatique manque cruellement de ces profils. Bien que les mentalités commencent à évoluer, la réalité sur les projets est toute autre. Les applications sont mises entre les mains de profils juniors ou confirmés possédant moins d'expérience que leurs aînés, notamment dans la gestion de la dette technique. Dans ce domaine, les seniors possèdent plus de recul, de savoir faire et il est nécessaire que ces derniers continuent d'accompagner les équipes de développement. Nous vous proposons d'analyser ce phénomène.
Juniors, Confirmés, Seniors, …


Java 8 vs Scala: a Feature Comparison
With the release of JDK 8 planned for 2013, Oracle has a pretty fixed idea of what will be included.
Speaking at QCon London earlier this year, Simon Ritter outlined the new features that will be part of JDK 8, which include modularity (Project Jigsaw), JRockit/Hotspot convergence, annotations on types, and Project Lambda.


The Java EE 7 Feature List: Cloud Focused Upgrades
When it arrives later this year, Java EE 7 will offer key new features related to cloud computing.
by Manoj Debnath Java EE 7, under the specification of JSR342, is expected to be released in mid-late 2012. Anticipation of the update's platform as a service (PaaS) capabilities is looming large among technological enthusiasts. With a promise of numerous key improvements, the focus will be on the suitability of Java EE for cloud environments. This article spotlights key things to look for in Java EE 7.
Spotlights in Java EE 7


Status of Java


Xtend Extends Java
Together with the release of Eclipse Juno, the Eclipse Foundation is proud to announce the release of Xtend,
a Java-compatible language with lambdas and yet full compatibility with the Java runtime. Xtend is built
upon Xtext, a suite of DSL libraries and plugins for generating editors.
Unlike Scala, Ceylon or Kotlin, Xtend doesn't need its own separate bytecode compiler. Instead, Xtend source
files are translated into Java source files, which are then compiled with the regular Java compiler. As a result,
Xtend can be used as a development time translation tool that generates Java for use in a standard Java
project, or it can be used as source models that are used to generate Java source files at compilation time.


JavaFX recipes "Dynamic shadows"
This is the first blogpost of a series about JavaFX related tips and tricks that I came across.
Today I would like to explain how to add a dynamic shadow to a node. So first of all let me tell you what I mean with dynamic shadow. If you take a dial with some kind of pointer it will definitely look better when the pointer has a drop shadow. As an example let me show you two radial gauges.

samedi 23 juin 2012

Veille technologique semaine 25

Pour le bulletin de cette semaine, je vous propose les sujets suivants :
  • Suite au procès, Oracle accepte 0$ de dédommagement de la part de Google et fait appel.
  • IBM installe le calculateur le plus puissant de la planète : 16,32 petaflops, ou 16 thousand trillion calculations per second, avec 98.304 calculateurs, 1,6 million de coeurs, et 1,6 petabytes de mémoire.
  • Des chercheurs ont mis au point une mémoire 100 fois plus rapide que la NAND flash actuelle : la ReRAM.
  • Microsoft annonce Surface, une tablette qui utilise Windows 8.
  • Le programme de la plus grande conférence de l'éco-système JavaOne 2012 est disponible en ligne.
  • Les premiers exemples de modularité de la plate-forme Java (pour le JDK 8) avec le projet Jigsaw : à votre services.
  • Les premières API du JDK 8 avec des entiers non signés.
  • La programmation asynchrone en C# avec DotNet 4.5.
Bonne lecture.


Oracle accepts $0 in damages from Google, moves toward appeal
Oracle has agreed to accept zero dollars worth of damages from Google, three weeks after losing the major portions of the case in which Oracle accused Google of violating Java patents and copyrights in Android.


With 16 petaflops and 1.6M cores, DOE supercomputer is world's fastest
In the latest Top 500 Supercomputer Sites list unveiled Monday morning, a newly assembled cluster built with IBM hardware at the Department of Energy's Lawrence Livermore National Laboratory (LLNL) takes the top prize. Its speed? A whopping 16.32 petaflops, or 16 thousand trillion calculations per second. With 96 racks, 98,304 compute nodes, 1.6 million cores, and 1.6 petabytes of memory across 4,500 square feet, the IBM Blue Gene/Q system installed at LLNL overtakes the 10-petaflop, 705,000-core "K computer" in Japan's RIKEN Advanced Institute for Computational Science.


ReRam : une puce mémoire 100 fois plus rapide
Des chercheurs britanniques pensent avoir mis au point une mémoire cent fois plus rapide que la NAND Flash. La RAM résistive, ou ReRAM, consiste en des puces composées d'oxyde de métal qui disposent d'une propriété résistive et changent d'état en fonction de la tension appliquée sur celles-ci. Cette valeur résistive induite est enregistrée même si la tension n'y est plus appliquée, par exemple dans le cas d'une mise hors tension du système.

La mémoire du futur ?


Une première application concrète de la ReRAM
Pour l'industrie électronique la ReRAM est une sorte de Saint Graal de la mémoire. En développement depuis très longtemps, 1971, elle permettrait un bond énorme, encore bien plus important que celui de l'arrivée des SSD. En résumé, la ReRAM a des performances similaires à la DRAM (mémoire vive) tout en ayant l'avantage de la FLASH, permettre de conserver les données sans avoir à être alimentée en permanence.
Dans le détail la ReRAM est composée d'unités élémentaires les memristors qui peuvent changer de résistance en fonction de la tension qui leur sont appliquée et ainsi stocker des 0 ou des 1. Contrairement à la FLASH NAND, ils n'y a pas besoin d'effacer les memristors avant de leur donner un nouvel état et on peut créer des blocks de 512 bits plutôt que quelques Ko.


Microsoft unveils Surface tablets, powered by Windows 8
The Earth-shattering Microsoft announcement we've been waiting for is finally here. As several pre-event rumors suggested, Microsoft is indeed building its own tablet.
Make that two tablets. One Windows RT tablet runs an NVIDIA Tegra 3 ARM processor and the other Windows 8 Pro tablet runs Intel's Ivy Bridge Core i5 chips. One thing that looks really cool are new magnetic covers that are quite reminiscent of Apple's "Smart Cover" for the iPad. But it's a lot smarter—Microsoft's cover actually includes a multitouch trackpad and a keyboard.
There are two, as we explain in this story: a Touch Cover with virtual keys and a Type Cover with a tactile keyboard and touchpad.


Programme de JavaOne
http://www.oracle.com/javaone/index.html
http://www.oracle.com/javaone/program/schedule/index.html


Modules in the Java Language and VM



Project Jigsaw
http://openjdk.java.net/projects/jigsaw/

Current javadoc
http://cr.openjdk.java.net/~mr/jigsaw/api/


Project Jigsaw: Modular services
Service interface: An interface or class 

Service interface module: A module which exports [a package containing] a service interface 

Service provider class: A non-abstract class which implements/extends a service interface 

Service provider module: A module which binds a service interface to a 
service provider class in the module via “provides service ... with ... 

Service consumer module: A module which denotes it's use of a service interface via “requires [optional] service ... 

Service (interface) instance: An object whose class is a service provider class. The vast majority of references to such an object are made through it's implemented service interface


Services are a simple but effective way to decouple interface and implementation.
The class java.util.ServiceLoader was introduced in Java SE 6 and formalized a pattern that many developers were already implementing prior to SE 6 (especially for JSR implementations).


Unsigned Integer Arithmetic API now in JDK 8
At long last, after due discussion and review, I've just pushed initial API support for unsigned integer arithmetic into JDK 8! The support is implemented via static methods, primarily on java.lang.Integer and java.lang.Long, that:
  • Provide bidirectional conversion between strings and unsigned integers
  • Compare values as unsigned
  • Compute unsigned divide and remainder

Parallel Programming with .NET
Async/Await FAQ
From time to time, I receive questions from developers which highlight either a need for more information about the new "async" and "await" keywords in C# and Visual Basic. I've been cataloguing these questions, and I thought I'd take this opportunity to share my answers to them.

Conceptual Overview
Where can I get a good overview of the async/await keywords?
Generally, you can find lots of resources (links to articles, videos, blogs, etc.) on the Visual Studio Async page at http://msdn.com/async. To call out just a few specific resources, the October 2011 issue of MSDN Magazine included a trio of articles that provided a good introduction to the topic. If you read them all, I recommend you read them in the following order:
1. Asynchronous Programming: Easier Asynchronous Programming with the New Visual Studio Async CTP
2. Asynchronous Programming: Pause and Play with Await
3. Asynchronous Programming: Understanding the Costs of Async and Await

The .NET team blog also includes a good overview of asynchrony in .NET 4.5: Async in 4.5: Worth the Await.

dimanche 17 juin 2012

Veille technologique semaine 24

Pour le bulletin de cette semaine, je vous propose les sujets suivants :
  • la disparition de la pellicule des films prévue pour 2013 ?
  • Steve Jobs proposait la disparition (du point de vue de l'utilisateur) du système de fichier, dès 2005. Le système de fichier n'est pas un concept grand public.
  • Microsoft et Google veulent améliorer le protocole http, qui commence à dater.
  • La sortie de la version 5 du framework OSGi.
  • Les cinq anti-patterns du management.
  • Un article sur les écarts de compréhension entre les informaticiens et les non informaticiens.
  • Les différences majeures des types C# et Java.
  • Les expressions lambda et JavaFX

Bonne lecture.


Celluloid no more: distribution of film to cease by 2013 in the US
A recent report from IHS Screen Digest, a company that analyzes trends in digital media, says that movie studios will cease producing 35 mm film prints for major markets by the end of 2013 (the US, France, the UK, Japan, and Australia are considered "major markets"). IHS predicts studios will stop producing film for the rest of the world by 2015.


Quand Steve Jobs annonçait la fin des systèmes de fichiers
À quelques jours de l'ouverture de la conférence des développeurs (WWDC), les rumeurs fleurissent sur la toile. À chaque nouvelle version d'un système, beaucoup rêvent d'un système de fichiers pour iOS et d'un tout nouveau Finder pour Mac OS X. Si ce dernier évolue lors de chaque mise à jour, il est loin de connaître la ou les révolutions attendues par certains.


Google and Microsoft Want to Improve HTTP
Google and Microsoft want to improve HTTP with SPDY and Speed+Mobility. This article reviews both proposals outlining what benefits they bring to the much used Internet protocol.
Along with W3C, the Internet Engineering Task Force (IETF) is coordinating efforts related to network routing, transport, and security, including the specification proposal for RFC 2616 on HTTP 1.1 elaborated in 1999 and signed by Roy Fielding and T. Berners-Lee among others. More than 12 years have passed since the last HTTP version was adopted, and some have drawn the attention that the highly used Internet protocol needs to be enhanced in order to face the needs of this time. A number of proposals have been submitted to IETF for HTTP 2.0, including Google SPDY and Microsoft HTTP Speed+Mobility. Both proposals mentioned are backward compatible with previous versions of the protocol, trying to built on existing infrastructure.


OSGi Release 5 Specifications add Repositories and Version Ranges
The OSGi Alliance have released the specifications for Release 5 of their namesake framework, standardising the OSGi Bundle Repository (known as OBR), using the generic capability requirements model, and introducing programmatic access to version ranges. The specifications can be downloaded, and will be implemented by the upcoming release of Equinox 3.8 available in June, as well as Apache Felix 4.0.


5 Common Antipatterns in Software Project Management
  • Overplanning/analysis/meetings
  • Project mismanagement
  • Wrong choices of staff motivation techniques
  • Wrong selection of metrics and evaluation methods
  • Documentation strategy mistakes

The Developer/Non-Developer Impedance Mismatch
Most software developers have probably heard of and even had experiences with the object-relational impedance mismatch (often addressed with ORM tools), the object-XML impedance mismatch (often addressed with OXM tools), and even the developer-DBA impedance mismatch. I don't believe that these impedance mismatches are as difficult as they are sometimes made out to be, but for those wishing to mitigate them, we have tools such as Java Persistence API implementations and JDO implementations for dealing with the object-relational mismatch (and some of the developer-DBA impedance mismatch) and
similarly have approaches such as JAXB, XMLBeans, JiBX and Apache Commons Digester for dealing with the object-XML mismatch (and .NET's LINQ deals with both ORM and OXM mismatches). At this point in my career, I believe the developer/non-developer impedance mismatch is perhaps the most frustrating impedance mismatch I have run into.


5 Differences Between C# and Java: Data Types
The line between desktop development and web-based applications has been all but obliterated in the last few years. With the advent of smartphones, especially Google's Java-based Android operating system, developers are scrambling to jump onto the newest technology, while fearing that the skills they have cultivated over the years may become obsolete.
Many former C++ and C# programmers are migrating their way to Java applications. While the languages are remarkably similar (as Java was built around the C and C++ structures in the 1990s), a few subtle differences can trip up even the most experienced developers.


Using Lambda Expressions of Java 8 in Java FX event handlers
Note: The Project Lambda (JSR-335) to be added in Java 8 is evolving and the sample here is how one can use Lambdas with the current Java8 build downloaded from here. I will try to update the sample if there are any changes in the API in future.
I thought it will be good to get a peak of how Lambda Expressions can be used with JavaFX or for that matter any Single Abstract Method (SAM) types. Lets build a sample with just one toggle button and change the text of the toggle as and when it is selected/un-selected.

samedi 9 juin 2012

Veille technologique semaine 23

Pour le bulletin de cette semaine, je vous propose les sujets suivants :

  • Oracle pert son procès contre Google
  • Les API ne peut pas être "Copyrightées".
  • La journée de IPV6 : avez vous vérifié votre connectivité IPV6 : http://test-ipv6.com/
  • Une lettre de Vauban à son ministre Louvois pour lui expliquer les problèmes qu'il a avec ses entrepreneurs.
  • Intel commence à faire des essais de gravure en 7 et 5 nm ! Il faut compter les atomes ?
  • La programmation fonctionnelle pour la JVM.
  • La modularité en Java : OSGi versus Jigsaw
  • L'utilisation de Hamcrest Core Matcher avec JUnit : l'expression des asserts.
Bonne lecture

Sérieux revers pour Oracle face à Google

Dans le procès qui l'oppose à Google sur la violation de brevets et la copie de fragments de code Java dans Android, Oracle a essuyé il y a quelques jours un nouveau revers, et non des moindres.


En effet, après avoir déjà tranché en faveur de Google il y a deux semaines sur la question des brevets, le juge en charge du dossier, Williams Alsup a également rendu un verdict favorable à Google sur la question de la violation du copyright des API de 37 packages Java reprises par Google dans Android. S'il a bien reconnu que la mise au point de ces API a nécessité un travail créatif, théoriquement couvert par le copyright, Williams Alsup a en effet jugé que les API représentent une "structure de commandes", et entrent donc dans le cadre d'une exception au copyright prévue par la loi pour permettre l'interopérabilité. Le juge indique ainsi que "tant que le code utilisé pour l'implémentation est différent, le Copyright Act permet à n'importe qui d'écrire librement du code pour effectuer exactement les mêmes traitements que n'importe quelle méthode utilisée dans l'API Java", précisant en plus que le nom et la signature des méthodes peuvent être repris.


Il est intéressant de noter que, une fois n'est pas coutume, le dossier est tombé entre les mains d'un juge maitrisant parfaitement le sujet, Williams Alsup ayant indiqué en pleine audience qu'il est lui même développeur, dans une tirade contre l'avocat d'Oracle, pour expliquer à ce dernier qu'une portion de code copiée par Google est particulièrement simpliste, et donc, que cette copie n'a pas pû permettre à Google de prendre un avantage en sortant Android plus rapidement. Baptisée rangeCheck, la fonction en question sert simplement de vérifier qu'un entier est compris entre deux bornes, ce qui est à la portée de n'importe quel étudiant selon le juge, même si l'avocat d'Oracle prétend qu'il ne serait pas capable de le faire lui même en six mois...


Ces quelques lignes de codes sont d'ailleurs le dernier point en suspens dans ce dossier. Mais compte tenu des déclarations du juge sur le sujet, qui a qualifié cette question de "cas de copiage innocent et sans importance" (9 lignes dans une classe en contenant près de 3200), il serait surprenant que la décision finale soit très favorable à Oracle. Au maximum, Oracle pourrait espérer des dommages et intérêt à hauteur de 150 000 dollars, une goutte d'eau par rapport aux plusieurs milliards de dollars initialement exigés par Oracle, qui a déjà revu ses prétentions à la baisse plusieurs fois.


Bien entendu, il reste à Oracle la possibilité de faire appel, ce que l'éditeur a d'ores et déjà annoncé qu'il fera... en espérant probablement tomber sur un juge dominant un peu moins le sujet...

APIs Cannot be Copyrighted
In a decisive legal ruling yesterday, the judge in the Oracle vs Google case declared that APIs are not copyrightable, and Oracle cannot claim anything for the SSO – structure, sequence and organisation of those methods, classes and packages. From the summary judgement:

World IPv6 Launch gets 27 percent of pageviews on IPv6
Today, 3,000 websites have made themselves reachable over IPv6 in order to participate in World IPv6 Launch. (Some have enabled IPv6 prior to today.) The 3,000 includes the top four in the Alexa Web ranking: Google, Facebook, YouTube, and Yahoo. Other notable converters include Bing, AOL, Netflix, Comcast, AT&T, Microsoft, NASA, Sprint, the US Geological
Survey, Sony Japan, and Porsche.
Last year, many websites also enabled IPv6, but turned the new version of the Internet Protocol off again after 24 hours. After that test flight, the Internet Society and other organizers now deem IPv6 permanently ready for prime time: "the future is forever."

L'autorité reconnue de Vauban : lettre à Louvois
Il y a quelques queues d'ouvrage des années dernières qui ne sont point finies et qui ne finiront point, et tout cela, Monseigneur, par la confusion que causent les fréquents Rabais qui se font dans vos ouvrages, car il est certain que toutes ces ruptures de marché, manquements de parole et renouvellement d'adjudications ne servent qu'à vous attirer comme Entrepreneurs tous les misérables qui ne savent où donner de la tête : les fripons et les ignorants, et à faire fuir tous ceux qui ont de quoi et qui sont capables de conduire une Entreprise.

Intel commence à travailler aux gravures en 7 et 5 nm
Aujourd'hui Intel est la seule société au monde à pouvoir produire en masse des puces gravées en 22 nm alors que ses concurrents les plus proches peinent à fabriquer en masse en 28 nm et se contentent le plus souvent d'une gravure en 32 nm.

Functional Programming on the JVM
In recent times, many programming languages that run on JVM have emerged. Many of these languages support the concept of writing code in a functional style. Programmers have started realizing the benefits of functional programming and are beginning to rediscover the powerful style of this programming paradigm. The emergence of multiple languages on JVM have only helped to reignite the strong interest in this paradigm.

OSGi vs. Jigsaw: Kirk Knoernschild on Modularity
Kirk Knoernschild is one of the leading experts when it comes to the OSGi community. DZone recently had a chance ot interview him about his thoughts on modularity in 2012 and his new book is "Java Application Architecture: Modularity Patterns with Examples Using OSGi." The book introduces 18 patterns that will help you design more modular software.

JUnit's Built-in Hamcrest Core Matcher Support
In the post Improving On assertEquals with JUnit and Hamcrest, I briefly discussed Hamcrest "core" matchers being "baked in" with modern versions of JUnit. In that post, I focused particularly on use of JUnit's assertThat(T, Matcher) static method coupled with the Hamcrest core is() matcher that is automatically included in later versions of JUnit. In this post, I look at additional Hamcrest "core" matchers that are bundled with recent versions of JUnit.

samedi 12 mai 2012

Veille technologique semaine 19

Pour le bulletin de la semaine 19, je vous propose les sujets suivants :
  • après la première semaine de procès Oracle contre Google, le jury a retenu, pour l'instant, 9 lignes de code avec copyright.
  • Un article au sujet du remplacement de la mémoire actuelle DDR3 par la DDR4 remplacée elle-même plus tard par l'Hybrid Memory Cube.
  • La machine virtuelle IKVM.NET est capable d'exécuter du byte code DotNet (écrit en C# par exemple) mais également du byte code JVM (écrit en Java par exemple). Il est donc possible de faire interopérer des objects Java avec des objets C#. Il est d'utiliser les méta-données C# (les custom attributes) en Java et inversement d'utiliser les méta-données Java (les annotations) en C#.
  • Un outil de compilation statique traduit le code Ruby en binaire pour iOS. Cet outil est basé sur MacRuby.
  • Les règles de conception objet proposent d'utiliser l'agrégation plutôt de l'héritage. Le problème est que l'agrégation demande de la délégation. Le langage Groovy (ainsi que Ceylon, etc..) propose nativement de la délégation : @Delegate. Explications.
  • Sortie de la première version de l'implémentation de la modularisation du JDK 8 : le projet jigsaw. Le concept de module est connu du compilateur, de l'installeur et du runtime. Ce sont des concepts de haut niveau qui sont intégrés au langage Java. Avec les expressions lambdas, c'est l'évolution la plus importante du JDK 8. Oracle confirme d'ailleurs que le JDK 8 (2013) sera la plus grande évolution de Java depuis le JDK 5 (2005).
Bonne lecture.


Jury Finds Only 9 Lines of Copyrighted Code in Oracle vs Google Case
The Google versus Oracle trial completed the copyright phase last week, with the jury sent out to debate on the merits of the copyright infringement claims of Google's use of Apache Harmony's source code. By the end of last week, the jury had already decided unanimously on three out of the four questions but took the
weekend to decide on the fourth.

Judge Alsup created a Special Verdict Form, asking:
  1. Has Oracle proven that Google has infringed the overall structure, sequence and organisation of copyrighted works?
  2. Has the documentation of the 37 Java API packages as a group been proven as infringed?
  3. Has Oracle proven that Google's use of code is infringing in (A) the rangeCheck in the TimSort class,
(B) the seven Impl files and ACL file or (C) the comments in CodeSourceTest and CollectionCertStoreParametersTest?


Microsoft rejoint l'initiative Hybrid Memory Cube
A court terme, d'ici 2014 pour les serveurs et 2015 pour les ordinateurs grand public, l'avenir de la mémoire vive passera par l'adoption de la DDR4. Cette mémoire augmentera encore de manière significative la bande passante dont les besoins augmentent aussi vite que les coeurs se multiplient. Au delà, certainement pour la fin de la décennie on passera à un système radicalement différent, l'Hybrid Memory Cube.


Running Java on NET/Mono: Jeroens Frijters Discusses IKVM.NET
IKVM.NET (IKVM) is a JVM for the .NET and Mono platforms which allows users to execute Java applications directly. Microsoft's Erik Meijer recently sat down with IKVM creator Jeroen Frijters to discuss several different aspects of the project. The interview is wide-ranging, from discussing the internals of IKVM to the project's goals for the future. Here are some highlights:

.NET developers can use custom attributes in Java code if this code will be run on IKVM. Both platforms (Java and .NET) can use attributes both ways if the code is run on IKVM. So one can use .NET custom attributes in Java code and one can also use Java annotations on C# classes and members.


A Statically Compiled Ruby for iOS
A statically compiled variant of Ruby is now available for building applications that target iOS devices. Known as RubyMotion, this language and tool chain from HipByte fully conforms to Apple's App Store guidelines. In order to do this they had to eliminate any sort of JIT-compiler or interpretation, which some Ruby developers may find limiting.


Practically Groovy: The @Delegate annotation
Exploring the frontiers of duck typing in a statically typed language
In Groovy 1.6, a @Delegate annotation was added to the language. (See Resources for a list of all of the new annotations added to Groovy 1.6.) This annotation allows you to add one or more delegates to any of your classes — not just ExpandoMetaClass.
To gain a full appreciation of the @Delegate annotation's power, consider a common but difficult proposition in Java programming: creating a new class based on a final class. The composite pattern and final classes


Modules in the Java Language and VM
Language changes
1.1. Example
1.2. Rules
1.3. Grammar
1.3.1. Lexical grammar
1.3.2. Syntactic grammar
1.1. Example

module a.b @ 1.0 {

   requires c.d @ /* Use v2 or above */ >= 2.0 ;
   requires service e.f;
   provides g.h @ 4.0;
   provides service i.j with k.l;
   exports m.n;
   permits o.p;
   class cc.dd;

   view a.b.c {
      provides q.r @ 1.0;
      provides service s.t with u.v;
      exports w.x;
      permits y.z;
      class aa.bb;
   }
}


Jigsaw Quick Start
This document gives a quick demonstration on how to create a jigsaw module, create a module library, and install a module in a module library.

mardi 8 mai 2012

Veille technologique semaine 18

Pour le bulletin de la semaine 18, je vous propose les sujets suivants :
  • la première semaine du procès d'Oracle contre Google au sujet d'Android. Oracle demande 1 milliards de dollars à Google.
  • Android porté sur C# : une solution alternative ?
  • Le JDK 7 update 4 passe en version de Java par défaut sur le site www.java.com
  • Quelle est la valeur ajouté d'une bonne architecture logcielle ?
  • Les values types pour la JVM ? C'est quoi ? C'est déjà présent dans C# dès la version 1.
Bonne lecture.

Google vs Oracle : un feuilleton judiciaire émaillé d'indiscrétions
Le 16 avril 2012 s'est ouvert le procès entre Oracle et Google devant la cour fédérale de Californie. Oracle, spécialiste de la gestion de bases de données, accuse Google de violation de propriété intellectuelle. C'est plus particulièrement Android qui est visé. Oracle affirme que la firme de Mountain View utilise du code Java sans sa permission. Le géant du logiciel a racheté Sun en 2010, inventeur de Java et détenteur de brevets sur ce langage... dont Google s'est servi pour construire Android.


Android Ported to C#
Oracle and Google are currently in a $1 billion wrestling match over Google's use of Java in Android. But Java is not the only way to build native apps on Android. In fact, it's not even the best way: we have been offering C# to Android developers as a high-performance, low-battery consuming alternative to Java. Our platform, Mono, is an open source implementation of the .NET framework that allows developers to write their code using C# while running on top of the Javapowered operating system, and then share that same code with iOS and Windows Phone.


XobotOS: Android Build on C# Instead of Java
Miguel de Icaza, Mono's founder, recently announced the creation of the XobotOS research project. XobotOS is the Android operating system with all Java code removed and C# code put in its place. Miguel offers two compelling reasons behind this research project:

Unlike Sun with Java, Microsoft submitted C# and the .NET VM for standardization to ECMA and saw those standards graduated all the way to ISO strong patent commitments. The .NET framework is also covered by Microsoft's legally binding community promise.


Moving to Java 7 as default
Back in February, I wrote a post on this blog stating that the End Of Life (EOL) of public support and public releases for JDK 6 was extended to November 2012, With the release of Java SE 7 Update 4, the Java SE 7 runtime is now available on java.com as the default JRE.


Java 7 update 4

New Supported Garbage Collector: Garbage First (G1)
Starting in Java SE 7u4 the Garbage First Collector is fully supported. The G1 collector is targeted for applications that fully utilize the large amount of memory available in today's multiprocessor servers, while still keeping garbage collection latencies under control. Applications that require a large heap, have a big active data set, have bursty or non-uniform workloads or suffer from long Garbage Collection induced latencies should benefit from switching to G1. For more detailed information about G1 see the G1 documentation page and command line options.
The G1 garbage collector – though not a real-time garbage collector – provides a much faster throughput of allocation/collection, which significantly limits the amount of full GC pauses that are often seen with prior garbage collectors. A presentation on G1 was available in JavaOne 2008, and is based on the ACM paper A generational mostly-concurrent garbage collector. To enable the G1 garbage collector in Java7u4, the same +XX:+UseG1GC is used as detailed on the VM command line options page, and more information is available via the garbage first collector description page.


Java 7u4 Brings Support for OSX
Last week's update of Java 7u4 brought about a number of minor changes to the runtime, including for the first time a release of JDK and JavaFX SDK for Mac OSX.

Prior to this release, Java releases for OSX have come through Apple who in recent years backed away from Java as a runtime platform. With the release of OpenJDK, instead of vendors providing their own variants and customisations on top of the platform, the goal is to have everyone converge on OpenJDK as the reference implementation. One advantage of this is that by moving the support upstream, security fixes will be made available for all platforms at the same time, instead of on a platform-by-platform basis. (Apple was particularly bad at releasing timely updates for its Java runtime; the recent spate of Flashback trojans and viruses were made possible through a Java security hole in Apple's original implementation which had been fixed for a while in OpenJDK.) It is worth noting that it is a 64-bit only build on Lion or later.


Is it worth the effort to design software well?
Design activities certainly do take up time and effort, but they payoff because they make it easier to evolve the software into the future. You can save short-term time by neglecting design, but this accumulates TechnicalDebt which will slow your productivity later.
The problem with no-design, is that by not putting effort into the design, the code base deteriorates and becomes harder to modify, which lowers the productivity, which is the gradient of the line. Good design keeps its productivity more constant so at some point (the design payoff line) it overtakes the cumulative functionality of the no-design project and will continue to do better. We CannotMeasureProductivity nor can we measure design quality.


value types in the vm
Introduction
A value type is a data type which, generally speaking, is designed for being passed by value in and out of methods, and stored by value in data structures. The only value types which the Java language directly supports are the eight primitive types. Java indirectly and approximately supports value types, if they are implemented in terms of classes. For example, both Integer and String may be viewed as value types, especially if their usage is restricted to avoid operations appropriate to Object. In this note, we propose a definition of value types in terms of a design pattern for Java classes, accompanied by a set of usage restrictions. We also sketch the relation of such value types to tuple types (which are a
JVM-level notion), and point out JVM optimizations that can apply to value types.
This note is a thought experiment to extend the JVM's performance model in support of value types. The demonstration has two phases. Initially the extension can simply use design patterns, within the current bytecode architecture, and in today's Java language. But if the performance model is to be realized in practice, it will probably require new JVM bytecode features, changes to the Java language, or both. We will look at a few possibilities for these new features.


Value Types (C# Reference)
Variables that are based on value types directly contain values. Assigning one value type variable to another copies the contained value. This differs from the assignment of reference type variables, which copies a reference to the object but not the object itself.
All value types are derived implicitly from the System.ValueType.
Unlike with reference types, you cannot derive a new type from a value type. However, like reference types, structs can implement interfaces.
Unlike reference types, a value type cannot contain the null value. However, the nullable types feature does allow for values types to be assigned to null. Each value type has an implicit default constructor that initializes the default value of that type. For information about default values of value types, see Default Values Table.