Название базовой системы (платформы): | Java |
Разработчики: | Oracle |
Дата последнего релиза: | 2022/09/20 |
Технологии: | Средства разработки приложений |
Содержание |
2022
Java SE 19
20 сентября 2022 года стало известно о том, что после шести месяцев разработки компания Oracle выпустила платформу Java SE 19 (Java Platform, Standard Edition 19), в качестве эталонной реализации которой используется открытый проект OpenJDK. За исключением удаления некоторых устаревших возможностей в Java SE 19 сохранена обратная совместимость с прошлыми выпусками платформы Java - большинство ранее написанных Java-проектов без изменений будут работоспособны при запуске под управлением обновленной версии. Готовые для установки сборки Java SE 19 (JDK, JRE и Server JRE) подготовлены для Linux (x86_64, AArch64), Windows (x86_64) и macOS (x86_64, AArch64). Разработанная в рамках проекта OpenJDK эталонная реализация Java 19 полностью открыта под лицензией GPLv2 с исключениями GNU ClassPath, разрешающими динамическое связывание с коммерческими продуктами.
Как сообщалось, Java SE 19 отнесён к категории выпусков с обычным сроком поддержки, обновления для которого будут выпускаться до следующего релиза. В качестве ветки с длительным сроком поддержки (LTS) следует использовать Java SE 17, обновления для которого будут выпускаться до 2029 года. Начиная с выпуска Java 10 проект перешёл на обновленный процесс разработки, подразумевающий более короткий цикл формирования релизов. Обновленная функциональность теперь развивается в одной постоянно обновляемой master-ветке, в которую включаются уже готовые изменения и от которой раз в шесть месяцев ответвляются ветки для стабилизации других выпусков.
Из обновлений Java 19 можно отметить следующие:
- Предложена предварительная поддержка шаблонов записей (record pattern), расширяющая появившуюся в Java 16 возможность сопоставления с образцом средствами для разбора значений классов типа record.
- В сборках для Linux обеспечена поддержка архитектуры RISC-V.
- Добавлена предварительная поддержка API FFM (Foreign Function & Memory), позволяющего организовать взаимодействие Java-программ с внешними кодом и данными через вызов функций из внешних библиотек и доступ к памяти вне JVM.
- Добавлена поддержка виртуальных потоков, представляющих собой легковесные потоки, оптимизирующие написание и сопровождение многопоточных приложений.
- Предложена четвёртая предварительная реализация API Vector, предоставляющего функции для векторных вычислений, которые выполняются с использованием векторных инструкций процессоров x86_64 и AArch64 и позволяют одновременно применить операции сразу к нескольким значениям (SIMD). В отличие от предоставляемых в JIT-компиляторе HotSpot возможностей по автовекторизации скалярных операций, API даёт возможность явно управлять векторизацией для параллельной обработки данных.
- Добавлена третья экспериментальная реализация сопоставления по шаблону в выражениях "switch", позволяющая в метках "case" использовать не точные значения, а гибкие шаблоны, охватывающие сразу серию значений, для которых ранее приходилось использовать громоздкие цепочки выражений "if...else".
- Добавлен экспериментальный API для cтруктурированного параллелизма, оптимизирующий разработку многопоточных приложений за счёт обработки нескольких задач, выполняемых в разных потоках, как единого блока[1].
Java SE 18
23 марта 2022 года стало известно о том, что после шести месяцев разработки компания Oracle выпустила платформу Java SE 18 (Java Platform, Standard Edition 18), в качестве эталонной реализации которой используется открытый проект OpenJDK. За исключением удаления некоторых устаревших возможностей в Java SE 18 сохранена обратная совместимость с прошлыми выпусками платформы Java - большинство ранее написанных Java-проектов без изменений будут работоспособны при запуске под управлением данной версии. Готовые для установки сборки Java SE 18 (JDK, JRE и Server JRE) подготовлены для Linux (x86_64, AArch64), Windows (x86_64) и macOS (x86_64, AArch64). Разработанная в рамках проекта OpenJDK эталонная реализация Java 18 полностью открыта под лицензией GPLv2 с исключениями GNU ClassPath, разрешающими динамическое связывание с коммерческими продуктами.
Как сообщалось, Java SE 18 отнесён к категории выпусков с обычным сроком поддержки, обновления для которого будут выпускаться до следующего релиза. В качестве ветки с длительным сроком поддержки (LTS) следует использовать Java SE 17, обновления для которого будут выпускаться до 2029 года. Начиная с выпуска Java 10 проект перешёл на другой процесс разработки, подразумевающий более короткий цикл формирования релизов. Обновленная функциональность теперь развивается в одной постоянно обновляемой master-ветке, в которую включаются уже готовые изменения и от которой раз в шесть месяцев ответвляются ветки для стабилизации других выпусков.
Из обновлений Java 18 можно отметить:
- По умолчанию задействована кодировка UTF-8. Java API, обрабатывающие текстовые данные с учётом кодировки символов, теперь будут по умолчанию использовать UTF-8 на всех платформах, независимо от системных настроек и выставленной локали. Для возвращения старого поведения, в котором кодировка выбирается с учётом системной локали, можно использовать параметр "-Dfile.encoding=COMPAT".
- В состав включён пакет com.sun.net.httpserver, в которых входит утилита jwebserver и библиотечный API с реализацией простого http-сервера для отдачи статического контента (CGI и servlet-подобные обработчики не поддерживаются). Встроенный http-сервер не оптимизирован для рабочих нагрузок и не поддерживает управление доступом и аутентификацию, так как нацелен главным образом на использование в процессе разработки для создания прототипов, отладки и тестирования проектов.
- В JavaDoc реализована поддержка тега "@snippet" для встраивания рабочих примеров и фрагментов кода в документацию на API, к которым можно применять средства для проверки корректности, подсветки синтаксиса и интеграции с IDE.
- Переделана реализация API java.lang.reflect (Core Reflection), предназначенного для получения информации о методах, полях и контрукторах классов, а также доступа к внутренней структуре классов. Сам API java.lang.reflect остался неизменен, но теперь реализован через использование дескрипторов методов (method handles), предоставляемых модулем java.lang.invoke, вместо применения генераторов байткода. Изменение позволило унифицировать реализации java.lang.reflect и java.lang.invoke, и оптимизировать их сопровождение.
- Предложена третья предварительная реализация API Vector, предоставляющего функции для векторных вычислений, которые выполняются с использованием векторных инструкций процессоров x86_64 и AArch64 и позволяют одновременно применить операции сразу к нескольким значениям (SIMD). В отличие от предоставляемых в JIT-компиляторе HotSpot возможностей по автовекторизации скалярных операций, API даёт возможность явно управлять векторизацией для параллельной обработки данных.
- Добавлен SPI-интерфейс (service-provider interface) для резолвинга имён хостов и IP-адресов, позволяющий задействовать в java.net.InetAddress альтернативные резолверы, не привязанные к обработчикам, предлагаемым операционной системой.
- Предложена вторая предварительная реализация API Foreign Function & Memory, при помощи которого приложения могут взаимодействовать с кодом и данными, находящимися за пределами Java runtime. Обновленный API позволяет вызывать функции, выполняемые не в JVM, и обращаться к памяти, не управляемой JVM. Например, можно вызывать функции из внешних разделяемых библиотек и обращаться к данным процесса без использования JNI.
- Добавлена вторая экспериментальная реализация сопоставления по шаблону в выражениях "switch", позволяющая в метках "case" использовать не точные значения, а гибкие шаблоны, охватывающие сразу серию значений, для которых ранее приходилось использовать громоздкие цепочки выражений "if...else".
- Объявлен устаревшим и будет отключён в одном из следующих выпусков механизм финализации, а также связанные с ним методы, такие как Object.finalize(), Enum.finalize(), Runtime.runFinalization() и System.runFinalization().
- В сборщиках мусора ZGC (Z Garbage Collector), SerialGC и ParallelGC реализована поддержка дедупликации строк[2].
2019
Исправление 20 уязвимостей
17 октября 2019 года стало известно, что компания Oracle исправила 219 опасных уязвимостей в разных линейках продуктов. В платформе Java SE исправлено 20 уязвимостей. Подробнее здесь.
Java SE 13
8 октября 2019 года компания Oracle объявила о выпуске версии Java SE 13 (JDK 13). Этот релиз демонстрирует приверженность Oracle ускорению инноваций предприятиями и сообществом разработчиков за счет предсказуемого выпуска усовершенствований в рамках шестимесячного цикла обновления функций (Feature Release Cadence).
Как отметили в Oracle, JDK 13 повышает продуктивность труда разработчиков за счет увеличения производительности, стабильности и безопасности платформы Java SE и JDK. Представленная версия также включает две ознакомительных возможности: Switch Expressions, расширяющие команду выбора switch так, что ее можно использовать как оператор или как выражение (JEP 354), и добавление текстовых блоков в язык Java (JEP 355).
Ознакомительные версии, представленные в JEP 12, предоставляют разработчикам полностью специфицированные и реализованные функции для тестирования с целью сбора отзывов для последующего их включения в качестве стандартных элементов языка. Разработчикам рекомендуется при их использовании учитывать, что в следующем релизе они могут быть изменены или удалены. Ознакомительные функции являются важной частью модели выпуска версий и обеспечивают более широкое участие сообщества разработчиков в создании окончательного варианта новых функций. Они также улучшают качество и производительность финальных версий, когда эти функции становятся общедоступными, утверждают в Oracle.Как DevOps-сервис помогает «разгрузить» высоконагруженные системы BPMSoft
Oracle JDK 13 заменяет собой Oracle JDK 12 и предлагает плавный переход благодаря инкрементальным изменениям. В соответствии с планами выпуска критических обновлений Oracle намерена подготовить как минимум две модификации этой версии до того, как будет выпущена версия Oracle JDK 14, запланированная на март 2020 года.
В версии Java SE 13 реализованы следующие предложения по улучшению (Java Enhancement Proposals, JEP):
- JEP 350: Dynamic CDS Archives повышает удобство использования функции Application Class-Data Sharing, улучшая параметры запуска и ресурсоёмкости.
- JEP 351: ZGC – Uncommit Unused Memory улучшает управление памятью, возвращая неиспользованную динамическую память в операционную систему / контейнер.
- JEP 353: заново реализует устаревший Socket API чтобы упростить его поддержку, отладку и обеспечить интеграцию с пользовательскими потоками, известным как файберы.
- JEP 354: Switch Expressions (ознакомительная версия) упрощают повседневное кодирование и подготавливает почву для будущих функций, таких как сопоставление объектов с образцом (JEP 305).
- JEP 355: Text Blocks (ознакомительная версия) упрощает задачу использования в выражениях текстовых строк, занимающих несколько строк исходного кода.
Oracle также продолжает предлагать подписку на Oracle Java SE. Для клиентов это привлекательная по цене и гибкая возможность получения лицензий на Java SE и поддержку для необходимых систем в течение требуемого срока. По мнению Oracle, предложение облегчает предприятиям и разработчикам доступ к регулярным выпускам проверенных и сертифицированных обновлений Java SE 7, 8, 11, 13 и более поздних версий, касающихся производительности, стабильности и безопасности, непосредственно от распорядителя Java. Как и в предыдущих выпусках Java SE, Oracle продолжает руководить разработкой и внедрением большинства усовершенствований в Java SE, в том числе в JDK 13, и взаимодействовать с экосистемой Java-разработчиков, чтобы продуманно развивать эту платформу.
«Версия JDK 13 – результат общеотраслевой разработки, включающей открытый анализ, еженедельные сборки и широкое сотрудничество инженеров Oracle и членов мирового сообщества разработчиков Java через OpenJDK Community и JCP. Цель всегда состоит в том, чтобы сделать последние инновации в платформе Java SE Platform и JDK легкодоступными для разработчиков во всем мире»[3], отметил Джордж Сааб, вице-президент Oracle по разработке платформы Java |
2018
Java SE 11
В конце сентября 2018 года Oracle представила новую версию платформы Java SE (Java Platform, Standard Edition). Она включает в себя множество улучшений, предназначенных для повышения продуктивности разработчиков, а также поддерживает ряд новых криптографических и интернет-стандартов, таких как сетевой протокол HTTP/2 и протокол защиты транспортного уровня TLS 1.3.
С выходом Java 10 в марте 2018 года Oracle перешла на новый 6-месячный цикл разработки платформы. Версия Java SE 11 относится к релизу с длительным сроком поддержки (Long Term Support, LTS), для которого будут выпускаться обновления вплоть до 2026 года.
Выпуск обновлений для прошлого промежуточного выпуска Java 10 прекращен. LTS-ветка Java 8 будет поддерживаться до декабря 2020 года. Следующий LTS-релиз запланирован на сентябрь 2021-го
Протокол TLS 1.3, поддержка которого появилась в Java SE 11, позволяет ускорить загрузку мобильных версий интернет-страниц и отсеивать старые, уязвимые криптографические примитивы, заменяя их более сложными алгоритмами шифрования.
Кроме того, Oracle при поддержке сообщества реализовала следующие нововведения:
- Реализована система, которая позволяет классам, находящимся в одной части кода, но компилируемым по отдельности, получать доступ к приватным компонентам друг друга.
- Формат .class дополнен поддержкой форм CONSTANT_Dynamic, загрузка которых отдает создание констант методу bootstrap.
- Добавлен инструментарий для потокового сбора низкоуровневых данных об ошибках и проблемах.
- Добавлена возможность запускать однофайловые программы, содержащие исходный код.
- Добавлен экспериментальный сборщик мусора Epsilon,
- Включены инструменты Java Mission Control (JMC) и Java Flight Recorder (JFR), которые предоставляют средства для мониторинга, диагностики, профилирования и выявления утечек памяти.[4]
Java SE 10
20 марта 2018 года компания Oracle выпустила новую версию платформы Java SE (Java Platform, Standard Edition) и отказалась от поддержки предыдущей модификации. Разработка Java SE 10 проводилась в тесном сотрудничестве с сообществом OpenJDK Community, с которым американский ИТ-гигант работает более 10 лет.
В связи с этим в качестве эталонной реализации Java SE 10 используется открытый проект OpenJDK, который полностью открыт под лицензией GPLv2 с исключениями GNU ClassPath, разрешающими динамическое связывание с коммерческими продуктами.
В Java SE 10 сохранена обратная совместимость с предыдущими выпусками Java. Ранее написанные Java-проекты без изменений смогут работать при запуске под управлением этой версии.
При этом Oracle завершила поддержку Java SE 9, а 10-я ветка платформы будет поддерживаться до сентября 2018 года, когда планируется выпустить Java 11. Те, кто не хочет пользоваться новыми версиями, могут задействовать ветку Java 8, которой присвоен статус LTS-релиза и обеспечена поддержка до декабря 2020 года.
Основные нововведения в Java SE 10 перечисляются в пресс-релизе Oracle:
- Выведение типа локальной переменной. Это улучшает язык Java, позволяя расширить вывод типа локальной переменной на основе типа инициализатора;
- В сборщике мусора G1 реализована возможность выполнения полного цикла сборки мусора в параллельном режиме. Это снижает задержки в ситуациях, когда невозможно обойтись без выполнения операции полной сборки мусора;
- Возможность упаковки классов в общий архив в Application Class-Data Sharing. Помогает ускорить запуск приложений и снизить накладные расходы:
- Новый JIT-компилятор Graal, написанный на Java. Его можно включить только в Linux/x64;
- Поддержка новых расширений Unicode: cu (currency type), fw (first day of week), rg (region override), tz (time zone).[5]
2017: Java SE 9
22 сентября 2017 года компания Oracle сообщила о выпуске платформы Java SE 9 (Java Platform, Standard Edition 9). В качестве эталонной реализации используется открытый проект OpenJDK. В Java SE 9 сохранена обратная совместимость с предыдущими выпусками Java. Ранее написанные Java-проекты без изменений будут работоспособны при запуске под управлением этой версии.
Изначально выпуск Java SE 9 планировался на 22 сентября 2016 года. Трижды перенесён. Готовые для установки сборки Java SE 9 (JDK, JRE и Server JRE) подготовлены для Linux (x86_64), Solaris ( SPARC), Windows и macOS[6].
Эталонная реализация Java 9 открыта под лицензией GPLv2 с исключениями GNU ClassPath, разрешающими динамическое связывание с коммерческими продуктами. Проприетарный Oracle JDK 9 отличается от OpenJDK наличием некоторых закрытых компонентов, вроде системы плагинов, которые не определены в Java-стандарте и не входят в эталонную реализацию Java 9.
Oracle JDK поставляется под лицензией BCL (Binary Code Licence). Oracle намерена полностью открыть код коммерческих компонентов и обеспечить полную взаимозаменяемость OpenJDK и Oracle JDK, перейти на цикл разработки Java SE, подразумевающий формирование выпусков один раз в полгода с постепенным переносом функционала, стабилизированного в непрерывно развиваемой ветке.
Основные изменения
- Интеграция средств разбиения программ и JDK на модули, развиваемых в рамках проекта Jigsaw:
- JEP 200 - определение модульной структуры JDK.
- JEP 201 - Реорганизация кода JDK в модули, усовершенствование системы сборки для поддержки компиляции модулей, раздельная обработка модулей на этапе сборки.
- JEP 220 - реструктуризация бинарных образов JDK и JRE для поддержки модулей и увеличения производительности, безопасности и удобства сопровождения.
- JEP 282 - компоновщик jlink для связывания и оптимизации модулей с учётом зависимостей;
- JEP 261 - реализация Java Platform Module System;
- JEP 275 - пакетный менеджер javapackager для модульных Java-приложений.
Разбиение кода платформы Java на модули упростит создание, сопровождение и распространение больших приложений, позволив избавиться от наблюдаемых проблем с монолитными JAR и распространением наборов классов. Система модулей даст возможность выделять функциональность и формировать настраиваемые конфигурации, адаптируемые для развёртывания на больших серверах и встраиваемой технике. Модульные приложения на основе модульной платформы Java потребуют загрузки меньшего объёма данных и позволят достичь более высокой производительности при более эффективной оптимизации модулей, специфичных для используемой конфигурации.
- Легковесный JSON API для обработки и генерации данных в формате JSON;
- API для разработки HTTP-клиентов, идущий на замену HttpURLConnection и поддерживающий HTTP/2.0 и websockets;
- Улучшенный API для управления процессами на уровне операционной системы;
- Добавлена интерактивная оболочка jshell, упрощающая запуск однострочников в процессе разработки, экспериментов с новыми возможностями и API;
- Модернизирована система документации Javadoc, в которой добавлены средства для генерации руководств в формате HTML5 и функции для поиска документации по API и информации об определении классов и интерфейсов в модулях;
- Улучшен Streams API, в котором реализована возможность использования методов для ситуационного добавления или удаления элементов из потоков Stream, перебора элементов Stream и создания Stream из обнуляемых значений. Расширен набор Java SE API, которые могут выступать источником для Stream.
- Формат JAR расширен возможностью поставки в одном архиве нескольких версий файлов с классами, использующих возможности, специфичные для разных релизов Java;
- Представлены порты архитектур Linux/AArch64 и Linux/s390x. Добавлен унифицированный порт для arm32 и arm64;
- В JavaScript-движок Nashorn, работающий поверх виртуальной машины Java (JVM), добавлена порция возможностей, определённых в спецификации ECMAScript 6. Реализован Parser API для разбора синтаксиса ECMAScript;
- В разряд устаревших переведены Applet API (для запуска Java-приложений в браузере рекомендована технология Java Web Start);
- Реализована поддержка хэшей SHA-3. Отключена возможность использования сертификатов на базе SHA-1;
- Задействована упрощённая система сборки HotSpot, основанная на фреймворке build-infra;
- Расширен набор диагностических команд: print_class_summary, print_codegenlist, datadump_request, print_codeblocks, set_vmflag и т.д.
- Оптимизации:
- Улучшение работы блокировок для конкурирующих Java-объектов, позволившие повысить производительность в условиях, когда разные потоки одновременно пытаются получить доступ к объектам;
- Сегментирование кэша JIT-компилятора, позволившее повысить производительность длительно выполняемых программ, сократить фрагментацию и время запуска;
- Интеграция в компилятор sjavac (Smart Java compiler) средств параллельной и раздельной сборки. Улучшения для обеспечения сборки JDK и крупных проектов. Переработка кода разбора аннотаций;
- Обеспечено более компактное внутреннее представление строк (класс String), позволяющее экономить память;
- Для 32- и 64-разрядных серверных систем по умолчанию задействован сборщик мусора G1, ограничивающий размер пауз в процессе сборки мусора;
- Обеспечена возможность упреждающей (Ahead-of-Time) компиляции классов в машинный код перед запуском виртуальной машины, что позволяет заметно сократить время старта крупных приложений;
- Реализован сегментированный кэш для кода, в котором используется раздельное кэширования различных типов кода;
- Возможности для создания GUI:
- Для графических приложений, основанных на JavaFX, Swing и AWT, помимо GTK+ 2 обеспечена поддержка библиотеки GTK+ 3 на платформе Linux;
- Поддержка использования в графических приложениях возможностей, специфичных для разных рабочих столов. Например, API для взаимодействия с панелью задач, системным лотком и системой уведомлений, обработка событий от других приложений;
- Поддержка экранов с высокой плотностью пикселей (HiDPI), при работе на платформах Linux и Windows. Вывод текста, изображений и пиктограмм теперь осуществляется с учётом параметров экрана;
- Для однородного вывода текста на всех поддерживаемых системах вместо движка ICU OpenType задействована библиотека HarfBuzz;
- Компоненты JavaFX/Media переведены на новую ветку GStreamer 1.x;
- Добавлен API для манипуляции изображениями, доступными в нескольких разрешениях.
2016: Java SE 8 Update 77
24 марта 2016 года компания Oracle сообщила о внеплановом выпуске апдейта 77 для ПО Java SE 8. С ним устраняется опасная уязвимость CVE-2016-0636[7].
Уровень ее угрозы специалисты оценили в 9,3 балла по десятибалльной шкале Common Vulnerability Scoring System (CVSS). Уязвимость потенциально позволяет злоумышленникам удаленно исполнять произвольный код на компьютерах жертв, минуя процесс аутентификации, сообщил ТЦИ. Для этого могут использоваться специально созданные веб-страницы, эксплуатирующие уязвимость.
Уязвимость CVE-2016-0636 затрагивает продукты Oracle Java SE 7 Update 97, 8 Update 73 и 74 для операционных систем Windows, Solaris, Linux и Mac OS X. Всем пользователям рекомендовано незамедлительно установить выпущенное обновление и удалить устаревшие версии.
2015
Обман Oracle при обновлении Java
В декабре 2015 года Oracle признала свою вину в том, что ввела в заблуждение пользователей по поводу безопасности обновлений программного обеспечения Java Standard Edition. В результате огромное количество персональных компьютеров по всему миру оказались незащищенными от атак хакеров.
21 декабря 2015 года Федеральная торговая комиссия США (Federal Trade Commission, FTC) обнародовала сообщение, в котором обвинила Oracle в обмане потребителей. Компания не предупреждала владельцев ПК, что обновления Java автоматически удаляют только предыдущие версии софта, а более старые модификации остаются в системе.
Согласно заявлению Oracle, FTC обещала пользователям безопасность и защищенность Java при установке наиболее актуальных версий продукта, однако в действительности это оказалось не так. Java Standard Edition загружен примерно в 850 млн компьютеров, отметил регулятор.
«Когда программное обеспечение установлено на сотни миллионов ПК, крайне необходимо, чтобы все заявления были правдивыми, а обновления безопасности в действительности обеспечивали защиту ПО», —– отметила директор Бюро по защите прав потребителей FTC (Bureau of Consumer Protection) Джессика Рич (Jessica Rich).
Федеральная торговая комиссия потребовала, чтобы впредь Oracle предупреждала своих клиентов, что обновление Java возможно только в том случае, если установлена предыдущая версия ПО, а пользователям более старого софта необходимо предложить возможность удалить его и загрузить свежую версию.
Oracle согласилась выполнить это требование в полном объеме. Она расскажет о процессе правильного обновления Java на своем официальном сайте и страницах в социальных сетях. В корпорации не ответили на запрос агентства Reuters прокомментировать ситуацию.[8]
Корректирующие выпуски Java SE 8u65 и 8u66 устранили 25 проблем ИБ
21 октября 2015 года компания Oracle представила выпуски обновлений Java SE 8u65 и 8u66, с выходом которых устранены 25 проблем с безопасностью, из которых 24 могут быть активированы удалённо, без проведения аутентификации[9].
Семи уязвимостям присвоен максимальный уровень опасности (CVSS Score 10.0), подразумевающий возможность выхода за пределы изолированного окружения виртуальной машины, инициирования выполнения кода в системе при обработке специально оформленного контента. Все критические уязвимости отмечены, как легко эксплуатируемые по сети, но проявляющиеся только на клиентских системах (запуск в браузере Java Web Start и Java-апплеты). Пять проблем, максимальная степень опасности которых 7.6, затрагивают не только клиентские, но и серверные системы.
Уязвимости обнаружены и опубликованы в продуктах Oracle:
- 28 уязвимостей в MySQL (максимальный уровень опасности 6.4). Проблемы устранены в сентябрьских выпусках MySQL Community Server 5.6.27 и 5.5.46.
- 12 уязвимостей в Solaris (максимальный уровень опасности 6.6), в том числе удалённо эксплуатируемая уязвимость в INETD;
- 3 уязвимости в VirtualBox (максимальная степень опасности 4.9, все проблемы имеют локальный характер). Уязвимости уже устранены в обновлениях VirtualBox 5.0.8 и 4.3.32, 4.2.34, 4.1.42, 4.0.34;
Вышел корректирующий релиз Java SE 8 Update 60
19 августа 2015 года компания Oracle опубликовала выпуск Java SE 8 Update 60 с коррекцией накопившихся ошибок. В выпуске представлены только не связанные с безопасностью исправления, устранения уязвимостей представлены в версии JavaSE 8u51[10].
JDK 8 Update 60 доступен в сборках для Linux (x86, x64, ARM), Solaris (x64, SPARC), Windows (x86, x64) и OS X (x64).
Ключевое новшество Java SE 8 Update 60 - начало формирования выпусков JDK для архитектуры ARM (ARM v8). В этот выпуск внесены улучшения, связанные с работой Nashorn (JavaScript-движок, работающий поверх JVM) и DRS (Deployment Rule Set) 1.2. В javax.net.ssl отключены по умолчанию шифры, основанные на алгоритме RC4.
Вышли обновления Java SE 8u45 и 7u79/80. Устранены уязвимости
15 апреля 2015 года компания Oracle представила плановый выпуск обновлений продуктов с устранением уязвимостей. В выпусках Java SE 8u45 и 7u79/80 (номер версии - в соответствии с новой схемой нумерации выпусков) устранены 14 проблем с безопасностью[11].
Выпуск Java SE 7u79 вышел одновременно с 7u80 и отличается, помимо устранения уязвимостей, исправлением ошибок не связанных с безопасностью. Это последние, публично доступные обновления для ветки Java SE 7, корпорация рекомендует пользователям перейти на Java 8 или оформить расширенную поддержку.
Все 14 уязвимостей в Java могут быть использованы удалённо, без аутентификации. Три уязвимости (CVE-2015-0469, CVE-2015-0459, CVE-2015-0491) получили максимальный уровень опасности (CVSS Score 10.0), подразумевающий возможность выхода за пределы изолированного окружения виртуальной машины и инициации выполнения кода в системе, при обработке специально оформленного контента. Двум проблемам присвоен уровень 9.3, подразумевающий возможность успешной атаки на клиентские системы, но сложность эксплуатации оценивается как средняя. Три проблемы, максимальная степень опасности которых 5.0, затрагивают как клиентские, так и серверные системы.
Из не связанных с уязвимостями изменений аналитики отметили прекращение возможности использования внутри jar-файлов абсолютных путей (путей, начинающихся с "/") и косвенных переходов (".." в пути). При необходимости использования подобных путей следует явно указывать опцию "-P".
Кроме проблем в Java SE, наличие уязвимостей обнародовано для других продуктов Oracle. Сообщается о пяти уязвимостях в Solaris (для локальных проблем с ZFS и командами работы с аккаунтами указана степень опасности 7.2, уязвимости в Kernel IDMap присвоен уровень 7.1, но она может быть активирована по сети), двух уязвимостях в VirtualBox (максимальная степень опасности 4.3) и 24 уязвимостях в MySQL (максимальная степень опасности 5.7). К 15 апреля 2015 года уязвимости исправлены.
Обновлен релиз Java SE
Java SE: ускорение инноваций
12 марта 2015 года корпорация Oracle объявила о выпуске обновления Java SE.
Платформа усовершенствована и в составе новой версии предлагаются функциональные возможности и преимущества:
- Усовершенствования сборщика мусора G1 (JEP 156). Уменьшена вероятность длительных пауз, когда система высвобождает ресурсы. Уменьшена зависимость G1 от полного сбора мусора для выполнения загрузки класса или других важных операций. Это достигается благодаря поддержке загрузки классов в конце циклов параллельной маркировки.
- Динамическая активация функции Java Flight Recorder (JFR). Эту функцию теперь можно динамически активировать из командной строки или Java Mission Control (JMC), вне зависимости от исходных параметров запуска, что повышает удобство использования Oracle Java SE Advanced. Прежде это можно было сделать, только остановив и перезапустив соответствующие инструкции из командной строки. Динамическая активация JFR позволяет пользователям решать проблемы без необходимости остановки, которая может оказывать влияние на выполнение соглашений об уровне обслуживания и приводить к прерыванию работы конечного пользователя.
- Улучшения упаковщика Java. Упаковщик позволяет разработчикам создавать приложения, не требующие установки Java Runtime на клиенте. Такие автономные приложения можно затем размещать, например, в магазине Mac App Store. Разработчики приложений имеют полный контроль над средой исполнения и точками входа приложения.
- Новый инструмент обновления данных о часовых поясах. Этот инструмент может использовать «сырые» правила для данных о часовых поясах (tzdata) из базы данных регистрации часовых поясов IANA и преобразовывать их в формат, требуемый JRE. Пользователи получают возможность немедленно обновлять правила для часовых поясов JDK/JRE вместе с обновлениями от IANA.
- Поддержка Nashorn. В новой версии реализовано множество оптимизаций Nashorn, включая поддержку динамических языков. Кроме того, добавлен фильтр классов Nashorn, который обеспечивает детальный контроль доступа к классам Java из кода JavaScript через новый интерфейс фильтрации.
- Реакция JVM на дефицит памяти. Свойство memory pressure (дефицит памяти) отражает общее использование памяти (ОЗУ) в системе. Эта новая функциональная возможность может эффективно использоваться для сокращения объема памяти, используемой в системе в случае развертывания множества виртуальных машин JVM, а также контроля объема памяти, выделяемого для использования каждой виртуальной машиной, исключая возникновение ошибок нехватки памяти Out of Memory Errors (OOME).
- Java Mission Control 5.5 (JMC). Этот инструмент включен в состав JDK 8u40. Он основывается на Eclipse 4.4 и содержит подключаемые модули, которые теперь подписываются. Кроме того, JMC по умолчанию не будет показывать скрытые методы лямбда-форм.
- Сокращение и кэширование лямбда-форм (JEP 210). Это улучшение позволяет уменьшить объем памяти, необходимой приложениям, и повышает производительность динамических языков.
- Масштабируемость отслеживания использования системной памяти (JEP 195). Эта функция была улучшена, чтобы обеспечить ее выполнение без существенного влияния на производительность. В то же время, она предоставляет пользователям возможность диагностировать утечки памяти в виртуальной машине JVM.
- Повышение производительности алгоритмов шифрования SHA. Производительность была улучшена на системах класса SPARC, которые активно используются для подписи сертификатов в сервисе Web of Trust. Производительность SHA чрезвычайно важна для обеспечения интернет-безопасности, поскольку браузеры начинают требовать версии SHA-256 или выше с более интенсивными вычислениями, не рекомендуя использовать версию SHA-1.
2014: Новшества версии Java SE 8
18 марта 2014 года Oracle представила принципиальные нововведения в Java Platform, Standard Edition 8 (Java SE 8) - лямбда-вычисления.
Описание
Это - техника функционального программирования, произрастающая из языка Лисп[12].
Код программы может трактоваться как данные. Лямбда-вычисления в контексте Java 8 ориентированы на корпоративные нужды, когда критичные участки кода можно реализовать в виде автоматически распараллеливаемых функций. На многоядерные и мультипроцессорные платформы и нацелены ключевые нововведения новой версии - интерфейс потокового ввода-вывода Stream API, интегрированный с обновленным Collections API для обработки и сортировки наборов значений, хорошо подходит для использования в функциональном стиле Map/Reduce.
Помимо этого, реализованы:
- возможность использования JavaScript в качестве встраиваемого языка сценариев,
- поставка приложений с ограниченным набором компонентов (для маломощных платформ),
- обновлены функции работы с датой и временем,
- расширены аннотации,
- усилено шифрование,
- поддерживается Base64.
2011
Java Platform, Standard Edition 7 (Java SE)
Корпорация Oracle представила в августе 2011 года Java Platform, Standard Edition 7 (Java SE 7), первую версию платформы Java, выпущенную под руководством Oracle.
Новая версия Java SE 7 стала результатом объединенных усилий разработчиков по всей отрасли, включавших открытое обсуждение, еженедельные встречи и широкое сотрудничество инженеров Oracle и участников мировой экосистемы Javaв OpenJDK Community и Java Community Process (JCP).
Java SE 7 предлагает: языковые изменения, которые помогают повысить эффективность труда разработчиков и облегчают решение стандартных задач программирования благодаря уменьшению необходимого объема программного кода, упрощению синтаксиса и улучшению читабельности программ (JSR 334: проект Coin); оптимизированную поддержку динамических языков (включая Ruby, Python и JavaScript), обеспечивающую значительное повышение производительности виртуальной машины Java (JSR 292: InvokeDynamic); новый интерфейс прикладного программирования (API), ориентированный на многоядерные системы и облегчающий разработчикам процедуру разбиения задач на фрагменты, которые могут затем выполняться параллельно с использованием произвольного числа процессорных ядер (JSR 166: Fork/Join Framework); развитый интерфейс ввода-вывода для работы с файловыми системами, позволяющий обращаться к более широкому набору файловых атрибутов и предоставляющий больше сведений об ошибках (JSR 203: NIO.2); новые сетевые функции и средства защиты; расширенную поддержку локализации, включая поддержку стандарта Unicode 6.0; обновленные версии большого числа библиотек.
Высокая степень совместимости Java SE 7 с более ранними версиями платформы делает возможным использование существующего опыта разработчиков на платформе Java и сохранение инвестиций в Java-технологии.
Чтобы начать работу с Java SE 7, уже сейчас разработчики могут воспользоваться интегрированной средой разработки NetBeans Integrated Development Environment (IDE) 7.0, платформой Eclipse Indigo с дополнительным программным модулем Java SE 7 или средой IntelliJ IDEA 10.5, которые поддерживают новейшие функции платформы Java SE 7. Поддержка JDK7 в среде Oracle JDeveloper ожидается к выпуску в 2011 году.
Java SE 8
Экспертная группа Java SE 8 (JSR 337) Expert Group недавно решила отложить добавление модульной системы и модульную компоновку платформы Java (проект Project Jigsaw) до версии Java SE 9, чтобы дать широкому сообществу разработчиков Java достаточно времени для тщательного изучения и тестирования этой важнейшей функции.
В целях поддержки «масштабирования вниз» реализаций Java SE 8 для использования в небольших устройствах Oracle также предлагает набор компактных профилей Profiles of the Java SE Platform.
Дополнительные предложенные функции для Java SE 8 и JDK 8:
- Лямбда-выражения («замыкания») (запрос на изменение спецификации JSR 335) для повышения эффективности разработчиков, оптимизации использования возможностей многоядерных процессоров и улучшения обработки больших массивов данных в Java Collections Framework.
- Nashorn, новый механизм JavaScript, оптимизированный для виртуальной машины JVM; позволяет реализовать прямую функциональную совместимость (интероперабельность) Java/JavaScript.
- Новые API даты-времени (Date/Time) и календаря (JSR 310).
- Комментарии к Java-типам (JSR 308), позволяющие разработать подключаемые модули проверки соответствия типов и, тем самым, усовершенствовать встроенную систему типов.
- Удаление области памяти "permanent generation" из виртуальной машины HotSpot JVM, что облегчает настройку механизма «сборки мусора» (для очистки оперативной памяти).
«Недавнее решение экспертной группы Java SE 8 Expert Group отложить модуляризацию до версии Java SE 9 позволит нам сконцентрироваться на долгожданных возможностях: проекте Project Lambda, JavaScript-механизме Nashorn, новом API-интерфейсе Date/Time API и функционале Type Annotations, а также на других улучшениях производительности, удобства и простоты использования, – подчеркнул Джордж Сааб (Georges Saab), вице-президент Oracle по направлению Software Development, Java Platform Group. – Мы продолжаем расширять наше сотрудничество и повышать прозрачность, разрабатывая базовые решения и подготавливая под руководством Oracle запросы на изменения спецификаций (JSR) в сообществе OpenJDK».
Oracle продолжает работу по объединению Oracle HotSpot JVM и Oracle JRockit JVM в конвергентное решение, которое использует лучшие функции и возможности каждой из этих двух лидирующих на рынке реализаций виртуальной машины.
- Пакет JDK 7 содержал первую версию конвергентной JVM, с рядом функций, присущих JRockit, включая инструменты управления, механизм хранения метаданных на основе динамически распределяемой heap-памяти, а также первый выпуск функций из JRockit Flight Recorder.
- Расширение проекта конвергенции HotSpot/JRockit JVM предназначено для JDK 8, включая улучшения производительности и Java Flight Recorder второго поколения.
Сообщество OpenJDK Community продолжает поддерживать разработку базовой реализации Java SE 8. Еженедельные предварительные сборки JDK 8 для разработчиков по-прежнему доступны на jdk8.java.net.
- Проект OpenJDK активно развивается при поддержке Oracle, а также других компаний, исследователей и индивидуальных разработчиков.
- Свод правил OpenJDK Web Site Terms of Use (Условия пользования web-сайтом OpenJDK) был недавно обновлен, чтобы позволить осуществлять работу над запросами на изменения спецификаций (JSR) для Java SE в сообществе OpenJDK Community наряду с их соответствующими эталонными реализациями и обеспечить соответствие инициатив по модифицированию спецификаций новым требованиям по прозрачности процесса Java Community Process (JCP 2.8).
Примечания
- ↑ Выпуск Java SE 19
- ↑ Выпуск Java SE 18
- ↑ Oracle представила Java SE 13
- ↑ Oracle Boosts Software Development Productivity with New Java Release
- ↑ Oracle Java SE 10 Release Arrives
- ↑ Компания Oracle выпустила Java SE 9 и Java EE 8
- ↑ Срочное обновление Java
- ↑ Oracle settles FTC charges that it left its customers open to hacking
- ↑ Обновление Java SE, MySQL, VirtualBox и других продуктов Oracle с устранением 154 уязвимостей
- ↑ Обновление Java SE 8 Update 60
- ↑ Обновление Java SE (7u80, 8u45), MySQL и других продуктов Oracle с устранением уязвимостей
- ↑ LISP - от англ. LISt Processing language - язык обработки списка
Подрядчики-лидеры по количеству проектов
Солар (ранее Ростелеком-Солар) (46)
Финансовые Информационные Системы (ФИС, FIS, Финсофт) (15)
Форсайт (11)
Axiom JDK (БеллСофт) ранее Bellsoft (10)
Бипиум (Bpium) (10)
Другие (389)
Солар (ранее Ростелеком-Солар) (8)
Финансовые Информационные Системы (ФИС, FIS, Финсофт) (4)
Консом групп, Konsom Group (КонсОМ СКС) (2)
ЛАНИТ - Би Пи Эм (Lanit BPM) (2)
IFellow (АйФэлл) (2)
Другие (30)
Солар (ранее Ростелеком-Солар) (10)
Форсайт (3)
Banks Soft Systems, BSS (Бэнкс Софт Системс, БСС) (3)
Cloud.ru (Облачные технологии) ранее SberCloud (2)
КРИТ (KRIT) (2)
Другие (13)
Распределение вендоров по количеству проектов внедрений (систем, проектов) с учётом партнёров
Солар (ранее Ростелеком-Солар) (2, 48)
Microsoft (41, 47)
Oracle (49, 26)
Hyperledger (Open Ledger Project) (1, 23)
IBM (33, 18)
Другие (595, 304)
Солар (ранее Ростелеком-Солар) (1, 8)
Финансовые Информационные Системы (ФИС, FIS, Финсофт) (1, 4)
Microsoft (4, 3)
Oracle (2, 3)
SAP SE (2, 2)
Другие (16, 19)
Солар (ранее Ростелеком-Солар) (1, 11)
Banks Soft Systems, BSS (Бэнкс Софт Системс, БСС) (1, 3)
Форсайт (1, 3)
Cloud.ru (Облачные технологии) ранее SberCloud (1, 2)
Сбербанк (1, 2)
Другие (9, 9)
Солар (ранее Ростелеком-Солар) (1, 6)
Unlimited Production (Анлимитед Продакшен, eXpress) (1, 6)
МТС Exolve (Межрегиональный ТранзитТелеком, МТТ) (1, 4)
Мобильные ТелеСистемы (МТС) (1, 4)
РЖД-Технологии (1, 3)
Другие (14, 24)
Мобильные ТелеСистемы (МТС) (2, 3)
Солар (ранее Ростелеком-Солар) (1, 3)
Unlimited Production (Анлимитед Продакшен, eXpress) (1, 3)
МТС Exolve (Межрегиональный ТранзитТелеком, МТТ) (1, 2)
Сбербанк (1, 1)
Другие (12, 12)
Распределение систем по количеству проектов, не включая партнерские решения
Solar appScreener (ранее Solar inCode) - 48
Hyperledger Fabric - 23
Windows Azure - 20
FIS Platform - 15
Форсайт. Мобильная платформа (ранее HyperHive) - 12
Другие 324
Solar appScreener (ранее Solar inCode) - 8
FIS Platform - 4
Турбо X - 2
Siemens Xcelerator - 2
Java - 2
Другие 22
Solar appScreener (ранее Solar inCode) - 11
Форсайт. Мобильная платформа (ранее HyperHive) - 3
BSS Digital2Go - 3
Cloud ML Space - 2
Axiom JDK (ранее Liberica JDK до 2022) - 1
Другие 8