Как выучить Java с нуля: рецепты успеха от экспертов NIX

18 октября 2019

Существуют десятки мнений о том, с чего лучше начать изучение Java. Одни говорят о курсах, другие тянутся к книжной полке за бессмертным Эккелем, а третьи начинают вбивать запросы в Google. Мы решили сэкономить твое время, посовещались с нашими гуру Java-разработки, посетили десятки крутейших мировых конференций, и теперь готовы поделиться рекомендациями, как реально выучить Java с нуля, чтобы потом сразу взяли на работу. 

Правильный старт

Этап подготовки очень важен — от него будет зависеть скорость и качество твоего дальнейшего обучения. Поэтому первым делом установи JDK и одну из последних версий IDE

Остановимся немного на IDE. Рекомендуем на старте познакомиться с IntelliJ IDEA. Здесь ты найдешь встраиваемый в IDE плагин с интерактивными упражнениями, которые позволят в легкой и понятной форме изучать основы Java. Усилить плагин поможет правильно подобранная литература. После этого можно считать, что база у тебя уже есть.

В ожидании инсталляции плагина, займись поиском книг. Переходить к классике и бросаться за чтение Б. Эккеля и Дж. Блоха новичкам мы не рекомендуем. А вот «Head First Java» будет то, что нужно. Эта понятная и легкая для восприятия литература станет для вас ступенькой, с которой вам будет гораздо проще “прыгнуть” к изучению Эккеля. 

Сразу раскроем важный лайфхак — Java можно учить даже по книгам о других объектно-ориентированных языках для новичков. Поэтому заливай в свою электронную библиотеку «Java for C/C++ Developers» от Michael C. Daconta, чтобы сразу расставить все точки над “i” и понять основные отличия одной технологии от другой. 

И обязательно заведи себе отдельную заметку в телефоне (или даже целый блокнот со стильной обложкой). Сюда записывай все вопросы, возникающие по ходу чтения, которым нужно будет уделить больше внимания в будущем — и ответы на которые можно будет как самостоятельно поискать на просторах интернета, так и обсудить на специализированных форумах, Java-митапах в твоем городе или на собеседовании при поступлении на курс обучения, чтобы сразу зарекомендовать себя хорошим студентом ;).

Комбинируем теорию и практическое тестирование

Можно прочитать десятки книг, написать столько же программ или пройти все обучающие курсы Java в Харькове, а завтра выйдет новое обновление, которое ну просто вау какое крутое, и тебе придется заново его учить. А еще через день, возможно, ты сам придумаешь новую фишку и начнешь ее апгрейдить и совершенствовать. И так по кругу.

Будь готов к тому, чтобы превратить Java в стиль жизни. Выделяй определенное количество свободного времени в день (помимо основных занятий, конечно же), которое ты будешь посвящать Java. Читай все, что будет попадать в поле зрения, и обязательно записывай и бери на заметку все, что будет казаться непонятным. 

После знакомства со “вступительной” литературой, можешь приступать к изучению фундаментальных книг. Дополнительно возьми на вооружение специальные подборки материалов по Java — здесь найдется над чем подумать.

И не забывай отслеживать свой прогресс. Заведи для этого специальную систему метрик, проходи Java тесты, которые сейчас достаточно легко найти в интернете для любого уровня знаний, и смотри на полученный результат. Все вопросы, которые вызывают недопонимание, выписывай, гугли и запоминай. Не забывай возвращаться к своему старому коду, и когда спустя время он окажутся не такими уж и блистательными, можешь быть уверен — ты становишься лучше как Java-разработчик.

Как выбрать направление в Java

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

Типовая архитектура работы web-разработчика

Любой сайт и приложение имеет внешнюю (frontend) и внутреннюю (backend) составляющую. Frontend визуализирует серверную работу backend’а. 

