LINUX.ORG.RU

Вышла Java 21 LTS

 , ,


0

7

Вышла общедоступная версия Java 21. Java 21 является LTS-релизом, а значит у него будут выходить обновления как минимум 5 лет с момента выхода.

Основные изменения:

  • String Templates (Preview)
  • Sequenced Collections
  • Generational ZGC
  • Record Patterns
  • Pattern Matching for switch
  • Foreign Function & Memory API (Third Preview)
  • Unnamed Patterns and Variables (Preview)
  • Virtual Threads
  • Unnamed Classes and Instance Main Methods (Preview)
  • Scoped Values (Preview)
  • Vector API (Sixth Incubator)
  • Deprecate the Windows 32-bit x86 Port for Removal
  • Prepare to Disallow the Dynamic Loading of Agents
  • Key Encapsulation Mechanism API
  • Structured Concurrency (Preview)

Examples at HowToDoInJava

Примеры на Хабре

>>> Подробности

★★★★

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 3)

Java – это язык для Android приложений и модов на Minecraft. Android так и застрял на Java 8, а Minecraft пока не обновился.

И что с этим делать?

a1ba
()

Если Java так хороша, почему тогда на десктопах нет ни одного java-приложения? (IDE – инструмент разработки)

MoldAndLimeHoney
()
Ответ на: комментарий от MoldAndLimeHoney

Потому что, все ушли в веб, когда джава стала юзабельна для десктопа. В бизнесе на джава много прикладного ПО для решения конкретных задач.

foror ★★★★★
()
Ответ на: комментарий от Antonio88

Кто-нибудь точно пишет. Я думаю, даже на 1С кто-нибудь пишет.

vbr ★★★
()
Ответ на: комментарий от LongLiveUbuntu

Если уж нужна штабильность, я считаю, надо останавливаться на четвёрочке. Генерики были ошибкой.

vbr ★★★
()
Ответ на: комментарий от mx__

Ну у меня на десктопе есть игры на жабе(Minecraft и Ministry), но это вроде как не приложения.

Werenter ★★★
()

Джаве долгие лета, а так тухленько. Единственное, фанбой ОП немного скрашивает чятик, но тоже так себе.

Virtuos86 ★★★★★
()
Ответ на: комментарий от zx_gamer

Изыди. На старых процессорах, по-твоему, что в yandex маркете тормозит так, что он загрузиться не может? Уж точно не примитивный JS код, и памяти достаточно.

Shadow ★★★★★
()
Ответ на: комментарий от Antonio88

Любимый transmission remote клиент на паскале. Использую и на онтопике, и на офтопике.

Shadow ★★★★★
()
Ответ на: комментарий от MOPKOBKA

Будто у них интерфейс на вейланде лагать перестанет.

Shadow ★★★★★
()
Ответ на: комментарий от MoldAndLimeHoney

Если Java так хороша, почему тогда на десктопах нет ни одного java-приложения? (IDE – инструмент разработки)

Есть предположение что это нах никому не надо потому что жаба для другого

VKraft ★★
()
Ответ на: комментарий от mx__

DBeaver и UMLet - это не IDE

Vuze - правда я почти перестал что-то качать, но по прежнему пожалуй лучший в своей нише.

ps если считать podman как пример софта на go на твоей машине,
то можно посчитать весь hadoop зоопарк, как пример java программы на локальной машине :)

Yilativs ★★★★
() автор топика

Хорошо что проект развивается и не зацикливается на синтаксическом сахаре.

на var можно было даже и не начинать

vstartsev
()
Последнее исправление: vstartsev (всего исправлений: 1)
Ответ на: комментарий от MoldAndLimeHoney

Если Java так хороша, почему тогда на десктопах нет ни одного java-приложения? (IDE – инструмент разработки)

Как раз IDE - это и есть самое сложное ПО на desktop.
По этому Idea, Eclipse, Netbeans на java

много ты знаешь ide на питоне или на go ? ;-)
даже на js вон сделали vscode (правда ему до idea как до Пекина)

Объективно десктоп софта на java стало меньше по трем причинам:
1. устоявшаяся традиция и перенос всего в веб.
firefox или хром + libre/ms office - это почти весь софт, который нужен обычному пользователю ПК.

