septembre
2006
Bien que Java SE 6 n’est pas encore finalisé, et qu’il devrait être disponible d’ici la fin de l’année, le cycle de développement de la version suivante a déjà commencé avec la création du projet JDK 7 sur java.net (même s’il est pour le moment relativement vide). Mais au vue des JSRs on peu déjà avoir un aperçu de ce qu’apportera cette futur version, et c’est ce que propose Danny Coward sur son blog et que je vous reporte ici (note : bien sûr rien n’est encore fixé ni sûr, et il y aura sûrement de nombreux changement d’ici la sortie de Java SE 7) :
Modularité
- JSR 277 – Java Module System
Concrètement, il s’agit d’un format de remplacement pour les jar, destiné à simplifier la distribution, le déploiement et la gestion des versions des librairies et des applications Java. - JSR 294 – Improved Modularity Support in the JavaTM Programming Language
Egalement nommé « superpackages« , cela permettra d’avoir un meilleur contrôle sur l’organisation et la visibilité des classes d’une API tout en conservant une organisation en package et sous-package.
Support d’autres langages
- JSR 292 – Supporting Dynamically Typed Languages on the JavaTM Platform
Ajout d’un nouveau bytecode (invokedynamic), qui permettra d’effectuer d’invoquer des méthodes alors que sa signature exacte ne sera connu qu’au moment de l’exécution. C’est inutile pour le langage Java en lui-même, mais cela servira pour des langages dynamiques tels que Python ou Ruby. - Ajout de nouveaux langages dynamiques
En plus du moteur Javascript intégré dans Java SE 6, d’autre moteur pourrait se voir « standardisé », comme par exemple JRuby, Jython ou BeanShell.
scripting
Simplifier le developpement Swing
- JSR 295 – Beans Binding
Cette API permettra de synchroniser simplement et automatiquement deux propriétés de deux beans (par exemple associer les composants graphiques avec des propriétés d’un beans). - JSR 296 – Swing Application Framework
Un framework destiné à simplifier la conception d’application Swing en proposant des infrastructures communes à la plupart des applications desktop. - JSR 303 – Bean Validation
Cette API permettra d’effectuer des validations automatiques des valeurs des propriétés des beans, un peu comme le fait déjà le framework Struts pour les applications J2EE (mis à part qu’elle devrait utiliser les annotations).
Autres JSR
- JSR 220 Java Persistence Architecture
Une API de persistance des données en standard, afin de simplifier l’utilisation d’une base de données dans un application desktop. - JSR 260 Javadoc Tag Technology Update
Cette JSR devait à l’origine être incluse dans Java SE 6, mais aucun consensus n’a été trouvé et elle s’est vu reporté. Elle devrait proposer des améliorations dans le format généré pour la documentation (la « javadoc ») afin de la rendre plus lisible et plus simple (ajout de catégories, regroupement de méthodes, etc.). - JSR 255 – JMX 2.0 et JSR 262 – Web Services Connector for Java Management Extensions (JMX) Agents
Ces extensions à l’API JMX de Java 5.0 devraient permettre d’améliorer encore le monitoring des applications Java. - JSR 203 More New I/O APIs for the Java Platform (« NIO.2″)
Enfin l’API « New I/O » devrait être améliorer, en proposant une meilleure interface avec le système de fichier, des opérations asynchrones et l’amélioration des fonctionnalités des socket-channel.
Langage
En plus de cela, le langage en lui-même pourrait encore évolué. L’objectif étant de proposer de nouvelles fonctionnalités pratiques (comme le « for each » de Java 5.0) sans trop complexifié le tout. L’article fait allusion aux points suivants
- Un support XML intégré au langage.
- Les closures ou les simple closures (note : là je remarque que la première proposition des closures étaient vraiment complexe).
- Bloc de construction (note : je pense qu’il doit s’agir d’une manière de remplir une collection lors de son initialisation, comme c’est le cas avec les tableaux).
- Support des Strings dans les bloc switch (note : ce serait bien vu le nombre de question sur ce point sur le forum).
- Support des BigDecimal dans le langage (note : mais j’ignore de quelle manière ! Un nouveau type primitif ??? ).
- Java property support
- « lightweight method references »
- Extension du mécanisme d’annotation
(note concernant les trois derniers points : j’ignore de quoi il s’agit exactement. Si quelqu’un a plus d’information qu’il n’hésite pas)
Et dire qu’il y en a encore beaucoup qui ne sont pas encore passé à Java 5.0 !
Source : Danny Coward’s Sun Weblog : Channeling Java SE 7
5 Commentaires + Ajouter un commentaire
Tutoriels
Discussions
- Classes, méthodes private
- jre 1.5, tomcat 6.0 et multi processeurs
- [ fuite ] memoire
- Possibilité d'accéder au type générique en runtime
- Difference de performances Unix/Windows d'un programme?
- [REFLEXION] Connaitre toutes les classes qui implémentent une interface
- Recuperation du nom des parametres
- L'apparition du mot-clé const est-il prévu dans une version à venir du JDK?
- Définition exacte de @Override
Merci pour ces informations
Si je comprend bien les lightweights methods sont en ‘quelques sortes’ l’équivalent des pointeurs de fonction du C/C++…
Ca peut être utile et faciliter la lecture du code
Le « Java property support » serait quelque chose comme C#. Au lieu de définir les getter et setter pour les champs, tu écrirais juste public property int monChamp par exemple. Le lightweight method reference est un peu lié aux closures. Cela permettrait de définir, par exemple, une méthod onButtonClicked() dans on UI et de faire ensuite monBouton.addActionListener(this.onButtonClicked).
@lunatix : merci pour l’info
@vbrabant : oui je me souvient très bien de ton message sur les XML
C’était surtout les trois derniers qui me semble assez flou !
merci
Voici le lien sur le billet que j’avais écris concernant le support XML intégré au langage: http://blog.developpez.com/index.php?blog=40&title=ecrire_directement_du_xml_dans_vos_progr…
Aussi, le lightweight method references aurait un lien avec la gestion d’événements au niveau GUI.
a priori, pour les BigDecimals, il s’agit de pouvoir faire des operations + ou – (et les autres) sans avoir a faire quoique ce soit d’autre (un peu comme on peut faire + sur des String par exemple).
Ca serait une bonne idée, parce que ce sont des objets obligatoires en applications de gestion et bien lourds a manipuler