Java 9 (JDK 1.9) — мажорный релиз, вышедший 21 сентября 2017 года. Основные цели: Сделать JDK и Java SE модульными для масштабирования на малых устройствах. Повысить безопасность JDK и реализаций Java. Упростить сборку и поддержку библиотек и крупных приложений для Java SE и EE. Спроектировать стан
JEP 312 — Thread-Local Handshakes В JDK 10 добавлена опция JVM -XX:ThreadLocalHandshakes (работает на x64 и SPARC). Опция улучшает производительность VM: позволяет выполнять callback на потоках приложения без глобального VM safepoint. То есть JVM может остановить отдельный поток, не останавливая все
JEP 319 — Root Certificates Раньше хранилище cacerts в OpenJDK было пустым. Для работы TLS и других протоколов безопасности нужен набор доверенных корневых сертификатов (CA). Oracle открыла свои корневые сертификаты через программу Oracle JAVA SE Root CA. Теперь OpenJDK-билды включают набор корневых
JEP 296 — Consolidated JDK Forest as Single Repository В JDK 9 код был разделён на 8 модульных репозиториев (repos): root corba hotspot jaxp jaxws jdk langtools nashorn Структура выглядела так: $ROOT/jdk/src/java.base ... $ROOT/langtools/src/java.compiler ... С Java 10 все леса (forests) объединен
JEP 316 — Heap Allocation on Alternative Memory Devices Java 10 позволяет указать альтернативное устройство памяти (например, NV-DIMM — энергонезависимую память) для размещения Java-кучи. Новая опция: -XX:AllocateHeapAt=<путь_к_файловой_системе> Пример: -XX:AllocateHeapAt=~/etc/heap Опция прин
JEP 314 — Unicode Language-Tag Extensions Java 7 добавила поддержку BCP 47 language tags, но Unicode locale extensions были ограничены календарём и числами. В Java 10 java.util.Locale и связанные классы обновлены для поддержки дополнительных расширений per LDML spec: cu — типы валют (currency types
JEP 304 — Garbage-Collector Interface До Java 10 реализации GC были разбросаны по кодовой базе и сложны для замены. Java 10 вводит чистый интерфейс сборщика мусора, позволяя подключать альтернативные GC-реализации и изолировать код от конкретных алгоритмов сборки мусора. JEP 307 — Parallel Full GC f
JEP 310 — Application Class-Data Sharing При запуске JVM загружает классы в память. При множестве JAR-файлов возникает заметная задержка при первом запросе. В бессерверной архитектуре (serverless) это увеличивает cold-start время. AppCDS позволяет поместить классы приложения в общий архив, уменьшая
JEP 317 — Experimental Java-Based JIT Compiler Традиционный JIT-компилятор написан на C++. Java 10 позволяет включить экспериментальный JIT-компилятор Graal, написанный на Java. Graal использует JVMCI (JVM Compiler Interface), введённый в Java 9. Graal доступен и в Java 9, но в Java 10 его можно вкл
JDK 10 пометил к удалению (forRemoval=true) следующие API и функции: SNMP Monitoring Support — модуль jdk.snmp для SNMP-мониторинга JVM deprecated и помечен к удалению. Классы java.security — Certificate, Identity, IdentityScope, Signer deprecated, forRemoval=true. javax.security.auth.Policy — depr
JDK 10 удалил несколько устаревших API, функций и опций. LookAndFeel: Nimbus и Aqua Старый код должен мигрировать на новый синтаксис: LookAndFeelСтарый кодНовый код Nimbusjavax.swing.UIManager.setLookAndFeel(com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel)UIManager.setLookAndFeel(javax.swing.pl
JDK 10 добавил более 70 новых API и опций. Основные улучшения: Optional.orElseThrow() Новый метод orElseThrow() в java.util.Optional — предпочтительная альтернатива get() (бросает NoSuchElementException, если значение отсутствует). API для создания неизменяемых коллекций Статический метод copyOf()
JEP 286 — Local Variable Type Inference Самое заметное изменение языка в Java 10 — возможность объявлять локальные переменные через var без явного указания типа. Компилятор выводит тип из инициализатора. Ограничение: только для локальных переменных. Старый способ String name = Welcome to tutorialspo
JEP 322 — Time-Based Release Versioning С Java 10 Oracle ввела строгую временную модель версионирования. Мажорные релизы выходят каждые 6 месяцев (в марте и сентябре). Релизы делятся на три категории: Feature Release — новые языковые фичи, JVM-функции, API, удаление/депрекация API. Время фиксирован
Онлайн-компилятор (Live Demo) Мы настроили онлайн-среду для Java, чтобы вы могли компилировать и запускать примеры прямо в браузере. Это даёт уверенность в изучаемом материале и возможность экспериментировать. В правом верхнем углу блоков кода доступна кнопка Live Demo. Пример для проверки: public c
Java 10 — важный релиз в-cadence выпуска Java, вышедший 20 марта 2018 года. С Java 10 Oracle изменила модель выпуска: теперь новые версии выходят каждые 6 месяцев, а для Oracle Java SE продуктов введена модель LTS (Long Term Support — длительная поддержка). Каждый релиз содержит одну или две главные
Типы комментариев в Java Java поддерживает три вида комментариев: ТипСинтаксисОписание Однострочный// комментарийИгнорируется компилятором до конца строки. Многострочный/* комментарий */Игнорируется всё между /* и */. Не вкладываются. Документационный (Doc-комментарий)/** документация */Обрабатыва
Что такое апплет? Апплет (Applet) — это Java-программа, предназначенная для запуска в веб-браузере. В отличие от обычных приложений, апплеты не имеют метода main() и управляются браузером через специальный жизненный цикл. Важно: Технология апплетов устарела (deprecated) начиная с Java 9 и полностью
Введение в многопоточность Java — это многопоточный язык программирования, позволяющий разрабатывать приложения, где несколько потоков выполняются параллельно. Каждый поток — это легковесный процесс с собственным стеком вызовов, но с общей областью памяти (кучей). Это обеспечивает эффективное исполь
Введение Для отправки электронных писем из Java-приложения вам понадобятся JavaMail API и Java Activation Framework (JAF). Эти библиотеки не входят в стандартный JDK, поэтому их необходимо скачать и подключить вручную. Установка зависимостей Скачайте последнюю версию JavaMail (версия 1.6.2 или нов
java
Toray начинает производство полиамида (PA) и полибутилентерефталата (PBT) в Индии
Батарейные отсеки из ВПУ для бокового удара при −40 °C: как байесовские ИИ-суррогаты сокращают циклы проектиров…
Построение универсального станка с ЧПУ — полное руководство DIY
Металлическая 3D-печать против литья под давлением (MIM): как выбрать правильный процесс для вашего проекта