2017 год уже стал историей, и сейчас самое время на минутку остановиться и взглянуть какие события и изменения случились в мире Java за прошедшие двенадцать месяцев. За это время много всего случилось: от драмы с Project Jigsaw до задержки выхода Java 9 — в общем, повидали мы всякого.
Чем жила Java в 2017 - 1

Январь

Java встретила 2017 год уймой различных событий. Jeff Luszcz прошелся по ряду проблем с использованием «свободного» Java софта, в частности — не очевидной для пользователей Java SE «не-бесплатности» JRE, а также потенциальной опасности неконтролируемого использования в своих проектах открытого кода.
Чем жила Java в 2017 - 2
Начался переход MVC 1.0 под управление сообщества. Добавление поддержки TensorFlow 1.0 упростило пользователям Java задачи по внедрению и использованию машинного обучения. Kotlin 1.1 получил поддержку JavaScript и JVM, а также внедрил все необходимое для работы с грядущей Java 9. А в это время в мире JVM появился новый по-настоящему функциональный язык программирования — Lux.

Февраль

Появился Java-micro — новый фреймворк, призванный облегчить создание микросервисов на Java. Был анонсирован JHipster 4 с поддержкой Angular 2 и другими нововведениями. Новая глобально распределённая высокомасштабируемая мультиверсионная NewSQL СУБД, разработанная Google — Cloud Spanner добралась до статуса беты и получила полную поддержку Java.
Чем жила Java в 2017 - 3
В то же время продолжаются судебные тяжбы между Oracle и Google, касающиеся Java API, и не видно им конца и края.

Март

Конечно же, самой большой новостью месяца стал Angular 4. Впрочем, не менее интересным было открытие каталога программ NASA для всех желающих.
Чем жила Java в 2017 - 4
Вышла IntelliJ IDEA 2017.1 с поддержкой Java 8.

Май

Чем же запомнился май? Читатели в основном были озабочены новостями от индекса TIOBE, демонстрирующего что Java ступила на наклонную ведущую вниз, хотя по-прежнему удерживала лидирующие позиции (что делает и сейчас). Впрочем, большую часть мая тон новостям задавала драма, развернувшаяся вокруг Java 9. Сообщество раздирали споры об изменениях, предложенным в JDK 9 и Project Jigsaw, который позднее стал самой важной частью Java 9. В день голосования ряд участников не захотели проголосовать за Jigsaw, тем самым сместим дату релиза «девятки». Среди других новостей промелькнул анонс того, что отец Java, Джеймс Гослинг, организовал совместное предприятие с AWS
Чем жила Java в 2017 - 5
Среди новостей об Eclipse был предварительный обзор Eclipse Oxygen, который показал значительное улучшение удобства использования и рабочего окружения в Sirius.

Июнь

Главные новости этого месяца включают объявление даты официального релиза Java 9. Теперь это 21 сентября. Georges Saab объяснил, почему эта задержка ничего не меняет в статусе Project Jigsaw.

Июль

JetBrains, родители нашей любимой IDE IntelliJ IDEA 2017.2 не стали откладывать до официального релиза Java 9, а выпустили по расписанию заранее реализовав поддержку новой версии языка. Точно так же поступили и с JPMS (Java Platform Module System) — платформа обновилась по расписанию.

Август

Еще больше новостей о Java 9 медленно подводят нас к дате релиза. А солнечное затмение в реальном мире, выбилось в ТОП-5 постов об Eclipse IDE по результатам августа (дело в том, что слово «eclipse» переводится как «затмение»).
Чем жила Java в 2017 - 6

Сентябрь

Релиз Java 9 и Java EE 8 показал, что все задержки того стоили. После долгих перипетий с выпуском Java 9, Oracle предложила вернуться к старой модели релизов с двумя выпусками в год. Под звуки фанфар был выпущен Spring Framework 5. Java EE официально перешла в Eclipse Foundation, а IBM открыла исходные коды собственной JVM.

Октябрь

Поток новостей о Java 9 все не иссякает. В это время по сети гуляют многочисленные мнения о модульности. Так, Rabea Gransberger настоятельно рекомендует разработчикам детальней познакомиться с модулями, а Simon Ritter подчеркнул, что «JDK 9 не принес больших нововведений для разработчиков, главной целью было сделать среду модульной». По мнению Nicolai Parlog «Java 9 может сделать для модульности то, что Java 8 сделала для функционального программирования». Однако Lukas Eder настаивает, что «Jigsaw не еще некоторое время будет востребован пользователями, поскольку уже есть Maven и OSGi».
Чем жила Java в 2017 - 7
Gradle получил поддержку Java 9, а JDK 18.3 Early Draft Review стал доступен для загрузки. «The State of the Octoverse» подтвердили любовь GitHub к JavaScript, Python и Java.

Ноябрь

В рамках инициативы по ускорению цикла разработки, Oracle анонсировали что «большинство промежуточных релизов должны содержать как минимум одно или два заметных улучшения». Также в этом месяце состоялся релиз Javalin, легковесного веб-фреймворка для пользователей Java и Kotlin, и Apache Kafka, которая пробыла в аду разработки ужасающе долго. А еще выяснилось, что большинство оригинально кода на GitHub написана на Java.

Декабрь

Чем ближе к концу года, тем меньше крупных новостей. Oracle объявила, что следующая версия Java получит название JDK 10. Спасибо, КО!
Чем жила Java в 2017 - 8

2018 и дальше

Что ожидает Java в наступающем году? Что ж, по новому графику Oracle, следующий релиз должен быть готов в конце марта или начале апреля 2018 года. Скорее всего, новая функциональность в Java 10 будет представлена наработками, находящимися сейчас в JEP в статусе «Targeted» или «Proposed to Target». На данный момент это:
  • Local-Variable Type Inference — предложение по введению в Java ключевого слова var, что избавило бы от необходимости указывать тип локальной переменной явно.
  • Объединение «леса» JDK в единый репозиторий (сейчас их восемь - root, corba, hotspot, jaxp, jaxws, jdk, langtools, nashorn).
  • Garbage-Collector Interface (улучшение изоляции исходного кода различных сборщиков мусора с помощью интерфейса для Garbage Collector).
  • Parallel Full GC для G1. В JDK9 сборщиком мусора по умолчанию стал G1, в то время как раньше базовым сборщиком был Parallel GC, у которого был также параллельный полный сборщик мусора, а вот у G1 — нет. Предлагается сделать полный сборщик мусора для G1 также параллельным.
  • Application Class-Data Sharing — эта наработка предлагает улучшить загрузку и отслеживание, расширить существующую функцию разделения классов (CDS), чтобы позволить классам приложений размещаться в общем архиве.
  • Thread-Local Handshakes — предложение способа выполнения коллбека по потокам без выполнения глобальной точки безопасности VM. Простой способ остановки отдельных потоков, а не всех вместе (или ни одного).
Впрочем, только время покажет, что же случиться на самом деле. И, несмотря на все перипетии, это был отличный год для Java, и мы с нетерпением ждем, что принесет нам следующий год!
Что еще почитать?

Топ-10 библиотек Java, которые помогут сэкономить время

Как в Java напечатать числа от 1 до 100 без циклов и условий?

Использование Java Arrays.sort() для любого списка объектов