Oracle Technologie annonce la sortie de JDK 19 avec des nouvelles proprits systme, pour System.out et System.err et la prise en charge d’Unicode 14.0

Oracle Technologiea annonc que le JDK 19 tait dsormais complet, car il a atteint la phase initiale de lancement. Sept fonctionnalits pour cette version, notamment la concurrence structure, les modles d’enregistrement, un aperu d’une fonction trangre et d’une API de mmoire, ainsi que la prise en charge de l’architecture de jeu d’instructions (ISA) Linux/RISC-V. Java 19 sera disponible en septembre 2022.

Conformment au calendrier de sortie du JDK 19, Mark Reinhold, architecte en chef du groupe Java Platform d’Oracle, a annonc que les ajouts la prochaine version du kit de dveloppement sont termins. Pour rappel, une nouvelle version standard de Java est publie tous les six mois. Avec cette dernire tape dans le processus de publication de la version standard de Java, les autres fonctionnalits prvues, telles que les gnriques universels et les objets de valeur, devront attendre une version ultrieure de la plateforme. Les nouvelles fonctionnalits du JDK 19 comprennent :

Schmas de signature

security-libs/javax.net.ssl

De nouvelles API Java SE, javax.net.ssl.getSignatureSchemes() et javax.net.ssl.setSignatureSchemes(), ont t ajoutes pour permettre aux applications de personnaliser les schmas de signature utiliss dans les connexions TLS ou DTLS individuelles. Le fournisseur sous-jacent peut dfinir les schmas de signature par dfaut pour chaque connexion TLS ou DTLS.

Les applications peuvent galement utiliser les proprits systme existantes jdk.tls.client.SignatureSchemes et/ou jdk.tls.server.SignatureSchemes pour personnaliser les schmas de signature par dfaut spcifiques au fournisseur. S’ils ne sont pas nuls, les schmas de signature transmis la mthode setSignatureSchemes() remplaceront les schmas de signature par dfaut pour les connexions TLS ou DTLS spcifies.

Un fournisseur peut ne pas avoir t mis jour pour prendre en charge les nouvelles API et dans ce cas, il peut ignorer les schmas de signature dfinis. Le fournisseur JDK SunJSSE prend en charge cette mthode. Il est recommand aux fournisseurs tiers d’ajouter la prise en charge de ces mthodes lorsqu’ils ajoutent la prise en charge du JDK 19 ou des versions ultrieures.

Nouvelles proprits systme pour System.out et System.err

core-libs/java.lang

Deux nouvelles proprits systme, stdout.encoding et stderr.encoding, ont t ajoutes. La valeur de ces proprits systme est l’encodage utilis par les flux de sortie standard et d’erreur standard (System.out et System.err). Les valeurs par dfaut de ces proprits systme dpendent de la plateforme. Les valeurs prennent la valeur de la proprit native.encoding lorsque la plate-forme ne fournit pas de flux pour la console. Les proprits peuvent tre remplaces par l’option de ligne de commande du lanceur (avec -D) pour les dfinir en UTF-8 lorsque cela est ncessaire.

Prise en charge d’Unicode 14.0

core-libs/java.lang

Cette version met jour la prise en charge d’Unicode 14.0, ce qui inclut les lments suivants : la classe java.lang.Character prend en charge la base de donnes de caractres Unicode du niveau 14.0, ce qui ajoute 838 caractres, pour un total de 144 697 caractres. Ces ajouts incluent 5 nouveaux scripts, pour un total de 159 scripts, ainsi que 37 nouveaux caractres emoji. Les classes java.text.Bidi et java.text.Normalizer prennent en charge le niveau 14.0 des annexes standard Unicode, respectivement #9 et #15. Le paquet java.util.regex prend en charge les grappes de graphmes tendues bases sur le niveau 14.0 de l’annexe standard Unicode #29. Pour plus de dtails sur Unicode 14.0, reportez-vous la note de publication du Consortium Unicode.

Prise en charge de la liaison de canal HTTPS pour Java GSS/Kerberos

core-libs/java.net

La prise en charge des jetons de liaison de canal TLS pour l’authentification Negotiate/Kerberos sur HTTPS a t ajoute via javax.net.HttpsURLConnection. Les jetons de liaison de canal sont de plus en plus ncessaires comme forme de scurit renforce. Ils fonctionnent en communiquant d’un client un serveur la comprhension par le client de la liaison entre la scurit de la connexion, reprsente par un certificat de serveur TLS, et les informations d’authentification de niveau suprieur, telles qu’un nom d’utilisateur et un mot de passe. Le serveur peut alors dtecter si le client a t tromp par un MITM et interrompre la session ou la connexion. Cette fonctionnalit est contrle par une nouvelle proprit systme jdk.https.negotiate.cbt qui est dcrite en dtail dans Proprits de mise en rseau.

Formats de date et d’heure supplmentaires

core-libs/java.time

Des formats de date/heure supplmentaires sont maintenant introduits dans les classes java.time.format.DateTimeFormatter/DateTimeFormatterBuilder. Dans les versions prcdentes, seuls 4 styles prdfinis, savoir FormatStyle.FULL/LONG/MEDIUM/SHORT, taient disponibles.

Maintenant, les utilisateurs peuvent spcifier leur propre style flexible avec la nouvelle mthode DateTimeFormatter.ofLocalizedPattern(String requestedTemplate). Par exemple, DateTimeFormatter.ofLocalizedPattern(“yMMM”).

produit un formateur capable de formater une date d’une manire localise, comme “Feb 2022” dans la locale amricaine, alors que “2022年2月” dans la locale japonaise. La mthode DateTimeFormatterBuilder.appendLocalized(String requestedTemplate) est galement fournie.

Support de la protection PAC-RET sur Linux/AArch64

hotspot/compilateur

Le support de la protection PAC-RET sur la plateforme Linux/AArch64 a t introduit. Lorsqu’il est activ, OpenJDK utilisera les caractristiques matrielles de l’extension PAC (Pointer Authentication Code) ARMv8.3 pour se protger contre les attaques ROP (Return Orientated Programming). Pour plus d’informations sur l’extension PAC, voir “Providing protection for complex software” ou la section Pointer authentication in AArch64 state dans le ARM Arm.

Pour profiter de cette fonctionnalit, OpenJDK doit d’abord tre construit avec l’option de configuration –enable-branch-protection en utilisant GCC 9.1.0+ ou LLVM 10+ . Ensuite, l’indicateur d’excution -XX:UseBranchProtection=standard activera la protection PAC-RET si le systme la prend en charge et si le binaire java a t compil avec la protection des branches active ; sinon l’indicateur est ignor en silence. Alternativement, -XX:UseBranchProtection=pac-ret activera galement la protection PAC-RET, mais dans ce cas, si le systme ne la prend pas en charge ou si le binaire java n’a pas t compil avec la protection des branches active, un avertissement sera imprim.

Prise en charge de l’architecture de jeu d’instructions Linux/RISC-V

RISC-V est une architecture de jeu d’instructions (ISA) RISC libre et open source, conue l’origine l’Universit de Californie, Berkeley, et maintenant dveloppe en collaboration sous le parrainage de RISC-V International. Elle est dj prise en charge par un large ventail de chanes d’outils de langage. Selon l’quipe du JDK, avec la disponibilit croissante du matriel RISC-V, un portage du JDK serait prcieux. Avec le portage Linux/RISC-V, Java obtiendrait la prise en charge d’un jeu d’instructions matrielles qui est dj pris en charge par un large ventail de chanes d’outils de langage.

RISC-V est en fait une famille d’ISA connexes. Le portage Linux/RISC-V ne prendrait en charge que la configuration RV64GV de RISC-V, un ISA 64 bits usage gnral qui inclut des instructions vectorielles. Les dveloppeurs de Java pourraient envisager d’autres configurations RISC-V l’avenir.

Gnration automatique de l’archive CDS

hotspot/runtime

L’option JVM -XX:+AutoCreateSharedArchive peut tre utilise pour crer ou mettre jour automatiquement une archive CDS pour une application. Par exemple : java -XX:+AutoCreateSharedArchive -XX:SharedArchiveFile=app.jsa -cp app.jar App L’archive spcifie sera crite si elle n’existe pas, ou si elle a t gnre par une version diffrente du JDK. Dans une interview accorde The Register, Georges Saab, SVP d’Oracle charg du dveloppement de la plate-forme Java et prsident du conseil d’administration d’OpenJDK, a dclar qu’il s’agissait de la dixime version ralise dans le cadre du cycle de publication de six mois.

Toutes ces versions sont sorties la date et l’heure prvues , a dclar Saab. Il n’y a eu aucun retard depuis que nous sommes passs ce modle, ce qui, comme vous le savez probablement, n’tait pas toujours le cas avec le modle prcdent que nous avions. Saab a dclar que le rsultat est de pouvoir mettre l’innovation entre les mains des dveloppeurs plus rapidement que ce qui tait possible pendant les cycles de publication pluriannuels.

Par le pass, ils devaient souvent attendre assez longtemps pour obtenir des nouveauts en Java, puis ils en recevaient trop, d’un seul coup , a-t-il expliqu. Nous sommes conscients que tout le monde n’a pas envie de tout rebaser tous les six mois , a ajout Saab. C’est pourquoi nous avons propos un abonnement Java SE pour un support long terme, afin de permettre aux entreprises qui le souhaitent de rester sur une seule version et de recevoir des mises jour tous les trimestres, pour assurer leur scurit.

Le cycle de publication acclr de Java ne signifie pas ncessairement que les nouvelles fonctionnalits apparaissent soudainement. Elles font souvent surface en tant que technologies de prvisualisation, afin de susciter des ractions de la communaut et des ajustements dans les versions suivantes. Nous n’avons pas trouv un moyen magique de faire trois ou quatre ans de travail en six mois , a expliqu Saab. Ainsi, le processus de dveloppement de Java est devenu itratif et participatif, mme s’il permet aux membres de la communaut d’attendre la sortie des versions pour que les fonctionnalits mrissent.

Les amliorations sur lesquelles se concentre la communaut Java ont t organises autour de thmes spcifiques. titre d’exemple , explique Saab, le projet Amber vise amliorer le langage et la syntaxe Java, afin de les rendre plus modernes, plus succincts, plus faciles utiliser et, surtout, plus faciles lire et comprendre. Leyden vise amliorer le temps de dmarrage et le temps de chauffe. Loom porte sur l’volutivit et fait passer l’volutivit de Java au niveau suprieur.

Dans Java 19, ces projets thmatiques sont exprims dans diverses propositions d’amlioration de Java, ou JEP.

Source : Java

Et vous ?

Quel est votre avis sur le sujet ?

Voir aussi :

JDK 18, l’implmentation de rfrence de Java 18, est dsormais disponible, elle propose comme Python, Ruby, PHP ou encore Erlang, un mini serveur Web prt l’emploi

JDK 19 : les nouvelles fonctionnalits de Java 19 incluent la concurrence structure, les modles d’enregistrement et l’aperu d’une API de fonction et de mmoire trangres

x