Erhalten Sie Zugang zu diesem und mehr als 300000 Büchern ab EUR 5,99 monatlich.
Язык Java – сердце корпоративного ПО. Если программист хорошо знает Java, он без особого труда найдет интересную работу. Поднимите ваши навыки Java на новый уровень вместе с экспертами. Основательно изучите такие мощные инструменты, как модели конкурентного выполнения и модули, и даже раскройте некоторые глубинные тайны Java. Узнайте, как Java работает на уровне байт-кода. Освойте ценные приемы конкурентного выполнения и оптимизации быстродействия, а еще ключевые методы сборки, тестирования и развертывания. Также рассмотрите альтернативные языки для JVM – Kotlin и Clojure. Изучив материал, вы будете выделяться на фоне других разработчиков!
Sie lesen das E-Book in den Legimi-Apps auf:
Seitenzahl: 865
Veröffentlichungsjahr: 2024
Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:
Переводчики Е. Матвеев, Е. Матвеев, Е. Матвеев, Е. Матвеев
Бенджамин Эванс, Джейсон Кларк, Мартин Фербург
Java для опытных разработчиков. 2-е издание. — СПб.: Питер, 2024.
ISBN 978-5-4461-2406-0
© ООО Издательство "Питер", 2024
Вы побываете на передовых рубежах Java-разработки и научитесь говорить на Java 7 и языках следующего поколения.
Пол Бенедикт, Corporate Personnel & Associates
Купите эту книгу, чтобы узнать о новых возможностях Java 7. Обращайтесь к ней, чтобы овладеть Java на экспертном уровне.
Стивен Харрисон, PhD, FirstFuel Software
Настоящий кладезь знаний о платформе JVM.
Рик Вагнер, Red Hat
Как стать опытным Java-разработчиком и как им остаться.
Хайнц Кабуц, The Java Specialists’ Newsletter
В словарях прилагательное «основательный» определяется как «дельный, серьезный, солидный, обстоятельный». Мне нравится это слово. Java-разработчику стоит серьезно и обстоятельно овладевать практическими знаниями, которые необходимы, чтобы называть себя экспертом по Java.
Перед вами второе издание превосходной книги. Первое издание научило нас всему, что нужно было знать о Java 7. Кажется, с тех пор прошла целая вечность. Версия Java 7 относилась к другой эпохе, когда новые возможности добавлялись в язык в лучшем случае раз в три года. Тогда было легко различать версии. Java 5 — обобщения и перечисления. Java 7 — try с ресурсами. Java 8 — потоки данных и лямбда-выражения. Эти счастливые времена закончились, когда компания Oracle перешла на шестимесячный цикл. Когда появились записи — в Java 14, 15 или 17? А расширенный switch? Или он уже был в Java 11?
Быстрый цикл выпуска хорошо подходит для программистов в динамично развивающихся компаниях. Каждые полгода у них появляются новые игрушки. Они даже могут испытывать предварительную реализацию того, что появится в следующей версии. Обилие новшеств хорошо для программистов, но не для авторов книг. Не успеют высохнуть чернила, как в языке появляются новые возможности, из-за которых часть материала устаревает.
Бен, Джейсон и Мартин отлично поработали над новой книгой о Java. Ее основная идея остается прежней, и я бы сформулировал ее так: «Если вы хотите нанять профессионального программиста на Java, каких знаний и умений от него стоит ожидать? Какими навыками он должен обладать, чтобы его подготовку можно было считать по-настоящему основательной?»
Новое издание книги настолько актуально, насколько это возможно при шестимесячном графике выпуска новых версий языка. В то же время авторы не перегружают нас новым материалом. Суровая реальность такова, что большинство организаций до сих пор не расстались со старыми версиями Java. Даже после выхода Java 18 многие банки, страховые компании и правительственные учреждения все еще работают на Java 8.
Книга почти на 200 страниц толще предыдущего издания. В некоторых разделах содержится абсолютно новый материал. Это один из тех случаев, когда с выходом нового издания старое не устаревает полностью. Обе книги заслуживают того, чтобы стоять на полке серьезного Java-программиста.
Бенджамин Эванс, Джейсон Кларк и Мартин Фербург — настоящие эксперты в области Java. Они занимают должности сеньор-разработчиков на Java в Red Hat, New Relic и Microsoft. Возьмите на вооружение их коллективную мудрость. Эта книга поможет вам выявить свои слабые места, которые стоит подтянуть. В итоге, приложив достаточно усилий, вы сможете с полным правом называть себя основательным Java-программистом.
Хайнц Кабуц. The Java Specialists’ Newsletter
Первое издание этой книги началось с комплекта учебных заметок для начинающих разработчиков в валютном отделе банка. Один из нас (Бен), знакомясь с ассортиментом книг в продаже, обнаружил, что на рынке не хватает современных материалов для Java-разработчиков, которые хотят повысить свой профессиональный уровень. Взявшись составлять такие материалы, он обнаружил, что пишет ту самую недостающую книгу, и привлек себе в помощь Мартина.
Это произошло более 10 лет назад: книга писалась, когда Java 7 еще находился в процессе разработки. С тех пор мир сильно изменился, и поэтому книга тоже существенно переработана по сравнению с первым изданием. Изначально мы собирались изложить такие темы:
• Многоязычное программирование.
• Внедрение зависимостей.
• Многопоточное программирование.
• Проверенные методы сборки и непрерывной интеграции.
• Что нового появилось в Java 7.
Однако когда мы начали работать над вторым изданием, оказалось, что в материал нужно вносить изменения, например:
• Немного сократить тему многоязычного программирования.
• Усилить акцент на функциональном программировании.
• Доработать материал о многопоточности.
• Рассмотреть под новым углом тему сборки и развертывания (включая контейнеры).
• Представить новые возможности Java 11 и 17.
Очень важное изменение связано с тем, что в первом издании помимо Java рассматривались три других языка, одним из которых был Scala (а двумя другими — Groovy и Clojure; Kotlin тогда еще не существовал). В то время многие разработчики рассматривали Scala в качестве языка, который «как Java, только лучше» — и по сути, в первом издании мы представили именно такое ви́дение.
Однако с тех пор мир не стоял на месте. Java 8 и 11 получили широкое распространение, а те, кому нужен «Java, только лучше», в основном пишут на Kotlin (или просто остаются на Java). За это время Scala стал мощным функционально-ориентированным языком со статической типизацией для JVM. Он отлично подходит для тех, кому нужно именно такое сочетание возможностей, но за это приходится расплачиваться: в частности, со временем среда выполнения становится все сложнее, а язык все меньше похож на Java.
Эту эволюцию иногда описывают фразой «Scala хочет стать Haskell на JVM», хотя эта формулировка не вполне точна. Потому после того, как мы решили исключить Groovy из второго издания, пришлось долго и серьезно размышлять над тем, стоит ли оставить Scala или заменить его на Kotlin.
В конечном итоге мы пришли к выводу, что Scala идет в своем, функционально-ориентированном направлении, а мы хотели бы представить язык, более доступный для Java-разработчиков, которые начинают осваивать другие языки, например Kotlin. Перед нами возникла дилемма. Те части Scala, которые близки Java-разработчикам, очень похожи на Kotlin (в некоторых случаях синтаксис практически идентичен), но философия и направление развития этих двух языков полностью различаются. Мы поняли, что достаточно глубокое рассмотрение Scala — так, чтобы оно не повторяло материал, посвященный Kotlin, — займет слишком много места в книге.
Итак, мы решили из трех дополнительных языков оставить только два (Kotlin и Clojure), зато глубже их описать. Хотя Scala время от времени упоминается в книге, ему не посвящаются целые разделы (и тем более главы).
Язык Clojure сильно отличается от Kotlin и Java. Например, в главе 15 у нас возникли небольшие затруднения, потому что многие концепции, которые добавлялись в другие языки по мере их развития (например, функции высшего порядка и рекурсия), органически поддерживались в Clojure с самого начала. Поэтому разговор об этом языке строится не по тому же шаблону, что о Java и Kotlin. Clojure по своей сути — гораздо более функционально-ориентированный язык, и если бы мы следовали той же структуре, нам пришлось бы слишком много повторяться.
Надеемся, что в этой книге нам удалось заострить внимание на том, что разработка программного обеспечения — социальная деятельность. Мы убеждены, что технические аспекты программирования важны, однако менее очевидные факторы взаимодействия и общения между людьми по крайней мере не уступают им по важности. Объяснить эти грани разработки в книге непросто, но эта тема проходит красной нитью через весь материал.
На протяжении своей карьеры разработчики черпают силы в увлеченности технологией и желании учиться. В этой книге мы постарались акцентировать некоторые вопросы, которые подпитывают эту увлеченность. Книга скорее напоминает экскурсию, чем энциклопедическое исследование, но так и было задумано — обеспечить вам отправную точку, с которой вы сами сможете продвигаться в интересующих вас направлениях.
Мы проделаем путь от новых возможностей последних версий Java до передовых методов современной разработки и будущего развития платформы. На этом пути мы поделимся некоторыми наблюдениями, которые оказались полезными для нас самих при работе с Java.
Конкурентное выполнение, быстродействие, байт-код, загрузка классов — вот некоторые из основных механизмов, которые произвели на нас наибольшее впечатление. Также мы поговорим о новых языках для JVM помимо Java по двум причинам:
• Другие языки играют все более важную роль в общей экосистеме Java.
• Понимание разных подходов, присущих разным языкам, повысит вашу квалификацию программиста независимо от того, на каком языке вы пишете.
Прежде всего эта книга нацелена на перспективу и ставит на первый план вас и ваши интересы. Мы верим, что если вы станете основательным Java-разработчиком, это поможет вам оставаться увлеченным и поддерживать свое профессиональное развитие, а также лучше ориентироваться в изменяющемся мире Java и окружающей его экосистеме. Надеемся, что концентрированный практический опыт, который вы держите в руках, окажется вам полезен и интересен, а чтение даст пищу для размышлений и будет увлекательным. По крайней мере, писать эту книгу было увлекательно!
Мы хотели бы поблагодарить многих людей за их вклад в книгу:
Элишy Хайд (Elesha Hyde) как самого замечательного ведущего редактора; Джонатана Томса (Jonathan Thoms) за превосходное научное редактирование; Алекса Бакли (Alex Buckley) за очень подробный разбор процесса загрузки классов; Хайнца Кабуца (Heinz Kabutz) за отличные предложения и соображения (и даже поправки в формате pull request’ов!) по поводу глав, посвященных конкурентному выполнению, а также за очередное замечательное предисловие; Холли Камминс (Holly Cummins) не только за то, что она вдохновила нас на работу над первым изданием, но и за неизменно обоснованные практические советы; Брюса Дюрлинга (Bruce Durling) за содействие с материалом о Clojure; Дэна Хейдингу (Dan Heidinga) за подробную обратную связь по поводу текущего состояния проекта Valhalla; Петра Ягельского (Piotr Jagielski), Луи Жакоме (Louis Jacomet), Йозефа Бартока (József Bartók) и Тома Тресански (Tom Tresansky) за исправления, касающиеся некоторых нюансов Gradle; и Эндрю Бинстока (Andrew Binstock) за тщательную вычитку нескольких глав и, как обычно, дельные советы.
Также хотим поблагодарить персонал издательства Manning: Михаэлу Батинич (Mihaela Batinić), нашего редактора; Майкла Халлера (Michael Haller), нашего научного редактора; Дейрдре Хайам (Deirdre Hiam), нашего руководителя проекта; Памелу Хант (Pamela Hunt), нашего выпускающего редактора; и Джейсона Эверетта (Jason Everett), нашего корректора. Также мы благодарны всем рецензентам: Адаму Коху (Adam Koch), Алану Ломпо (Alain Lompo), Алексу Гауту (Alex Gout), Андресу Сакко (Andres Sacco), Энди Кеффаласу (Andy Keffalas), Аншуману Пурохиту (Anshuman Purohit), Эшли Итли (Ashley Eatly), Кристиану Тоудалю (Christian Thoudahl), Кристоферу Карделлу (Christopher Kardell), Клаудии Мадертанер (Claudia Maderthaner), Конору Редмонду (Conor Redmond), Ирфану Улле (Dr. Irfan Ullah), Эдду Мелендесу Гонзалесу (Eddú Meléndez Gonzales), Эзре Симелоффу (Ezra Simeloff), Джорджу Томасу (George Thomas), Гильберто Таккари (Gilberto Taccari), Хуго да Силве Поссани (Hugo da Silva Possani), Игорю Карпу (Igor Karp), Джареду Дункану (Jared Duncan), Джавиду Асгарову (Javid Asgarov), Жан-Франсуа Морену (Jean-François Morin), Джерому Майеру (Jerome Meyer), Кенту Р. Спиллнеру (Kent R. Spillner), Кимберли Л. Уинстон-Джексон (Kimberly L. Winston-Jackson), Константину Еремину (Konstantin Eremin), Мэтту Деймелу (Matt Deimel), Майклу Халлеру (Michael Haller), Майклу Уоллу (Michael Wall), Михаилу Ковалеву (Mikhail Kovalev), Патрисии Джи (Patricia Gee), Раманану Натараджану (Ramanan Natarajan), Рафаэлю Виллеле (Raphael Villela), Сатеджу Кумару Саху (Satej Kumar Sahu), Серхио Эдгару Мартинесу Пачеко (Sergio Edgar Martínez Pacheco) и Симоне Русо (Simona Ruso) — ваши советы помогли улучшить эту книгу.
Я благодарен многим людям, которые помогали мне на протяжении многих лет.
Миссис Ниммо — спасибо вам за то, что хвалили мои наивные сочинения на уроках английского в школе. Не будет преувеличением сказать, что благодаря вашему поощрению я выбрал карьеру писателя на всю жизнь.
Маме — спасибо за заразительную любовь к чтению, которую мне так повезло унаследовать.
Папе — спасибо за то, что привил мне любовь к компьютерам. Она не только определила мой профессиональный путь, но и сподвигла на то, чтобы писать книги и делиться этой увлеченностью с другими.
Бену — прежде всего спасибо за дружбу. Было невероятно интересно погружаться в глубины JVM, вдохновляясь твоей потрясающей любознательностью и энтузиазмом. И конечно, спасибо за то, что уговорил меня заняться вторым изданием книги. Работы оказалось больше, чем мы ожидали, но и книга в итоге стала лучше!
Наконец, спасибо моей жене Эмбер и детям, Коралине и Эшеру, за неисчерпаемую любовь и поддержку в таком своеобразном и замечательном деле, как работа над книгой.
Прежде всего хочу поблагодарить Бена и Джейсона за то, что пригласили меня поучаствовать в работе над вторым изданием. Мой вклад был минимален по сравнению с их трудом, но они весьма великодушно настояли, чтобы мое имя тоже значилось на обложке!
Керри, ты обеспечивала надежную поддержку на головокружительных поворотах моей карьеры за последнее десятилетие и только понимающе улыбалась, когда я в очередной раз говорил:«На этот раз всего несколько правок, честное слово!»
Хантер, твое жизнелюбие не дает забыть о радости творчества, из-за которой я когда-то встал на путь программирования. Надеюсь, ты обретешь ту же радость независимо того, какую стезю выберешь сам.
Спасибо и всем хорошим людям из Java Engineering Group в Microsoft, сообществ Eclipse Adoptium, London Java, Java Champions и многих других; в книге не хватит страниц, чтобы упомянуть их все. Благодаря этим людям я не теряю вдохновения, каждый день узнаю что-то новое и добавляю по пять новых закладок в список чтения на завтра!
Моим родителям Сью и Мартину за их непоколебимую веру в то, что мы найдем свой непроторенный путь и пройдем по нему.
Моей жене Анне за иллюстрации и художественное чутье, а также за неустанную поддержку и понимание в ходе работы над очередной книгой.
Светлой памяти Марианито, который где-то на середине работы над книгой обнаружил, что открытый ноутбук — теплое и уютное место для того, чтобы на нем спать.
Хоселито, который отчасти поборол свои страхи, интересуясь тем, почему я увлеченно провожу столько времени за экраном, на котором так мало интересного по сравнению с экраном в соседней комнате, с космическими кораблями и взрывами.
Задача книги «Java для опытных разработчиков», 2-е изд., — сделать вас Java-разработчиком следующего десятилетия и оживить вашу страсть к языку и платформе. Попутно вы познакомитесь с новыми возможностями Java и освежите представления о важнейших методологиях современной разработки ПО (таких, как разработка через тестирование и контейнерное развертывание), а также заглянете в мир альтернативных языков для JVM.
Вот как Джеймс Айри (James Iry) описал язык Java в замечательной статье «A Brief, Incomplete, and Mostly Wrong History of Programming Languages» («Краткая, неполная и преимущественно неверная история языков программирования»), доступной по адресу http://mng.bz/2rz9:
1996 — Джеймс Гослинг изобретает Java. Java — довольно велеречивый объектно-ориентированный язык со сборкой мусора, основанный на классах, со статической типизацией, одиночным наследованием реализации и множественным наследованием интерфейсов. Sun помпезно восхваляет Java за новизну.
И хотя Java упоминается в статье прежде всего ради шутки, в которой C# описывается теми же словами, это не отменяет того, что язык охарактеризован вполне адекватно. В статье немало других перлов, и ее стоит прочитать на досуге.
Отсюда вытекает насущный вопрос: зачем мы все еще обсуждаем язык, которому уже более четверти века? Наверняка он давно стабилизировался, и вряд ли о нем можно сказать что-то новое или интересное.
Если бы это было так, то книга получилась бы очень короткой. Но мы все еще обсуждаем Java именно потому, что одной из самых сильных сторон языка стала его способность развиваться на основе немногих проектировочных решений, которые оказались очень успешными на рынке:
• Автоматическое управление средой выполнения (например, сборка мусора или JIT-компиляция).
• Простой синтаксис и относительно небольшое количество элементов в базовом языке.
• Консервативный подход к развитию языка.
• Дополнительная функциональность и сложность выделены в библиотеки.
• Широкая, открытая экосистема.
Благодаря этим решениям в мире Java продолжают происходить инновации: простое ядро языка способствует низкому порогу входа в сообщество разработчиков, а широкая экосистема позволяет новичкам легко найти готовые компоненты под свои потребности. В результате платформа и язык Java остаются сильными и энергичными — даже при том, что по исторической тенденции язык не склонен к быстрым переменам. Немало разработчиков остаются приверженцами Java именно потому, что в этом языке устойчивость сочетается с эволюционными изменениями.
Книга рассчитана прежде всего на то, чтобы ее читали от начала до конца. Однако мы понимаем, что некоторым читателям хочется сразу перейти к определенным темам, поэтому мы постарались предусмотреть и такой стиль чтения.
Мы верим в силу обучения на практике и поэтому рекомендуем вам опробовать примеры кода, которые встречаются по ходу изложения материала. Оставшаяся часть этого раздела посвящена тому, как пользоваться книгой, если вы предпочитаете читать ее по отдельным главам.
Книга разделена на пять частей:
• Часть I «От 8 к 11 и дальше» (главы 1–3) состоит из трех глав, в которых рассматриваются новейшие версии Java. По умолчанию в книге используется синтаксис и семантика Java 11, а когда в особых случаях встречается более поздний синтаксис, это оговаривается отдельно.
• Часть II «Что там внутри?» (главы 4–7) дает возможность заглянуть «под капот» Java. Пословица гласит, что прежде чем нарушать правила, стоит их хотя бы узнать. В этих главах показано, как сначала овладеть правилами языка программирования Java, а затем нарушать их.
• Часть III «Другие языки на JVM» (главы 8–10) посвящена многоязычному программированию на JVM. Главу 8 можно считать обязательной, потому что она готовит почву для дальнейшего материала, рассматривая классификацию и использование альтернативных языков.
• В следующих двух главах рассматривается похожий на Java язык с объектно-ориентированной и функциональной парадигмой (Kotlin) и полноценный функциональный язык (Clojure). Эти главы можно читать независимо друг от друга, хотя, если у вас мало опыта в функциональном программировании, то лучше осваивать их по порядку.
• Часть IV «Сборка и развертывание» (главы 11–14) описывает процессы сборки, развертывания и тестирования в том виде, в каком они применяются в современных проектах. Предполагается, что у читателей есть хотя бы минимальное представление о модульном тестировании, например в той форме, которая реализована в JUnit.
• Часть V «Передовые рубежи Java» (главы 15–18) развивает темы, представленные ранее, и углубляется в мир функционального программирования, конкурентного выполнения и внутреннего устройства платформы. И хотя главы можно читать по отдельности, в некоторых разделах мы предполагаем, что вы уже прочли предыдущие главы или другим образом познакомились с теми или иными темами.
Эта книга прежде всего ориентируется на Java-разработчиков, которые хотят обновить свои представления о языке и платформе. Если вам хотелось бы синхронизировать свои знания с современной версией Java, то эта книга для вас.
Если вы стремитесь повысить свою квалификацию и лучше разобраться в таких темах, как функциональное программирование, конкурентность и продвинутое тестирование, книга даст начальные сведения по этим вопросам. Также она предназначена для разработчиков, которые интересуются, что полезного можно почерпнуть из других языков и как расширение кругозора помогает программировать эффективнее.
Для начала вам нужно будет загрузить и установить Java 17 (или 11). Просто следуйте инструкциям по загрузке и установке двоичного дистрибутива для вашей ОС. И дистрибутивы, и инструкции можно найти на сайте вашего привычного поставщика Java или на сайте проекта Adoptium, который не привязан к конкретному поставщику и управляется Eclipse Foundation (https:// adoptium.net/).
Java 11 (и 17) работает на Mac, Windows, Linux, а также практически на всех остальных современных ОС и аппаратных платформах.
Примечание Если вас интересуют нюансы лицензирования Java и смежные вопросы, вы можете ознакомиться с подробной информацией в приложении А.
В книге много примеров исходного кода как в пронумерованных листингах, так и среди обычного текста. В обеих ситуациях исходный код выделяется моноширинным шрифтом, чтобы отличаться от обычного текста.
Во многих случаях первоначальная версия кода была переформатирована: мы добавили разрывы строк и подправили отступы, чтобы эффективнее использовать место на странице. Кроме того, в листингах обычно опущены комментарии, которые были в исходном коде, если код описывается в тексте. Многие листинги сопровождаются аннотациями, которые подчеркивают важные идеи.
Полный код примеров из книги доступен для загрузки на сайте Manning по адресу https://www.manning.com/books/the-well-grounded-java-developer-second-edition, а также на GitHub по адресу https://github.com/well-grounded-java/resources.
Впрочем, большинство читателей наверняка захотят опробовать примеры кода в IDE. Java 11/17 и последние версии Kotlin и Clojure хорошо поддерживаются новейшими версиями основных IDE:
• Eclipse IDE
• IntelliJ IDEA Community Edition (или Ultimate Edition)
• Apache NetBeans
Приобретая книгу, вы получаете бесплатный доступ к закрытому веб-форуму издательства Manning (на английском языке), на котором можно оставлять комментарии о книге, задавать технические вопросы и получать помощь от автора и других пользователей. Чтобы получить доступ к форуму, откройте страницу https://livebook.manning.com/book/the-well-grounded-java-developer-second-edition/discussion. За информацией о форумах Manning и правилах поведения на них обращайтесь по адресу https://livebook.manning.com/discussion.
В рамках своих обязательств перед читателями издательство Manning предоставляет ресурс для содержательного общения читателей и авторов. Эти обязательства не подразумевают конкретную степень участия автора, которое остается добровольным (и неоплачиваемым). Задавайте автору хорошие вопросы, чтобы он не терял интереса к происходящему! Форум и архивы обсуждений доступны на веб-сайте издательства, пока книга продолжает издаваться.
https://github.com/well-grounded-java/resources
Бен Эванс — обладатель статуса Java Champion и главный сеньор-разработчик в Red Hat. Раньше он был ведущим архитектором систем измерительного контроля в New Relic, а также одним из основателей jClarity — стартапа, который разрабатывал средства повышения производительности и был приобретен компанией Microsoft. Бен также работал старшим специалистом по архитектуре в отделе биржевых деривативов в Deutsche Bank и старшим техническим инструктором в Morgan Stanley. Он шесть лет состоял в комитете Java Community Process Executive Committee, участвуя в разработке новых стандартов Java.
Бен — автор шести книг, включая «Optimizing Java»1 и новые издания «Java in a Nutsell»2, а также технических статей, которые ежемесячно читают тысячи разработчиков. Он регулярно выступает на конференциях и проводит обучение для организаций по всему миру по таким темам, как платформа Java, системная архитектура, быстродействие и конкурентность.
Джейсон Кларк — главный инженер и архитектор в New Relic, где он работал над множеством проектов: от библиотек измерительного контроля Ruby до платформ координации контейнеров. Ранее он был архитектором в WebMD, где занимался веб-службами на базе .NET.
Джейсон регулярно выступает на конференциях и участвует в проекте с открытым кодом Shoes, который направлен на то, чтобы начинающим программистам было проще и интереснее осваивать программирование графических интерфейсов пользователя.
Мартин Фербург — главный менеджер по разработке ПО в инженерной группе Java компании Microsoft и один из руководителей группы London Java User Group (LJC), где он участвовал в создании AdoptOpenJDK (сейчас Eclipse Adoptium) — ведущего дистрибутива OpenJDK, который не находится под управлением Oracle. Мартин — соавтор первого издания этой книги и член многих комитетов по стандартизации Java (JCP, Jakarta EE и т.д.).
1 Эванс Б., Гоф Дж., Ньюланд К. «Java. Оптимизация программ. Практические методы повышения производительности приложений в JVM».
2 Эванс Б., Флэнаган Д. «Java. Справочник разработчика».
Иллюстрация на обложке книги называется «Продавщица букетов» и позаимствована из энциклопедии национальных костюмов Сильвена Марешаля, изданной в XIX веке во Франции.
В те времена по одежде человека было легко определить, где он живет и чем занимается. Издательство Manning приветствует изобретательность и инициативность — качества, присущие индустрии IT, — и в знак этого размещает на обложках изображения, которые отражают разнообразие народов и культур мира, запечатленное на старинных иллюстрациях.
Ваши замечания, предложения, вопросы отправляйте по адресу [email protected] (издательство «Питер», компьютерная редакция).
Мы будем рады узнать ваше мнение!
На веб-сайте издательства www.piter.com вы найдете подробную информацию о наших книгах.
Первые три главы помогут подтянуть ваши знания о Java до версии 17. Мы начнем с вводной главы, где рассматриваются некоторые концептуальные изменения в Java 11. Вы узнаете, как экосистема и цикл выпуска Java изменились по сравнению с Java 8. В частности, мы расскажем о следующих новшествах и о том, что они означают для разработчиков:
• зарезервированное имя типа var;
• фабрики коллекций;
• новый клиент HTTP с поддержкой HTTP/2;
• однофайловые программы.
После этого мы углубимся в одно из самых значительных изменений Java за многие годы — появление полноценной системы модулей. Мы расскажем, почему это радикальное изменение было необходимо. Оно тщательно проектировалось так, чтобы его можно было внедрять поэтапно. Вы не только познакомитесь с основными принципами этой системы, но и узнаете, как эффективно применять ее в своих приложениях и библиотеках.
Java 17 — продукт нового цикла выпуска — воплотила внушительный набор новых языковых средств, в числе которых:
• текстовые блоки;
• выражения switch;
• записи;
• ограниченно расширяемые («запечатанные») типы (sealed types).
К концу части I вы привыкнете органично мыслить и программировать на Java 17 и будете готовы применять новые знания на протяжении оставшейся части книги.