The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выпуск Java SE 20

21.03.2023 21:58

После шести месяцев разработки компания Oracle выпустила платформу Java SE 20 (Java Platform, Standard Edition 20), в качестве эталонной реализации которой используется открытый проект OpenJDK. За исключением удаления некоторых устаревших возможностей в Java SE 20 сохранена обратная совместимость с прошлыми выпусками платформы Java - большинство ранее написанных Java-проектов без изменений будут работоспособны при запуске под управлением новой версии. Готовые для установки сборки Java SE 20 (JDK, JRE и Server JRE) подготовлены для Linux (x86_64, AArch64), Windows (x86_64) и macOS (x86_64, AArch64). Разработанная в рамках проекта OpenJDK эталонная реализация Java 20 полностью открыта под лицензией GPLv2 с исключениями GNU ClassPath, разрешающими динамическое связывание с коммерческими продуктами.

Java SE 20 отнесён к категории выпусков с обычным сроком поддержки, обновления для которого будут выпускаться до следующего релиза. В качестве ветки с длительным сроком поддержки (LTS) следует использовать Java SE 17, обновления для которого будут выпускаться до 2029 года. Напомним, что начиная с выпуска Java 10 проект перешёл на новый процесс разработки, подразумевающий более короткий цикл формирования новых релизов. Новая функциональность теперь развивается в одной постоянно обновляемой master-ветке, в которую включаются уже готовые изменения и от которой раз в шесть месяцев ответвляются ветки для стабилизации новых выпусков.

Из новшеств Java 20 можно отметить:

  • Предложена предварительная поддержка ограниченных значений (Scoped Values), позволяющих совместно использовать неизменяемые данные в потоках и эффективно обмениваться данными между дочерними потоками (значения наследуются). Scoped Values развиваются для замены механизма переменных локальных к потоку (thread-local variables) и более эффективны при использовании очень большого числа виртуальных потоков (тысячи и миллионы потоков). Главное отличие Scoped Values от переменных локальных к потоку в том, что первые записываются один раз, в дальнейшем не могут быть изменены и остаются доступны только на время выполнения потока.
    
       class Server {
           final static ScopedValue CURRENT_USER = new ScopedValue<>();      
    
           void serve(Request request, Response response) {
               var level = (request. isAuthorized()? ADMIN : GUEST);
               var user  = new User(level);
          
               ScopedValue.where(CURRENT_USER, user)                               
                          .run(() -> Application.handle(request, response));       
           }
       }
    
       class DatabaseManager {
           DBConnection open() {
               var user = Server.CURRENT_USER.get();                               
               if (!user.canOpen()) throw new InvalidUserException();
               return new DBConnection(...);
           }
       }
    
  • Добавлена вторая предварительная реализация шаблонов записей (record pattern), расширяющая появившуюся в Java 16 возможность сопоставления с образцом средствами для разбора значений классов типа record. Например:
    
       record Point(int x, int y) {}
    
       static void printSum(Object obj) {
           if (obj instanceof Point p) {
               int x = p.x();
               int y = p.y();
               System.out.println(x+y);
           }
       }
    
  • Добавлена четвёртая предварительная реализация сопоставления по шаблону в выражениях "switch", позволяющая в метках "case" использовать не точные значения, а гибкие шаблоны, охватывающие сразу серию значений, для которых ранее приходилось использовать громоздкие цепочки выражений "if...else".
    
       static String formatterPatternSwitch(Object obj) {
           return switch (obj) {
               case Integer i -> String.format("int %d", i);
               case Long l    -> String.format("long %d", l);
               case Double d  -> String.format("double %f", d);
               case String s  -> String.format("String %s", s);
               default        -> o.toString();
           };
       }
    
  • Добавлена вторая предварительная реализация API FFM (Foreign Function & Memory), позволяющего организовать взаимодействие Java-программ с внешними кодом и данными через вызов функций из внешних библиотек и доступ к памяти вне JVM.
  • Добавлена вторая предварительная реализация виртуальных потоков, представляющих собой легковесные потоки, значительно упрощающие написание и сопровождение высокопроизводительных многопоточных приложений.
  • Добавлен второй вариант экспериментального API для cтруктурированного параллелизма, упрощающего разработку многопоточных приложений за счёт обработки нескольких задач, выполняемых в разных потоках, как единого блока.
  • Добавлена пятая предварительная реализация API Vector, предоставляющего функции для векторных вычислений, которые выполняются с использованием векторных инструкций процессоров x86_64 и AArch64 и позволяют одновременно применить операции сразу к нескольким значениям (SIMD). В отличие от предоставляемых в JIT-компиляторе HotSpot возможностей по автовекторизации скалярных операций, новый API даёт возможность явно управлять векторизацией для параллельной обработки данных.

