Java SE 9: все новые возможности и улучшения от Герберта Шилдта

Java – один из самых популярных языков программирования, который постоянно обновляется и развивается. Наиболее значимое обновление – Java SE 9, которое было выпущено в 2017 году. В данном обновлении было добавлено множество новых возможностей и функций, в том числе многие запросы пользователей были учтены.

Герберт Шилдт – один из самых известных авторов книг по языку Java. Он является экспертом в данной области и является автором книги «Java. The Complete Reference», которая вышла в новом издании для Java SE 9. В данной книге он подробно рассмотрел все нововведения в обновлении и особенности их использования для разработчиков и программистов.

В этой статье мы представим вам основные изменения в Java SE 9, которые были описаны Гербертом Шилдтом. Вы узнаете о новых возможностях в модульной системе и коллекциях, а также о других важных изменениях, которые помогут вам стать более продуктивным и эффективным при разработке на языке Java.

Модульная система

Одним из ключевых нововведений в Java SE 9 стала модульная система, позволяющая разделять код на независимые модули и обеспечивать их изоляцию друг от друга. Это позволяет более эффективно управлять зависимостями между компонентами и сокращает конфликты между библиотеками.

Для создания модулей в Java используется новый ключевое слово «module», которое определяет имя модуля, экспортируемые пакеты и зависимости от других модулей. Модуль может быть создан как в виде отдельного JAR-файла, так и включен внутрь другого модуля.

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

Использование модульной системы в Java SE 9 требует новых навыков и знаний, но это открывает новые возможности для более эффективной организации кода и более гибкого управления зависимостями между компонентами.

Разбиение платформы на модули

Java SE 9 предоставляет новые возможности для работы с модулями, которые позволяют более эффективно организовывать код и управлять зависимостями в приложениях. Разбиение платформы на модули позволяет создавать более компактные и быстродействующие приложения, что положительно сказывается на общей производительности системы.

Модули Java SE 9 позволяют управлять зависимостями и версиями библиотек, что позволяет избежать конфликтов между ними. Модули также обеспечивают безопасность приложений, так как они могут контролировать доступ к своему коду и ресурсам.

При работе с модулями в Java SE 9 необходимо определить зависимости и экспортируемые пакеты, что позволяет другим модулям использовать функционал данного модуля. Также необходимо определить несовместимые модули и модули, которые должны загружаться вместе с основным модулем.

Для удобства работы с модулями в Java SE 9 предоставляется новый инструмент jmod, который позволяет создавать и управлять модулями. Также в IntelliJ IDEA и Eclipse существует поддержка модулей, что упрощает работу с ними.

  • Разбиение платформы на модули позволяет:
    1. более эффективно организовывать код
    2. управлять зависимостями в приложениях
    3. создавать более компактные и быстродействующие приложения

Использование модулей в проектах

Одна из главных новых функций Java SE 9 – это модульность. Она позволяет разделять код проекта на отдельные модули и независимо управлять ими. Это упрощает разработку, тестирование и поддержку проектов.

Чтобы использовать модули в проектах на Java, нужно выделить отдельные части вашего приложения как модули. Для этого достаточно создать файл module-info.java в корне каждого модуля. В этом файле указываются зависимости, которые модуль имеет с другими модулями. Также задаются экспортируемые и открываемые пакеты, которые могут быть использованы другими модулями.

В Java 9 добавлено множество стандартных модулей, которые можно использовать в своих проектах. Это упрощает создание новых приложений и повышает качество кода.

Использование модульности улучшает безопасность и уменьшает возможность конфликтов между различными библиотеками. Кроме того, модульность позволяет значительно сократить размер приложений, так как можно исключить из сборки ненужные модули и зависимости.

Использование модульности становится все более популярным в современной разработке на Java, и, вероятно, станет обязательным для всех новых проектов в будущем.

JShell

JShell — это инструмент интерактивной оболочки для тестирования кода Java. Он встроен в Java SE 9 и предоставляет возможность быстрого и удобного экспериментирования с кодом, без необходимости создания и компиляции отдельных файлов.

Особенность JShell заключается в том, что он позволяет пользователю написать код прямо в оболочке, а затем мгновенно увидеть его результаты. Кроме того, JShell поддерживает автодополнение, что упрощает процесс написания кода.

JShell может использоваться для проверки различных конструкций языка, создания циклов, условных операторов и многих других элементов программирования. Также он может использоваться для тестирования различных библиотек и фреймворков Java.

В целом, JShell является прекрасным инструментом для начинающих и опытных разработчиков, которые хотят быстро проверять и тестировать свой код, не тратя много времени на создание и компиляцию отдельных файлов.

