Класс Optional — это контейнерный объект, который может содержать не-null значение или быть пустым. Он был введен в Java 8 для решения проблемы NullPointerException и позволяет писать более выразительный и безопасный код, явно указывая, что значение может отсутствовать. Объявление класса Объявление
Stream — новый абстрактный слой в Java 8 для декларативной обработки данных (как SQL). Вместо циклов и ручных проверок — конвейер операций. Автоматически использует многоядерные процессоры через parallelStream(). Характеристики Stream Sequence of elements — элементы вычисляются по требованию (lazy)
Java 8 ввела default методы в интерфейсах — методы с реализацией по умолчанию. Это сделано для обратной совместимости: можно добавить методы в интерфейсы (например, forEach в Collection) без нарушения существующих реализаций. Синтаксис public interface Vehicle { default void print() { Sy
Функциональные интерфейсы — интерфейсы с единственным абстрактным методом (SAM). Java 8 определила множество таких интерфейсов в пакете java.util.function для использования в лямбдах. Таблица функциональных интерфейсов №Интерфейс и описание 1BiConsumer<T,U> — операция с двумя входами, без
Method references (ссылки на методы) позволяют ссылаться на методы по имени через символ ::. Используются вместо лямбд, когда лямбда просто вызывает существующий метод. Типы method references Static methods: ClassName::staticMethod Instance methods: instance::method или ClassName::instanceMethod Co
Лямбда-выражения — главная фича Java 8. Упрощают разработку, позволяя передавать поведение как данные. Синтаксис expression body Характеристики Optional type declaration — тип параметра выводится компилятором. Optional parenthesis — для одного параметра скобки не нужны; для нескольких — обязательн
Локальная установка Java SE бесплатно: oracle.com. Скачайте версию для вашей ОС, установите (.exe на Windows), настройте переменные окружения. Windows 2000/XP/7/10/11 Java в c:\Program Files\java\jdk. Правый клик «Мой компьютер» → «Свойства». Вкладка «Дополнительно» → «Переменные среды». Редактируй
Java 8 (18 марта 2014) — мажорный релиз с поддержкой функционального программирования, новым JS-движком Nashorn, Stream API, Date-Time API и др. Ключевые нововведения Lambda expressions — функциональная обработка. Method references — ссылки на методы через ::. Default methods — реализации по умолча
CompletableFuture (Java 8) представляет будущий результат, который можно завершить явно. Java 9 усилила API. Поддержка задержек и таймаутов public CompletableFuture<T> completeOnTimeout(T value, long timeout, TimeUnit unit) Завершает фьючер значением value, если не завершился раньше таймаута.
Java 9 вводит Multi-Resolution Image API — набор изображений разных разрешений, представленных как единое логическое изображение. Основные операции Image getResolutionVariant(double destWidth, double destHeight) — лучший вариант для заданного размера. List<Image> getResolutionVariants() — спи
Optional (Java 8) помогает избежать null-проверок и NPE. Java 9 добавила три метода. stream() public Stream<T> stream() Если значение есть — возвращает стрим из одного элемента, иначе — пустой стрим. Удобно для flatMap. Пример o.isPresent() ? Stream.of(o.get()) : Stream.empty()) .collect(
Diamond operator (<>) появился в Java 7 для сокращения generic-конструкторов, но не работал с анонимными классами. Java 9 устранила это ограничение. До Java 9 (verbose) Handler<Integer> intHandler = new Handler<Integer>(1) { ... }; Handler<? extends Number> intHandler1 = new
@Deprecated (с Java 5) помечает элементы, которых не стоит использовать: могут вызывать ошибки, быть несовместимыми в будущем, удалены, или иметь лучшую альтернативу. Компилятор выдаёт предупреждения. Java 9 добавила два атрибута: forRemoval — boolean, указывает, планируется ли удаление в будущем.
try-with-resources гарантирует закрытие ресурсов, реализующих AutoCloseable или Closeable. До Java 9 ресурс нужно было объявлять внутри try(...) или перед ним: Reader inputString = new StringReader(message); BufferedReader br = new BufferedReader(inputString); try (BufferedReader br1 = br) { // нужн
Streams в Java 8 позволяли декларативно обрабатывать последовательности. Java 9 добавила полезные методы. takeWhile(Predicate) Берёт элементы, пока предикат возвращает true. Для упорядоченных стримов — самый длинный префикс, удовлетворяющий предикату. default Stream<T> takeWhile(Predicate<?
В Java 9 Process API существенно улучшен для управления процессами ОС. Класс ProcessHandle предоставляет: Нативный PID процесса Время запуска Накопленное CPU-время Аргументы командной строки Команду Пользователя-владельца Родительский процесс Дочерние процессы (descendants) Также: проверка живучес
До Java 8 интерфейсы могли содержать только константы и абстрактные методы. Java 8 добавила default и static методы. Java 9 добавила private и private static методы в интерфейсах для устранения дублирования кода в default-методах. Эволюция: до Java 8 Каждый класс-реализатор дублировал логику логиров
Java 9 добавила фабричные методы в интерфейсы List, Set, Map для создания неизменяемых коллекций лаконично. Старый способ (Java 7/8) Set<String> set = new HashSet<>(); set.add(A); set.add(B); set.add(C); set = Collections.unmodifiableSet(set); List<String> list = new ArrayList<
Java 9 улучшила формат JAR: теперь в одном архиве могут храниться разные версии классов для разных версий платформы. В MANIFEST.MF добавляется запись Multi-Release: true. Директория META-INF/versions/ содержит поддиректории с версией (начиная с 9 для Java 9), где лежат версионно-зависимые классы и р
Инструмент javadoc генерирует документацию. До Java 9 — только HTML 4.0. В Java 9 флаг -html5 включает генерацию HTML5. Пример кода (Tester.java) /** * @author MahKumar * @version 0.1 */ public class Tester { /** * Default method to print * <p>Hello world</p> * @par
java
In situ-формированный, низкотемпературно осаждаемый Nb-легированный компактно-мезопористый слой TiO₂ повышает эфф…
Edge AI чип без традиционных MAC‑массивов достигает 55 TOPS/Вт
Синхронизация асинхронных сбросов в ASIC и FPGA: Проблемы, лучшие практики и продвинутые решения
Обновление Eiger: внутреннее концентрическое усиление волокном для эффективной 3D-печати