
Aujourd'hui, une nouvelle version de Java est lancée - Java / JDK 13. La course a commencé avec la sortie printanière de JDK 12, le 19 mars, et la fourche de la branche principale a eu lieu le 13 juin. Quelqu'un que nous avons perdu en cours de route, comme JEP 343: Packaging Tool , mais en général, tout est normal et il est temps d'en récolter les fruits.
Vous pouvez télécharger la nouvelle version ici . Sous la coupe, vous trouverez un petit aperçu des nouveaux JEP inclus dans cette version.
Comme vous le savez, dans JDK 11, nous avons un nouveau GC - ZGC brillant, évolutif, rapide et à faible pause. Eh bien, ou du moins c'est l'idée. Un problème assez grave en lui était qu'il se comportait comme un chien dans la crèche et n'abandonnait pas la mémoire occupée, même si elle n'était pas nécessaire. Shenandoah et G1 ont commencé à partager il y a longtemps et le comportement du ZGC semblait se serrer la main. Eh bien, maintenant tout est corrigé, juste après la temporisation dans -XX:ZUncommitDelay
nous -XX:ZUncommitDelay
nos octets.
La fonction CDS elle-même vous permet d'ajouter des classes chargeables à une archive commune, accélérant ainsi le démarrage et réduisant la quantité de RAM gaspillée. Malheureusement, avant qu'il ne soit en quelque sorte un peu stupide, vous deviez vous-même redémarrer l'application à plusieurs reprises, formant une liste de ces classes, puis vous jetez également les mains sur cette liste. Désormais, les robots fonctionnent, pas les humains: lorsque l'option -XX:ArchiveClassesAtExit
, les classes sont automatiquement vidées dans l'archive après un arrêt normal de l'application.

Stuart Marks - Doctor Deprecator, membre consultant du personnel technique d'Oracle + olegchir sur Oracle Code One, quelques minutes après l'annonce de Java 13
Dans tous les javas (désormais obsolètes), net.Socket
et java.net.ServerSocket
basés sur un mélange infernal de Java et de code C, à partir duquel même les théoriciens de la performance les plus chevronnés pleurent. Le problème a été résolu en écrivant une nouvelle implémentation utilisant la même infrastructure interne que NIO, de sorte qu'il n'a presque pas besoin de son propre code natif. Eh bien et pourtant, ce n'est pas un héritage, ils ont tout écrit magnifiquement et adapté pour passer aux fibres du projet Loom. Si c'est intéressant sous le capot, alors vous devez regarder la classe NioSocketImpl
.
Nous continuons de préparer l'arrivée de la correspondance de motifs. Switch Expressions est la première fonctionnalité qui vous permet d'écrire du code du formulaire:
int j = switch (day) { case MONDAY -> 0; case TUESDAY -> 1; default -> { int k = day.toString().length(); int result = f(k); yield result; } };
Comme nous le voyons dans l'exemple, depuis JDK 12, nous avons un changement cosmétique: la break
changé pour yield
, maintenant tout est comme tous les gens normaux.
JEP 326: Raw String Literals est passé sous le couteau, mais son entreprise continue! "Dites au camarade Staline - une terrible erreur s'est produite . " Les blocs de texte est une nouvelle fonctionnalité d'aperçu qui vous permet de vous passer de l'échappement, il formate les lignes de manière pratique, prépare du café avec de la mousse et donne miraculeusement le contrôle sur le format de la chaîne résultante.
Plus banal, maintenant tout bourreau sans avoir besoin d'apprendre JSP peut écrire quelque chose comme:
String html = """ <html> <body> <p>Hello, world</p> </body> </html> """;
Un DBA débutant pourra construire une carrière en commençant par le code suivant:
String query = """ SELECT `EMP_ID`, `LAST_NAME` FROM `EMPLOYEE_TB` WHERE `CITY` = 'NEW DEHLI' ORDER BY `EMP_ID`, `LAST_NAME`; """;

Cela semble un peu menaçant
Avertissement
Un aperçu JEP est une petite partie de ce que vous pouvez et devez dire sur le nouveau Java. Cet examen complet devrait également inclure un examen complet des innovations tactiques intéressantes et un aperçu des bogues dans le bugtracker. Peut-être que quelqu'un ( lany , ay!) Pourra continuer ce travail. Mon équipe et moi sommes maintenant à Oracle Code One - malheureusement, assis sur des rapports ou appuyé sur le stand Liberica JDK - il est assez difficile d'écrire quelque chose aussi longtemps. Dans tous les cas, c'est un sujet pour un site hub complètement différent.

Brian Goetz - Architecte pour le langage Java chez Oracle + olegchir sur Oracle Code One
Et nous avons également une conférence Joker où vous pouvez discuter de la nécessité de passer à Java 13, du moment de la transition vers ZGC, de la quantité de stock de pop-corn nécessaire après l'introduction des blocs de texte et d'autres questions pertinentes. Les billets, comme toujours, peuvent être achetés sur le site officiel .