Вы можете сразу начать двигаться в сторону web разработки, минуя Servlets/JSP (технология используется как база для современных подходов), использовать стек Spring/Hibernate. Этот стек требуется в 90% случаев. Он является альтернативой JavaEE и фактически стандартом в современном Java мире. 

Для того, чтобы расшифровать то, что ты прочел выше, нужно изучить следующие темы:

— СУБД и SQL, которые отвечают за реляционное и нереляционное хранение данных. В изучении опирайся на книгу «Head First SQL», загляни на полезные online-сервисы и почитай вводные статьи по NoSQL.

— Протокол HTTP и передача данных. Здесь базовой литературой считают книгу «Компьютерные сети» Эндрю Таненбаума. Для более глубокого понимания темы можно прочитать вводные главы любой книги Дмитрия Котерова по PHP. Языки, конечно, разные, но автор дает доступное объяснение, как взаимодействует клиент и сервер.

— JSON и XML. Здесь можно ограничиться Википедией.

— JavaScript и HTML.  Хорошим путеводителем станет статья “Лайфхак: в какой последовательности изучать JavaScript”.

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

Pet project

Теоретическое изучение Java может быть полезно только в период знакомства с языком. Продвинуться дальше можно только при условии написания собственного проекта. Писать его нужно так же постепенно, как и изучать сам язык. Лучше, если это будет происходить параллельно.

Поэтому в период первого знакомства с Java подумай над идеей проекта. Каждый раз после прохождения новой темы пробуй закреплять ее практикой в своем проекте. В качестве стартового web-сервиса может быть:

— ToDo List;

— каталог прослушанных аудиокниг;

— простой движок форума. 

Будь готов к тому, что тебе придется много раз переписывать (а иногда и начинать с нуля) свой код. Это станет показателем того, что ты прогрессируешь и совершенствуешься в своих знаниях.

При написании первого проекта запрети себе пользоваться дополнительными библиотеками и фреймворками. Для этого тебе придется познакомиться с рефлексией и базовыми паттернами. Здесь рекомендуем обратиться за помощью к GoF — книге по шаблонам. 

Поверь, на выходе ты увидишь отвратительный код, который захочется сразу же удалить :). Но наша задача — не получить идеальный код, а выявить проблемы и решить их фреймворком. 

Ошибки, которые выйдут на свет при написании проекта, покажут твои слабые стороны. Запомни их, выпиши и приступай к изучению. Вот увидишь, после этого изучение Java станет максимально простым. 

О чем еще нужно знать

Во время обучения ты обязательно столкнешься с Java Enterprise Edition и фреймворком Spring. Java EE является спецификацией языка, с помощью которой разработчики могут описать серверную часть проекта. А вот Spring — это один из фреймворков.

Java EE изначально отвечала за стандартизацию, но со временем стало ясно, что она слишком тяжелая. Особенно в сравнении с более упрощенной альтернативой Spring, который сегодня разросся настолько, что теперь у него есть фреймворк над фреймворком – Spring Boot.

Чтобы глубже понять тонкости и отличия обеих платформ, изучи обе. «Head First Servlets and JSP» и «Программирование web-приложений на языке Java» Буди Курняван используй для знакомства с Java EE. А вот со Spring все несколько сложнее, так как он состоит из множества модулей. Мы рекомендуем начать с книги «Spring в действии» Крейга Уоллса и особое внимание уделить Core, MVC и Web-MVC и Security.

Что дальше?

Обычно после прочтения нескольких книг и небольшой практики, возникает потребность углубиться в материал. И вот на этом этапе можно смело подавать заявку на бесплатный курс обучения Java от NIX. Дальнейшее самостоятельное изучение огромного разнообразия тем и направлений Java может привести тебя в замешательство. 

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

А когда ты услышишь от хейтеров, что Java устарел, и нужно выбирать что-то более модное, напомни им о Google, Netflix, Airbnb и Uber, использующих Java в своих продуктах. Это лучшее доказательство того, что Java живее всех живых и что это все еще самый популярный язык в мире, продолжающий активно развиваться.