Комментарии 23
Шикарная статья! Максимально понятно написано в отличие от других подобных.
Просто мысль: много народу на восьмой джаве пишет до сих пор и чаще закрывает подобные статьи, типа на потом. Было бы интересно почитать статьи именно от Вас со всеми важными различиями между восьмой и текущей. Это явно статей на 10 :)
Пожалуй, одно из самых заметных изменений для каждого разработчика. Борьба с boilerplate вышла на новый уровень.
Наконец-то можно забыть про обязательные
public static void main(String[] args)
для простых скриптов и утилит. Язык становится более доступным для новичков и приятным для опытных разработчиков, которые ценят лаконичность.
void main() { IO.println("I'm still java. For now");}
Просто революция не меньше. Теперь не нужно писать public static
и String ...args
ровно в одном месте программы. К черту неконсистентность языка ровно для одного места. К черту то, что Java настолько boilerplate что без сторонней утилиты (lombok) невозможно писать нормально. Главное что в методе main теперь на пару слов меньше писать. Борьба с boilerplate вышла на новый уровень однозначно.
Официально прощаемся с 32-битными x86-системами.
При этом команда разработки демонстрирует взвешенный подход, не ломая обратную совместимость.
В одной и той же статье.
Я, кстати, против многих новомодных изменений в Java, убирающих этот бойлерплейт. Первоначальная идея Java была противоположной, на мой взгляд.
del
Больше всего удар по бойлерплейт нанес record. С ним почти все фичи ломбока можно запретить.
Record'ы слишком ограничены, чтобы их повсеместно использовать
Посмотрите на https://github.com/Randgalt/record-builder. Я до этого тоже плевался на Java record.
Реально серьёзных изменений для разработчиков будто бы и нет. Так причесали по мелочи. Будто бы не очень важный релиз, на мой взгляд.
В статье, кстати, не указано, но 25-ая версия должна быть с длительным сроком поддержки (LTS), судя по этой статье. Мне кажется, стоит указать.
Пожалуй, одно из самых заметных изменений для каждого разработчика
Вы издеваетесь? Каждому разработчику давно плевать где там в коде public static void main(String[] args)
- это одна единственная строка, которая генерируется за разработчика, и видит он ее примерно никогда. Изменение, ё-мое...
Думаю это хороший подарок для тех кто обучают языку Java других людей. Объяснять новичку что это за class Main public static void main
немного затруднительно, ведь в процессе обучения до классов и методов доходят далеко не сразу.
А мне кажется, наоборот. main это точка входа в программу, и надо понимать, откуда начинается выполнение, и как вообще работает java. А его отсуствие это просто некоторое удобство для написания скриптов
Думаю это хороший подарок для тех кто обучают языку Java других людей. Объяснять новичку что это за
class Main public static void main
немного затруднительно, ведь в процессе обучения до классов и методов доходят далеко не сразу.
Чуть позже очень удобно будет объяснять новичку:
// публичный статический метод
void main() {
System.out.println("Hello world");
}
// приватный пакетный нестатический метод
void hello() {
System.out.println("Hello world");
}
// снова публичный статический метод
public static void hello() {
System.out.println("Hello world");
}
На месте новичка, с взорванным мозгом ,у меня была бы только одна мысль:
какой идиот это придумал, почему нельзя было сделать все в одном стиле?
Неужели поддержка 32 битных jvm так уж накладно?... :( Тут же ж вся прелесть, - возможность писать под древние ПК...
С учётом доминирования 64-битных платформ, что в мобильных устройствах, что на десктопе, это больше похоже на естественный процесс. Если брать целевые операционные системы, то Windows 10 — последняя ОС, существовавшая в 32-битной редакции, и её поддержка без учёта ESU и корпоративных изданий заканчивается уже через месяц. Из macOS 32-битную подсистему удалили несколько лет назад.
Не исключаю, что кто-то сделает новый JDK, где продолжат поддержку устаревшей архитектуры, всё зависит от реального спроса :)
На самом деле в этом lts релизе много изменений по сравнению с предыдущим lts. Как будто не все понимают что этот релиз содержит фичи из 22, 23, 24 версии и теперь это lts.
Нововведения сомнительной ценности. В особенности что касается main и threadlocals. Нет чтобы добавить несколько дополнительных функций в стримы, коллекции и строки, чтобы не приходилось в каждом проекте подключать commons-lang, commons-collections, guava... ну и до кучи свои утилиты.
Нововведения Java 25