Интерактивная среда для экспериментов и обучения

Java SE 9 представляет собой значительное обновление языка программирования Java. Одним из наиболее интересных нововведений является встроенная интерактивная среда, которая позволяет пользователям просто и быстро экспериментировать с языком и его функциями.

Эта среда использует JShell, который предоставляет пользователю интерактивный интерфейс командной строки, а также быстрый доступ к импортированным классам и методам. Это позволяет пользователям быстро создавать и проверять код, не заботясь о создании отдельных проектов и настройке среды разработки.

Для обучения Java JShell может быть очень полезным инструментом, который позволяет студентам и начинающим программистам экспериментировать с языком и его синтаксисом без необходимости дополнительной установки и настройки среды разработки. Это может быть особенно полезно для людей, которые только начинают свой путь в программировании и хотят быстро освоить основы языка.

Интерактивная среда также может быть полезна для опытных программистов, которые быстро хотят попробовать новые функции Java SE 9, не заботясь о создании новых проектов и настройке окружения разработки. Это может существенно ускорить процесс разработки и позволить программерам быстрее изучать новые функции языка.

Производительность

Java SE 9 предлагает ряд улучшений в производительности приложений. Одним из основных нововведений является модульная система, которая позволяет ускорить процесс загрузки классов, что в свою очередь снижает нагрузку на процессор и уменьшает время запуска приложений.

Кроме того, в Java SE 9 появился новый способ создания строк с помощью метода String::join, который позволяет объединять несколько строк в одну с помощью разделителя. Это уменьшает количество создаваемых объектов и ускоряет обработку строк в приложении.

Новый механизм сборки мусора G1 позволяет выполнение сборки мусора на нескольких ядрах процессора, что также влияет на производительность приложения.

Для повышения производительности в Java SE 9 также были улучшены некоторые стандартные классы, например, классы коллекций (Collections) и классы времени (Time). Кроме того, были предложены новые API для работы с объектами, что позволяет более эффективно использовать ресурсы процессора и памяти.

  • Модульная система
  • Метод String::join
  • Новый механизм сборки мусора G1
  • Улучшение стандартных классов
  • Новые API для работы с объектами

Реализация JEP 248: улучшенный Garbage Collector

В новом обновлении Java SE 9 реализован JEP 248, который внес некоторые изменения в работу Garbage Collector.

Ключевым изменением является замена текущего механизма сборки мусора на G1 (Garbage-First). Этот механизм позволяет более эффективно управлять памятью, особенно в больших приложениях, где объем используемой памяти значительно выше.

Другим важным изменением является возможность запуска параллельных процессов сборки мусора. Это позволяет уменьшить время простоя приложения и повысить его производительность.

Наконец, было внесено несколько улучшений в области мониторинга и настройки Garbage Collector. Теперь разработчики могут более точно настраивать работу механизма сборки мусора под свои нужды.

В целом, реализация JEP 248 является важным шагом в развитии Java, который позволяет более эффективно использовать ресурсы системы и повышать производительность приложения.

Дополнения в системе типов

Одним из главных нововведений в Java SE 9 стало расширение системы типов языка. Теперь для переменных можно указывать не только тип значения, но и его модификаторы. Всего появилось шесть новых модификаторов, которые позволяют более точно определять типы данных и улучшить безопасность при работе с ними.

  • Immutable. Этот модификатор означает, что значение переменной не может быть изменено после своего создания. Например, вы можете указать тип Immutable String, который гарантирует, что строка не будет изменена в процессе выполнения программы.
  • Mutable. Напротив, этот модификатор говорит о том, что значение переменной может быть изменено. Он может быть полезен, например, при работе с большими объемами данных, когда необходимо быстро изменять значения переменных.
  • Readable. Этот модификатор означает, что переменная может быть прочитана из других потоков, но не может быть изменена. Это позволяет сделать программы более безопасными и защищенными от ошибок.
  • Writable. Напротив, этот модификатор говорит о том, что переменную можно изменять из других потоков, но не читать. Он может быть полезен, например, при работе с сетевыми соединениями и другими асинхронными задачами.
  • NonNull. Этот модификатор требует, чтобы переменная не принимала значение null. Он может быть полезен, например, при работе с массивами, чтобы избежать ошибок при попытке получить значение из несуществующего элемента.
  • Nullable. Напротив, этот модификатор позволяет переменной принимать значение null. Например, он может быть полезен при работе с базами данных, где некоторые значения недоступны или не определены.

