vendredi 30 mars 2012

Veille technologique semaine 13

Pour le bulletin de la semaine 13, je vous propose les articles suivants :
  • un article de saison.
  • La relation entre les oeuvres (cinéma, musique) et le support : Quand les supports influaient sur les oeuvres.
  • La norme OSGi version 5 est annoncé en draft.
  • Le deuxième article sur le threading en C++11 : la protection des données.
  • Le garbage collector et la gestion automatique des resources avec le JDK 7.
  • Les NIO du JDK 7 : la scalabilité
  • La préparation du JDK 8 : les expressions lambda (les closures) et les modules.
  • Un article sur les myths du langage Scala.
  • Les différents cas d'usage de JUnit : le framework de tests unitaires pour Java.
Bonne lecture.


Goto for the Java Programming Language
Work on JDK 8 is well-underway, but we thought this late-breaking JEP for another language change for the platform couldn't wait another day before being published.

Summary
Provide the benefits of the time-testing goto control structure to Java programs. The Java language has a Goto for the Java history of adding new control structures over time, the assert statement in 1.4, the enhanced for-loop in 1.5,and try-with-resources in 7. Having support for goto is long-overdue and simple to implement since the JVM already has goto instructions.


Quand les supports influaient sur les oeuvres
L'avènement de la dématérialisation des médias a eu des conséquences plus discrètes en apparence que dans leur utilisation et leur distribution : la création même en a été bouleversée. En effet, le support physique a été une contrainte en tant que telle, qui devait être prise en compte dans le processus créatif, et qui a eu une influence sur la forme. Certaines contraintes sont évidentes, par exemple pour la musique : la durée totale d'un album n'a désormais virtuellement plus de limites imposées. D'autres sont plus subtiles pour le consommateur, mais pas moins sans conséquence pour les créateurs.


OSGi Provides Early Access Specifications for Release 5
Today at OSGi DevCon, the OSGi Alliance announced the availability of the early access for Release 5 of OSGi Core and Enterprise specifications. The final release of OSGi R5 is expected later this Summer.
What's new in OSGi R5?


C++11 Concurrency Tutorial – Part 2 : Protect shared data
This post is the second of the C++11 Concurrency Series. See the end of the posts for links to the others. In the previous article, we saw how to start threads to execute some code in parallel. All the code executed in the threads were independent. In the general case, you often use shared objects between the threads. And when you do it, you will face another problem: synchronization.
We will see what is this problem in a simple code.



Garbage Collection with Automatic Resource Management in Java 7
This post provides a brief overview of a new feature introduced in Java 7 called Automatic Resource Management or ARM. The post delves how ARM tries to reduce the code that a developer has to write to efficiently free the JVM heap of allocated resources.
One of the sweetest spots of programming in the Java programming language is automatic handling of object de-allocation. In Java world this is more popularly known as garbage collection; it basically means that developers do not have to worry about de-allocating the object allocated by their code. As soon as a
developer is finished with using the object he can nullify all references to the object and then the object becomes eligible for garbage collection.


JDK7: Part 1- The power of java 7 NIO.2 (JSR 203) (important concepts)
This is a 2 parts series of article, focuses on JSR 203 java 7 NIO.2 API.
1. Part 1 will introduce the main concepts involved in the new JSR.
2. Part 2 will covers the important aspects involved in developing NIO.2-based applications by examples and case studies for the concepts introduced in part 1, this will spice up your Java 7 applications with the new I/O capabilities. You will learn to develop NIO.2 applications, beginning with simple but essential stuff and gradually moving on to complex features such as sockets and asynchronous channels. In this article part 1 I will introduce the new and powerful IO API, packaged & delivered in Java SE 7 NIO.2. Also I will cover all the important aspects involved in developing NIO.2-based applications in brief.


What's Cooking in Java 8 - Project Jigsaw
What is Project Jigsaw: Project Jigsaw is the project to make the java compiler module aware. For years java API has been monolithic, i.e. the whole API was seen from any part of the code equally. There has also not been any way to declare a code's dependency on any other user libraries. Project Jigsaw attempts to solve these problems along with others in a very eligant way. In this article, I will highlight the basic concepts of Jigsaw module systems and also explain how it would work with the commands so as to provide a real feel of it. Currently, Jigsaw is targetted to be included in the release of Java 8. In my opinion, this is a change bigger than generics that came with verion 5 of java platform.


What's Cooking in Java 8 - Project Lambda
What is project lambda: Project lambda is the project to enable lambda expressions in java language syntax. Lambda expressions are major syntax in functional programming languages like lisp. Groovy would be the closest relative of java that has support for lambda expressions, also known as closures.
So what is a lambda expression? It is a block of code that can be assigned to a variable or passed as an argument to a method or passed as an argument to another lambda expression just like any other data. The code can also be invoked whenever required. The main motivation behind supporting this in java is to remove a lot of boiler plate code in using certain API that require some code from the API user, but end up using inner classes just because of java's syntax
requirements. The most common such API is the java threading API where we need to be able to tell the API which code to execute in a new thread, but end up implementing Runnable.


Scala or Java? Exploring myths and facts
The popularization of the Scala programming language, noticeable by the abundance of opinions and criticism on blogs and social networks (like this one by Nikita Ivanov from GridGain and the popular Yammer case), greatly increased the amount of information about the language. However, the quality of such information often leaves much to be desired.


Test: JUnit 4 Do's and Don'ts
DEFINITION:
A unit test examines the behavior of a distinct unit of work. Within a Java application, the "distinct unit of work" is often (but not always) a single method. By contrast, integration tests and acceptance tests examine how various components interact. A unit of work is a task that isn't directly dependent on the completion of any other task. A JUnit 4 test case class skeleton:

vendredi 23 mars 2012

Veille technologique semaine 12

Pour le bulletin de cette semaine, je vous propose les sujets suivants :
  • Siemens étudie les architectures logicielles pour les voitures électriques : avez vous la dernière version du plugin "trafic routier" ?
  • Le club Java de Paris a invité Rémi Forax pour une présentation sur les expressions Lambda en Java pour le JDK 8. Très intéressant.
  • Oracle parle déjà du JDK 9 et du JDK 10 : respectivement pour 2015 et 2017.
  • Un premier article sur les threads (enfin) normalisé en C++ version 2011.
  • Un démonstration de VMWare qui utilise un navigateur HTML 5 pour afficher (à distance) un écran d'une machine virtuelle ! WSX: Virtual Machines in Your Browser. Cela montre le potentiel du HTML 5 mais confirme également une convergence vers cette plateforme HTML 5.
  • Une proposition d'ajouter les "values type" dans la machine virtuelle Java : la manipulation d'objet par valeur. C'est l'équivalent des structures de C# qui permet d'avoir les primitifs, sous-classe d'Object, sans pénalité de performance de gestion de mémoire de ces objets. A suivre.
  • Deux articles au sujet du langage Groovy pour les programmeurs Java. Groovy est un langage normalisée pour la plateforme Java qui est très adapté à construire des DSL (Domain Specific Langage). Un exemple avec un Hello World.
Bonne lecture.


Software Architecture for the eCar of the Future
In a recent news release the Siemens AG addressed how important new information and communications technology will be in future electric cars. A German government funded project investigates in appropriate software architecture for such cars.
Currently, a lot of software is already deployed in cars such as functionality for the emergency braking system, proximity-controlled cruise control, or actice parking aids. However, all the´se features are making the introduction of new features increasingly labor-intensive and expensive. For instance, some components need to be connected with various data transmission systems. Thus, it is almost impossible to add new functions that were not planned before the manufacturing system starts. According to the Siemens researchers, electromobility offers the opportunity to rework the ICT architecture and to quickly integrate new functions.
The central research division of the company is participating in a project funded by the German Government called RACE (Robust and Reliant Automotive Computing Environment for Future eCars). Goal of the project is :


Rémi Forax au Paris JUG
Mardi 13 mars 2012, Rémi Forax est venu au Paris JUG (Java User Group). Au coeur des expressions Lambda en Java La présentation de ce soir porte sur les expressions Lambda. Un sujet passionnant, une fonctionnalité que C# a déjà depuis quelques temps, mais que Java n'a pas encore.


Java News Flash! Oracle Lays Out Java 9, 10 Roadmap
Java 9 and 10 will tackle big data, multi-language interoperability, cloud and mobile and ship in 2015 and 2017 respectively, Oracle said Wednesday.
For the Java Development Kit (JDK) 10 or after, a fundamental change is being discussed: making the Java language Object Oriented. This might see the introduction of a unified type system that turns everything into objects and means no more primitives.


