Oracle спонсировал этот пост.
«Java старая, скучная и предпринимательская!» Это то, что мой соучредитель Трэвис Ридер кричал над ветром, когда мы ложились и отскочили вдоль дельты Сакраменто-сан Хоакин, где-то между корпоративным выгоранием и кризисом кодирования среднего возраста. «Я хочу снова повеселиться по написанию кода!»
Вот почему мы запустили нашу консалтинговую фирму в Ruby в 2009 году. А в 2011 году мы переключили наш следующий стартап, Iron.io, чтобы отправиться-опубликовать то, что могло быть первым в истории списком работы в списке рассылки Go-Nuts.
Перенесемся на 15 лет вперед, и Java переживает полномасштабный ренессанс. Это снова становится весело, и, как ни странно, я в команде, делающей это.
Упс! Это сработало.
Я получаю настроение Трэвиса. В 2005 году, когда создатель Ruby on Rails, Дэвид Хейнемиер Ханссон, бросил свою знаменитую цитату: «Опсы! Это сработало. Мы работаем и бегаем». — Во время демонстрации лесов в первый раз Трэвис, вероятно, использовал Java 1.4. Мало того, что не было никаких классов записей, экспрессии или сопоставления рисунков — также не было никаких функций Lambda, потоков или дженериков, а J2EE был Framework Du Jour, в комплекте с поддержкой SOAP и WSDL. И здесь был DHH, создав функционирующий блог с нуля, живет на сцене за 16 минут, даже не произнося слово «предприятие» или «боб». Это было великолепно.
Итак, следующее десятилетие моей жизни было потрачено на написание рубины и уйти, оставаясь не заинтересованным и неинформированным в тихом и быстром прогрессе Java, пока серия мероприятий не привела к приобретению нашей компании и моей группе Java Platform Platform в Oracle.
Выпустить каденцию
Недавно мы запустили Java 24 на Javaone 2025. Новые версии Java выпускаются каждые шесть месяцев, такие как Clockwork, во вторник 12 и 38 недель ISO, и уже более семи лет. Эта модель выпуска, основанная на времени, является большим изменением по сравнению с бывшей моделью, основанной на функциях, где выпуск будет прикреплен к определенной функции, которая часто занимала три года, чтобы выйти за дверь.
Эта предсказуемая шестимесячная каденция выпустила многочисленные преимущества, такие как привлечение новых функций в руки разработчиков быстрее, разбивая большие концепции (такие как сопоставление схем) в более мелкие изменения в постепенных изменениях (например, сопоставление моделей), установление предсказуемости для компаний, которые полагаются на Java, и позволяя процессу предварительного просмотра функций, которые могут собирать реальную оплату и изменение. Шестимесячный каденция выпуска также означает, что нет никакого стремления включать вещи, прежде чем они будут готовы-потому что, если функции требует больше времени, другой поезд находится прямо за углом.
Тонн функциональности вошла в Java под этой частотой: записи, сопоставление рисунков, виртуальные потоки, иностранная функция и API памяти, а также коллекционер мусора с супер-низкой задержкой, и это лишь некоторые из них. Я расскажу о некоторых темах этой работы, но сначала давайте обсудим способность всего этого: OpenJDK.
OpenJDK
OpenJDK был запущен в 2006 году как место для сотрудничества в реализации Java с открытым исходным кодом, и сегодня многие компании и частные лица вносят вклад в Java через OpenJDK. Смотрите карту вклада в OpenJDK для JDK 24 здесь.
Обратите внимание, что я сказал, что OpenJDK — это «место», а не вещь. В OpenJDK есть проекты, группы, участники, списки рассылки, вики, предложения по улучшению JDK (JEPS) и артефакты, такие как исходный код или даже изображения талисма Java, герцог. OpenJDK — это не «сборка Java», которую кто -то может загрузить и использовать для запуска своих приложений. В дополнение к управлению и внесению большинства работ, которая идет в OpenJDK, Oracle также создает распределения, в том числе некоторые лицензированные в соответствии с GPLV2 (за исключением класса), некоторые по лицензии Oracle «Без положениям и условия», а другие-по коммерческой лицензии Oracle за долгосрочную поддержку.
Язык Java ренессанс
Project Amber, возглавляемый главным языковым архитектором Oracle Брайаном Гетцем, является основным фактором, ответственным за текущую языковую эволюцию Java. Этот проект принес значительные улучшения в трех векторах: во -первых, сделав язык Java более выразительным (и, таким образом, кратковременный); во-вторых, делая его более «ориентированным на данные»; и в -третьих, упростить его для новых учеников и небольших программ — все это позволяя языку оставаться читаемым, обслуживаемым и совместимым. Это высокий порядок, но с тщательной эволюцией это было успешным усилием.
Выразительность очевидна во всех чертах янтаря. Например, текстовые блоки и локальный тип типа выводите код, как это:
String html = « \ n» + «
\ n» + «Привет, мир
\ n» + « \ n» + « \ n»; 12345 String html = « \ n» + «
\ n» + «hello, world
\ n» + « \ n» + « \ n»;
в это:
var html = «» «
Привет, мир
» «» «; 1234567 var html = «» «
Привет, мир
» «»;
Записи классы превращают сотни, если не тысячи строк классов «носитель данных», которые мы записали в это:
Запись человека (String name) {} 1 Запись Person (string name) {}
И сопоставление рисунков позволяет простым типам, как этот пример с экземпляром:
if (obj exanceof person p) {System.out.println (p.name ()); } 123 if (obj ancomef person p) {System.out.println (p.name ());}
… а также варианты использования деконструкции объекта с шаблонами записи:
if (obj exanceof person (string name)) {System.out.println (name); } 123 if (obj ancessionof person (string name)) {System.out.println (name);}
И мы можем объединить все вышеперечисленное в шаблоны для переключения:
Switch (o) {case Person (String name) &&! name.isempty () -> «Person:» + name case ehair (string plate) &&! plate.isempty () -> «транспортное средство:» + plate} 1234 Switch (O) {case Person (String name) &&!
Это, вероятно, самая распространенная форма сопоставления рисунков.
Это не просто меньший код, но и меньший код, подверженное ошибкам, и он становится более выразительным и мощным, когда вы начинаете распаковать мощность этих функций вместе.
Но это не только детали, которые меняются; Типы программ, которые пишут люди, тоже меняются. Многие программы в настоящее время являются по существу приемников, процессоров и отправителей данных к/из внешних источников: базы данных, API, модели с большими языками (LLMS) и т. Д.
Чтобы использовать пример: Slack Bot получает запрос на поддержку от одного из ваших клиентов, который затем вызывает ваш API CRM, а затем просит LLM использовать все это для структуры ответа вашему клиенту. Вместо того, чтобы использовать классы для моделирования бизнес -объектов и процессов, что является традиционно отличной идеей для более крупных сложных приложений, теперь вы можете использовать классы для простого моделирования самих данных. Вы можете использовать запись для моделирования ответа JSON API, шаблонов для деконструкции данных, герметичных классов для исчерпывающего анализа и текстовых блоков для формирования подсказки LLM. Функции, о которых мы говорили, позволяют вам писать красиво структурированные программы, ориентированные на данные.
Наконец, язык становится не просто лучше и красивее для профессиональных разработчиков, решающих современные проблемы, но также становится проще для учащихся и небольших программ. Усилия, называемая «прокладкой в рамках», частью Project Amber, справляется с этим упрощением. Короче говоря, первая программа Java ушла из этого:
открытый класс helloworld {public static void main (строка[] args) {System.out.println («Привет, мир!»); }} 12345 Public Class Helloworld {public static void main (строка[] args) {System.out.println («Привет, мир!»); }}
… до этого:
void main () {io.println («Привет, мир!»); } 123 void main () {io.println («Привет, мир!»);}
Java — это невероятная платформа для команд, создающих более крупные программы, но для студентов и учащихся восприятие, которое приведен пример первой программы Java, было одной из сложности и сложности, особенно в многоязычном мире, где другие языки просто предлагают Print () как единственную линию кода.
И есть еще кое-что, чтобы проложить наряд. Например, один/многопрофильный исходный код представляет возможность запустить программу исходного кода с Java Launcher, не нуждаясь в явном компиляции исходного кода. И есть также новая конструкция Shebang, которая позволяет вашему файлу Java запускаться как сценарий. Принимая следующий исходный файл:
№! } 12345 #!/Path/to/bin/java-Source 24-enable-preview void main () {io.println («Привет, мир!»);}
… И делает его исполняемым:
chmod +x myscript 1 chmod +x myscript
Теперь вы можете запустить:
$ ./myscript Привет, мир! 12 $ ./myscripthello, мир!
Это только начало того, что возможно с Modern Java, которое еще раз весело писать, все еще обратно совместимо, легко поддерживать и еще проще для чтения. Мы даже не касались других областей инноваций, таких как новые API, лучшие производительность, более чистая наблюдение, лучшая эргономика времени выполнения и многое другое.
Таким образом, в следующий раз, когда я выедут на лодке, у нас должно быть о чем поговорить, учитывая, сколько Java развивалась в рамках шестимесячного выпуска Cadence, чтобы устранить современные архитектуры, стили и типы программ. У него действительно нет причин не начинать свой следующий проект в Java.
В следующем выпуске этой серии из трех частей мы поговорим о ренессансе на платформе Java, а в третьей части мы обсудим ренессанс Java.
Следите за обновлениями!
Чтобы узнать больше о том, куда идет язык Java, посмотрите разговоры Брайана Гетца с Javaone.
Oracle предлагает широкий спектр технологий для строительства, тестирования и обслуживания приложений в облаке и в вашем центре обработки данных. Найдите бесплатные инструменты и учебные ресурсы на Developer.oracle.com Узнайте больше последних из Oracle Trending Stories YouTube.com/thenewstack Tech движется быстро, не пропустите эпизод. Подпишитесь на наш канал YouTube, чтобы транслировать все наши подкасты, интервью, демонстрации и многое другое. Группа подпишитесь с эскизом. Чад Аримура — вице -президент по связям с разработчиками Java в Oracle, наблюдая за отношениями разработчиков и Java в образовательных командах. Прежде чем присоединиться к группе Java Platforms в Oracle, Чад возглавил команду инженеров, которая обеспечила проект FN, и вниз по течению … Подробнее от Чада Аримура