JavaOne 2016 закончился! Уже две недели, так что, может быть, я немного опоздал с этой рецензией. Ну, просто потребовалось некоторое время, чтобы посмотреть достаточно разговоров, чтобы получить представление о происходящем. Но даже двух недель недостаточно — Oracle загрузила около ста видео с JavaOne 2016 ! Поэтому мне пришлось выбрать тему, и я решил остаться ближе к ядру: языковые и основные библиотеки, стандартная и корпоративная версии, сами.
Какими бы заманчивыми они ни были, я воздерживался от разговоров, которые отклонялись от двигателя привода Java. Так что нет, я даже не смотрел разговоры о JUnit 5 — пока.
Java SE
Давайте начнем с основной ноты Java SE . Честно говоря, я не нашел ни введение, ни отчет Mazda особенно волнующим. Но это только первая треть 30-минутной презентации.
Стало интереснее, когда Марк Рейнхольд начал заниматься техникой . Он рассказал о Java 9 в целом (о чем я расскажу ниже), а также рассказал о jShell и Project Jigsaw в частности. Это стало еще интереснее, когда Брайан Гетц присоединился к нему в неуклюжем хореографическом входе.
Представьте себе, мы могли бы написать это когда-нибудь в будущем:
public class Point(int x, int y) { }
И компилятор генерирует поля, конструкторы, методы доступа, правильные equals
, hashCode
и toString
Вот это да!
И это становится лучше! (Или хуже, в зависимости от того, насколько вы предпочитаете ясность, а не лаконичность.)
var url = new URL("https://sitepoint.com/java");
var connection = url.openConnection();
Как поясняет Брайан, это не ослабляет систему типов Java. Это просто означает, что компилятор выводит больше типов, чем он делает сегодня.
Не в последнюю очередь Брайан быстро подводит итоги проектов Valhalla и Panama .
Прежде чем углубиться в более целенаправленные выступления, я хочу порекомендовать « Спросите архитекторов JDK» , где Марк Рейнхольд, Джон Роуз и Брайан Гетц ответили на случайные вопросы, касающиеся Java и JVM. Это хороший пример того, почему Java такая, какая она есть, и как это может измениться в будущем.
Java 8
Мне показалось интересным, что там было несколько выступлений, посвященных Java 8, и что многие из них до сих пор представляют некоторые основы. Другие, и это имело для меня больше смысла, были более продвинутыми и помогали разработчикам, которые в основном использовали его ежедневно, чтобы понять детали.
В первой половине выступления Stuart Marks ‘ Collections Refueled ( слайды ) были представлены некоторые расширения инфраструктуры коллекций, которые произошли в Java 8 и которые могли быть упущены из-за ажиотажа вокруг потоков. Например, я не знал о Collection::removeIf
List::replaceAll
List::sort
Он покончил с фабриками Comparator
Еще одним докладом, в котором вы убедились, что вы получаете все из Java 8, был « Несколько скрытых сокровищ в Java 8» Venkat Subramaniam, в котором он освещал различные темы, такие как объединение строк, методы по умолчанию и параллельные потоки.
Говоря о параллельных потоках, если вы хотите узнать больше о том, как создавать решения, которые хорошо распараллеливаются, посмотрите параллельное мышление Стюарта Маркса и Брайана Гетца. Здесь они дали краткие мысленные модели для того, как разрабатывать хорошие решения и оценивать производительность параллельного потока.
Но давайте не будем отвлекаться от живого кодирования марафона Venkat. В « Let’s Get Lazy: Исследуйте реальную силу потоков», в которую он погрузился в лень, и почему ленивые оценки полезны. Он сделал это снова в Refactoring to Functional Style с Java 8 — путь от функций функционального программирования Java 8 к функциональному программированию с Java 8. Почему важны функции высшего порядка, неизменность, лямбда-выражения, потоки и лень и как они собираются вместе ?
Мне очень понравился «Конец пути: сбор и редукция» в Stream API , который глубоко погрузился в редукцию и коллекционеров. Как я уже писал в другом месте, я не фанат сложной коллекции потоков, но это не значит, что не очень хорошо знать, как это сделать, если вам нужно. Кроме того, Морис Нафталин также дал много интересной информации.
Java 9
Java 9 была, конечно, большой темой, и было много разговоров об этом. Прежде чем перейти к некоторым деталям новой версии, я хочу порекомендовать два конкретных доклада для тех, кто еще не проводил много времени с Java 9.
Первый, JDK 9 Language, Tooling и Library Features от Джозефа Дарси, дал общий обзор Java 9. Как бы то ни было, это была в значительной степени устная версия моего окончательного руководства по Java 9 (но он также охватывал некоторые из еще неопубликованной второй части).
Затем была Подготовка к JDK 9 ( слайды ), на которой Алан Бейтман исследовал, что должны делать наши проекты, чтобы подготовиться к новой версии. Некоторые из упомянутых им вещей были о том, какие внутренние API-интерфейсы, которые Jigsaw сделает недоступными, и как с этим справиться, макет файловой системы новой среды выполнения и формат строки предстоящей версии. В заключение он объяснил, как довольно крутые мульти-релизные JAR-файлы могут помочь проектам оставаться совместимыми с несколькими версиями.
Проект Пазл
Как и все посты о Java 9, мы должны поговорить о Project Jigsaw и грядущей модульной системе Java Platform (JPMS). Команда Jigsaw представила серию докладов, каждая из которых основывалась на предыдущих.
Во введении к модульной разработке ( слайды ) Алан Бейтман представил введение в модульную систему. Он объяснил, как создаются модули и как JVM обрабатывает их. Ключевыми словами были объявления модулей , читаемость и доступность ; Jlink также представлен.
Большая часть следующего доклада , посвященного усовершенствованной модульной разработке Алекса Бакли и Алана Бейтмана ( слайды ), рассказывала, как перенести существующие библиотеки и приложения в модульную систему (в основном через неназванный модуль и автоматические модули ). Доклад закончился продолжением jlink, а затем закончился обширным кругом вопросов — некоторые интересные, некоторые менее.
Ключевым компонентом в отделении клиентов от реализаций интерфейса, от которого они зависят, является третья сторона, которая обнаруживает реализации и делает их доступными для клиента. Это часто делается с помощью DI-контейнеров , которые также внедряют реализации. Другим подходом является шаблон поиска сервисов , где клиенты должны получить доступ к центральному реестру для запроса реализаций. Java уже поддерживает последний с классом ServiceLocator
который, как Алекс Бакли представил в Modules and Services ( слайды ), был расширен, чтобы модули могли легко публиковать и использовать сервисы.
Наконец, в проекте Jigsaw: Under the Hood ( слайды ) Алекс Бакли поднял зрителей на следующий уровень. Он объяснил:
- взаимодействие системы модулей и загрузчиков классов, а также концепция слоев
- как зависимости можно сделать транзитивными (
requires transitive
- текущее состояние вражды между инкапсуляцией и отражением (
exports private
- различные виды модулей (именованные, безымянные, автоматические)
Если вы не очень внимательно следите за Jigsaw, вы узнаете много нового здесь. Настоятельно рекомендуется!
Если вы все еще не можете получить достаточно, посмотрите сеанс Project Jigsaw Hack с Аланом Бейтманом, Мэнди Чунг и Марком Рейнхольдом.
API-интерфейсы
Я был немного удивлен, обнаружив лишь два доклада о новых API, которые Java 9 привносит в игру, оба из которых были сделаны Стюартом Марксом — может быть, я просто упустил из виду другие?
Первый из них фактически принадлежал альтер-эго Стюарта, самому доктору Депрекатору. В « Расширенном устаревании» ( слайды ) доктор подробно рассказал об истории и жизненном цикле устаревания Java, дополнениях к @Deprecated
jdeprscan ) и будущей работе по устареванию.
Я уже упоминал другой, Collections Refueled ( слайды ), потому что он начинал с разговора о Java 8. Вторая часть началась примерно на полпути с объяснения, почему не будет литералов коллекций (короткая версия: коллекции являются частью библиотеки, не язык, поэтому поддержка на уровне языка будет неудобной). Вместо этого мы получаем методы фабрики коллекций, которые Стюарт подробно представил, включая такие детали, как неизменность, случайный порядок итераций и многое другое. В последние пару минут он изложил планы на ближайшее и отдаленное будущее.
механическая обработка
Инструменты сборки, пожалуй, самая интересная тема, когда дело доходит до Java 9 и Project Jigsaw. Так как они поживают? В Java 9 и «Влияние на проекты Maven» Роберт Шолте рассказал о том, что он должен был сделать, чтобы заставить Maven работать с Java 9. Вам обязательно стоит посмотреть это, если вы используете Maven! Интересные лакомые кусочки — это поддержка нескольких выпусков JAR-файлов: то , что дополнительное принудительное правило, запрещающее дублирующиеся классы, является хорошим способом обнаружения разделенных пакетов и, если вы хотите оставаться в курсе, страница Maven Wiki для Java 9 . К сожалению, в настоящее время отсутствует поддержка создания module-info.java
pom.xml
Если вы когда-нибудь видели живой код Venkat Subramaniam, вы будете верить, что я делаю тот jShell , собственный и совершенно новый Java-цикл чтения-оценки-печати (REPL для краткости), созданный специально для него. Поэтому в « Интерактивной разработке и быстрой обратной связи с Java 9 REPL» он взял его на тест-драйв. Вы узнаете, что такое REPL, для чего он нужен и как использовать Java.
Во Введении к устранению неполадок в JDK 9 ( слайды ) Юджи Кубота, Ясумаса Суэнага и Синдзи Такао объяснили инструменты обслуживания jhsdb, jcmd и агент HeapStats, которые были представлены или значительно улучшены в JDK 9. Они представляют, как выполнять такие вещи, как настройка JVM после его запуска, получения дампов потока / кучи или гистограмм классов и обнаружения утечек памяти.
Java EE
Перво-наперво: Java EE 8 запланирован на сентябрь 2017 года, версия 9 — всего на год позже.
Концепция Enterprise Edition представлена в Java EE Keynote . Одним словом: облако. Другими словами: облако, микросервисы, облако, гипеслов, облако. Примечательно, что Анил Гаур старался изо всех сил подчеркнуть, что Oracle прислушивается (его акцент не мой) к своим партнерам и клиентам. Несколько из них были приглашены на сцену для поддержки дорожной карты Java EE. В конце концов , после записи, которая, возможно, была даже более неловкой, чем запись Брайана Гетца, появился даже некоторый код.
Java EE 8
Если вас интересует состояние объединения Java EE и, в частности, будущая версия 8, вы можете ознакомиться с обновлением Linda DeMichiel для Java EE 8 . Она не только говорит о 8, но и дает представление об основных направлениях и интересных предложениях, например, для реактивного программирования, автоматических выключателей и безопасности. Наконец, Линда перечисляет другие разговоры, связанные с Java EE. Вот не облачные, для которых я мог бы найти видео:
- JAX RS 2.1 для Java EE 8 Эд Бернс и Павел Бучек
- Сервлет 4.0: Обновление статуса, HTTP / 2 приходит на Java от Эда Бернса
- Java EE Next — возможности HTTP / 2 & REST от Павла Бучека и Дэвида Делабасси
- JSF 2.3 Сообщество захватывает Эд Бернс и Кито Манн
- Конфигурация для Java EE 8 и облака Дмитрий Корнилов
- Безопасность для Java EE 8 и облака от Kk Sriramadhesikan (только слайды )
Моар Облако
Как мы узнали из основного выступления, облако важно:
- Корпоративная Java для облака : Раджив Мордани, Джош Дорр и Дирай Мутрежа
- Портативные облачные приложения с Java EE от Раджива Мордани, Джоша Дорра и Джо Ди Пола
- Приложения Java EE в облачной службе Oracle Java, автор Harshad Oak
- Миграция приложений Java EE на микросервисы и Oracle Java Cloud. Авторы: Тилен Фаганел и Матиаз Б. Юрич
- Облачная нативная Java EE , Майк Крофт и Ондрей Михали
Интересно, насколько эти разговоры могут отличаться? Я тоже! (Я не смотрел их — не совсем парень Джи.)
Что еще?
Это был полный фронт разговоров о Java SE и EE. Но было еще много. Особо выделялись две темы: микросервисы и инструменты. Если вы заинтересованы в них, посмотрите список воспроизведения JavaOne 2016 .
Если вы хотите услышать мнение других людей о JavaOne, проверьте эти сообщения:
- Groovy Podcast # 33, прямой эфир с JavaOne 2016
- JavaOne 2016 продолжение Джош Джуно
- Ежедневные отчеты Солиты : день 1 , день 2 , день 3 , резюме (если вы только прочитали один, сделайте это одним)
- Больше ежедневных отчетов, на этот раз от Canoo : день 1 , день 2 , день 3
- Обзор JavaOne 2016 от FreeWave
- Oracle JavaOne 2016 от WhiteHorses
И в отличие от меня они были даже там. ?