Дополнение: Опубликовано обновление платформы для создания приложений с графическим интерфейсом JavaFX 20.

  1. Главная ссылка к новости (https://mail.openjdk.org/piper...)
  2. OpenNews: Выпуск Java SE 19
  3. OpenNews: Доступен Jakarta EE 10, продолжающий развитие Java EE после передачи проекту Eclipse
  4. OpenNews: Возможность генерации фиктивных подписей ECDSA в Java SE
  5. OpenNews: Выпуск Java SE 18
  6. OpenNews: Компания Oracle намерена в ближайшие месяцы завершить открытие платформы JavaFX
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/58837-java
Ключевые слова: java, jdk, openjdk
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (75) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, кавай герл помурчит в дсике (?), 22:55, 21/03/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    а Java ME еще жива, кстати?
     
     
  • 2.3, Аноним (3), 23:04, 21/03/2023 [^] [^^] [^^^] [ответить]  
  • –14 +/
    Навряд ли. А ведь норм платформа была. Много нормальных игр было, не то что эти помойки типа Steam
     
     
  • 3.8, Аноним (8), 23:45, 21/03/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Шта?
     
  • 3.9, Аноним (9), 23:47, 21/03/2023 [^] [^^] [^^^] [ответить]  
  • +4 +/
    "Я сравниваю яблоки с апельсинами, я очень умный"
     
     
  • 4.40, Аноним (40), 09:48, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Вроде всё правильно, и те и те круглые.
     
  • 4.44, YetAnotherOnanym (ok), 10:59, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Вполне сопоставимые альтернативы, и то, и другое - фрукты.
    Более того, такая штука, как "деньги" позволяет сравнивать что угодно с чем угодно. Я могу на оставшуюся сумму купить яблоки, или банку олифы, или батарейки для фонарика, или положить их на телефон, или приберечь на будущее.
     
     
  • 5.61, Аноним (61), 16:21, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > такая штука, как "деньги" позволяет сравнивать что угодно с чем угодно

    Только если ты перепродаван товаров, а не потребитель продуктов. Голодный в лесу ни фонариком, ни билетами банков сыт не будет.

     
     
  • 6.95, YetAnotherOnanym (ok), 07:33, 23/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Да как сказать... Исправным фонариком можно подать сигнал SOS мимопролетающему вертолёту или обозначить своё местоположение для прочёсывающих лес спасателей.
     
  • 4.67, soarin (ok), 17:29, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    ну яблоки лучше 🤨
     
  • 2.5, Технопозор (?), 23:25, 21/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Живо на промышленных устройствах.
     
  • 2.10, Аноним (10), 00:52, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Вполне себе жива, только в слегка изменённом названии: Java ME Embedded. Она всё также ориентирована на устройства с парой сотен килобайт ОЗУ и парой мегабайт ПЗУ. В ней нет Swing, NIO2 и всего такого, но есть (почти) прямой доступ к железу. Ну и всё ещё бесплатный SDK весом меньше 10МБ.

    Есть ещё Java SE Embedded — полноценная Java во всем стандартным API, но оптимизированная для маломощных устройств.

    И то, и другое можно попробовать на Raspberry Pi, причём одновременно: мешать они друг другу никак не будут.

     
     
  • 3.28, анонимит (?), 08:26, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    TinyGo жеж и Rust 🤭
     
     
  • 4.66, Аноним (66), 17:27, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    А почему бы не просто на С++?
     
     
  • 5.81, Аноним (40), 18:54, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    >  просто на С++??????????
     
  • 5.84, Аноним (84), 21:09, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Зачем, когда есть чистый Си и Паскаль?
     
     
  • 6.106, Neon (??), 19:44, 24/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Вот Паскаль не надо. Совсем не надо.))) Разве что в учебных заведениях, чтоб бедным учащимся жизнь малиной не казалась.)))
     

  • 1.2, DEF (?), 23:00, 21/03/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Все новшества этого релиза - предварительные, инкубаторные. По-сути это релиз-пустышка.
     
     
  • 2.12, Аноним (12), 01:23, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Предварительный выпуск, осуждаемый предварительными программистами в предварительной жизни.
    Пустышка это твой выхлоп, а работа с многопоточными программами улучшена. Выпуск развиваемый так что они не берут обязательства не вносить изменения способные повлиять на работу программ что может быть крайне важно банкам например или высоконагруженным сайтам.
     
     
  • 3.48, DEF (?), 11:33, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Все новшества этого релиза - предварительные, инкубаторные. По-сути это релиз-пустышка.
     
     
  • 4.50, Sserj (?), 12:30, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А заглянуть самому в Release Notes религия не позволяет?
    Посмотрел краткий анонс на 2 абзаца и составил мнение.
    А то что в этом релизе закрыто около 1500 задач, помимо новинок это конечно мелочь.
    Изучайте:
    https://builds.shipilev.net/backports-monitor/release-notes-20.html
     
     
  • 5.89, DEF (?), 23:46, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Все новшества этого релиза - предварительные, инкубаторные. По-сути это релиз-пустышка.
     

  • 1.4, Аноним (4), 23:07, 21/03/2023 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • –6 +/
     
  • 1.20, Ананоним (?), 02:44, 22/03/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Нужно больше мажорных версий, что бы производители дисков обогатились!
     
     
  • 2.37, Аноним (37), 09:05, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Такие частые обновления для такого языка как Джава просто вредны.  
     
  • 2.45, Аноним (45), 11:08, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Я один слишком тупой, чтобы понять, причём тут производители дисков?
     
     
  • 3.97, Аноним (97), 12:08, 23/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Чтобы скачать JDK нужен диск
     

  • 1.25, Аноним (25), 07:43, 22/03/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Слишком многословный язык
     
     
  • 2.27, Илья (??), 08:18, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Котлин возьми.

     
     
  • 3.31, жявамэн (ok), 08:52, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    спасибо но нет.
    это говно кроме как писать мапперы ни на что не годно.
    и то на грувях их писать приятнее.

    а когда виртуалтреды попадут в ЛТС и вовсе не нужен станет.

     
  • 2.49, Аноним (49), 11:38, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    брэйнфак же
     

  • 1.26, Илья (??), 08:08, 22/03/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    Я матерится, когда пытался сделать запилить для себя издателя-подписчика на котлине и узнал, что там дженерики на самом деле фикция.

    Вот так нелья SomeClass: SomeInterface<T1>, SomeInterface<T2>

    Плюс, структур нет. То есть, вычисления на стеке без аллокаций исключены

    Плюс, там какая-то вакханалия с десятками сборочных систем и самих рантаемов. Oracle microsoft gradle openjdk dalvik android SE maven ? Там пока разберёшься...

    Поэтому дотнет

     
     
  • 2.30, жявамэн (ok), 08:50, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > вакханалия с десятками сборочных систем

    Поехавший, назови что то кроме мавена и градла, что используются в 99.9 % проектов.
    Десятки у него лол.

     
  • 2.42, Аноним (42), 10:26, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Пришел в тему Java, поругался на Kotlin Зачем вам вычислять на стеке В java ес... большой текст свёрнут, показать
     
     
  • 3.62, Аноним (62), 16:25, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    У языков с GC, в дизайне которых заложено 99 вещей отправлять в heap, в итоге д... большой текст свёрнут, показать
     
     
  • 4.73, Аноним (73), 17:58, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    >дикая фрагментация кучи

    В нете сборка мусора сразу идет с жатием кучи. Все живые объекты плотно сидят в начале памяти, а за ними остается только свободное место. Это позволяет делать очень быстрые аллокации.

     
     
  • 5.80, Аноним (62), 18:48, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну допустим аллокации быстрые, т к до следующего GC цикла с компактификацией ме... большой текст свёрнут, показать
     
  • 3.72, Аноним (72), 17:57, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    >Пришел в тему Java, поругался на Kotlin.

    это же одно и тоже почти.

     
  • 2.71, Аноним (72), 17:56, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    В java используется maven и gradle. Kotlin dsl есть только для gradle. Даже kotlin-native использует gradle.
    Примитивные типы в java хранятся в стэке. Kotlin их тоже использует, но пожелание использовать интерпретируемый язык со сборщиком мусора и отсутствие аллокации это странно. Не знаю каким образом оно работает в net, но не думаю что чем-то отличается.

    Один и тот же интерфейс и сразу 2 разных типа в параметрах SomeInterface<T1>, SomeInterface<T2> ? Ладно в java дженерики крайне ограниченные, но как в других то языках это должно работать?

    >Oracle microsoft gradle openjdk dalvik android SE maven

    Ну не знаю.... Вы точно программист, а не эксперт, тролящий глупым набросом?

     
     
  • 3.91, Веселый Аноним (?), 03:21, 23/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Один и тот же интерфейс и сразу 2 разных типа в параметрах SomeInterface<T1>, SomeInterface<T2> ? Ладно в java дженерики крайне ограниченные, но как в других то языках это должно работать?

    Я не разбираюсь в C++, но там вроде template'ы являются шаблонами кодогенерации в compile-time, т.е. чем больше у тебя шаблонов, и чем обобщение тип в параметризации тем больше размеры бинарника на выходе компилятора, потому как генерируются перегруженные методы с разными агрументами.  

    И если принять это за правила игры то параметризовав интерфейсы двумя разными типами, для методов использующих обобщенные типы будут сгенерированы декорации методов в интерфейсах с разными сигнатурами.  

    Пусть плюсовики подтвердят или опровергнут :) А что там в C# творится я не знаю.

     
     
  • 4.105, Аноним (105), 14:49, 24/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Подтверждаю про С++ :)
     
  • 2.79, Аноним (79), 18:42, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Поэтому дотнет

    Теперь понятна Ваша позиция.

     

  • 1.29, Аноним (29), 08:27, 22/03/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Ждём добавление беззнаковых типов.
     
     
  • 2.32, жявамэн (ok), 08:55, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    нафига?

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

     
     
  • 3.59, Аноним (42), 15:53, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Не ради срача, а образования ради. А зачем вам стракты и почему именно в стек надо класть данные?
     
     
  • 4.60, жявамэн (ok), 16:01, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Не ради срача, а образования ради. А зачем вам стракты и почему

    использовать как кортежи.
    ну как локальные переменные примитивы.
    но при этом состоящие из нескольких полей которые могут быть примитивами или вложеными страктами.

    > именно в стек надо класть данные?

    меньше мусора на кучу.


     
  • 3.65, Аноним (62), 17:20, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Че там, когда в жабку завезут safe chain call и оператор элвиса? и деление типов на nullable и non-nullable? Как в жабе начнешь эти вызовы в опшинали оборачивать или, прости господи, в if-ах проверять, хочется удалить JDK с компа.
     
     
  • 4.85, Аноним (85), 21:43, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Никогда. Сделать - не проблема. Но это разрушит совместимость, разделит джаву на до и после.
     
     
  • 5.102, DEF (?), 10:04, 24/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Глупости не говори:

    String! a = "abc"; //non-nullable string
    String a = null; //nullable string

     
     
  • 6.108, Веселый аноним (?), 21:01, 25/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Хм... на первый взгляд это хорошее решение. А то обычно маркируют nullable знаками '?' и тогда миграция проблематична.  
    Я бы не отказался если бы такую штуку хотяб в переходную версию Java добавили, для теста.  
     
  • 2.93, Ванёк (?), 05:36, 23/03/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    С++ пользуй
     

  • 1.41, Анонус (?), 10:11, 22/03/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А Грааль не начали еще встраивать? Они вроде грозились в конце 22го.
     
  • 1.43, InuYasha (??), 10:43, 22/03/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Ровно вчера скачал Жабу чтоб открывать IPMI-консоль в Палемуне. Результат - Жаба ругается на протухший сертификат (который, естественно, в прошивках не обновить), access denied, виснет насмерть, иногда утягивая браузер. Нахрен так жить. Это единственный ЯП/платформа, у которого в UI даже галочки тормозят...
     
     
  • 2.46, DeerFriend (?), 11:12, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Дату менять пробовал?
     
  • 2.51, жявамэн (ok), 12:32, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    это в конфигах жре правится
     
     
  • 3.54, InuYasha (??), 14:30, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > это в конфигах жре правится

    где конфиги жре? я тыкал javaw.exe (или как-то так), отключил все возможные проверки по сертам - и ему пофиг.

     
     
  • 4.55, жявамэн (ok), 14:43, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    короче. если нужны аплеты - то качаешь 8 жде и отключаешь проверки ссл
    а так же включаешь отключенные протоколы (типа 3дес ) в файле секурити.кфг.

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

    если же там jws то и браузер не нужен

     
  • 4.56, жявамэн (ok), 14:48, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    https://www.java.com/en/configure_crypto.html

    читай тут короче про сесурити в жре

     
  • 2.52, жявамэн (ok), 12:33, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >который, естественно, в прошивках не обновить

    это кстати тоже ложь

     
     
  • 3.53, InuYasha (??), 14:28, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    О, ты мне можешь обновить и подписать жавный пакет в проше? Может, тогда добавишь туда фич каких-нибудь? И, или, хоть, логотип страшный поменять? (спойлер: прошивка старая, даже обновлять себя из вебки не умеет)
     
     
  • 4.57, жявамэн (ok), 14:51, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    ну если бы можно было выгрузить и заново загрузить - то можно было бы переподписать своим сертификатом просто и все
     
     
  • 5.63, InuYasha (??), 16:42, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    >> просто и все

    Выкорчевать прошивку. Проанализировать формат. Расчленить прошивку. Добыть модуль жавы. Декомпилировать его. Собрать. Создать адекватный серт (возможно, из утёкших в Сеть сливов?). Подписать. Собрать пошивку. Помолиться. Залить поршивку. Неполучить кирпич. Накакать кирпичей. Получить некирпич.

    Ну, не сказал бы, что это хоть отдалённо относится к слову "просто".

     

  • 1.58, name (??), 15:42, 22/03/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Мне кажется, не стоит переводить changelog. Получается очень плохо.
     
  • 1.64, Аноним (105), 17:15, 22/03/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Вообще-то вот это:

      if (obj instanceof Point p)

    ещё в Java 16 было. А вот сейчас добавили pattern matching with deconstruction, что очень и очень круто:

      if (obj instanceof Point(int x, int y))

    И в switch, и даже в for оно работает.

     
  • 1.68, Аноним (66), 17:30, 22/03/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >большинство ранее написанных Java-проектов без изменений будут работоспособны при запуске под управлением новой версии

    Датычо, правда? То-то у нас в репе штук пять разных Джав, на выбор.

     
     
  • 2.70, Аноним (105), 17:40, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Дык может ваш проект из меньшинства? :)
     
  • 2.87, Аноним (62), 23:04, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Разные версии джав нужны только в случае, если ваш проект завязывался на приватный api из кишков JDK, для которого никаких гарантий обратной совместимости. Либо проект опирался на deprecated вещи, типа явного вызова SecurityManager. Во многих случаях обновление JRE спокойно оставляет приложение работоспособным.
     
     
  • 3.92, Аноним (66), 04:49, 23/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Проект использовал tools.jar, не знаю, зачем. Которого в новых Джавах нет. Потом был ещё восхитительный Jenkins, который на старой Джаве запускался, но крашился.

     

  • 1.69, Аноним (69), 17:37, 22/03/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Посоветуйте пожалуйста современный букварь по Яве, желательно на английском. Спасибо.
     
     
  • 2.75, Аноним (75), 18:14, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    https://teaching.csse.uwa.edu.au/units/CITS2200/Resources/JavaPrimer.pdf
     
     
  • 3.90, Аноним (69), 02:45, 23/03/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Спасибо.
     
  • 2.77, Аноним (77), 18:15, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Я думаю, для вас подойдут книги из серии "Для дурачков" (https://www.amazon.com/Java-All-One-Dummies-Doug/dp/1119986648)
     
  • 2.83, Аноним (84), 21:08, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Ява устарела, она сейчас исключительно в легаси проектах используется. Лучше Котлин изучай.
     
     
  • 3.86, Аноним (62), 22:49, 22/03/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    ЛПП. Кодеры со стажем часто недолюбливают Kotlin из-за его подхода (var/val для локальных переменных, странный сахар для делегирования, неожиданные побочные эффекты, когда сталкивается рефлексия из джава-библ и какие-нибудь фишки типа деструктуризации, которые скомпилировались в неидиоматический байткод, из-за чего у рефлекшена из third-party библ поломалась логика). Есть куча новых проектов, где используют последний LTS (Java 17) и вполне неплохо себя чувствуют на старой-доброй джаве, у которой синтаксис "палка-веревка" и все очевидно на ревью для читателя. Kotlin только разработку под Андроид под себя подмял тотально, в обычный бэкенд его не так часто берут, часто предпочитая проверенную классику, которая, тем более, постепенно учится новым трюкам.
     

  • 1.107, Аноним (-), 20:19, 24/03/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Джависты, а джависты - подскажите, что-то типа RAII(C++) или using\IDisposable(.Net) в Jave уже есть?
     
     
  • 2.111, Миша (??), 15:14, 03/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    try-with-resources/AutoCloseable
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру