Java Core
Java Core — это основа понимания языка и его возможностях, работающих «из коробки». Так как это фундамент, подойти к его формированию стоит очень ответственно, чтобы не страдать позже и не пытаться изобрести велосипед. Не стоит пытаться экономить время, хитрить и пропускать «неинтересные» куски.
Поверь, уверенная база тебе воздастся в будущем, ибо на собеседованиях гоняют в основном по Core.
Курсы¶
Помни, что ни один из курсов не дает полную базу. Используй их как дополнение к книгам.
Туториалы от Oracle¶
Oracle является разработчиком языка и предоставляет собственные обучающие материалы довольно неплохого качества. Ещё и бесплатно. Из минусов: рассматривается java 8, некоторые темы рассмотрены очень сжато.
Но всё равно обязательно загляни, там много интересного.
к содержанию ↑JavaRush¶
В странах СНГ и Украине весьма популярен великий и ужасный JavaRush. Интернет пестрит историями успеха, как простой слесарь Григорий стал успешным и теперь зарабатывает 300кк/наносек. Тысячи практических задач! Сотни тысяч пользователей! За какие-то смешные деньги ты сможешь полностью изменить свою жизнь!
Так вот, ни в коем случае на это не ведись. JavaRush очень сильно страдает отрывочной подачей теории, из-за чего люди застревают даже на простых задачках. Задумайся, при создании технической книги она проходит множество стадий вычитки и рецензирования.
На JavaRush таким, понятное дело, никто не занимается. Не трать зря время, деньги и нервы, и представь, что такого сайта просто не существует. Даже если ты знаешь человека, который знает человека, который сказал, что там всё круто.
Stepik¶
Агрегатор курсов от различных авторов разной степени качества. Начать можно с Java. Базовый курс.
HyperSkill (JetBrains Academy)¶
Совместный проект Stepik и JetBrains. Содержит треки (курсы) по разным языкам: Python, Java, Kotlin, JS.
Обучение ведется в разрезе мини-проектов: выбираете проект определенной сложности (от консольных крестиков-ноликов до интеграций со Spotify и веб-приложений), который разбивается на несколько стадий. По каждой стадии дается набор теории, по теории проходятся мелкие задачки. Кто-то скажет, что весьма смахивает на JavaRush, но отличие в качестве материала.
Часть берется со Stepik, часть создают сами с модерированием и предварительной бетой.
Тем у них ОЧЕНЬ много, от Java Core до математики и алгоритмов. Core описан очень хорошо, остальные похрамывают.
Материал полностью на «русском английском», так что читать его несложно, но иногда непонятно, что пытался сказать автор. Платный, с триальным доступом.
Из минусов: очень задумчивый интерфейс, некоторые проекты крайне скудны на описание, некоторые тесты приходится «хакать» из-за непонятной логики проверки. В остальном — идеальный вариант для механического прорешивания простых задачек.
YouTube¶
Тысячи индусов и сочувствующих готовы прийти на помощь. Заманивают бесплатностью и объемом материалов, но помни что за актуальность и адекватность материала отвечает только сам автор. Начни с бесплатного курса Тагира Валеева, весна 2020.
Туть. Есть более свежая версия курса, вышедшая в 2022 году. Каких-то сильных отличий нет, можешь смотреть любой вариант.
Тагир — широко известный во всем мире джавист, работает в JetBrains, является Java чемпионом (да, это реальное звание). В курсе погружается довольно углубленно внутрь устройства языка, может тяжеловато заходить, поэтому параллельно можешь шлифовать другими материалами.
к содержанию ↑Udemy¶
Обрати внимание на курс от Tim Buchalka, вот здесь. Он очень хорошо и подробно разжевывает Java в серии небольших видео, общей длительностью около 80 часов. Даже упражнения после тем есть.
Говорит с австралийским акцентом, но есть английские субтитры, так что рекомендую. Эдакая видеоверсия Шилдта по подробности материала. На цены в 10к+ рублей не смотри, на Udemy постоянно идут распродажи со скидками в 80-90%.
Так что если видишь полный прайс, просто добавь курс в вишлист и подожди пару недель.
к содержанию ↑Книги¶
Лучше всего читать на английском, но можно и переводы. Помни, что переводы зачастую являются устаревшими и ВНЕЗАПНО труднее читаются из-за того, что одни и те же термины в разных книгах могут переводить по разному.
Герберт Шилдт, «Java. Полное руководство» и «Java. Руководство для начинающих»¶
«Полное руководство» — это увесистый том на 1.5к страниц, который с трудом помещается в руках. Бери его если у тебя есть безответная любовь к справочникам или если ты любишь максимально дотошное описание API языка. Если нет, бери «Руководство для начинающих», которое в два раза короче и наслаждайся подробным описанием языка без километровых описаний API.
Имей в виду, что в руководстве для начинающих не освещены некоторые «продвинутые» темы, так что сверься с содержанием обеих книг.
к содержанию ↑Джошуа Блох, «Java. Эффективное программировани延
Книга которую обязательно стоит прочитать после Хорстманна или Шилдта, и регулярно перечитывать. Блох — один из создателей языка, в своей книге он описал best practice: правильное написание equals и hashCode, как правильно готовить generics, почему лямбды это хорошо и многое другое. Написано доступно, читается легко.
(Опционально) Кей Хорстманн, «Java. Библиотека профессионала, том 1. Основы»¶
Хорстманн пишет более сухо и сжато чем Шилдт, некоторые моменты описаны на «низком» уровне (объяснения того, как язык устроен внутри). Пестрит вставками со сравнениями с С++. Твой выбор, если уже есть/был опыт других языков и нет потребности в разжевывании материала.
Во втором томе описываются продвинутые темы вроде разбора XML, интернационализации и веб-служб. Глянь содержание и имей в виду, что там есть.
к содержанию ↑(Опционально) Кэти Сьерра и Берт Бейтс, «Изучаем Java (Head First Java)»¶
Если ты начал читать Шилдта и всё равно чувствуешь, что ничего не понимаешь, попробуй эту книгу. Написано максимально простым языком, много картинок. После её прочтения в голове должна сложиться простая мозаика, что позволит вернуться к более «взрослым» книгам.
Упражнения¶
Теория — это замечательно, но нужно постоянно писать код. Лучшие места для этого:
- Задачки и проекты HyperSkill. Много хороших и разных, но платно;
- CodeWars. Ориентируйся на уровень сложности 8-7kyu;
- CodingBat. Элементарные задачки на уровне первого курса университета;
- HackerRank. Выбираешь Java, выбираешь Easy, прорешиваешь.
Что делать, если возникли вопросы?¶
Не знаешь как разбить строку на символы? Не помнишь как прочитать текст из файла? Забыл как быстро можно отсортировать массив? Со всем этим помогут следующие ресурсы:
- Javadoc. Подробное описание API языка. Хочешь сделать что-то со строкой? Загляни в Javadoc класса String. Хочешь сделать что-то с массивом? Загляни в javadoc класса Arrays. Javadoc — это первое место, куда ты должен идти при любом вопросе. Не знаешь с какого класса начать поиск? Просто вбей в поиск что-то вроде Java split word javadoc и с высокой долей вероятности первые строчки будут вести на нужный класс;
- StackOverflow. Самый популярный ресурс для копипаста кода и ответов на твои вопросы. Являются ли строки в Java иммутабельными? Что такое знак джокера? Что такое PECS? На всё это ты сможешь найти ответ благодаря сообществу StackOverflow, вбив в поиск что-то вроде Java pecs stackoverflow
- Baeldung. Сборник статей и рецептов на все случаи жизни. Что нового в Java 16? Какими способами можно сортировать List? Чем отличается ArrayList от LinkedList? Как применять Jackson? Скорее всего, про это уже есть статьи на baeldung.
- Telegram. Если твой поиск не увенчался успехом, и ты готов опустить руки, приходи к живым, русскоговорящим людям и попроси помощи. Тут не решат за тебя твои задачи, но помогут с направлением копания.