C++11 Concurrency – Part 1 : Start Threads
This post is the first of a series of posts about the new thread library of C++11. C++11 introduced a new thread library. This library includes utilities for starting and managing threads. It also contains utilities for synchronization like mutexes and other locks, atomic variables and other utilities. In this serie of posts, I will try to explain most of the features provided by this new library. To compile the samples of this article, you will need a compiler with C++11 support. In my case, I used GCC 4.6.1 (you need to pass the -c++0x or -c++11 option to get the C++11 support activated).



HTML5 roundup: access a virtualized desktop from your browser with VMware

VMware is developing an impressive new feature called WSX that will allow users to access virtualized desktops remotely through any modern Web browser. VMware developer Christian Hammond, who worked on the implementation, demonstrated a prototype this week in a blog post.


WSX: Virtual Machines in Your Browser
Virtual Machines have always been a great way to work with different operating systems, carry your desktop around with you, and manage lots of servers or configurations. In the past, you'd run the virtual machine on your computer and then use a product like VMware Workstation or Player to interact with them.
In Workstation 8, we introduced the ability to share VMs across a network with other copies of Workstation, and to use VMs running on ESXi/vSphere. You could use any computer in your network to reach any other VM and to manage your servers. I covered this in a previous post, and as I said there, we were very proud of this release.


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.


A quick introduction to the Groovy language (part 1)
Before I start talking about using Groovy's capabilities to create a DSL (mostly in Java), let's take a few minutes to go over what Groovy is.
Groovy is a general purpose scripting language which runs on the JVM, and can largely be viewed as a superset of Java. Take the following program:


A quick introduction to the Groovy language (part 2)
In my previous post, I started with a simple Java program (which also worked in Groovy), and slowly stripped out the cruft until I was left with the following Groovy script:

vendredi 16 mars 2012

Veille technologique semaine 11

Pour le bulletin de cette semaine, je vous propose les sujets suivants :
  • L'encyclopédie Britannica abandonne la version papier et se concentre sur le version électronique.
  • Un article au sujet du rôle de l'architecture logiciel dans l'industrie du logiciel : elle est très souvent négligée ou dénaturé.
  • Un article au sujet du standard JEE versus le framework Spring.
  • La spécification de JEE7 pour la fin 2012 : le cloud et HTML5 (+JCache).
  • Un résumé des fonctionnalités du framework Akka en version 2, puis une interview de Jonas Bonér au sujet de ce framework Akka : performance et tolérence aux pannes en Scala ou Java dans la même JVM.
  • Une comparaison des deux standards de persistance en Java : JPA (Java Persistance API) et JDO (Java Data Object).
  • Les dix commandements relatif à la gestion de configuration.
  • Instanciation d'un object en Java : savez vous répondre à la question avant de regarder le résultat : quel est le texte affiché ?
Bonne lecture.



L'Encyclopædia Britannica abandonne le papier
L'Encyclopædia Britannica, le pendant anglophone de l'Encyclopædia Universalis, a annoncé qu'elle mettait fin à son édition papier. Son ultime édition, datant de 2010, comprend 32 volumes et coûte 1840 €. C'est un tournant symbolique pour le monde des encyclopédies : l'illustre ouvrage était paru depuis 244 ans, c'était la plus vieille encyclopédie en langue anglaise toujours publiée.


The frustrated architect
Software architecture has a bad reputation

The thought of "software architecture" conjures up visions of ivory tower architects doing big design up front and handing over huge UML models or 200 page Microsoft Word documents to an unsuspecting development team as if they were the second leg of a relay race. And that's assuming the architect actually gets involved in designing software of course. Many people seem to think that creating a Microsoft PowerPoint presentation with a slide containing a big box labelled "Enterprise Service Bus" *is* software design. Oh, and we mustn't forget the obligatory narrative about "ROI" and "TCO" that will undoubtedly accompany the presentation.


Java EE wins over Spring
The past 1-2 years since the release of Java EE 6, you've seen a lot of articles like this latest on TSS that talk about the niceities of Java EE 6!s component model over Spring and how Spring is now legacy. Yup legacy. Who would have thought it? (other than me of course ) I remember internal JBoss emails 4-5 years ago arguing whether we should give up on promoting Java EE as a component model (aka on EJB) and just concede to Spring. Now, 4-5 years later, Java EE 6 has answered the challenge and is a viable, rich, integration technology. So what happened?


