Все потоки
Поиск
Написать публикацию
Обновить

Комментарии 23

Шикарная статья! Максимально понятно написано в отличие от других подобных.
Просто мысль: много народу на восьмой джаве пишет до сих пор и чаще закрывает подобные статьи, типа на потом. Было бы интересно почитать статьи именно от Вас со всеми важными различиями между восьмой и текущей. Это явно статей на 10 :)

Все еще на 8й)) так как все можно делать и на ней, но смотреть вперед конечно надо....

Спасибо!
«Просто мысль» отличная, мы подумаем над реализацией такого цикла статей :)

Пожалуй, одно из самых заметных изменений для каждого разработчика. Борьба с 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 была противоположной, на мой взгляд.

Я, кстати, против многих новомодных изменений в Java, убирающих этот бойлерплейт. Первоначальная идея Java была противоположной, на мой взгляд.

Придерживаюсь аналогичного мнения.

Больше всего удар по бойлерплейт нанес record. С ним почти все фичи ломбока можно запретить.

Record'ы слишком ограничены, чтобы их повсеместно использовать

Посмотрите на https://github.com/Randgalt/record-builder. Я до этого тоже плевался на Java record.

Реально серьёзных изменений для разработчиков будто бы и нет. Так причесали по мелочи. Будто бы не очень важный релиз, на мой взгляд.

В статье, кстати, не указано, но 25-ая версия должна быть с длительным сроком поддержки (LTS), судя по этой статье. Мне кажется, стоит указать.

Да, он LTS. Это важно, если есть политика в компании использовать только LTS в продукции. Так что для некоторых это не просто, что нового в 25, а что нового в сравнении с 21. Для меня, например, важны улучшенные LocalThread - в 21 успели наступить на грабли с synchronize.

Пожалуй, одно из самых заметных изменений для каждого разработчика

Вы издеваетесь? Каждому разработчику давно плевать где там в коде public static void main(String[] args) - это одна единственная строка, которая генерируется за разработчика, и видит он ее примерно никогда. Изменение, ё-мое...

Думаю это хороший подарок для тех кто обучают языку Java других людей. Объяснять новичку что это за class Main public static void main немного затруднительно, ведь в процессе обучения до классов и методов доходят далеко не сразу.

А мне кажется, наоборот. main это точка входа в программу, и надо понимать, откуда начинается выполнение, и как вообще работает java. А его отсуствие это просто некоторое удобство для написания скриптов

Вот нет других проблем при изучении языка - сигнатура метода main все портит...

Думаю это хороший подарок для тех кто обучают языку 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");
}

На месте новичка, с взорванным мозгом ,у меня была бы только одна мысль:
какой идиот это придумал, почему нельзя было сделать все в одном стиле?

В первом случае #main не является ни публичным, ни статическим.
Исходники:

void main() { }
void hello1() { }
public static void hello2() { }

Байт-код:

$ javap Sandbox
Compiled from "Sandbox.java"
final class Sandbox {
  Sandbox();
  void main();
  void hello1();
  public static void hello2();
}

Неужели поддержка 32 битных jvm так уж накладно?... :( Тут же ж вся прелесть, - возможность писать под древние ПК...

С учётом доминирования 64-битных платформ, что в мобильных устройствах, что на десктопе, это больше похоже на естественный процесс. Если брать целевые операционные системы, то Windows 10 — последняя ОС, существовавшая в 32-битной редакции, и её поддержка без учёта ESU и корпоративных изданий заканчивается уже через месяц. Из macOS 32-битную подсистему удалили несколько лет назад.

Не исключаю, что кто-то сделает новый JDK, где продолжат поддержку устаревшей архитектуры, всё зависит от реального спроса :)

На самом деле в этом lts релизе много изменений по сравнению с предыдущим lts. Как будто не все понимают что этот релиз содержит фичи из 22, 23, 24 версии и теперь это lts.

Нововведения сомнительной ценности. В особенности что касается main и threadlocals. Нет чтобы добавить несколько дополнительных функций в стримы, коллекции и строки, чтобы не приходилось в каждом проекте подключать commons-lang, commons-collections, guava... ну и до кучи свои утилиты.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий