The OpenNET Project / Index page

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

Выпуск Java SE 17

15.09.2021 09:50

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

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

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

  • Предложена экспериментальная реализация сопоставления по шаблону в выражениях "switch", позволяющая в метках "case" использовать не точные значения, а гибкие шаблоны, охватывающие сразу серию значений, для которых ранее приходилось использовать громоздкие цепочки выражений "if...else". Кроме того внутри "switch" обеспечена возможности обработки значений NULL.
    
       Object o = 123L;
       String formatted = switch (o) {
           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();
       };
    
  • Стабилизирована поддержка запечатанных ("sealed") классов и интерфейсов, которые не могут использоваться другими классами и интерфейсами для наследования, расширения или переопределения реализации. Запечатанные классы также предоставляют более декларативный способ ограничения использования суперкласса, чем модификаторы доступа, основанный на явном перечислении подклассов, разрешённых для расширения.
    
       package com.example.geometry;
    
       public sealed class Shape
            permits com.example.polar.Circle,
                    com.example.quad.Rectangle,
                    com.example.quad.simple.Square {...}
    
  • Предложена вторая предварительная реализация API Vector, предоставляющего функции для векторных вычислений, которые выполняются с использованием векторных инструкций процессоров x86_64 и AArch64 и позволяют одновременно применить операции сразу к нескольким значениям (SIMD). В отличие от предоставляемых в JIT-компиляторе HotSpot возможностей по автовекторизации скалярных операций, новый API даёт возможность явно управлять векторизацией для параллельной обработки данных.
  • Добавлена предварительная реализация API Foreign Function & Memory, при помощи которого приложения могут взаимодействовать с кодом и данными, находящимися за пределами Java runtime. Новый API позволяет эффективно вызывать функции, выполняемые не в JVM, и обращаться к памяти, не управляемой JVM. Например, можно вызывать функции из внешних разделяемых библиотек и обращаться к данным процесса без использования JNI.
  • Движок отрисовки для macOS, обеспечивающий работу API Java 2D, который, в свою очередь, задействован в API Swing, адаптирован для использования графического API Metal. По умолчанию на платформе macOS по-прежнему применяется OpenGL, а для включения поддержки Metal требуется установка параметра "-Dsun.java2d.metal=true" и наличие как минимум выпуска macOS 10.14.x.
  • Добавлен порт для платформы macOS/AArch64 (компьютеры Apple на базе новых чипов Apple M1). Особенностью порта является поддержка механизма защиты памяти W^X (Write XOR Execute), при котором страницы памяти не могут быть одновременно доступны на запись и исполнение. (код может быть исполнен только после запрещения записи, а запись в страницу памяти возможна только после запрета исполнения).
  • Возвращено использование только строгой (strictfp) семантики для выражений с плавающей запятой. Прекращена поддержка доступной начиная с выпуска Java 1.2 семантики "default", включающей упрощения для работы на системах с очень старыми математическими сопроцессорами x87 (после появления инструкций SSE2 необходимость в дополнительной семантике пропала).
  • Реализованы новые типы интерфейсов к генераторам псевдослучайных чисел, а также реализованы дополнительные алгоритмы для более качественной генерации случайных чисел. Приложениям предоставлена возможность выбора алгоритма генерации псевдослучайных чисел. Улучшена поддержка генерации потоков случайных объектов.
  • Реализована обязательная строгая инкапсуляция всех внутренних элементов JDK, за исключением критических API, таких как sun.misc.Unsafe. Строгая инкапсуляция блокирует попытки обращения из кода к внутренним классам, методам и полям. Ранее режим строгой инкапсуляции можно было отключить при помощи опции "--illegal-access=permit", но теперь она объявлена устаревшей. Для приложений, которым необходим доступ к внутренним классам, методам и полям следует явно определить их при помощи опции "--add-opens" или атрибута Add-Opens в файле с манифестом.
  • Приложениям предоставлена возможность определять фильтры для десериализации данных, которые могут зависеть от контекста и выбираться динамически в привязке к определённым операциям десериализации. Задаваемые фильтры применимы ко всей виртуальной машине (JVM-wide), т.е. охватывают не только само приложение, но и используемые в приложении сторонние библиотеки.
  • В Swing добавлен метод javax.swing.filechooser.FileSystemView.getSystemIcon для загрузки пиктограмм большого размера, позволяющий улучшить формирование интерфейса на экранах с большой плотностью пикселей (HighDPI).
  • В API java.net.DatagramSocket реализована поддержка подключения к группам Multicast без необходимости использования отдельного API java.net.MulticastSocket.
  • Усовершенствована утилита IGV (Ideal Graph Visualizer), обеспечивающая интерактивную визуализацию промежуточного представления кода в JIT-компиляторе HotSpot VM C2.
  • В JavaDoc по аналогии с компилятором javac при выводе ошибки теперь указывается номер проблемной строки в исходном файле и место ошибки.
  • Добавлено свойство native.encoding, отражающее имя системной кодировки символов (UTF-8, koi8-r, сp1251 и т.п.).
  • Добавлен интерфейс java.time.InstantSource, позволяющий манипулировать временем без привязки к часовому поясу.
  • Добавлен API java.util.HexFormat для преобразования в шестнадцатеричное представление и наоборот.
  • В компилятор добавлен режим blackhole, отключающий операции исключения неиспользуемого кода (dead-code elimination), что может быть использовано при проведении тестов производительности.
  • В Runtime добавлена опция "-Xlog:async" для записи логов в асинхронном режиме.
  • При установке защищённых соединений по умолчанию задействован TLS 1.3 (ранее использовался TLS 1.2).
  • Переведён в категорию намеченных для удаления ранее объявленный устаревшим API Applet (java.applet.Applet*, javax.swing.JApplet), применявшийся для запуска Java-приложений в браузере (потерял актуальность после прекращения поддержка Java-плагина для браузеров).
  • Переведён в категорию намеченных для удаления Security Manager, который давно потерял актуальность и оказался невостребованным после прекращения поддержки браузерного плагина.
  • Удалён механизм RMI Activation, который устарел, переведён в разряд опции ещё в Java 8 и почти не применяется в современной практике.
  • Из SDK удалён экспериментальный компилятор, поддерживающий JIT (just-in-time) для динамической компиляции Java-кода для HotSpot JVM, а также режим упреждающей компиляции (AOT, ahead-of-time) классов в машинный код перед запуском виртуальной машины. Компилятор был написан на Java и основан на наработках проекта Graal. Отмечается, что сопровождение компилятора требует больших трудозатрат, которые не оправдывают себя в условиях невостребованности у разработчиков.

Дополнение 1: Результаты тестирования производительности Java 17 по сравнению с Java 11 и Java 16.

Дополнение 2: Компания Oracle начала поставку JDK под новой лицензией, в которой сняты ограничения по использованию коммерческих целях.

Дополнение 3: Сравнение влияния на производительность и потребление памяти сборщиков мусора Parallel GC, G1 и ZGC в JDK 8, 11 и 17.



  1. Главная ссылка к новости (https://www.oracle.com/news/an...)
  2. OpenNews: Выпуск Java SE 16
  3. OpenNews: Google одержал победу в разбирательстве с Oracle, связанном с Java и Android
  4. OpenNews: Microsoft опубликовал собственный дистрибутив OpenJDK
  5. OpenNews: Первый стабильный выпуск Corretto 8, LTS-дистрибутива Java 8 от Amazon
  6. OpenNews: Компания Oracle опубликовала Java SE 11
Лицензия: CC-BY
Тип: Программы
Короткая ссылка: https://opennet.ru/55802-java
Ключевые слова: java, jdk, openjdk
Поддержать дальнейшую публикацию новостей на OpenNET.


Обсуждение (75) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 10:00, 15/09/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    поддержку вяленого не завезли, зато m1 впихнули
     
     
  • 2.13, Аноним (13), 11:37, 15/09/2021 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Приоритеты
     
  • 2.78, darkshvein (ok), 19:50, 18/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    в порядк тупняка.
    будет жабка с интеграцией системд во все дейвайсы на жабке
    Javded
     

  • 1.4, Аноним (4), 10:06, 15/09/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Мне не хватает производительности. А есть какой-нибудь способ уменьшить жор памяти? Сейчас я использую openj9+uksm в этих целях.
     
     
  • 2.6, Аноним (6), 10:24, 15/09/2021 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Разработчика приложения поменяй
     
  • 2.8, Аноним (8), 10:38, 15/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    KSM - это сторонний канал.
     
     
  • 3.12, Аноним (4), 11:24, 15/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Какие ещё сторонние каналы, если на каждом хосте только 1 копия приложения может быть запущена? Да ещё и требования космические по железу хоста предъявляет, в виртуалке не запустишь. Openj9+uksm экономит >30% памяти, и сама память используется куда более эффективно, чем когда всё впритык. Вот и спрашиваю, может я каких-то новых волшебных ключей не знаю.
     
  • 2.10, Виталик (??), 11:03, 15/09/2021 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Только один способ, rust
     
     
  • 3.11, An (??), 11:19, 15/09/2021 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Как минимум, еще два(причем лучше): C и C++.
     
     
  • 4.14, Аноним (14), 11:40, 15/09/2021 [^] [^^] [^^^] [ответить]  
  • +10 +/
    ассемблер же, KolibriOS доказывает
     
  • 4.21, Аноним (21), 12:35, 15/09/2021 [^] [^^] [^^^] [ответить]  
  • –7 +/
    Хуже. В том числе и даже немного по производетельности.
     
  • 4.32, Аноним (32), 14:42, 15/09/2021 [^] [^^] [^^^] [ответить]  
  • –3 +/
    У плюсов в сравнении с растом слишком низкая производительность
     
  • 3.17, Аноним (17), 11:52, 15/09/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Течёт.
     
  • 3.79, Аноним (79), 00:25, 19/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Увы, на расте нет ни одного продукта, которым можно пользоваться.
     
  • 2.15, Аноним (14), 11:50, 15/09/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Игры с настройкой GC, если на уровне Java. Разделение на java module. Использование где можно балансировщиков которые работают с потоками быстро и отдают данные клиентами, поэтому потоки не живут долго и не занимают память (reverse proxy). При работе с файлами использовать nio и selector (неблокирующие). Использовать реактивное программирование - избавление от блокировок (но база данных при этом должна тоже поддерживать это). Можно попытаться использовать 32 бит версии Java и/или не использовать объекты размером больше 32 бит, будет обмен занимаемой памяти на быстродействие CPU (но в Java есть compacting так что возможно влияние 64 бит переменных не сильное). И главное - использовать все возможные инструменты для просмотра статистики при всех этих экспериментах.
     
  • 2.16, YetAnotherOnanym (ok), 11:50, 15/09/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > жор памяти

    Нескромный вопрос: ты пришёл на эту работу и жаба уже была, или ты писал это на жабе с нуля? Проще говоря, жабу кто выбрал - ты или до тебя?

     
  • 2.19, Anon2 (?), 12:08, 15/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Я конечно не эксперт, но если под производительностью вы понимаете именно скорость вычислений то uksm в связке с Java это плохая затея. Java ж на каждый чих выделяет память в куче, а uksm при этом _сразу_же_ пытается это дело смержить (в ksm это хотя-бы как то ограничивается отложенным мержем)
     
  • 2.20, Anon2 (?), 12:16, 15/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > жор памяти

    0. zram с низкосжимаемыми алгоритмами типа lzo
    1. может она алгоритмически течет
    2. исключить разработку и эксплуатацию по низкому прайсу
    3. потюнить приложение и/или саму Java

     
     
  • 3.22, Аноним (4), 12:45, 15/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Вот zram прям жёстких тормозов добавляет, всё что угодно лучше пока своп не используется. Оно не течёт, просто так написано и других вариантов нет, это готовое приложение. Тюнить жвм можно, только ошибки сразу проявляются в виде лагов всего чего только можно (в том числе IO) и падения допустимого числа коннектов. Не, нормально работает, но весьма не экономно по железу -- не везде запустишь.
     
  • 3.38, Аноним (38), 21:29, 15/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Этот zram swap у кого-то вообще нормально работает? В смысле, экномит ли память? Я вот его пробовал, так ядро туда отказывается пихать несжатых данных больше чем размер свопа. К примеру, своп на зраме 1Г. Ядро пихает туда 1Г данных, они ужимаются в 300М. Остаётся 700М свободных, но ядро больше данных в zram-своп не пихает, даже начинает пихать оставшиеся данные в низкоприоритетный своп на HDD!
     
     
  • 4.73, n00by (ok), 20:16, 17/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    zRam так и работает. Указывается размер хранилища, оно по возможности будет занимать меньше ОЗУ из-за сжатия. В Вашем случае оставшиеся 700М как обычно заняты данными приложений или файлового кеша, или свободны. Другое дело, что zRam проектировался не для подкачки, уменьшает объём доступного ОЗУ, потому в ряде сценариев может наоборот увеличить количество выгрузок на HDD. Для сжатия подкачки предназначен zswap, там как раз задаётся размер сжатого кеша (в процентах от общего объёма ОЗУ). Что окажется эффективней, зависит от сценария использования и настроек zswap.
     
     
  • 5.74, Аноним (38), 22:59, 17/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ага, понятно, спасибо. Значит в моём случае zswap занимает в памяти 300М, а не 1Г, как я думал, да ещё и динамически меняет свой размер, в зависимости от того, сколько данных туда запихано.

    Хорошо, если zram проектировался не для подкачки, как мне сделать, чтобы память сжималась и экономилась без zswap? Просто создать zram device и всё?

     
     
  • 6.75, Аноним (38), 23:27, 17/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Другое дело, что zRam проектировался не для подкачки

    Так, опять перечитал про zram и, похоже, zram всё-таки нельзя использовать без свопа! То есть создаёшь zram device, на нём делаешь своп. Значит, zram таки проектировался для подкачки!

     
     
  • 7.77, n00by (ok), 12:08, 18/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Не надо смешивать "проектировался" и "можно использовать".

    zRam это обычный виртуальный-диск
    https://ru.wikipedia.org/wiki/RAM-%D0%B4%D0%B8%D1
    https://habr.com/ru/company/kingston_technology/blog/395315/
    с поддержкой сжатия.
    Можно купить диск в магазине и создать на нём подкачку, можно создать "диск" в ОЗУ при помощи zRam и создать на нём подкачку. Можно на эти диски записать картинки с котиками. Картинки в zRam будут открываться быстрее.

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

     
  • 2.30, lastdrv (ok), 14:18, 15/09/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    quarkus and build a native image
     
     
  • 3.31, Аноним (4), 14:23, 15/09/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Прикольно, впервые слышу об этом. Какой-нибудь майнкрафт с allthemods3 в него можно запихнуть? Примерно сопоставимо, как мне кажется. Там в нейтив не скомпилируешь так просто.
     
     
  • 4.72, lastdrv (ok), 15:09, 17/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    очень маловероятно что майнкрафт можно скомпилить в натив
    кваркус хоть и много либ поддерживает, но ориентирован на облака и кубы
    для графики ни чего не нашёл
     
  • 2.34, OramahMaalhur (ok), 16:19, 15/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Есть, GraalVM (native image). Проще всего завести с каким-то фреймворком типа Quarkus или Micronaut, но вполне можно и без них обойтись. Правда, там есть свои нюансы: в определённых случаях придётся генерировать огромные json-ы с описанием рефлексий, не все стандартные либы соберутся, пляски с бубном вокруг JNI, статическая линковка и особенности с libc на разных системах.
    Но в целом оно шустро работает.
     
     
  • 3.35, Аноним (4), 16:43, 15/09/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это всё хорошо, но тут нельзя грубо говоря закинуть в него эту кучку jar и чтобы всё работало само. Нужно переписывать. И, в зависимости от того, как написано, это может оказаться невозможным при всём желании.
     
  • 2.68, nich (ok), 08:05, 17/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Добавь побольше памяти, чтобы было что жрать.
     
  • 2.69, Ефросии (?), 13:17, 17/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ну как бэ, жрёт же не jvm, жрёт говнокод. Вот например есть коллекции Eclipse Collections, они меньше жрут.
     
     
  • 3.70, Аноним (4), 13:24, 17/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ну так что делать, если код написан 15 лет назад. И его много, очень много.
     

  • 1.5, Урри (ok), 10:13, 15/09/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +8 +/
    > Добавлена предварительная реализация API Foreign Function & Memory
    > https://openjdk.java.net/jeps/412

    Отстой. Велосипедный отстой.

    Неужели нельзя было посмотреть, как все сделано в шарпе (та же джава, только сбоку) и сделать так же удобно? А не вот эти вот MemoryLayout.ofSequence .. CLinker.toCString .. MemoryAccess.setAddressAtIndex .. CLinker.toJavaStringRestricted?

    Да хотя бы libffi прикрутить, если не умеете сами нормальный код дизайнить.

    При этом еще имеют наглость заявлять "This code is far clearer than any solution that uses JNI"!!! Ититьколотить, far clearer, вашумать.

    --
    Нет слов, одни, блин, эпитеты!

     
     
  • 2.9, Аноним (8), 10:39, 15/09/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    M$ засудит.
     
     
  • 3.24, Урри (ok), 12:52, 15/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    За аннотации же не засудила?
    В чем проблема расширить аннотации до "как в шарпе, но не как в шарпе" и написать свой код?
     
  • 3.62, maximnik0 (?), 19:09, 16/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    >M$ засудит.

    За что ? Net! это теперь независимая разработка,то что площадка крутиться на сервере у M$ историческое наследие.Код открытый,единственное что старый код с .NET Framework привязан к win платформе и тот код предоставлен просто посмотреть....

     
  • 2.18, Аноним (14), 11:53, 15/09/2021 [^] [^^] [^^^] [ответить]  
  • –2 +/
    где твой PR в openjdk, раз лично ты разбираешься в проектировании кода лучше?
     
     
  • 3.23, Урри (ok), 12:50, 15/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    PR "Вы накодили какое-то тупое г_вно"? А смысл?

    > раз лично ты

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

     
  • 3.36, Фотошоп лучше (?), 18:40, 15/09/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну, на мой взгляд, человек написал по сути с примерами. И, в общем-то прав.
    Зато версия 17, хотя инкрементировать нужно было минор.
     
  • 2.28, Аноним (28), 14:03, 15/09/2021 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Что вы хотите от убогих javaмакак? Они такие же убогие как растомакаки.
    Настоящие программисты пишут только на ANSI C
     
     
  • 3.45, Прохожий (??), 05:59, 16/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Настоящие программисты пишут только на ANSI C и питаются г-ном мамонта на завтрак, обед и ужин.
     
  • 3.47, Аноним (47), 08:11, 16/09/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    На лиспе. На божественном лиспе.
     
  • 3.48, Старший аноним (?), 09:12, 16/09/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Настоящему программисту все равно на каком языке писать. Настоящий программист выбирает для определенной задачи наиболее подходящий язык.
     
     
  • 4.63, YetAnotherOnanym (ok), 19:28, 16/09/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ты какой-то скучный. Брать для каждой задачи подходящий для неё инструмент - это тривиально. Вот шинковать лук киянкой для тротуарной плитки - это трендово, потому что киянка - инструмент, быстрый в освоении и несложный в использовании, использование киянки позволяет быстро приступить к работе и получить результат раньше конкурентов.
     
  • 4.71, lockywolf (ok), 13:41, 17/09/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Настоящий программист на любом языке может написать программу на Фортране.
     

  • 1.25, Аноним (25), 12:55, 15/09/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Готовые для установки сборки Java SE 17 (JDK, JRE и Server JRE) подготовлены для Linux (x86_64, AArch64), Windows (x86_64) и macOS

    А как же соляра?

     
  • 1.26, Аноним (26), 13:01, 15/09/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Как же тоскливо и уныло стало читать новости про жабу - как наблюдать за престарелой собакой. То ли дело раньше были новости: "Java производит математические расчеты в 4 раза быстрее C++", "новый сборщик мусора обгоняет malloc()/free() в 10 раз" и т.п. И где теперь вся эта эффективность, производительность и безопасность? А C++ живее всех живых и действительно развивается.
     
     
  • 2.42, лютый жабби__ (?), 04:15, 16/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    >Java производит математические расчеты в 4 раза быстрее C++

    так уже со счёту сбились во скока раз жаба быстрее... вот у меня внатуре на серваках валяется простейшая прога которая намного быстрее sort -u  хотя там внутри 3 строчки - загрузить всё в HashSet и выплюнуть...

     
     
  • 3.59, Аноним (38), 17:21, 16/09/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    1. С++ и std::unordered_set были бы быстрее.
    2. sort умеет сортировать файлы, которые не влазят в память. Создаёт для этого временные файлы.
     
  • 2.43, Хан (?), 05:43, 16/09/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Страсти утихли, C++ и Java сейчас практически не пересекаются, у каждого своя ниша в которой он навертво сидит

    Только NET и Java до сих пор холиварят

     
     
  • 3.76, anonymous (??), 23:51, 17/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Чисто ради интереса: кто на чём специализируется? Весь энтерпрайз на джаве, а вещи типа игроделов, high frequency trading и фин моделирования на плюсах?
     
  • 2.44, Хан (?), 05:46, 16/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    C++ это незыблеммый титан всея ИТ
     
  • 2.50, Аноним (50), 10:29, 16/09/2021 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Как же тоскливо и уныло стало читать новости про жабу

    Подтверждаю как Java-разработчик — язык вроде бы "развивается", но реального прогресса нет.

    Graal сдох. AOT сдох, а теперь вообще был выпилен. Project Valhalla там же. Зато каждый день прикручивают новый, модный синтаксис. Как будто те, кому нужны все эти рюшечки, давным-давно не перешли на Scala и Kotlin.

     
     
  • 3.52, лютый жабби__ (?), 10:56, 16/09/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >но реального прогресса нет.

    ты уже жабосиньёр-фулстэк с ЗП 400++ тыр?
    Блин, ну семью заведи, будет чем заняться...
    Наоборот бесит, что 7 лет кодишь, а ещё и конца и края не видно (то java EE сдохнет, надо спринг учить, то jsf сдохнет, надо реакт учить, в спринге вообще модулей понаклепали, хоть 100 лет ковыряйся так дураком и помрёшь)... а тебе прогресс подавай

     
     
  • 4.58, Аноним (58), 16:43, 16/09/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Да такие кактусы жабистам ещё есть и есть. У вас же даже стандартного аналога gettext нет - до сих пор интернационализацию ручками делаете, как в MFC в середине 90х.
     

  • 1.27, Аноним (27), 13:02, 15/09/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    отличная новость!
    закопайте ломбок и котлит плиз )
     
  • 1.29, BratishkaErik (ok), 14:11, 15/09/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    ждем ебилд, ведь они выходят только на LTS версии
     
  • 1.33, Anonymoustus (ok), 14:57, 15/09/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Предложена экспериментальная реализация сопоставления по шаблону в выражениях "switch", позволяющая в метках "case" использовать не точные значения, а гибкие шаблоны, охватывающие сразу серию значений, для которых ранее приходилось использовать громоздкие цепочки выражений "if...else". Кроме того внутри "switch" обеспечена возможности обработки значений NULL.

    Жаба начнёт тормозить втрое против прежнего? И с ошибками обработки значений NULL? :)

     
  • 1.37, Аноним (37), 19:45, 15/09/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Джава хорошеет. Оракл молодцы, что сменили схему выпуска новых версий. Очевидно, что это пошло на пользу.
     
  • 1.39, Аноним (39), 22:15, 15/09/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Почему на Rust не переписали?
     
  • 1.40, Михрютка (ok), 22:37, 15/09/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    самое главное забыли

    >>>JDK 17 binaries are free to use in production and free to redistribute, at no cost, under the Oracle No-Fee Terms and Conditions License.
    >>>JDK 17 will receive updates under these terms, until at least September 2024.

    до кого-то видимо дошло.

    "уж лучше я, чем какой-нибудь мерзавец"

     
  • 1.41, Хан (?), 03:46, 16/09/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Спасибо Oracle, что на swing не забили, это единственный нормальный тулкит для Java
     
     
  • 2.46, Аноним (47), 08:09, 16/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Нормальных там до сих пор нет. А этот единственный терпимый.
     
     
  • 3.49, Хан (?), 09:51, 16/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Для толстого клиента серверсайда Swing хватает за глаза
     
  • 2.53, vvm13 (?), 12:01, 16/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Что не так с JavaFX?
     
     
  • 3.56, Аноним (56), 14:06, 16/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Оно уже агонизирует.
     
     
  • 4.64, vvm13 (?), 19:33, 16/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    В каком смысле "агонизирует"?
     
  • 4.65, vvm13 (?), 20:23, 16/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Is Java Swing Dead 2020?
    You can say that Java Swing is a zombie: It is still available and in use in its latest development state, but makes no progress in regard of improvements.

    Что касается JavaFX, он очень близок к зомби, но не совсем. Хоть какие-то мелочёвки в очень малых количествах, но добавляются.

     
  • 3.66, Alladin (?), 23:14, 16/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Жрет больше свинга и авт вместе взятых и с горкой..
     
     
  • 4.67, Аноним (28), 07:20, 17/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    А в чем это появляется?
     

  • 1.51, abi (?), 10:54, 16/09/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Котлин, я так понимаю, всё? Развития Java сильно ускорилось и тягаться с ораклом врядли получится.
     
     
  • 2.54, vvm13 (?), 12:05, 16/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Не особенно ускорилось. А самое важное (для Котлина) - на Андроиде Java стоит на месте.
     
     
  • 3.57, abi (?), 16:00, 16/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Да, всё-время вижу про Андроид и котлин, но а если не андроид и новый проект сейчас? Бэкэнд на java 17 или на котлине?
     
     
  • 4.60, Аноним (38), 17:27, 16/09/2021 [^] [^^] [^^^] [ответить]  
  • +/
    На котлине. Можно ещё на Scala, она мощнее, но и тяжелее в освоении, и там коммунити помешаное на ФП, хотя сам язык тебя не заставляет кодить в ФП стиле.
     

  • 1.55, Аноним (-), 12:15, 16/09/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    >Java 17 полностью открыта под лицензией GPLv2 с исключениями GNU ClassPath, разрешающими динамическое связывание с коммерческими продуктами.

    Это ошибка коммерческие библиотеки не надо использовать.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:
    При перепечатке указание ссылки на opennet.ru обязательно



    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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