IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Java 9 est disponible, la plateforme se met aux modules tour d'horizon des nouveaut�s


Sujet :

Java

  1. #1
    R�dacteur

    Avatar de Mickael Baron
    Homme Profil pro
    Ing�nieur de Recherche en Informatique
    Inscrit en
    Juillet 2005
    Messages
    14 974
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activit� : Ing�nieur de Recherche en Informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2005
    Messages : 14 974
    Par d�faut Java 9 est disponible, la plateforme se met aux modules tour d'horizon des nouveaut�s
    Java 9 est disponible, la plateforme se met aux modules
    tour d'horizon des nouveaut�s

    Apr�s l'arriv�e de Java 8 et ses nombreuses fonctionnalit�s en 2014, Java 9 pointe enfin le bout de son nez ce 21 septembre 2017. Java 9 inclut plus de 80 nouveaut�s toutes d�crites dans un ensemble de JEP (Java Enhancement Proposal) disponibles � cette adresse : http://openjdk.java.net/projects/jdk9/.

    Nom : java9V2.png
Affichages : 79445
Taille : 37,3 Ko

    � travers cette annonce, l'�quipe Java de Developpez.com va vous donner un aper�u de ce qu�apporte le JDK 9 ; voici quelques-unes de ces nouveaut�s qui pourraient avoir un impact sur votre fa�on de programmer avec Java. Nous finirons par nos avis personnels respectifs. Ensuite cela sera votre tour ;-)

    La modularisation via le projet Jigsaw

    La modularisation annonc�e depuis de nombreuses ann�es, plusieurs fois repouss�e, est LA grande nouveaut� de Java 9. Elle a �t� d�crite principalement dans la JEP 201. D�autres JEP sont li�es � celle-ci tant le projet de modularisation est important. L�objectif principal du syst�me des modules est de fournir un JDK qui puisse �tre structur� et de pouvoir charger seulement les modules n�cessaires. Les applications du domaine de l�Internet des Objets (IOT en anglais) sont tr�s demandeuses, car les syst�mes h�tes sont g�n�ralement limit�s en ressources mat�rielles (m�moire, CPU�). Les d�veloppeurs Java pourront donc sp�cifier les modules du JDK et des biblioth�ques tierces qui sont requis par leur application.

    Sur le plan th�orique, le syst�me de module apporte �galement de nombreux autres avantages :

    • une plateforme plus facilement �volutive et maintenable ;
    • des gains en termes de performance et d'ex�cution puisque seuls les modules n�cessaires sont charg�s ;
    • des gains en termes de s�curit�, car le principe modulaire permet de fournir le juste assez n�cessaire au syst�me. De plus, l�utilisation d�API priv�es est impossible si celles-ci ne sont pas explicitement export�es.


    Comment �a fonctionne ?
    Pour consid�rer une application tirant parti du syst�me de modules, un fichier module-info.java est requis � la racine de votre projet. Un exemple de contenu de fichier module-info.java est propos� ci-dessous :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    module com.developpez {
        requires java.sql;
        export fr.developpez.com.services;
    }
    Nous remarquons l�usage de nouveaux mots cl�s comme module, requires et export. Le premier �tant utilis� pour nommer le module, le deuxi�me pour exprimer les modules n�cessaires et le troisi�me pour indiquer les packages du module qui seront visibles � l�ext�rieur. Pour le dernier point, les packages souvent nomm�s impl pourront d�sormais �tre vraiment consid�r�s comme priv�s.

    Les personnes ayant une connaissance de OSGi ne seront pas surprises par la syntaxe hormis l�absence de num�ro de version. En effet dans cette premi�re version, Jigsaw a fait l�impasse sur les versions. Cet aspect est d�l�gu� aux outils de build comme Maven ou Gradle.

    Bien s�r, comme toute grosse nouveaut�, il y a quelques probl�mes. On peut citer par exemple l�utilisation de la m�thode setAccessible(boolean) qui permet d�acc�der � des champs priv�s par r�flexion. Cette m�thode ne fonctionnera plus pour acc�der � un champ priv� contenu dans un module pour des raisons de s�curit� et vous obtiendrez donc une belle exception de type : IllegalAccessError. Pour r�soudre cela, il faudra � ouvrir ï¿½ le module en utilisant le mot cl� open sur le package ou plus globalement sur le module (voir ci-dessous).

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    module fr.developpez.com {
        requires java.sql;
        opens fr.developpez.com.services;
    }
    ou

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    open module fr.developpez.com {
        requires java.sql;
        exports fr.developpez.com.services;
    }

    Les outils ?
    Au niveau des outils, il y a eu �galement des changements. Les commandes java et javac disposent naturellement de param�tres sp�cifiques pour prendre en compte le syst�me de module. L�outil jlink (JEP 282) permet d'assembler plusieurs modules Java entre eux en tenant compte de leurs d�pendances. Le r�sultat consiste en une image sp�cifique du runtime Java (JDK ou JRE) en int�grant son application. Enfin, sans �tre exhaustif, l�outil jdeps permet de conna�tre les modules dont d�pend votre projet.

    Fabriques pour les collections
    La nouvelle version de Java 9 apporte de gros changements au niveau des API d�di�es aux collections. Des m�thodes statiques ont �t� ajout�es sur les interfaces de List, Set et Map pour initialiser des collections. Par ailleurs, les objets cr��s sont immutables (les attributs les contenant ne sont pas modifiables). L'objectif vis� par cette am�lioration d�crite dans la JEP 269 �tant bien s�r la cr�ation de petites collections et d'�viter une lourdeur syntaxique.

    Avant Java 9, nous �tions oblig�s de faire cela :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    List<String> myList = new ArrayList<String>();
    myList.add("Developpez.com");
    myList.add("Aime");
    myList.add("Java");
    myList = Collections.unmodifiableList(myList);
    Il y avait bien s�r l�exception de la classe Arrays pour cr�er des listes toutes pr�tes. Malheureusement, il faut bien avouer qu�il n�est pas intuitif de faire appel � la classe Arrays pour cr�er des listes. Par ailleurs pour Set et Map, il n�y avait pas d��quivalent � la classe Arrays.

    Avec Java 9, la cr�ation devient plus simple.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    List<String> newList = List.of("Developpez.com", "Aime", "Java")
    API pour la gestion des processus
    Cette am�lioration, d�crite dans la JEP 102 permet � Java de mieux coexister avec le syst�me. Initialement le d�veloppeur Java utilisait l�API Runtime.getRuntime().exec() puis avec Java 5 est apparue l�API ProcessBuilder. Malheureusement, il n��tait pas possible de conna�tre le PID du processus courant, conna�tre les sous-processus, d�truire des processus ou obtenir d�autres informations comme les param�tres d�ex�cution. Avec Java 9, les choses ont �volu� dans le bon sens avec des nouvelles classes comme ProcessHandle et des ajouts dans la classe Process.

    Pour r�cup�rer le processus courant :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    System.out.println(ProcessHandle.current())
    Pour afficher le PID et les informations de la ligne de commande de tous les processus :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    ProcessHandle.allProcesses().forEach(p -> System.out.println(p.getPid() + " " + p.info().commandLine()));
    1 Optional[/usr/lib/jvm/java-9-openjdk-amd64/bin/jshell -v]
    45 Optional[/usr/lib/jvm/java-9-openjdk-amd64/bin/java -agentlib:... jdk.jshell.execution.RemoteExecutionControl 34065]
    137 Optional[/usr/bin/sleep 1h]
    Multi-release des fichiers JAR
    Le format du fichier JAR �volue. Celui-ci permet de g�rer plusieurs impl�mentations d'une m�me classe au sein d'une archive unique. Avant Java 9, il �tait donc impossible de g�rer plusieurs versions d�une m�me biblioth�que au sein d�une m�me archive.

    Il �tait important d'apporter une solution pour assurer la compatibilit� descendante, car Java 9 int�gre de nouvelles API permettant de coder diff�remment . � l'ex�cution, la bonne version de la classe sera charg�e automatiquement en fonction de la version de Java utilis�. Cette solution est d�crite dans la JEP 238, elle est appel�e Multi-Release JAR (MR JAR pour les intimes).

    Si on consid�re deux classes Foo et Bar. La seconde contient deux impl�mentations une pour Java 9 et une autre pour toutes les versions ant�rieures � Java 9. La structure du JAR sera la suivante :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    JAR root
    - Foo.class
    - Bar.class
    + META-INF
       - MANIFEST.MF
       + versions
         + 9
           - Bar.class

    Comme on peut constater la racine (JAR root) n'�volue pas et Foo.class et Bar.class seront utilis�es par toutes les versions de Java ne supportant pas MR JAR. Au contraire Foo.class et Bar.class localis�e dans META-INF/versions/9/Bar.class seront utilis�es pour la version 9 de Java.

    Cette fonctionnalit� a demand� des am�liorations au niveau des outils de compilation et d'analyse. Les outils du JDK (javac, javap, jdeps...) ont �t� bien entendu impact�s. Les outils de build comme Maven ou Gradle ont d� s'adapter pour la construction de cette nouvelle structure de JAR. Sur le papier tout fonctionne pour preuve dans ce d�p�t GIT o� des tests ont �t� r�alis�s.

    Un shell Java : REPL jShell
    De nombreux langages sont actuellement tr�s populaires gr�ce � leur simplicit� pour l�apprentissage ; � titre d�exemple le langage Python. Cette simplicit� est en partie due � la pr�sence d�une impl�mentation appel�e REPL (Read Evaluate Print Loop). Gr�ce � ce mode de fonctionnement bas� sur une boucle, l�interpr�teur :

    1. Lit une expression (le R pour Read) ;
    2. �value une expression (le E pour Evaluate) ;
    3. Imprime sur la sortie standard (le P pour Print) ;
    4. Recommence (le L pour Loop).

    Pour pallier ce manque, la version Java 9 offre un REPL appel� JShell (JEP 222) permettant une programmation interactive. JShell interpr�te directement des expressions sans avoir besoin qu�elles soient envelopp�es dans une classe ou une m�thode.

    Outre l�aspect apprentissage, JShell pourra �tre utilis� pour tester du code rapidement en quelques lignes de code. Par exemple, v�rifier si un service web est pr�sent ou tester des agents de placement pour JavaFX. Il est �galement pr�vu de pouvoir int�grer JShell directement dans du code Java. On peut m�me envisager une alternative aux bons vieux scripts Bash et pourquoi pas des langages de script de la JVM comme Groovy.

    Meilleure gestion du deprecated
    L�annotation @Deprecated a �t� �toff�e par deux attributs : l�un de type String since et l�autre de type boolean forRemoval (JEP 277). L�attribut since permet de pr�ciser � partir de quand l�API a �t� annot�e par @Deprecated et forRemoval pr�cise que l�API en question risque d��tre supprim�e. Nous montrons ci-dessous un exemple de classe qui pr�cise que cette API a �t� annot�e @Deprecated depuis la version 2.5 et qu�elle n�est pas pr�vue pour �tre supprim�e.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    @Deprecated(since="2.5" forRemoval=false)
    public class MaClassAMoi {}
    Moteur de rendu Marlin
    La JEP 265 a permis l�int�gration d�un nouveau moteur de rendu Marlin permettant aux bo�tes � outils Java (Java2D et JavaFX) d'�tre plus rapides. Pr�c�demment les moteurs de rendu Pisces et Ductus �taient utilis�s (Oracle JDK). Comme le moteur de rendu Marlin surpasse en termes de performance ces deux moteurs historiques (2006 et 1998), l'�quipe de l'OpenJDK 2D a d�cid� de l'utiliser par d�faut dans l'OpenJDK 9 et Oracle de son c�t� a fait de m�me pour Oracle JDK9 pour se d�barrasser � terme de Ductus.

    Sur le graphique ci-dessous, on remarque que les r�sultats obtenus par le moteur de rendu Marlin sont toujours plus efficaces que les autres rendus. On atteint parfois des ratios de l'ordre de 650 %.

    Nom : marlincomparison.png