JEE7: Looking ahead to a new era
With the release of Java EE 7 scheduled for the second half of 2012, projected JSRs are all up and running. The Java EE 7 release, which will reflect the evolving needs of the industry as it moves into the cloud, is date driven: anything not ready will be deferred to Java EE 8.
Here is an update and summary of the key features of different specifications in the Java EE 7 platform.


Sortie de Akka 2.0
Le framework Akka vient tout juste de sortir en version 2.0. Cette version majeure est issue d'une importante ré-écriture du framework notamment connu pour son implémentation du modèle des acteurs.
Le modèle des acteurs et Akka plus spécifiquement permettent de développer de façon simple et efficace des applications concurrentes, distribuées et hautement disponibles. Il utilise pour cela un modèle de développement orienté message permettant des traitements asynchrones et non bloquants.
Cette nouvelle version apporte un lot important de changements :
  • supervision : tout acteur est maintenant supervisé par un autre acteur qui peut prendre des mesures en cas de problème et gére le cycle de vie des acteurs supervisés (démarrage, arrêt, redémarrage d'un ou plusieurs acteurs en cas d'erreur…). Il existe maintenant un ActorSystem à partir duquel d'autres acteurs pourront être créés,
  • configuration modulaire : il est maintenant possible de configurer beaucoup plus finement les acteurs,
  • adresse des acteurs : cette nouvelle version introduit un système permettant de retrouver nos acteurs en leur affectant un chemin d'accès,
  • localisation transparente : la localisation d'un acteur (local ou remote) se fait maintenant par configuration et est donc transparente au niveau de l'implémentation. On accèdera à un acteur de la même manière qu'il soit en local ou à distance sur un autre noeud du cluster,
  • amélioration et nettoyage de l'API : notamment une réécriture complète des TypedActors,
  • bus d'évènement : ajoute la possibilité d'avoir un système publisher/subscriber permettant par exemple de monitorer l'arrêt d'un acteur,
  • redesign de l'API Future : cette API permettant d'invoquer et de traiter les résultats de processus asynchrones (des acteurs par exemple) à été développée conjointement avec l'équipe de développement de Scala puisqu'elle sera intégrée de base dans la future version Scala 2.10,
  • amélioration notable des performances : la taille des acteurs à été divisée par 2 entre les versions 1.x et 2.0 passant à 300 octets par acteur (sans état). Quelques benchmarks ont aussi été réalisés montrant des performances impressionnantes (20 millions de messages/seconde sur une machine 48 coeurs), notamment grâce à l'utilisation des Fork/Join executors.
Les évolutions futures de Akka 2 tournent autour de la mise en cluster des applications développées avec ce framework. Sont notamment au programme :
  • détection de la disparition d'un noeud,
  • réplication des acteurs (stateless dans un premier temps puis stateful),
  • cluster élastique (répartition de charge, migration automatique des acteurs en cas de crash d'un noeud…).

Java Champion Jonas Bonér Explains the Akka Platform
Jonas Bonér is a husband, dad, programmer, teacher, speaker, author and Java Champion. He is the CTO of Typesafe,which was founded in 2011 by the creators of the Scala programming language and Akka middleware, and is an active contributor to the Open Source community. Most notably, he created the Akka Project, the AspectWerkz Aspect-Oriented Programming (AOP) framework, is a committer to the Terracotta JVM clustering technology, and been part of the Eclipse AspectJ team. Akka middleware was a finalist for the JAX Innovation "Most Innovative Java Technology Award" for 2011.

You have argued that writing correct concurrent, fault-tolerant, scalable applications is too difficult, because developers frequently use the wrong tools and the wrong level of abstraction. Could you give us examples of situations in which this applies?


Which Persistence Specification : JPA ou JDO ?
There are several competing persistence technologies available for Java. Two of these are "standardised" (via the JCP). When developing yourapplication you need to choose the most appropriate technology for your needs. Java Data Objects (JDO) has been a standard since 2001 with therelease of JDO1. It was improved with the release of JDO2. Just to confuse issues the Java Persistence API (JPA) was approved in its JPA1 form, and JDO2.1/JDO2.2 provide updates to JDO2 building on some of the new features of JPA1. Since then we have had JDO3 adding on extra metadata and enhancer standardisation, and JPA2 providing criteria queries. Below we show some of the differences of these 2 standards to give you assistance in selecting what you need. Highlighted in bold are the notable differences where one specification provides something not available in the other.


The 10 commandments of good source control management
Ah source control, if there's a more essential tool which indiscriminately spans programming languages without favour, I'm yet to see it. It's an essential component of how so many of us work; the lifeblood of many development teams, if you like. So why do we often get it so wrong? Why are some of the really core, fundamentals of version control systems often so poorly understood?


Comment est construite une instance ?
La construction d'une instance Java s'effectue en plusieurs étapes qu'il est intéressant de connaître. Cela peut avoir des effets de bords non maîtrisés. Je vous propose un petit exercice pour que vous puissiez vérifier si vous connaissez la construction en Java. Il faut deviner, sans l'exécuter, le mot de passe affiché par ce programme.

vendredi 9 mars 2012

Veille technologique semaine 10

Pour le bulletin de cette semaine, je vous propose les sujets suivants :
  • la fin du minitel : le 30 juin 2012.
  • Une interview de Stroustrup au sujet de la norme C++ de 2011
  • Un article au sujet de l'importance de la mesure des résultats pour action de modification du processus de développement : le feedback des méthodes agiles. Il faut une boucle courte avec possibilité de modifier les entrées du développement logiciels. Il la modification n'est pas possible, il n'y a pas de possibilité d'amélioration, donc pas de feedback. C'est le même principe que celui des asservissement : correction de la commande après mesure de la sortie pour maintenir l'objectif.
  • Un premier article au sujet de la conception logiciel : conception = faire apparaître les concepts. C'est un exercice d'abstraction.
  • Les derniers chiffres sur la popularité des langages de programmation, d'après l'index de Tiobe.com.
  • Un exemple  de la mise en oeuvre de la technologie OSGi avec le concept de services.
  • Pourquoi le return d'une méthode Java n'est pas pris en compte lors de la surcharge (overload) ?
Bonne lecture.


Orange envoie un dernier rappel avant la fin du Minitel
Le service Télétel sera fermé le 30 juin 2012, rendant inopérants les nombreux Minitel encore en service. Dans un courriel envoyé à ses clients, Orange rappelle cette échéance, marquée d'une étape : à partir de ce mercredi 7 mars 2012, les locataires d'un Minitel ne sont plus facturés. Les plus nostalgiques pourront d'ailleurs garder leur terminal, Orange prévoyant de n'appliquer aucune pénalité de non restitution.


Stroustrup reveals what's new in C++ 11
C++ 11 offers small upgrades to appeal to different areas of development


Au fait, faut que je te fasse un feedback …
La scène se passe dans le métro parisien.
- Tu prends la ligne 9 toi aussi ? Alors comment ça se passe sur ton projet en ce moment ?
- Ca avance … Tiens, faut que je te raconte, nous avons commencé de travailler avec des méthodes agiles !
- J'ai fait la même chose il y a un an et demi … Vous devez être en plein changement alors ! Où en êtes vous, toi et ton équipe, dans ces changements ?
- Nous sommes accompagnés par un consultant, il a commencé à nous parler de feedback, je n'ai pas bien compris où il voulait en venir …

Conception logicielle
Une pratique utile à tout développeur de logiciels est l'analyse de son propre travail. C'est dans cet esprit que j'entame aujourd'hui une petite série de billets sur la conception de logiciels, ou, plus précisément, ce qu'est, à cet instant, pour moi, la conception de logiciels.
C'est à la fois une façon de faire un point personnel sur ce que j'ai appris, de le partager avec tous ceux qui pourraient être intéressés, et enfin de l'exposer à la critique publique de ceux qui prendront le temps de le lire. Dans cette série de billets, je compte donc aborder les points qui me paraissent les plus importants dans la conception, la manière dont ils évoluent au fil du temps, le contrôle qu'exerce un développeur sur cette évolution et les relations qu'entretient le logiciel avec son environnement.

Le logiciel, un organisme multicellulaire ?


Chacun cherche son TDD





Java tops C in language popularity
Java is barely hanging on to its ranking as the most popular programming language, edging out C in this month's Tiobe index of programming language popularity. Released on Sunday, the February Tiobe Community Programming Index had Java being used by 17.05 percent of developers. A year ago, 18.48 percent of developers used it, while 17.48 percent of developers used Java a month ago. C was slotted right behind Java, used by 16.52 percent of developers in the latest release of the index -- up from 14.98 percent the same time last year, but down from the 16.98 percent using it in last month's index.

Ranking behind Java and C were: C#, used by 8.65 percent; C++, at 7.85 percent; Objective-C, at 7.06 percent; and PHP, used by 5.64 percent.


Introduction to OSGi - 2 (OSGi Services)
There are so many OSGi tutorials, blogs, and samples. I am going to add another OSGi sample/tutorial with my OSGi leanings. Here is my previous article regarding OSGi(Introduction to OSGi).
An OSGi Service is a java object instance which is registered with OSGi framework with set of attributes. Services can be accessed via service registry(performed via the class BundleContext). BundleActivator is to be invoked on start and stop.
When BundleActivator call start method we are going to register our service. After that any bundle can access that service.


Function overloading by return type?
Why don't more mainstream statically typed languages support function/method overloading by return type? I can't think of any that do. It seems no less useful or reasonable than supporting overload by parameter type. How come it's so much less popular?

vendredi 2 mars 2012

Veille technologique semaine 9

Pour le bulletin de cette semaine, je vous propose les sujets suivants :
  • Le preview de Windows 8 est proposé par Microsoft.
  • Le prochain IPV6 day est prévu le 6 juin 2012 : vérifier votre connectivité IPV6.
  • Les évolutions des plates-formes logicielles pour le cloud proposent le concept de multi-tenants : quelques explications.
  • Une interview de Gil Tene explique le garbage collecteur sans pause de la société Azul.
  • Un article au sujet du compilateur Graal de la machine virtuelle Maxine qui est entièrement écrite en Java.
  • L'occupation mémoire des objets Java, par IBM : les applications Java tournent sur des machines virtuelles mais il ne faut pas oublier la représentation mémoire de ces objets.
Bonne lecture.


Windows 8 Consumer Preview, Visual Studio 11 Beta Now Available
Today Microsoft launched Windows 8 Consumer Preview and Visual Studio 11 Beta.
The Windows 8 Consumer Preview page opens with an enthusiastic intro video, then divides into 9 major sections:


IPv6 to be Widely Enabled on World IPv6 Launch Day
Following on from the success of last year's World IPv6 day, in which major organisations such as Facebook and Google enabled IPv6 connectivity for a 24h period, the Internet Society has announced Google, Facebook, Yahoo and Bing) and on World IPv6 Launch Day (6th June 2012) the websites will switch on their IPv6 support and leave it permanently enabled, almost exactly a year since the World IPv6 Day (8th June 2011).



Using Hibernate to Implement Multi-tenant Cloud Architecture
Hibernate is an excellent Java ORM tool but it lacks the features required to implement a multi-tenant cloud architecture. Don't let that stop you.

Multi-tenant cloud architecture is a way to partition data such that a single instance of an application can host data from multiple organizations simultaneously. A multi-tenant application allows each organization (tenant) to co-exist without compromising the security of data defined for other.



Gil Tene Discusses Garbage Collection, the OpenJDK and the JCP
Azul is probably best known for their Pauseless Garbage Collector. So, maybe I can get you to start by giving us a bit of background on garbage collection generally. Could you maybe give us a rundown of the four fundamental approaches to collection?




Graal : Un compilateur dynamique pour Java
Les promoteurs du projet Graal, dont des représentants d'Oracle, aimeraient que le compilateur dynamique soit utilisé dans différentes machines virtuelles Java (JVM).

« Imaginez un codage en Java, une compilation avec un compilateur écrit en Java, enfin l'exécution par la machine virtuelle Java elle aussi écrite en Java - il y a du Java tout au long de la chaîne. C'est la voie d'une intégration parfaitement transparente entre l'application et la machine virtuelle », a déclaré Hari Gottipati, également membre du Groupe d'utilisateurs Phoenix Java. « Je suis sûr que toute la communauté Java va être très emballée par le projet. »



From Java code to Java heap
Understanding and optimizing your application's memory usage.

This article gives you insight into the memory usage of Java code, covering the
memory overhead of putting an int value into an Integer object, the cost of object
delegation, and the memory efficiency of the different collection types. You'll learn
how to determine where inefficiencies occur in your application and how to choose the right collections to improve your code.