Национальный цифровой ресурс Руконт - межотраслевая электронная библиотека (ЭБС) на базе технологии Контекстум (всего произведений: 639001)
Контекстум
Электро-2024

Java 9. Полный обзор нововведений. Для быстрого ознакомления и миграции (5000,00 руб.)

0   0
Первый авторШаран
ИздательствоМ.: ДМК Пресс
Страниц546
ID794545
АннотацияВ книге рассмотрены все нововведения в Java 9. Приведена разработка приложений с использованием системы модулей. Описаны измененная модульная структура образа среды выполнения JDK/JRE, новые фабричные методы для создания коллекций, уведомления процессора об активном ожидании с целью оптимизации потребления ресурсов, новый API платформенно-зависимого рабочего стола, API реактивных потоков и др. Уделено внимание несовместимым изменениям в Java 9. Также рассказано об оболочке JShell, предназначенной для быстрого создания прототипа. Издание предназначено опытным Java-разработчикам, которым необходима миграция от Java 7 и 8 к Java 9.
ISBN978-5-97060-575-2
УДК004.438Java
ББК32.973.26-018.1
Шаран, К. Java 9. Полный обзор нововведений. Для быстрого ознакомления и миграции / К. Шаран .— Москва : ДМК Пресс, 2018 .— 546 с. — ISBN 978-5-97060-575-2 .— URL: https://rucont.ru/efd/794545 (дата обращения: 16.06.2024)

Предпросмотр (выдержки из произведения)

Java_9._Полный_обзор_нововведений._Для_быстрого_ознакомления_и_миграции.pdf
УДК 004.438Java ББК 32.973.26-018.1 Ш25 Ш25 Кишори Шаран Java 9. Полный обзор нововведений. Для быстрого ознакомления и миграции. / пер. с англ. Слинкин А. А. – М.: ДМК Пресс, 2018. – 544 с.: ил. ISBN 978-5-97060-575-2 В книге рассмотрены все нововведения в Java 9. Приведена разработка приложений с использованием системы модулей. Описаны измененная модульная структура образа среды выполнения JDK/JRE, новые фабричные методы для создания коллекций, уведомления процессора об активном ожидании с целью оптимизации потребления ресурсов, новый API платформенно-зависимого рабочего стола, API реактивных потоков и др. Уделено внимание несовместимым изменениям в Java 9. Также рассказано об оболочке JShell, предназначенной для быстрого создания прототипа. Издание предназначено опытным Java-разработчикам, которым необходима миграция от Java 7 и 8 к Java 9. УДК 004.438Java ББК 32.973.26-018.1 Original English language edition published by Apress, Inc. USA. Copyright (c) 2017 by Apress, Inc. Russian language edition copyright (c) 2018 by DMK PressAll rights reserved. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Материал, изложенный в данной книге, многократно проверен. Но, поскольку вероятность технических ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги. ISBN 978-1-4842-2591-2 (англ.) ISBN 978-5-97060-575-2 (рус.) Copyright © 2017 by Kishori Sharan © Оформление, перевод на русский язык, издание, ДМК Пресс, 2018
Стр.5
Оглавление Об авторе ..................................................................................................................... 13 О техническом рецензенте ....................................................................................... 13 Благодарности ............................................................................................................. 14 Предисловие ................................................................................................................ 15 Как появилась эта книга ......................................................................................................................15 Об организации книги .........................................................................................................................16 Предполагаемая аудитория ...............................................................................................................16 Исходный код и ошибки .....................................................................................................................16 Вопросы и замечания ...........................................................................................................................16 Глава 1. Введение ........................................................................................................ 17 Введение в JDK 9 .................................................................................................................................... 17 Как читать эту книгу ..............................................................................................................................18 Требования к системе ..........................................................................................................................20 Установка NetBeans IDE ......................................................................................................................21 Скачивание исходного кода ..............................................................................................................21 Глава 2. Система модулей .......................................................................................... 23 Жизнь до Java 9 .......................................................................................................................................23 Новая система модулей .......................................................................................................................25 Что такое модуль? ..................................................................................................................................26 Зависимости модулей .......................................................................................................................... 27 Граф модулей .......................................................................................................................................... 29 Модули-агрегаторы ...............................................................................................................................33 Объявление модулей ............................................................................................................................34 Имена модулей ...................................................................................................................................... 35 Контроль доступа к модулям ............................................................................................................ 35 Объявление зависимости ...................................................................................................................37 Конфигурирование служб ..................................................................................................................37 Дескрипторы модулей .........................................................................................................................38 Компиляция объявлений модулей ................................................................................................. 38 Версия модуля ........................................................................................................................................ 38 Структура исходных файлов модуля ............................................................................................. 39 Упаковка модулей ..................................................................................................................................40 Хранение модуля в каталоге ............................................................................................................ 40 Хранение модуля в модульном JAR-файле ................................................................................ 40 Хранение модуля в JMOD-файле .................................................................................................... 41 Путь к модулям ........................................................................................................................................41 Видимые модули ....................................................................................................................................43 Резюме ........................................................................................................................................................45 Глава 3. Создаем свой первый модуль .................................................................... 47 Работа с инструментами командной строки ............................................................................... 47
Стр.7
Оглавление  7 Подготовка каталогов ...........................................................................................................................47 Написание исходного кода ............................................................................................................... 48 Компиляция исходного кода ............................................................................................................ 49 Упаковка кода модуля ......................................................................................................................... 51 Выполнение программы .................................................................................................................... 52 Работа с NetBeans IDE..........................................................................................................................54 Настройка IDE ......................................................................................................................................... 54 Создание проекта Java ........................................................................................................................ 58 Задание свойств проекта................................................................................................................... 60 Добавление объявления модуля .................................................................................................... 62 Просмотр графа модуля ..................................................................................................................... 64 Написание исходного кода ............................................................................................................... 64 Компиляция исходного кода ............................................................................................................ 65 Упаковка кода модуля ......................................................................................................................... 66 Выполнение программы .....................................................................................................................67 Резюме ........................................................................................................................................................69 Глава 4. Зависимости модулей ................................................................................. 70 Объявление зависимостей модуля .................................................................................................70 Исправление возможных ошибок...................................................................................................78 Пустой пакет ............................................................................................................................................ 78 Модуль не найден ................................................................................................................................. 78 Пакет не существует ............................................................................................................................. 78 Исключение при разрешении модуля ......................................................................................... 79 Неявное чтение .......................................................................................................................................79 Квалифицированный экспорт ...........................................................................................................83 Факультативная зависимость ............................................................................................................85 Доступ к модулям с помощью рефлексии ...................................................................................86 Раскрытые модули .................................................................................................................................87 Раскрытие пакетов ................................................................................................................................87 Использование глубокой рефлексии ............................................................................................ 88 Доступность типов .................................................................................................................................96 Расщепление пакетов между несколькими модулями ........................................................... 97 Ограничения в объявлениях модулей ...........................................................................................98 Типы модулей ..........................................................................................................................................98 Нормальные модули ............................................................................................................................ 99 Раскрытые модули ................................................................................................................................ 99 Автоматические модули ...................................................................................................................100 Безымянные модули ..........................................................................................................................103 Порядок перехода на JDK 9 ............................................................................................................ 110 Дизассемблирование определения модуля ............................................................................ 111 Резюме ..................................................................................................................................................... 115 Глава 5. Реализация служб ......................................................................................117 Что такое служба? ................................................................................................................................117 Обнаружение служб ........................................................................................................................... 119 Предоставление реализаций службы ......................................................................................... 120 Определение интерфейса службы ............................................................................................... 122 Определение поставщиков службы ............................................................................................ 125
Стр.8
8  Оглавление Определение обычного поставщика службы простых чисел ...........................................125 Определение быстрого поставщика службы простых чисел ............................................127 Определение самого быстрого поставщика службы простых чисел .............................129 Тестирование службы простых чисел ......................................................................................... 130 Выборка и фильтрация поставщиков ......................................................................................... 134 Тестирование службы простых чисел по-старому ................................................................. 135 Резюме ......................................................................................................................................................137 Глава 6. Упаковка модуля ........................................................................................139 Формат JAR ............................................................................................................................................ 139 Что такое многоверсионный JAR-файл? ....................................................................................140 Создание многоверсионных JAR-файлов ..................................................................................142 Правила для многоверсионных JAR-файлов ...........................................................................148 Многоверсионные JAR-файлы и базовый загрузчик ............................................................150 Одинаковые файлы для разных версий JDK ...........................................................................150 Многоверсионные JAR-файлы и URL со схемой JAR ............................................................ 150 Атрибут Multi-Release в манифесте ............................................................................................. 151 Формат JMOD ........................................................................................................................................ 151 Программа jmod ..................................................................................................................................151 Создание JMOD-файлов ...................................................................................................................153 Извлечение содержимого JMOD-файла ....................................................................................154 Печать содержимого JMOD-файла ...............................................................................................154 Описание JMOD-файла .....................................................................................................................155 Запись хэшей модулей .....................................................................................................................155 Резюме ..................................................................................................................................................... 158 Глава 7. Создание пользовательских образов среды выполненияя ................159 Что такое пользовательский образ среды выполнения? .................................................... 159 Создание пользовательского образа среды выполнения .................................................. 160 Связывание служб .............................................................................................................................. 164 Плагины команды jlink .....................................................................................................................166 Команда jimage .................................................................................................................................... 169 Резюме ..................................................................................................................................................... 171 Глава 8. Несовместимые изменения в JDK 9 ........................................................172 Новая схема нумерации версий JDK........................................................................................... 172 Номер версии .......................................................................................................................................173 Признак предварительной версии ..............................................................................................174 Информация о сборке ......................................................................................................................174 Дополнительная информация .......................................................................................................174 Разбор старой и новой строки версии .......................................................................................175 Изменение значений системных свойств .................................................................................175 Использование класса Runtime.Version .....................................................................................175 Изменения в JDK и JRE ...................................................................................................................... 179 Структурные изменения JDK и JRE ...............................................................................................179 Изменения поведения ......................................................................................................................181 Изменения в загрузчиках классов ...............................................................................................182 Доступ к ресурсам .............................................................................................................................. 186 Доступ к ресурсам до JDK 9 ............................................................................................................186
Стр.9
Оглавление  9 Доступ к ресурсам в JDK 9 ...............................................................................................................191 Внутренние API JDK ............................................................................................................................ 204 Замена модуля ..................................................................................................................................... 206 Резюме ..................................................................................................................................................... 208 Глава 9. Нарушение инкапсуляции модуля ..........................................................210 Что такое нарушение инкапсуляции модуля? ......................................................................... 210 Параметры командной строки ...................................................................................................... 211 Параметр --add-exports ....................................................................................................................211 Параметр --add-opens .......................................................................................................................212 Параметр --add-reads ........................................................................................................................212 Параметр --permit-illegal-access ..................................................................................................213 Пример .................................................................................................................................................... 214 Атрибуты манифеста JAR-файла ................................................................................................... 220 Резюме ..................................................................................................................................................... 223 Глава 10. API модулей ..............................................................................................225 Что такое API модулей? .................................................................................................................... 225 Представление модулей ...................................................................................................................227 Описание модулей ..............................................................................................................................227 Представление предложений модуля ........................................................................................228 Представление версии модуля .....................................................................................................230 Другие свойства модулей ................................................................................................................231 Базовая информация о модуле .....................................................................................................232 Запросы к модулям ............................................................................................................................ 235 Модификация модулей ......................................................................................................................237 Доступ к ресурсам модуля .............................................................................................................. 241 Аннотации модулей............................................................................................................................ 241 Загрузка классов ................................................................................................................................. 243 Слои модулей ........................................................................................................................................ 246 Поиск модулей .....................................................................................................................................248 Чтение содержимого модуля .........................................................................................................250 Создание конфигураций ..................................................................................................................252 Создание слоя модулей ....................................................................................................................254 Резюме ..................................................................................................................................................... 262 Глава 11. Оболочка Java ...........................................................................................264 Что такое оболочка Java? ................................................................................................................. 264 Архитектура JShell .............................................................................................................................. 266 Запуск команды JShell .......................................................................................................................267 Выход из JShell..................................................................................................................................... 269 Что такое фрагменты и команды? ................................................................................................ 270 Вычисление выражений ................................................................................................................... 271 Вывод списка фрагментов............................................................................................................... 273 Редактирование фрагментов ..........................................................................................................277 Повторное выполнение предыдущих фрагментов ............................................................... 280 Объявление переменных ................................................................................................................. 280 Предложения import.......................................................................................................................... 283 Объявление методов ..........................................................................................................................287
Стр.10
10  Оглавление Объявление типов ............................................................................................................................... 288 Установка среды выполнения ........................................................................................................ 292 Отсутствие контролируемых исключений ................................................................................ 293 Автозавершение .................................................................................................................................. 294 История фрагментов и команд .......................................................................................................297 Чтение трассы стека в JShell .......................................................................................................... 298 Повторное использование сеансов JShell ................................................................................ 299 Сброс состояния JShell ...................................................................................................................... 301 Перезагрузка состояния JShell ...................................................................................................... 302 Конфигурирование JShell ................................................................................................................ 305 Задание редактора фрагментов ...................................................................................................305 Задание режима выдачи ..................................................................................................................306 Создание пользовательских режимов выдачи .......................................................................308 Задание стартовых фрагментов ....................................................................................................313 Использование документации по JShell ................................................................................... 316 JShell API ................................................................................................................................................. 318 Создание объекта JShell ...................................................................................................................319 Работа с фрагментами ......................................................................................................................320 Обработка событий фрагмента .....................................................................................................322 Пример ....................................................................................................................................................322 Резюме ......................................................................................................................................................327 Глава 12. Изменения API процессов ......................................................................328 Что такое API процессов? ................................................................................................................ 328 Текущий процесс ................................................................................................................................. 329 Опрос состояния процесса .............................................................................................................. 330 Сравнение процессов ........................................................................................................................ 334 Создание процесса ............................................................................................................................. 334 Получение описателя процесса .................................................................................................... 342 Завершение процесса ....................................................................................................................... 345 Управление правами процесса ..................................................................................................... 345 Резюме ..................................................................................................................................................... 348 Глава 13. Изменения API коллекций ......................................................................350 Общие сведения .................................................................................................................................. 350 Немодифицируемые списки ........................................................................................................... 353 Немодифицируемые множества ................................................................................................... 356 Немодифицируемые отображения .............................................................................................. 360 Резюме ..................................................................................................................................................... 364 Глава 14. Клиентский API HTTP/2 ..........................................................................365 Что такое клиентский API HTTP/2? .............................................................................................. 366 Настройка среды для примеров ................................................................................................... 368 Создание HTTP-клиентов ................................................................................................................ 369 Обработка HTTP-запросов .............................................................................................................. 370 Получение построителя HTTP-запроса .....................................................................................371 Задание параметров HTTP-запроса ...........................................................................................371 Задание политики перенаправления запроса ........................................................................ 381 Использование протокола WebSocket........................................................................................ 382
Стр.11
Оглавление  11 Создание серверной оконечной точки ......................................................................................382 Создание клиентской оконечной точки .....................................................................................385 Выполнение программы ..................................................................................................................389 Устранение неполадок в приложении WebSocket ................................................................. 393 Резюме ..................................................................................................................................................... 394 Глава 15. Модифицированный тип Deprecated ...................................................395 Что такое нерекомендуемый API? ................................................................................................ 395 Как объявить API нерекомендуемым .......................................................................................... 395 Модификация аннотации @Deprecated в JDK 9 ....................................................................397 Подавление предупреждений о нерекомендованности .................................................... 399 Пример нерекомендуемого API .................................................................................................... 400 Статический анализ нерекомендуемых API ............................................................................. 405 Динамический анализ нерекомендуемых API ........................................................................ 408 Отказ от предупреждений о нерекомендованности при импорте ................................ 409 Резюме ..................................................................................................................................................... 410 Глава 16. Навигация по стеку ..................................................................................411 Что такое стек? ..................................................................................................................................... 411 Что такое навигация по стеку? ...................................................................................................... 412 Навигация по стеку JDK 8 ................................................................................................................ 412 Недостатки навигации по стеку .................................................................................................... 415 Навигация по стеку в JDK 9 ............................................................................................................. 416 Параметры навигации по стеку ....................................................................................................416 Представление кадра стека ............................................................................................................416 Получение экземпляра StackWalker............................................................................................418 Навигация по стеку .............................................................................................................................419 Получение вызывающего класса .................................................................................................424 Права для навигации по стеку ........................................................................................................427 Резюме ..................................................................................................................................................... 429 Глава 17. Реактивные потоки ..................................................................................431 Что такое поток? .................................................................................................................................. 431 Что такое реактивные потоки? ...................................................................................................... 432 API реактивных потоков в JDK 9 ................................................................................................... 434 Взаимодействия между издателем и подписчиком .............................................................435 Создание издателя..............................................................................................................................436 Публикация данных ...........................................................................................................................436 Простой пример ..................................................................................................................................437 Создание подписчиков .....................................................................................................................439 Использование процессоров .........................................................................................................445 Резюме ..................................................................................................................................................... 448 Глава 18. Изменения API потоков ..........................................................................450 Новые потоковые операции ........................................................................................................... 450 Новые коллекторы .............................................................................................................................. 454 Резюме ..................................................................................................................................................... 460 Глава 19. Протоколирование на уровне платформы и JVM ...............................461 API платформенного протоколирования................................................................................... 461
Стр.12
12  Оглавление Подготовка библиотеки Log4j 2.0 ................................................................................................462 Подготовка проекта NetBeans .......................................................................................................462 Определение модуля .........................................................................................................................462 Добавление конфигурационного файла Log4j .......................................................................464 Создание системного диспетчера протоколирования ........................................................465 Создание локатора диспетчера протоколирования .............................................................467 Тестирование платформенного модуля .....................................................................................468 Унифицированное протоколирование JVM .............................................................................. 472 Метки сообщений ............................................................................................................................... 473 Уровни сообщений .............................................................................................................................474 Декораторы сообщений ...................................................................................................................474 Место назначения сообщения .......................................................................................................475 Синтаксис параметра -Xlog .............................................................................................................476 Резюме ..................................................................................................................................................... 479 Глава 20. Другие изменения в JDK 9 ......................................................................481 Знак подчеркивания — ключевое слово ................................................................................... 482 Усовершенствование блоков try с ресурсами ......................................................................... 483 Ромбовидный оператор в анонимных классах .......................................................................487 Закрытые методы в интерфейсах ................................................................................................ 490 Применение аннотации @SafeVarargs к закрытым методам .......................................... 492 Отбрасывание вывода процесса .................................................................................................. 494 Новые методы класса StrictMath .................................................................................................. 496 Изменения в классе ClassLoader .................................................................................................. 498 Новые методы в классе Optional .......................................................................................... 499 Новые методы класса CompletableFuture ......................................................................... 502 Уведомления об активном ожидании ......................................................................................... 502 Улучшения в Time API ........................................................................................................................ 504 Класс Clock .............................................................................................................................................504 Класс Duration ......................................................................................................................................504 Преобразование промежутка времени и выделение его частей ...................................505 Фабричный метод ofInstant() .........................................................................................................507 Получение числа секунд от начала отсчета .............................................................................508 Поток объектов LocalDate................................................................................................................509 Новые параметры форматирования ...........................................................................................510 Класс Scanner и потоковые операции........................................................................................ 512 Улучшения в классе Matcher .......................................................................................................... 513 Улучшения в классе Objects ............................................................................................................ 515 Сравнение массивов .......................................................................................................................... 516 API аплетов объявлен нерекомендуемым ................................................................................ 519 Усовершенствования в документации Java .............................................................................. 519 Поддержка платформенного рабочего стола ......................................................................... 522 Фильтры десериализации объектов ............................................................................................ 526 Добавления в API ввода-вывода .................................................................................................. 535 Резюме ..................................................................................................................................................... 536 Предметный указатель ............................................................................................539
Стр.13

Облако ключевых слов *


* - вычисляется автоматически
Периодика по подписке
Антиплагиат система Руконтекст