2. Также софта на java для десктопа стало меньше из-за политики Oracle (которая чуть ли не денег хотела за предустановленную java).
3. oracle купив java долго не финансировал UI на ней.
Им была интересно только серверная часть.

Сейчас с снова стал шевелиться JavaFX - посмотрим, что из этого выйдет.

Yilativs ★★★★
() автор топика
Ответ на: комментарий от MoldAndLimeHoney

а у тебя на декстопе есть хотя бы одно приложение?

vstartsev
()
Ответ на: комментарий от Yilativs

Ах да, забыл - вся Big Data -это тоже Java

Ой, а как же Python? Они говорили: Биг Дейта, Пайтон… Обманули что ли?

seiken ★★★★★
()
Ответ на: комментарий от exst

Не вся. YTaurus, YDB, Scylla на С+|>+.

Я про популярные базы

Согласен, что не вся,
например MongoDB - не java

Но за-то DynamoDB под капотом Java.

В целом, большинство BigData решений на Java и конечно там нет никаких Python/JavaScript, но есть несколько С и GoLang решений.

Собственно java плотного захватила именно serverside и корпоративный рынок.
А с выходом graalvm - я не удивлюсь, если будут появляться еще более интересные решения (вон cassandra уже под него собирают)

Yilativs ★★★★
() автор топика
Ответ на: комментарий от MoldAndLimeHoney

Если Java так хороша, почему тогда на десктопах нет ни одного java-приложения? (IDE – инструмент разработки)

на джаве легко делать бизнес. и на деске есть достаточно но бизнес аппов. остальные типа иде

JavaFX норм. сейчас на нём пилю бизнес аппы которые никому кроме этого бизнеса не интересны

поэтому распространять аппу которая делает бизнес небольшого ООО в массы противоестественно)

vstartsev
()
Ответ на: комментарий от MoldAndLimeHoney

SweetHome 3D есть.

Или можешь посоветовать хороший аналог не на джаве (серьёзно).

static_lab ★★★★★
()
Ответ на: комментарий от seiken

Ой, а как же Python? Они говорили: Биг Дейта, Пайтон… Обманули что ли?

Ты знаешь хоть одну Big Data базу на пистоне?
Или хоть один приличный аналог Spark или Flink на пистоне?
Или хоть один message broker как Kafka на пистоне?

Пистон годится для описания всякого ML - там ему сейчас равных нет.

В ansible (для которого я сам роли пишу), лучше бы его не было, переход с 2 на 3 - это был болезненный процесс растянувшийся на годы.
В java переход с одной версии на другую часто не занимает ничего, и если и есть проблемы, то обычно это меньше дня возни.
Собственно по этому автоматизация предприятий на java
люди хотят написать код и забыть, а не так, что при каждом обновлении тратить месяц на проверку того, что поломалось.

Yilativs ★★★★
() автор топика
Ответ на: комментарий от exst

Почему в сравнении не написали про необходимость плагина IDE для ламбок,

по тому, что это не обязательно - используй Records
или по тому, что для kotlin тоже нужна ide, причем на java можно писать в Eclipse,Idea,Netbeans,VSCode - а под kotlin только в Idea.

количество байт на объявление примитива посчитали?

по тому, что когда приходят пионеры и говорят, ой я прочитал, что на kotlin код короче, приходится всякий раз объяснять, что ему наврали.
Просто google очень обиделся на oracle и пытается пиарить переход на kotlin на андройд.

Yilativs ★★★★
() автор топика
Ответ на: комментарий от theNamelessOne

Почти, причем кросс-платформенные )

Yilativs ★★★★
() автор топика
Ответ на: комментарий от vstartsev

Мне для много чего хватает синтаксиса 8ки.

Остальное добавляют, что бы пионеры не ныли.

Самая большая работа в новом релизе это virtual threads
ну и GraalVM конечно продолжает радовать.

Yilativs ★★★★
() автор топика
Ответ на: комментарий от Yilativs

по сравнению со свингом апи более удобное, проперти опять же

плюс из коробки более приятный вид который можно легко с помощью стилей менять

ну и декларативная разметка из коробки

по улучшениям конечно же чтобы было легче для ифонов собирать

