Перейти к содержанию

Java Advanced

Java Core Advanced

Итак, ты уже уверенно владеешь базовыми средствами языка. Без проблем решаешь базовые задачи, знаешь состав Collections Framework, понимаешь отличие HashMap от TreeMap и даже знаешь что есть стримы и есть другие стримы. Самое время нырнуть в Core ещё глубже.

Книги

Рауль Урма, Марио Фуско, Алан Майкрофт. «Современный язык Java»

Выход Java 8 изменил экосистему Java навсегда. Stream API, default методы, лямбды — без этих вещей невозможно представить современную Java-разработку. В этой книге подробно описаны все киллер фичи Java 8. Некоторые моменты, вроде конкурентности могут быть непонятными, но обязательно вернись к ним позже.

Обрати внимание, в русском переводе есть проблема с перепутанными примерами кода в первых главах.

Брайан Гетц. «Java Concurrency на практике»

Современный web — это высокие нагрузки, тысячи клиентов, и терабайты данных. Чтобы твоё приложение могло утилизировать ресурсы сервера по максимуму, ты должен стать джедаем конкурентного/параллельного программирования. Эта книга must-read абсолютно для всех java-разработчиков. Несмотря на то, что она написана для Java 5, все её советы актуальны и по сей день. Может читаться тяжело, но прочитать её ты обязан.

Адитья Бхаргава. «Грокаем алогритмы»

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

(Опционально) Роберт Лафоре. «Структуры данных и алгоритмы Java»

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

(Опционально) Николай Палрог. «Система модулей Java»

Одной из ключевых фишек Java 9, стала новая система модулей, которая позволяет получить абстракцию над привычными пакетами и получить более сильную инкапсуляцию классов. Её весьма неохотно используют (в основном из-за лени и легаси), но умение готовить модули будет приятным бонусом к твоим навыкам и пригодится, если вдруг захочешь пройти официальную сертификацию Oracle.

(Опционально) Кен Коузен. «Современный Java. Рецепты программирования»

Практически всё тоже, что в книге Урмы, только как сборник кратких рецептов: как использовать коллекторы, компараторы, потоки и прочие «новинки» Java 8. Всё это с небольшими понятными примерами. Книга весьма хороша как краткая выжимка или handbook.

Видео

Jakob Jenkov, Java Concurrency And Multithreading

Хорошее дополнение к книге Брайана Гетца по многопоточности. Некоторые темы пересекаются, некоторые темы затрагивают внутреннее устройство языка/JVM вроде модели памяти. Одних этих видео не хватит чтобы полностью разобраться с многопоточностью, но они отлично помогут укрепить или дополнить твоё представление об этой страшной и сложной вещи.

Паттерны

Многие проблемы, которые возникают при разработке приложений появляются из-за ошибок допущенных при проектировании. Умные люди выявили повторяющиеся из проекта в проект решения и закономерности (паттерны) и сделали их классификацию. Почему важно их знать? Паттерны описывают типичные способы решения часто встречающихся проблем при проектировании программ, что позволяет тебе не изобретать велосипед, а твоим коллегам гораздо быстрее понимать, что происходит в коде. Однако помни, что использование популярных паттернов при решении каждой задачи является скорее плохой практикой чем хорошей. Всё хорошо в меру, и с опытом ты поймешь ту тонкую грань, когда паттерны реально сделают архитектуру твоего кода лучше, а когда только навредят.

Паттернов много, хороших и разных, но зубрить их не надо. Пробегись по списку, посмотри на те которые тебя заинтересуют. На текущем этапе твоя задача оставить якорь в памяти, что такие вещи существуют.

Из ресурсов по паттернам можно выделить:

  1. Refactoring guru. Модно, молодежно, доступный язык.
  2. Design Patterns: Elements of Reusable Object-Oriented Software (GoF) — сухой академический оригинал, сможешь осилить — хорошо, не сможешь — используй другие источники.

Упражнения

Подойдут всё те же сайты которые были на прошлом этапе, но уже с более высокой сложностью. Старайся решать задачи с использованием «современных» функциональных фишек Java: Stream API и лямбды.

Подведение итогов Advanced Core

Помнишь те карточки которые ты поленился сделать на прошлом этапе? Самое время добавить новые:

  1. Потоки ввода-вывода в Java
  2. Сериализация
  3. Многопоточность
  4. Шаблоны проектирования

Последнее обновление: August 9, 2023
Дата создания: August 9, 2023