microJUG
СтатистикаМысли о Java. Основной канал: @miniJUG Буст: https://t.me/microJUG?boost Чат: https://t.me/micro_JUG Таблица JEP'ов: https://minijug.org/jeps.html
- Последний пост
- 9 авг.
- Последнее чтение
- 14 авг.
- Постов за неделю
- 0
- Всего постов
- 28
- Тип
- открытый
- Язык
- русский
- Категория
- Технологии (по похожим)
- В каталоге с
- 12 авг.
- 1/24сутки в ленте
- 956
- 1/48двое суток
- 1 095
- 1/72трое суток
- 1 181
Оценка по просмотрам недавних постов: пост набирает почти всё за первые сутки.
Посты
Появилась первая Early-Access сборка JDK 28, включающая в себя JEP 401: Value Objects (Preview). Можно скачивать и тестировать ваши приложения. Напоминание: классы JDK вроде Integer и LocalDate не будут value классами в рантайме, если не указать ключ --enable-preview. #valhalla
Коммит "Implement JEP 401: Value Objects (Preview)" смёржен в главную ветку репозитория OpenJDK #valhalla
видео или голосовое, без подписи
видео или голосовое, без подписи
JDK x86_64 станет deprecated for removal на macOS Появился черновик JEP: Deprecate the macOS/x64 Port for Removal. Мотивация: Apple перевёл всё своё железо на архитектуру AArch64. Поэтому поддержка со стороны Oracle будет прекращена, т.к. это требует значительных ресурсов и усилий.
Официально. Valhalla попадёт в JDK 28. Пулл-реквест первого превью JEP 401: Value Classes and Objects сейчас находится на ревью на Гитхабе. В нём около 2800 коммитов и почти 200 тысяч строк кода. #valhalla
Результаты опроса по версиям Java. • Java 25 ворвалась с 25%. • Java 21 прибавила +7%, хотя это предыдущий LTS. Сейчас это самая используемая версия Java. • Java 17 столько уже убавила (-7%). Но всё ещё имеет заметную долю и пока что выше, чем Java 25. • Java 8 и 11 болтаются в районе 10% и очень медленно умирают (но до нуля вряд ли когда-то дойдут). • Groovy болтается в своём районе 4-5%, Scala – 2-3%. • Kotlin продолжает уверенно держаться в районе 20%.
❌ Oracle хочет полностью запретить контрибьютить в JDK код, сгенерированный с помощью AI. Марк Рейнолд написал в рассылку письмо, где рассказал, что Oracle работает над черновиком политики, регулирующей использование генеративного AI для вклада в OpenJDK. Однако пока эта политика не будет утверждена комитетом, уже сейчас комитет принял временную политику, которая запрещает вклады, содержащие AI-контент: Вклады в сообществе OpenJDK не должны содержать контент, сгенерированный полностью или частично большими языковыми моделями, диффузионными моделями и похожими системами глубокого обучения. Контент включает в себя исходный код, текст, изображения в Git-репозиториях OpenJDK, пулл-реквестах на GitHub, e-mail сообщениях, wiki-страницах и в JBS. Исключением является использование AI в личных целях: изучение, отладка, ревью, исследования. Причины, почему AI было решено запретить, можно подробно почитать здесь. Если коротко, то это сложность ревьюинга и поддержки больших объёмов кода, сгенерированных через AI. Также есть проблемы с нарушением авторских прав: инструменты AI могут быть обучены на контенте с копирайтом, поэтому сгенированный код может нарушать лицензии. #ai
В JVM есть такая опция -Xms. Вы знаете, что она точно означает? Некоторые думают, что это минимальный размер кучи. Другие - что это начальный размер кучи (при старте JVM). Но какой вариант правильный? Это всё-таки минимальный или начальный размер кучи? Ответ: и минимальный, и начальный. Откуда вообще взялась путаница? А вот отсюда. Если посмотреть, что пишет в хелпе сам JDK, то там будет следующее: > java --help-extra ... -Xms<size> set initial Java heap size -Xmx<size> set maximum Java heap size Но при этом в онлайн документации на сайте Oracle написано по-другому: -Xms size Sets the minimum and the initial size (in bytes) of the heap. This value must be a multiple of 1024 and greater than 1 MB. Append the letter k or K to indicate kilobytes, m or M to indicate megabytes, or g or G to indicate gigabytes. The following examples show how to set the size of allocated memory to 6 MB using various units: Это более корректно. Несоответствие заметили буквально недавно и пофиксили лишь в Java 25. Теперь хелп JDK пишет правильно: > java --help-extra ... -Xms<size> set minimum and initial Java heap size -Xmx<size> set maximum Java heap size P.S. Есть ещё опция -Xmn, но она означает совсем другое: она указывает начальный (и минимальный) размер молодого поколения. Эта опция используется редко.
видео или голосовое, без подписи
🤯 Проект Valhalla было решено свернуть. Брайан Гетц написал письмо [1], где подробно описал решение свернуть проект: Это было очень тяжёлое для нас решение. Мы потратили на внедрение value-типов в Java 12 лет. Мы сделали несколько рабочих прототипов, но ни один из них нас не устроил полным образом. Мы думали, что сможем внедрить value-типы таким образом, что это не сломает обратную совместимость. Но у нас не получилось. Это слишком инвазивное изменение. Брайан также сказал: Есть и хорошие новости. Проект отнимал у нас много сил и времени. Но сейчас мы можем переключиться на фичи, которым уделяли мало внимания. Например, мы хотим наконец-то вывести из preview Structured Concurrency. На текущий момент проект Valhalla пока что помечен как активный. Но скоро он уйдёт в архив. Последний билд Valhalla всё ещё доступен для скачивания. [1] https://www.youtube.com/watch?v=dQw4w9WgXcQ
Брайан Гетц предложил внести изменения в JEP 468: Derived Record Creation (Preview). Ранее предложенный синтаксис: stats = stats with { count = count + 1; } Предлагается заменить на следующий: stats = stats.new(count: count+1);
В этому году планируются две новые языковые фичи. Черновиков JEP ещё нет. Pattern Assignment Вместо: record ColorPoint(int x, int y, RGB color) {} void somethingImportant(ColorPoint cp) { if (cp instanceof ColorPoint(var x, var y, var c)) { …
🤷♂️ Вы не поверите, но они опять хотят добавить имплементацию JavaScript в Java. Правда на этот раз движок с нуля никто писать не собирается. И воскрешать Nashorn тоже. Вместо это хотят сделать всё поверх существующего движка V8. Вся работа будет идти в проекте Detroit. #javascript
В Java 26 JavaDoc будет поддерживать тёмный режим. JavaDoc для Java 26 уже доступен, так что уже можно потестить. #javadoc
Появился первый черновик JEP проекта Babylon: https://openjdk.org/jeps/8361105 #babylon
видео или голосовое, без подписи
Какой из этих островов Ява?
В этому году планируются две новые языковые фичи. Черновиков JEP ещё нет. Pattern Assignment Вместо: record ColorPoint(int x, int y, RGB color) {} void somethingImportant(ColorPoint cp) { if (cp instanceof ColorPoint(var x, var y, var c)) { // important code } } Можно будет писать по-человечески: void somethingImportant(ColorPoint cp) { ColorPoint(var x, var y, var c) = cp; // Pattern Assignment! // important code } Constant Patterns Вместо: void code(Shape s) { switch (s) { case Point(var x, var y) when x == 0 && y == 0 —> { // special code for origin } case Point(var x, var y) -> { // code for non-origin points } ... } ... } Можно будет писать: void code(Shape s) { switch (s) { case Point(0, 0) -> { // special code for origin } case Point(var x, var y) -> { // code for non-origin points } ... } ... }
Вышел Spring Framework 7.0 #spring