vstartsev
()
Ответ на: комментарий от vbr

минимальными изменениями в существующем коде

Смотря в каком коде. Эти виртуальные потоки не эквивалент обычным (универсальным) потокам. По своей сути - это встроенная реализация асинхронности через event loop, только без жуткой реактивной лапши в стиле reactor/vertx и с читаемыми стектрейсами. Большое спасибо, но:

1) Стандартные ограничения типа «не блокировать event loop» (т.е. carrier thread) в силе. Т.е. только IO задачи.

2) Не работает корректно с synchronized блоками и нативными коллами из за thread pinning, соответственно надо дождаться пока вся экосистема (например БД драйвера, где такого навалом) адаптируется

3) Я видел запись презентации на какой-то конференции с бенчмарками (ссылку не могу найти) - по масштабируемости оно там ровно посередке между классическими потоками и event loop асинком. Т.е. компромиссное решение, но не оптимальное

Midael ★★★★★
()

Стек трейсов джавы бояться не нужно. Их нужно вдумчиво читать. Там много ответов

vstartsev
()
Ответ на: комментарий от Midael

Ты что-то странное пишешь. Думаю, ты не разобрался с вопросом. Никаких проблем с блокировкой евент лупа и synchronized нет. С нативным кодом, конечно, нюансы неизбежны.

vbr ★★★
()
Последнее исправление: vbr (всего исправлений: 1)
Ответ на: комментарий от bender

Ну groovy, scala и kotlin живы и будут жить, просто я убежден, что для сообщества - это зло, так как делает его фрагментированным.
С другой стороны - они могут использоваться как плейграунд.
В java очень консервативно добавляют фичи, что-бы не ломать обратную совместимость каждый раз как пистоне.

Из «убийц» java помер только цейлон, Clojure даже дергается еще )

Yilativs ★★★★
() автор топика
Ответ на: комментарий от vasya_pupkin

Вам наверное Clojure подойдет для мелких извращений

Yilativs ★★★★
() автор топика
Ответ на: комментарий от vbr

А это что?

The vast majority of blocking operations in the JDK will unmount the virtual thread, freeing its carrier and the underlying OS thread to take on new work. However, some blocking operations in the JDK do not unmount the virtual thread, and thus block both its carrier and the underlying OS thread.

...

There are two scenarios in which a virtual thread cannot be unmounted during blocking operations because it is pinned to its carrier:

1) When it executes code inside a synchronized block or method, or

2) When it executes a native method or a foreign function.

Pinning does not make an application incorrect, but it might hinder its scalability. If a virtual thread performs a blocking operation such as I/O or BlockingQueue.take() while it is pinned, then its carrier and the underlying OS thread are blocked for the duration of the operation. Frequent pinning for long durations can harm the scalability of an application by capturing carriers.

...

In a future release we may be able to remove the first limitation above, namely pinning inside synchronized. The second limitation is required for proper interaction with native code.

(c) https://openjdk.org/jeps/444

https://cr.openjdk.org/~rpressler/loom/loom/sol1_part1.html#pinning

Midael ★★★★★
()
Последнее исправление: Midael (всего исправлений: 1)
Ответ на: комментарий от mgelios

Питоновые свою задачу выполняют в среднем быстрее.

kirill_rrr ★★★★★
()
Ответ на: комментарий от Midael

по масштабируемости оно там ровно посередке между классическими потоками и event loop асинком. Т.е. компромиссное решение, но не оптимальное

Собственно в этом и была идея, без перехода на реактивный подход увеличить производительность и снизить лишние расходы на память в случае большого числа запросов.

PS
Ну а дальше все равно все упрется в IO (сеть, базу , файловое хранилище).

Yilativs ★★★★
() автор топика
Ответ на: комментарий от Shadow

Зато веб-макаки поголовно делают наоборот.

kirill_rrr ★★★★★
()

Java уже научилась в обратную совместимость ? или в энрепрайзе это ненадо :-)

только буквально вчера понадобился софт, который оказывается required java 11-17 и соотв. на клиентских виндовс не заработал. Это не первый раз уже, приклады на Java страшно ставить, к ним скоро должен полагаться специально-обученный человек

MKuznetsov ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.