|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
![]() ![]() ![]() Hinault RomaricConsultant Inscription : janvier 2007 Messages : 2 849 ![]() |
JavaOne 2012 : Oracle renouvelle son engagement à faire évoluer Java et dévoile ses plans
les préversions de JDK 8 et JavaFX Scene Builder 1.1 disponibles JavaOne 2012, la plus grande conférence annuelle autour de la plateforme Java se déroule actuellement à San Francisco. Oracle a profité de l’occasion pour dévoiler sa feuille de route pour Java et renouveler son engagement à faire évoluer le langage afin de rassurer les utilisateurs sceptiques face aux récentes découvertes de failles dans la plateforme. Pendant ces prochains mois, Oracle travaillera essentiellement sur Java SE 8. Au menu : l’éditeur prévoit l’intégration des expressions lambda, du moteur JavaScript Nashorn (déjà disponible dans la préversion de NetBeans 7.3), les annotations, la nouvelle API « date and time » et bien plus. Oracle a également officialisé le projet Sumatra, qui vise à mettre fin à l’utilisation des bibliothèques externes pour l’accélération GPU des applications Java ainsi qu’au processus de conversion entre Java et OpenCL (librairie multiplateforme qui permet d'utiliser les processeurs graphiques pour réaliser des calculs lourds). Le projet Sumatra sera disponible avec Java SE 8. ![]() La préversion du JDK 8 peut déjà être testée sur le site java.net. La sortie de la version finale est prévue pour septembre 2013. On va regretter cependant le report à Java 9 du projet Jigsaw, qui devait ajouter au langage un système de module. Java EE 7 (l’édition pour entreprise) est annoncé pour avril 2013 et apportera comme nouveautés : une API WebSocket, l’API JCACHE pour une mise en cache temporaire des objets Java, un modèle de programmation pour applications Batch et une API pour la manipulation des données au format JSON. Avec cette version de Java EE, Oracle proposera Glassfish 4.0 comme plateforme de référence. En ce qui concerne sa plateforme de développement d’Applications Internet Riches JavaFX, Oracle envisage de passer de JavaFX 2.0 (la version actuelle) à JavaFX 8 lorsque sortira le JDK 8. Cette version de JavaFX disposera par défaut au niveau de l’interface utilisateur d’une boite à outils pour Java SE 8 Embedded. Une nouvelle API sera proposée pour la création d’interfaces utilisateur avec un meilleur support des balises HTML5, WebView et JavaFX Scene Builder 2.0. JavaFX Scene Builder, l’outil de mise en page visuelle pour la plateforme JavaFX, qui permet aux utilisateurs de créer des interfaces utilisateur en glissant et en positionnant les composants à partir d'une palette dans une scène est actuellement disponible en version 1.1 développeur avec un support pour Linux 32 et 64 bits. Toutes ces annonces montrent l’engagement d’Oracle à vouloir faire évoluer l’écosystème Java. Télécharger la préversion de JDK8 Télécharger la préversion de JavaFX Scene Builder 1.1 La couverture de JavaOne par BouyeSource : JavaOne 2012 Et vous ? Que pensez-vous de ces annonces d'Oracle ?
__________________
Si déboguer est l’art de corriger les bugs, alors programmer est l’art d’en faire ![]() Mon blog Mes articles En posant correctement votre problème, on trouve la moitié de la solution |
|
70
|
|
|
#2 |
|
Membre chevronné
![]() ![]() |
L'importance dans JavaFX8 c'est le support 3D en vrai et le support aussi de l'embarqué. Et vu que presque les syntaxe vont évolué vers Java 8 avec les expressions tous se nouveautés, de plus JavaFX sera une partie intégrant du jdk pas besoin d'installer un jre en plus du jre de java, voilà pourquoi ça va passer à la place de la version 3 à la version 8 pour aller avec java 8
|
|
00
|
|
|
#3 |
![]() ![]() Fabrice BouyéDéveloppeur Java Inscription : août 2005 Messages : 4 106 ![]() |
Note : pour l'API Time & Date, l'équipe a dit hier soir qu'il ne sont pas à 100% sûrs de finir à temps d'ici aux deadlines imposées (j'en ai entendues deux distinctes : novembre et février, sans savoir précisément ce à quoi elles correspondent exactement).
__________________
Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes. suivez mon blog sur Développez.Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook |
|
00
|
|
|
#4 |
|
Membre éprouvé
![]() Inscription : mars 2007 Messages : 122 ![]() |
Je suis globalement très emballé par ce que nous réserve le JDK 8, mais suis-je le seul à avoir un avis mitigé sur les expressions lambdas ?
J'ai cherché après plusieurs exemples sur la toile et en résumant (grossièrement) j'ai remarqué que cela permettait de simplifier le code, notamment en remplaçant les @Override pas beaux. Sauf que des parenthèses sorties de nulle part avec Java, ça ne me plaît pas beaucoup. Pourriez-vous partager votre avis et, éventuellement, me rassurer ? |
|
|
00
|
|
|
#5 |
![]() ![]() Fabrice BouyéDéveloppeur Java Inscription : août 2005 Messages : 4 106 ![]() |
Grosso-modo là ils utilisent la même syntaxe que C#.
Perso, je préférais la syntaxe de JavaFXScript/Visage (note : le langage fonctionnel de JavaFX 1.0) où les closures s'écrivaient comme de bêtes pointeurs de fonction à la C, c'était bien plus simple à appréhender. Mais bon... Un type de la team langage disait il y a 2 jours que, pour les lambda, ils avaient fait le choix de ne pas exposer les méthodes comme ayant des types à part entière, donc...
__________________
Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes. suivez mon blog sur Développez.Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook |
|
00
|
|
|
#6 | ||
|
Membre confirmé
![]() Développeur Java Inscription : juillet 2009 Messages : 70 ![]() |
Citation:
Citation:
Par ailleurs l'API Collection va être revue pour tirer parti de cette nouvelle manière d'écrire du code: il sera alors possible de manipuler des collections de données très facilement sans avoir à écrire de boucles for. Par exemple: supprimer tous les objets d'une liste dont l'attribut x sera égal à 1 pourra être réalisé en une petite ligne de code |
||
|
00
|
|
|
#7 | |||||
|
Membre éprouvé
![]() Inscription : mars 2007 Messages : 122 ![]() |
Citation:
À ce propos, il me semble avoir lu quelque part que les lambda Java ne seront pas tout à fait des closures… Citation:
Code :
Citation:
|
|||||
|
|
00
|
|
|
#8 |
|
Membre confirmé
![]() Développeur Java Inscription : juillet 2009 Messages : 70 ![]() |
Tout à fait, un truc de ce genre
Et effectivement pour que cela fonctionne il faut que l'interface utilisée (ici ActionListener) ne contienne qu'une seule méthode. Donc pour un MouseListener ou un KeyListener on fera comme avant: on implémentera ces interfaces à l'ancienne (ou on étendra MouseAdaptor / KeyAdaptor |
|
00
|
|
|
#9 |
![]() ![]() Fabrice BouyéDéveloppeur Java Inscription : août 2005 Messages : 4 106 ![]() |
On peut pas faire
? C'est con si c'est figé à un seul argument
__________________
Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes. suivez mon blog sur Développez.Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook |
|
00
|
|
|
#10 | |
|
Membre confirmé
![]() Développeur Java Inscription : juillet 2009 Messages : 70 ![]() |
Citation:
|
|
|
00
|
|
|
#11 |
![]() ![]() Fabrice BouyéDéveloppeur Java Inscription : août 2005 Messages : 4 106 ![]() |
Ma faute, j'avais lu en diagonale en essayant de comprendre la manière de calculer les impôts sur le revenu américain qui nous était expliquée durant la dernière session
![]() Oui donc il parlait de plusieurs méthodes et non pas plusieurs arguments. Ouaip c'est un peu pour ça que je trouve le truc moins efficace que les closures où il fallait juste transmettre le nom d'une fonction qui correspondait au type attendu. Ici, il faut utiliser une interface avec une seule méthode, c'est pas pratique pour tous les mouse et keyboard listener de AWT/Swing/JavaFX.
__________________
Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes. suivez mon blog sur Développez.Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook |
|
00
|
|
|
#12 | |||||
![]() ![]() Logan Développeur Java Inscription : août 2005 Messages : 1 737 ![]() |
Concernant les interfaces avec plusieurs méthodes, il est surement probable que de nouvelles interfaces voient le jour comme pour try-with-resource.
Par exemple : Code java :
Sinon sur la page du JEP 109: Enhance Core Libraries with Lambda (JDK Enhancement Proposal) : Citation:
Code java :
En tout cas l'API Java SE 8 ne mentionne rien du genre, il est possible que AWT/Swing n'évolue pas contrairement à JavaFX qui est censé être la relève.
__________________
Java : Forum - FAQ - Java SE 7 API - Java EE 6 API ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !) Une solution vous convient ? N'oubliez pas le tag ![]() Signature par pitipoisson |
|||||
|
|
00
|
|
|
#13 |
![]() ![]() ![]() Hinault RomaricConsultant Inscription : janvier 2007 Messages : 2 849 ![]() |
Oracle sort la Preview de Java SE 8 pour ARM
avec JavaFX, les développeurs peuvent créer des applications pour Raspberry Pi Mise à jour du 20/12/2012 Près de deux mois après la sortie de la préversion de Java SE 8, lors de la conférence JavaOne, Oracle publie une déclinaison de la plateforme de développement pour ARM. La préversion de Java SE 8 pour ARM va permettre de développer des applications Java pour les systèmes embarqués et autres dispositifs reposant sur l’architecture ARM à l’instar du Raspberry Pi. Elle embarque une version de JavaFX (sur Linux), le framework de développement d’Applications Internet Riches. Pour rappel, Java SE 8 introduira comme nouveautés : les expressions lambda, le moteur JavaScript Nashorn, les annotations, la nouvelle API « date and time » et bien plus. La sortie de la version finale de la plateforme est prévue pour septembre 2013. ![]() Télécharger Java SE 8 pour ARMSource : Oracle Et vous ? Qu'en pensez-vous ?
__________________
Si déboguer est l’art de corriger les bugs, alors programmer est l’art d’en faire ![]() Mon blog Mes articles En posant correctement votre problème, on trouve la moitié de la solution |
|
20
|
|
|
#14 | ||
|
Membre éclairé
![]() Développeur informatique Inscription : décembre 2011 Messages : 245 ![]() |
J'ai remarqué que les lambdas de Java 8 ressemblaient à celui de C++11.
Sympa d'inclure un Joda Time dans le standard. Par contre j'aurai bien aimé qu'il y est les dates au format relatif. Quelque chose du genre : Code :
|
||
|
|
00
|
|
|
#15 | |
|
Expert Confirmé Sénior
![]() ![]() Développeur Java/Web Inscription : avril 2002 Messages : 12 664 ![]() |
Citation:
En effet : que faire avec les méthodes non implémentées ? Si cela laisse le corps vide, ca marche bien avec les listeners, mais cela peut aboutir à des cas incohérent pour d'autre type d'interface. Image une méthode "add(E)" qui ne fasse rien. Tu penses stocker ton objet mais il n'en est rien ! Si cela remonte une exception, cela permet de détecter immédiatement le problème, mais cela empêche l'utilisation dans des listeners... De même : que faire lorsqu'elles retournent une valeurs ? Bref dans tous ces cas là il est préférable d'adapter l'API avec une interface "mono-méthode"... a++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java |
|
|
00
|
|
|
#16 | ||||
|
Expert Confirmé Sénior
![]() ![]() Développeur Java/Web Inscription : avril 2002 Messages : 12 664 ![]() |
Au passage je viens de découvrir une petit modif anodine mais bien sympathique dans l'API Logger.
En général on effectue un log de la manière suivante : Code :
LOG.log(Level.INFO, "Message " + args); Pour pallier à cela on utiliser généralement un if pour vérifier le niveau : Code :
Dans la preview du JDK8 on peut désormais utiliser un Supplier<String> pour générer le message. Supplier<T> est juste défini comme cela : Code :
L'intérêt c'est qu'on peut donc utiliser une expression lambda pour la génération du message : Code :
LOG.log(Level.INFO, () -> "Message " + args ); a++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java |
||||
|
00
|
|
|
#17 |
![]() ![]() Fabrice BouyéDéveloppeur Java Inscription : août 2005 Messages : 4 106 ![]() |
Heu, j'ai toujours du mal avec leur notation à savoir à quel moment sont faits les allocations des closures/classes anonymes. Encore plus quand c'est sensé produire du bytecode compatible avec la version antérieure. Tu es bien sur de ce que tu avances ?
__________________
Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes. suivez mon blog sur Développez.Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook |
|
00
|
|
|
#18 | |||||
|
Expert Confirmé Sénior
![]() ![]() Développeur Java/Web Inscription : avril 2002 Messages : 12 664 ![]() |
Citation:
Sinon cela ne produit pas du bytecode compatible dans le sens où il faudra à tout prix une JVM 1.8 pour faire tourner le code. En fait le compilateur va générer une méthode statique qui contiendra le code de la lambda, et va inclure un appel dynamique vers cette méthode via l'invokedynamic et les MethodHandle. Grosso modo le code suivant : Code :
Va générer quelque chose de la sorte : Code :
Bien sûr l'instruction "invokedynamic bootstrap[lambda$1]" n'est pas du Java, mais une représentation d'un appel dynamique permettant de créer le lambda. Lors de cet appel dynamique, la JVM va retourner un type "lambda proxy" qui "simulera" l'interface fonctionnelle (Supplier<T> dans cet exemple). Et apparemment la JVM pourra effectuer là dessus des optimisations très importante en allant carrément jusqu'à remplacer l'appel directement dans le code à l'intérieur de la méthode appelée. J'avoue ne pas tout comprendre bien précisément, mais cela a vraiment l'air très prometteur... Malheureusement, il y a un "MAIS" ! Apparemment ils sont à la bourre sur l'implémentation de ce proxy lors de l'appel dynamique. Ainsi dans un premier temps l'appel dynamique va se contenter de créer une classe anonyme... La version optimisé avec le proxy viendra plus tard... Et si j'ai bien compris tout ceci concerne avant tous la JVM, donc il n'y aura pas besoin de recompiler... a++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java |
|||||
|
00
|
|
|
#19 |
![]() ![]() Fabrice BouyéDéveloppeur Java Inscription : août 2005 Messages : 4 106 ![]() |
Merci de la précision
__________________
Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes. suivez mon blog sur Développez.Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook |
|
00
|
|
|
#20 | ||||||||||
|
Expert Confirmé Sénior
![]() ![]() Développeur Java/Web Inscription : avril 2002 Messages : 12 664 ![]() |
Juste pour info, l'early-access Lambda est assez complète : http://jdk8.java.net/lambda/
Il y a de quoi bien s'amuser même si l'inference des types n'est pas finalisé (du coup il faut parfois caster explicitement, ce qui alourdit la syntaxe). Quelques exemples vites fait : 1 - On peut effectuer des itérations internes sur les éléments Iterable : Code :
Au passage ce code peut être encore plus compacte, de diverses manières : Code :
Code :
iterable.forEach(System.out::println); Cette méthode forEach() est encore plus intéressante sur les Map : Code :
L'API de Collections profite des "Default Method" pour se doter de quelques méthodes utiles, exemple : Code :
Code :
list.sort(Comparators.<String,Integer>comparing(String::length)); Mais le plus gros ajout vient des streams : lorsqu'on utilise un stream, on peut filtrer ou modifier les valeurs de la source de données, sans modifier cette source. Quelques exemples (loin d'être exhaustif) : Code :
La grosse force des "stream" étant de pouvoir paralléliser les traitements. En effet il suffit d'utiliser la méthode parallelStream() à la place de stream() pour que le traitement soit effectuer en parallèle (si cela est possible bien entendu). a++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java |
||||||||||
|
40
|
Copyright © 2000-2013 - www.developpez.com