В целом, дополнения в системе типов позволяют более точно определять типы данных и улучшить безопасность при работе с ними. Они обеспечивают большую гибкость и позволяют более точно настраивать переменные на конкретную задачу.

Обобщения совместимости

Java SE 9 предлагает некоторые изменения в обобщениях, которые делаются более экономичными в использовании производительности и совместимости. Это означает, что в Java 9, вы можете использовать определения типа предыдущих версий Java без необходимости изменения программного кода. Это существенно повышает степень совместимости новых частей программирования со старыми производствами кода на Java 6 и 7.

В Java 9, компилятор может инферировать, нужен ли метод с обобщенным типом или нет, что делает процесс написания кода проще. Вместо того, чтобы жестко назначать тип, теперь компилятор может обнаруживать, какой тип объекта использовать, основываясь на типе иерархии, что в свою очередь значительно экономит время при написании кода и уменьшает возникновение ошибок.

  • Наконец, использование обобщений в Java 9 стало проще и менее строго. Это может привести к улучшению производительности, повышению совместимости и улучшению качества кода, позволяющему разработчикам более быстро и эффективно создавать и поддерживать проекты, основанные на Java.
  • На практике, этот релиз в Java 9 поможет разработчикам лучше понимать новые возможности, а также хорошо использовать все преимущества программирования в Java. Это увеличивает объем продуктивности и уменьшает число ошибок в продуктах, потому что любые проблемы могут быть обнаружены и исправлены годами назад.

Возможности для разработчиков

Java SE 9 предоставляет множество новых возможностей для разработчиков, среди которых:

  • Модульность: полностью интегрированная система модулей позволяет создавать более эффективные и надежные приложения. Теперь можно создавать зависимости между модулями, что упрощает их управление и развертывание.
  • Интерфейсы в методах: предоставляет новый способ определения методов с одним методом по умолчанию и статическими методами. Это упрощает API, поскольку мы можем определить несколько методов по умолчанию и статических методов в интерфейсах.
  • Коллекции: добавлены новые методы в коллекции и интерфейсы коллекций, что упрощает их использование и делает более эффективным перебор элементов.
  • Процесс подключения модулей: оптимизирует и упрощает процесс подключения модулей. Разработчики могут создавать свои собственные модули и взаимодействовать с другими модулями, созданными другими разработчиками, что упрощает разработку приложений.

Java SE 9 также предоставляет новые возможности для работы с Javadoc и улучшенные возможности тестирования, включая возможность создания более эффективных тестов с помощью JUnit 5.

В целом, Java SE 9 предоставляет множество новых возможностей для разработчиков, что упрощает процесс разработки, закрепляет стабильность приложений и повышает их производительность.

Улучшения в процессе сборки проектов

Одной из ключевых особенностей Java SE 9 является новый механизм модульности, который позволяет организовать приложение в модули и отделить его от других компонентов. Это упрощает управление зависимостями и облегчает процесс сборки проектов.

В Java SE 9 появилась возможность создавать и собирать модули, используя новые инструменты, такие как jlink, jmod и jdeps. С их помощью можно собирать только те модули, которые необходимы для работы приложения, тем самым уменьшая размер конечного бинарного файла и ускоряя его загрузку.

Также была улучшена система классов и модулей, что позволяет более гибко управлять зависимостями и предотвращать конфликты между различными версиями библиотек. Новая система позволяет управлять видимостью классов и пакетов между модулями, что повышает безопасность и облегчает поддержку приложения.

Также в Java SE 9 была улучшена работа с аннотациями, которые теперь могут применяться к типам параметров и бросаемым исключениям. Это упрощает описание и документирование параметров методов и улучшает понимание кода.

  • Вывод: В Java SE 9 были внесены значительные улучшения в процесс сборки проектов, которые позволяют более удобно управлять зависимостями, создавать и собирать модули, а также улучшить работу с аннотациями. Эти изменения повышают безопасность и ускоряют загрузку приложений, делая процесс разработки Java-приложений более продуктивным и эффективным.

Новые методы для управления исключениями

В Java SE 9 появились новые методы, упрощающие обработку исключений. Теперь можно объединять несколько исключений в один блок catch с помощью оператора ‘|’. Такой подход позволяет компактно написать код и уменьшить количество повторяющихся конструкций. Например:

try {

    // блок кода

}

catch (IOException | SQLException e) {

    // обработка исключений

}

Оператор ‘|’ используется для объединения исключений, имеющих общего предка. Также, был добавлен новый метод Throwable.getSuppressed(), который возвращает массив подавленных исключений. Этот метод может быть полезен при работе с множественными исключениями. Например:

try {

    // блок кода

}

catch (Exception e) {

    Throwable[] suppressed = e.getSuppressed();

    if (suppressed.length > 0) {

        System.out.println("Подавленные исключения:");

        for (Throwable throwable : suppressed) {

            System.out.println(throwable.getMessage());

        }

    }

}

Этот код обрабатывает исключение типа Exception и выводит список всех подавленных исключений, которые были возбуждены в процессе работы программы.

Также, был добавлен новый метод Throwable.printStackTrace(PrintWriter), который позволяет выводить трассировку стека исключения в заданный поток вывода. Этот метод может быть полезен для создания отчетов об ошибках.

Улучшения в библиотеках

Обновление Java SE 9 внесло некоторые улучшения в библиотеки языка, что упростило процесс написания кода и повысило качество программного обеспечения. Ниже представлены некоторые из наиболее значимых изменений.

  • Модульность: в Java SE 9 модули являются новым видом программных компонентов, которые могут быть использованы для представления больших частей приложения. Новые библиотеки модульности позволяют контролировать видимость и доступность классов внутри модуля.
  • HTTP/2 в API: новый HTTP API упрощает написание HTTP-клиентов и серверов. Оно включает в себя поддержку HTTP / 2 и WebSocket, а также позволяет легко настраивать вызовы и события HTTP.
  • Библиотеки реактивного программирования: синхронный стиль программирования был заменен на реактивный стиль в Stream API и JavaFX. Новые библиотеки реактивного программирования добавляют поддержку многопоточного программирования и реактивной связи между компонентами.
  • Повышенная удобочитаемость кода: улучшение Javadoc сделало его более функциональным и интуитивно понятным. Теперь он может быть использован как инструмент для написания документации и тестовых методов, а также для создания учебных материалов.
  • Улучшенная библиотека по работе с датами: использование новых классов времени и даты позволяет предоставлять более удобные методы для работы с датами. Они предназначены для представления времени и даты как объектов первого класса.

Эти изменения не являются исчерпывающим списком нововведений в библиотеках Java SE 9, однако они являются наиболее значимыми и могут повлиять на процесс разработки приложений и качество их кода.

Обновление версий некоторых библиотек

Java SE 9 предоставляет возможность использования обновленных версий многих библиотек, что обеспечивает огромные преимущества для разработчиков приложений на Java.

Одной из таких обновленных библиотек является JUnit. В Java SE 9 новая версия JUnit 5 обеспечивает возможности, которые ранее не были доступны, такие как параллельное выполнение тестов и другие улучшения в производительности.

Кроме того, Hibernate, одна из самых популярных библиотек для работы с базами данных, также обновляется в Java SE 9. Новая версия библиотеки имеет ряд важных исправлений ошибок, а также улучшения в безопасности и производительности.

Другой важной обновленной библиотекой в Java SE 9 является Spring Framework. В новой версии фреймворка появилось множество новых функций и улучшений, включая новый способ конфигурации приложений.

  • JUnit 5 обеспечивает параллельное выполнение тестов и улучшения производительности
  • Hibernate имеет исправления ошибок и улучшения в безопасности и производительности
  • Spring Framework имеет множество новых функций и улучшений, включая новый способ конфигурации приложений

Обновление версий библиотек в Java SE 9 делает не только разработку приложений на Java более удобной и производительной, но также обеспечивает большую безопасность и устранение ошибок.

Новые возможности в библиотеках java.util и java.util.concurrent

java.util:

  • Методы compareTo() и equals() в классе Comparator теперь поддерживают null значения.
  • Добавлен метод spliterator() в интерфейс Collection.
  • Класс Optional обновлен и теперь имеет новые методы: stream(), ifPresentOrElse() и or().

java.util.concurrent:

  • Добавлены новые классы: CompletableFuture, StampedLock и параллельные стримы для коллекций.
  • Классы Executor, ExecutorService и ScheduledExecutorService обновлены и теперь поддерживают новые методы, позволяющие управлять потоками и заданиями.
  • Интерфейс ConcurrentMap обновлен и теперь имеет новые методы: compute(), computeIfAbsent() и computeIfPresent().

Преимущества новых возможностей:

  • Повышение производительности в многопоточных приложениях.
  • Более удобная и безопасная работа с коллекциями и элементами, включая null значения.
  • Большой выбор методов и классов для управления задачами и потоками.

Вывод:

Java SE 9 предоставляет много новых возможностей для работы с коллекциями и многопоточностью. Большинство обновлений являются улучшениями в уже существующих библиотеках и классах, которые значительно повышают эффективность и удобство работы с ними.

FAQ

Ссылка на основную публикацию
Adblock
detector