Affichages : 41382
Taille : 327,8 Ko

    MarlinFX a �t� finalement int�gr� en d�cembre 2016 (� la derni�re minute), mais il reste d�sactiv� par d�faut dans JDK 9 (Java Pisces ou Native Pisces restent utilis�s). L��quipe Java de Developpez.com a pu r�aliser une interview de Laurent Bourg�s, l�auteur principal de cette fonctionnalit� : https://java.developpez.com/interview/laurent-bourges/

    Am�liorations en vrac
    Les nouveaut�s de Java 9 sont nombreuses. Nous aurions aussi pu citer les points suivants :

    • Stream : de nouvelles m�thodes ont �t� ajout�es dans les classes Stream et Collectors ;
    • Concurrence (JEP 266) : Java 9 est d�sormais un langage r�actif dans le sens o� une impl�mentation des Reactive Streams a �t� propos�e. La nouvelle classe Flow propose trois interfaces int�gr�es pour le producteur (Publisher), consommateur (Subscriber) et une derni�re pour la connexion entre le producteur et le consommateur ;
    • une nouvelle JavaDoc estampill�e HTML 5 avec la possibilit� de rechercher du contenu dans une zone de texte. C�est d�j� une grosse �volution. Malheureusement, la recherche fulltext n�existe pas. Par ailleurs, les frames oldschool sont toujours pr�sentes ;
    • un vrai client HTTP/2 (JEP 110) ;
    • G1, le garbage collector par d�faut (JEP 248). Le garbage collector G1 est par d�faut sur les architectures 32 et 64 bits. Il remplacera Parallel GC avec une approche plus int�ressante pour les utilisateurs, car il diminuera les latences et son impact sur les ressources ;
    • Milling Project Coin (JEP 213). Ce projet a trait � de nombreuses �volutions de la syntaxe de Java. On notera la possibilit� d�avoir des m�thodes priv�es dans les interfaces afin de mutualiser du code utilis� dans les m�thodes par d�faut. On notera aussi la possibilit� d�utiliser des variables finales dans le bloc Try-With-Resources ;
    • meilleure performance pour les cha�nes de caract�res propos�es dans JEP 254, JEP 250 et JEP 280 ;
    • InputStream : trois nouvelles m�thodes utilitaires ont �t� ajout�es dans la classe InputStream. readAllBytes() pour lire tout un flux, readNBytes() pour lire une portion d'un flux et transferTo() pour directement envoyer un flux d'entr�e vers un flux de sortie.


    Les avis
    Nous avons demand� aux membres de l��quipe Java de donner leur avis concernant cette nouvelle version de Java. Que pensent-ils de cette version, quelles nouveaut�s ont-ils pr�f�r�es et celles qu'ils trouvent d�cevantes ?

    Avis 1 : Mickael Baron, responsable Java sur Developpez.com

    On parle de Java 9 depuis longtemps. Cela se traduit par de nombreux articles et de pr�sentations sur le sujet. Jigsaw LA fonctionnalit� majeure de Java 9 est souvent pr�sent�e. Dans la plupart des cas, j�ai l�impression que le retour sur cette fonctionnalit� est souvent n�gatif. D�une part, elle inqui�te par le risque que les d�veloppements r�alis�s avant Java 9 ne fonctionnent plus et d�autre part, elle inqui�te par le risque que les outils de l��cosyst�me Java (Maven, Gradle, IDE�) ne soient pas du tout pr�ts � ce grand changement. Je pense qu�il faudra beaucoup de temps pour que cette fonctionnalit� arrive � percer, un peu comme les g�n�riques de Java 5 � l��poque.

    De mon c�t�, la nouveaut� pr�f�r�e reste REPL. C�est d�j� un bon d�but, on peut facilement tester sans avoir � passer par la phase de compilation et d�ex�cution. Toutes les exp�rimentations faites pour la pr�paration de cette news ont �t� faites via ce REPL. Par contre, fournir une fen�tre AWT pour l��dition ce n�est pas terrible. Il aurait mieux valu se baser sur un �diteur du syst�me par d�faut.

    La plus d�cevante c�est Jigsaw, non pas sur l�aspect technique, mais plus sur la mauvaise image de Java qu�elle a pu engendrer. Il ne faut pas oublier que la sortie de Java 9 a �t� repouss�e � cause de cette fonctionnalit�.

    Avis 2 : Robin56, responsable Java sur Developpez.com
    Comme Micka�l, quand on me parle Java 9, je pense modularit� et donc je pense Jigsaw. Son intention est louable. L� o� certaines versions ne r�volutionnaient vraiment pas l��cosyst�me Java, je pense que ce n�est pas du tout le cas de l�arriv�e de Java 9. Ceci va bousculer nos habitudes et aussi l��cosyst�me en g�n�ral. On peut d�j� remarquer les IDE et les outils de builds comme Maven devoir s�adapter � ces avanc�es.

    Revers de la m�daille, je crains aussi la mont�e en version sur Java 9. J�ai bien peur qu�elle se fasse dans la douleur. Rien que le planning de livraison de Java 9 t�moigne des impacts de Jigsaw. Son retard de plusieurs mois prouve que cette �volution a des impacts majeurs sur Java. Gare aux projets qui vont migrer en Java 9, je crains qu�ils essuient les pl�tres.

    Dans tous les cas, la fonctionnalit� que j�attends de voir avec l�arriv�e de Java 9 est clairement le projet Jigsaw.

    Avis 3 : bouye, r�dacteur et mod�rateur Java sur Developpez.com
    Mon avis rejoint celui de Mickael concernant les soucis engendr�s par Jigsaw et de Robin56 pour le besoin de tout l'�cosyst�me Java de s'adapter � ce nouveau mode de fonctionnement. Bien que n'�tant pas un grand utilisateur de Maven, Graddle et co (surtout compte tenu des limitations de mon environnement de travail pro) je reconnais que ces outils sont d�sormais pr�dominants dans le monde Java et que le nouveau venu Jigsaw semble mal s'int�grer � l'existant. Je pense attendre que les IDE et outils soient un peu plus matures avant de tenter de porter mes projets vers le JDK9... ou, si je m'y lance, le premier jet sera sans doute sans support des modules.

    � vous de jouer !!

    Et vous :

    • Que pensez-vous de l�arriv�e de Java 9 sur le march� ?
    • Quelles sont les �volutions o� vous avez le plus d�attentes ?


    T�l�charger la nouvelle version de Java
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Java, consulter la page cours
    N'h�sitez pas � consulter la FAQ Java et � poser vos questions sur les forums d'entraide Java
    --------
    Ing�nieur de Recherche en informatique au LIAS / ISAE-ENSMA
    Page de Developpez.com : mbaron.developpez.com
    Twitter : www.twitter.com/mickaelbaron
    Blog : mickael-baron.fr
    LinkedIn : www.linkedin.com/in/mickaelbaron
    DBLP : dblp.uni-trier.de/pers/hd/b/Baron:Micka=euml=l

  2. #2
    Mod�rateur
    Avatar de joel.drigo
    Homme Profil pro
    Ing�nieur R&D - D�veloppeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 56
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur R&D - D�veloppeur Java
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par d�faut
    Salut,

    Je suis d�cu que la JEP 301 ne soit finalement pas impl�ment�e dans Java 9. J'attendais ces �volutions avec impatience.

    En revanche, les nouveaut�s de la classe Desktop sont bienvenues, en particulier pour l'int�gration MacOSX.
    L'expression "�a marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le probl�me.
    La plupart des r�ponses � vos questions sont d�j� dans les FAQs ou les Tutoriels, ou peut-�tre dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement pos�e et r�dig�e et vous aurez plus de chances de r�ponses adapt�es et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'�diteur de messages).
    Nouveau sur le forum ? Consultez Les R�gles du Club.

  3. #3
    Membre tr�s actif

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    608
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 608
    Par d�faut
    REPL permet � Java de se mettre � la hauteur de Python en terme d'accessibilit� sur la ligne de commande.
    Les enseignants vont bien l'appr�cier : pour faire des d�monstrations rapides de quel effet a telle instruction par rapport � telle autre, c'est tr�s bien.

    Parmi les progr�s que j'ai vu, il y en a un qui passe inaper�u et qui va nous soulager pourtant : le passage en UTF-8 des fichiers de propri�t�s.
    Beaucoup m�connaissaient l'utilitaire native2ascii et s'�chinaient � entrer des \u0241 dans ces fichiers, s'�puisant, tout en les rendant illisibles.
    C'en est fini de cela.

  4. #4
    Membre extr�mement actif
    Profil pro
    D�veloppeur
    Inscrit en
    Mars 2012
    Messages
    1 970
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activit� : D�veloppeur
    Secteur : Communication - M�dias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 970
    Par d�faut
    Grunt >> "Parmi les progr�s que j'ai vu, il y en a un qui passe inaper�u et qui va nous soulager pourtant : le passage en UTF-8 des fichiers de propri�t�s.
    Beaucoup m�connaissaient l'utilitaire native2ascii et s'�chinaient � entrer des \u0241 dans ces fichiers, s'�puisant, tout en les rendant illisibles."

    Tu sais s'il y a moyen de tester si un emoji est install� sur un device?
    Comme les emoji ont un encoding utf8...

  5. #5
    Membre �clair�
    Inscrit en
    Janvier 2006
    Messages
    756
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 756
    Par d�faut
    Citation Envoy� par Mickael Baron Voir le message
    Le format du fichier JAR �volue. Celui-ci permet de g�rer plusieurs impl�mentations d'une m�me classe au sein d'une archive unique. Avant Java 9, il �tait donc impossible de g�rer plusieurs versions d�une m�me biblioth�que au sein d�une m�me archive.
    Dommage que �a ne s'applique qu'� la version de Java, pas des modules ou d'autres biblioth�ques (un comble quand on sait que la nouveaut� principale est la modularit�): je cherchais justement un moyen d'avoir dans le m�me JAR le m�me plugin adapt� � deux versions d'une application principale. Bon, tant pis.

    Citation Envoy� par grunt2000 Voir le message
    REPL permet � Java de se mettre � la hauteur de Python en termes d'accessibilit� sur la ligne de commande.
    Les enseignants vont bien l'appr�cier : pour faire des d�monstrations rapides de quel effet � telle instruction par rapport � telle autre, c'est tr�s bien.
    C'est vrai, encore que depuis pas mal de temps je faisais �a avec jjs. Bon d'accord �a oblige � faire du javascript et pas du java. Mais d'un autre c�t�, si Java conserve toutes ses contraintes en mode REPL (comme l'obligation de typer toutes les variables) �a en diminue quand m�me un peu l'int�r�t.

    Citation Envoy� par grunt2000 Voir le message
    Parmi les progr�s que j'ai vu, il y en a un qui passe inaper�u et qui va nous soulager pourtant : le passage en UTF-8 des fichiers de propri�t�s.
    Beaucoup m�connaissaient l'utilitaire native2ascii et s'�chinaient � entrer des \u0241 dans ces fichiers, s'�puisant, tout en les rendant illisibles.
    C'en est fini de cela.
    Int�ressant mais un peu tardif. Tant qu'� faire, pourquoi ne pas remplacer le vieux format plat des fichiers properties par un format hi�rarchique, genre JSON ou YAML?
    Et puis contrairement � ce qu'�crit Oracle ici, je connais pas mal de gens qui sous pr�texte de travailler seulement en fran�ais+anglais laissent les fichiers Properties en ISO-8859-1 dans les jar, ce qui entra�nera fatalement des erreurs au moment de basculer � Java 9.

    Citation Envoy� par hotcryx Voir le message
    Tu sais s'il y a moyen de tester si un emoji est install� sur un device?
    A priori c'est plut�t au niveau des polices de caract�res : si les emoji sont des caract�res, alors chacun doit �tre pr�sent dans toutes les polices de caract�re, sauf si l'outil g�n�re des changements de police � la vol�e.

    Citation Envoy� par hotcryx Voir le message
    Comme les emoji ont un encoding utf8...
    oui mais ils ne sont pas dans le BMP, donc en UTF-8 ils prendront 4 positions! On passe donc � UTF-8 pr�cis�ment au moment o� il est susceptible de devenir obsol�te m�me dans les pays o� on n'utilise que le latin sans accent...

  6. #6
    Expert �minent
    Avatar de adiGuba
    Homme Profil pro
    D�veloppeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par d�faut
    Citation Envoy� par esperanto Voir le message
    je connais pas mal de gens qui sous pr�texte de travailler seulement en fran�ais+anglais laissent les fichiers Properties en ISO-8859-1 dans les jar, ce qui entra�nera fatalement des erreurs au moment de basculer � Java 9.
    Apparemment le chargement d'un fichier Properties repasse en ISO-8859-1 si la lecture en UTF-8 �choue, donc �� ne devrait pas poser trop de probl�mes.
    https://docs.oracle.com/javase/9/int...2-82006A7A14C7

  7. #7
    Membre �clair�
    Inscrit en
    Janvier 2006
    Messages
    756
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 756
    Par d�faut
    Citation Envoy� par adiGuba Voir le message
    Apparemment le chargement d'un fichier Properties repasse en ISO-8859-1 si la lecture en UTF-8 �choue, donc �� ne devrait pas poser trop de probl�mes.
    https://docs.oracle.com/javase/9/int...2-82006A7A14C7
    Oui j'avais lu puisque c'�tait pr�cis�ment ce lien que je citais.
    Mais un basculement automatique ce n'est pas sans danger: tant que les gens pourront �diter le fichier � la main, il se produira toujours des cas o�, en l'ouvrant avec un �diteur mauvais ou mal param�tr�, on se retrouvera au milieu du document avec un mauvais caract�re entra�nant le basculement de l'encodage pour l'ensemble du document.

  8. #8
    Expert confirm�
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 61
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : Urbaniste
    Secteur : Sant�

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par d�faut
    Une des questions r�curent auxquelles j'ai droit est la remise en cause de la modularit� de OSGi face � jigsaw.

    � mon avis la modularit� dans java9 est r�solue � la compilation.
    tu d�finis des modules et leurs d�pendances. Puis tu compile et tu lie les modules ensemble pour obtenir une JVM ad-hoc.
    Avec OSGi (karaf, felix, equinoxe...) la r�solution est dynamique elle se fait � l'ex�cution. soit lorsque le module est d�ploy� (import) soit lorsqu'il est ex�cut� (dynamic-import).

    l'un et l'autre ne sont pas contradictoire mais compl�mentaires.
    On peut tr�s bien imaginer une karaf �crite sous forme de modules java9 pour obtenir un noyau minimal. les ajouts dynamiques de OSGi �tant rel�gu�s � l'ex�cutions.

    Je pense qu'une �volution de OSGi devra d�cid� de l'interpr�tation � faire lors du d�ploiement de modules java9 dans un conteneur.
    l'ent�te du module contient les informations import/export, mais pas de notion de version. tout comme aujourd'hui lorsqu'un bundle importe un package sans sp�cifier de version, c'est la version la plus r�cente disponible qui est li�.

    J'ajoute que l'alliance OSGi s'�tonne de l'absence de version dans les import/export et de la dissym�trie des import/export. l'exp�rience de l'alliance dans le domaine � montr� qu'un syst�me sym�trique �tait beaucoup plus facile � impl�menter et � g�rer. importer des modules et exporter des packages n'est pas pour l'alliance une bonne chose. un autre probl�me not� est l'impossibilit� des faire �voluer la classe module-info.java. le fichier meta-info des jar laissait la possibilit� d'ajouter des clefs qui n'�tait interpr�t�es que par ceux qui s'y int�ressait et �tait ignor�es par la JVM standard. Les infos du module sont compil� dans une classe module-info qui n'est pas extensible qui ne peut �tre d�riv�e et qui ne supporte pas les annotations.
    A+JYT

  9. #9
    Expert �minent
    Avatar de adiGuba
    Homme Profil pro
    D�veloppeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par d�faut
    Citation Envoy� par esperanto Voir le message
    tant que les gens pourront �diter le fichier � la main, il se produira toujours des cas o�, en l'ouvrant avec un �diteur mauvais ou mal param�tr�, on se retrouvera au milieu du document avec un mauvais caract�re entra�nant le basculement de l'encodage pour l'ensemble du document.
    En m�me temps un fichier mal encod� peut d�j� poser des probl�mes, m�me sous Java 8.
    Je ne vois pas trop le probl�me avec ��.

  10. #10
    Membre tr�s actif

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    608
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 608
    Par d�faut
    Bon... je vais faire Braillou-Braz, je ne pas content de cette arriv�e d'un Java 9, peu exploitable.

    maven-enforcer-plugin:1.4.1 bloque toute compilation par Maven des projets Spring boot (la d�pendance Apache commons-lang2 est responsable de cet incident, d'apr�s ce que j'ai compris, traquez-l� au plus t�t),
    Ailleurs, des tests unitaires s'arr�tent en disant : "On ne veut plus continuer, JAXB n'existe plus !". Sans doute, il me faudra bidouiller le param�trage des plugins surefire et failsafe. Et vous aussi. Et lui aussi, et eux aussi, et ...
    Merci pour le boulot additionnel !

    Je ne comprends pas la d�marche,

    Il n'auraient pas pu faire un fonctionnement de Java 9 normal d'abord
    et g�nial ensuite, seulement sur demande ?

    Parce que le mode g�nial emp�che de lui faire faire fonctionner quoi que ce soit � cet instant.

    Absolument rien ne d�marre avec Java 9.
    Je suis pass� du Java 1.2 � mes d�buts � Java 9 aujourd'hui. Et j'ai jamais vu �a. On est pas � 99% - 100% de bon fonctionnement comme on l'a souvent eu,
    on est � quoi ? 10, 20% des trucs qui tournent avec sans manipulation ? Et 40% avec ? Tous les �diteurs cavalent pour essayer de trouver comment r�pondre aux plantages induits par Java 9.
    S'ils ont de la chance, une communication sur un forum suffira. Sinon : repackaging et relivraison pour tout le monde.

    Tout le monde logiciel, version +1 de tous les artefacts du monde... et de leurs d�pendances... et sous d�pendances.
    Merci Java ! Y avait vraiment besoin de �a !

    Des g�nies.

  11. #11
    Membre confirm�
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    112
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 112
    Par d�faut
    Sur un petit programme je suis pass� de 60/75Mo d'occupation m�moire par la JVM en Java8, � 14Mo en Java9; mais je n'ai pas vu de diff�rences sur le temps de lancement.
    Quand on passe son code en modules �a permet de mieux appr�hender sa structure globale j'ai trouv�, notamment � cause des d�pendances circulaires.
    Sinon REPL et les fabriques de collections me parlent bien.

  12. #12
    Membre Expert Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 447
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 447
    Par d�faut
    Citation Envoy� par grunt2000 Voir le message
    Bon... je vais faire Braillou-Braz, je ne pas content de cette arriv�e d'un Java 9, peu exploitable.

    ...

    Des g�nies.
    Les probl�mes que tu as cit� sont tous issus de l'�cosyst�me maven, pourquoi bl�mer java 9?

    Il y a d'ailleurs une page de status https://cwiki.apache.org/confluence/...ava+9+-+Jigsaw avec la liste des issues ouverts et des versions minimum requises.

    Ce qui est g�nial c'est de migrer day one sans v�rifier l'�tat des syst�mes d�pendant (vu les plugins maven en M1, c'est tout de m�me clair que ce n'est pas mature si on prend la peine de v�rifier) et ensuite rejeter la faute
    Une migration, �a se planifie: migration JRE, test, migration JDK test, migration bytecode, test, tout �a en un jour avec des d�pendances m�me pas en RC, en esperant que �a passe cr�me, vraiment?...

  13. #13
    Membre tr�s actif

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    608
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 608
    Par d�faut
    L� je bl�me parce que les cons�quences elles sont d�j� pr�visibles.
    Vu l'impact qu'il a, tout va devoir �tre refait.

    D�j� : Maven, Eclipse, Tomcat, qui dysfonctionnent, et ce sont seulement les trois premiers que j'ai essay�.
    Et c'est par transitivit� que Maven est en cause : l�, ce sont des artefacts populaires (apache commons-lang 2.x) qui cassent.

    il ne suffit pas que les artefacts soient mis � disposition corrig�s ni seulement Maven, il faut aussi que les �diteurs recompilent, re-packagent et relivrent tout � tout le monde. Ce n'est pas rien !
    Tout en faisant des scripts de lancement qui disent :

    Quelle est la version de Java que je trrouve sur le syst�me ?
    Si c'est la 8 ou la 7, je lance avec java maClasseMain
    Si c'est la 9, je lance avec java maClasseMain --charge�a

    Et �a pour la totalit� du parc logiciel Java install� dans le monde. Tout ce qui a des annotations, de l'XML � et au bas mot 60% des applications du monde � plante d'autorit�.

    C'est loin d'�tre indolore � faire :
    parce que si une application a �t� cr��e en 2013 avec un artefact-tierce-partie version 1.6 et ne fonctionne plus, c'est peut-�tre seulement l'artefact.tierce.partie version 3.7, bient�t disponible, qui sera compatible. Et voici 2 versions majeures de l'artefact � prendre en compte. Est-ce seulement possible ?

    L'impact de Java 9, � mes yeux, il est tr�s tr�s lourd.
    Que ce soit maintenant ou dans un an, ce travail restera � faire. Et il est pesant.

    La preuve : Maven n'a pas �t� pris au d�pourvu par Java 9 et sur le lien que tu indiques tu lis que ne fonctionnent pas � cet instant les plugins :
    maven-ear-plugin, maven-ejb-plugin, maven-enforcer-plugin, maven-javadoc-plugin, maven-war-plugin
    Le jour J, malgr� toutes les milestones qu'ils ont certainement exo�riment� pour �prouver Maven face � Java 9, ils ne sont pas pr�ts.
    Accordes-moi qu'au moins eux, ils l'auraient d�. Dans les derni�res RC, Maven aurait du pouvoir �tre �prouv�, ses plugins majeurs rapidement rectifi�s et redistribu�s, et �a n'a pas pu �tre le cas.
    Maven n'a pas �t� pris au d�pourvu par Java 9, donc, mais il a �t� et est encore dans l'incapacit� de le suivre � cet instant.
    C'est un pr�sage sombre.

    �a donne l'�tendue du chantier.
    Alors qu'il aurait suffit de laisser Java continuer � fonctionner comme il le faisait, en chargeant toujours tout, et seulement sur un JAVA_OPTS param�tr� par l'administrateur qui l'aurait vraiment voulu, dire : je me mets en mode "Je ne charge que le minimum."
    L� on impose � toutes les applications de vivre sans oxyg�ne. On l'impose. Et elles ne fonctionnent effectivement pas.
    Qui a r�ussi � lancer quoi avec Java 9, aujourd'hui ? Il y a t-il seulement une application compil�e avant Juillet 2017 qui fonctionne sans intervention ? Je me le demande.

    C'est pour favoriser Python et C# cette belle d�monstration ? Ce n'est pas parce que c'est Java nouvelle version que c'est bien et bien fait. L�, c'est cuisant.
    C'est un m�lange d'autoritarisme et de b�tise. Je l'�cris, et je pense que je ne serai pas le seul dans les prochaines semaines � avoir cet avis.

    C'est un mauvais choix qui ne tardera pas � �tre marquant dans le monde logiciel, et qui restera dans les annales.

  14. #14
    Membre �m�rite
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    D�tails du profil
    Informations personnelles :
    �ge : 50
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Par d�faut JDK 9 que pour 64 bits
    JDK 9 n'est pas disponible pour 32 bits, non mais allo quoi!

  15. #15
    Membre �m�rite
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    D�tails du profil
    Informations personnelles :
    �ge : 50
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Par d�faut
    non mais s�rieux, il n'y aura pas de version 32 bits ? pffffffffffffff ca devient lourd

  16. #16
    Expert confirm�
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 61
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : Urbaniste
    Secteur : Sant�

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par d�faut
    Citation Envoy� par grunt2000 Voir le message
    L� je bl�me parce que les cons�quences elles sont d�j� pr�visibles.
    Vu l'impact qu'il a, tout va devoir �tre refait.

    D�j� : Maven, Eclipse, Tomcat, qui dysfonctionnent, et ce sont seulement les trois premiers que j'ai essay�.
    Et c'est par transitivit� que Maven est en cause : l�, ce sont des artefacts populaires (apache commons-lang 2.x) qui cassent.
    ....

    il faut mod�rer un peut tout �a
    Karaf avec commons-lang2 jaxb etc. fonctionne sous java9

    tout n'est pas encore test� mais �a fonctionne. ok il a fallu travailler un peu pour y arriver (pas sans adaptation) mais �a fonctionne.

    en entreprise lorsqu'un soft � �t� d�velopp� pour une version de JAVA on �vite de la faire fonctionner avec une autre.
    ou alors on passe par une phase de validation.

    l'arriv� de java9 ne change pas la donne.
    A+JYT

  17. #17
    Membre Expert Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 447
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 447
    Par d�faut
    Citation Envoy� par grunt2000 Voir le message
    ... D�j� : Maven, Eclipse, Tomcat, qui dysfonctionnent, et ce sont seulement les trois premiers que j'ai essay�. ...
    Et?..., c'est le premier jour pour tout le monde, que ce soit maven, eclipse (intellij n'a pas ce probl�me soit dit en passant) ou tomcat ne change rien, ils ont besoin de temps pour arriver � maturit�, tes remarques auraient �t� justifi�es pour une mineur, mais certainement pas pour une majeur.

    C'est tout simplement irresponsable de tenter de migrer quoi que ce soit le jour de sortie d'une major, que ce soit java, .net, un middleware ou m�me un OS, d'autant plus si les composants de l'�cosyst�me ne sont pas encore stables (on ne va quand m�me pas mettre du .M1 dans une cha�ne de production tout de m�me...)

  18. #18
    Membre tr�s actif
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    510
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 510
    Par d�faut
    Apres tous les commentaires, sa ye, je peux dire que java a fait un churn .

  19. #19
    Membre tr�s actif
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    510
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 510
    Par d�faut
    A chaque fois, je vois une nouvelle version d'un language sortir. A chaue fois, c'est la meme histoire, vous etes pas au courant, on vous a pris par la gorge.
    Come on guys, la construction de Java 9 etait la, avant la release de Java 8.

  20. #20
    Expert confirm�
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 61
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : Urbaniste
    Secteur : Sant�

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par d�faut
    Citation Envoy� par epsilon68 Voir le message
    JDK 9 n'est pas disponible pour 32 bits, non mais allo quoi!
    openjdk pour aarch32 est toujours d'actualit�.
    A+JYT

Discussions similaires

  1. Java 8 est disponible, la plate-forme se met aux expressions lambdas
    Par Hinault Romaric dans le forum G�n�ral Java
    R�ponses: 32
    Dernier message: 24/12/2014, 14h26
  2. Quelle API Java pour un jeu de plate forme 2D ?
    Par dawadam dans le forum API graphiques
    R�ponses: 0
    Dernier message: 16/06/2011, 22h25
  3. [java] Moteur de jeu de plate-forme
    Par luckyvae dans le forum Projets
    R�ponses: 12
    Dernier message: 15/08/2007, 22h06
  4. R�ponses: 4
    Dernier message: 18/10/2006, 15h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo