Этой весной мы выложили на канале Технострим запись курса по Java. Уже несколько семестров подряд он читается в рамках образовательного проекта Техносфера, реализуемого компанией Mail.Ru Group совместно с МГУ им. М. В. Ломоносова. Курс включает все темы, необходимые начинающему разработчику в мире Java. Авторы не углубляются в детали синтаксиса, а сразу берутся за практические задачи: разработку игры с консольным интерфейсом и функционального чата. В конце курса разбираются частые вопросы из собеседований на позиции junior и middle Java-developer.
Записи лекций и материалы курса бесплатны и доступны всем желающим.
Большинство домашних заданий можно выполнить и проверить в репозитории курса.
Для кого
Предполагается, что слушатели не сталкивались с Java, но знакомы с любым современным языком программирования (JS/Python/C#/C/C++) и основами ООП.
Длительность
Курс состоит из 3 частей, включает 13 лекций и 1 хакатон. Продолжительность лекций — 1-2 часа.
Содержание курса
Часть 1. Введение в разработку на Java
Лекция 1. Java intro 1
На первой лекции вы бегло познакомитесь с синтаксисом языка и разберётесь с HelloWorld. Курс построен вокруг Github, поэтому на первом же занятии вы научитесь работать с Git, собирать проект с помощью gradle и делать pull request на Github.
Лекция 2. Java intro 2
Знакомство с объектной моделью языка.
Лекция 3. Generics & collections
Знакомство с коллекциями и исключениями.
ДЗ
По итогу трех лекций вы получите задание: разработать небольшую игру с консольным интерфейсом (bulls and cows). Тем, кто проходит курс на Youtube, авторы советуют обязательно выполнить это задание, чтобы разобраться с материалом на практике. Делать руками — это не видео на Youtube смотреть ;)
Часть 2. Web-сервисы
Java — промышленный язык, который доминирует в сфере больших веб-приложений. Во второй части вы научитесь делать web-сервисы.
Лекция 4. Web basics
Вы изучите работу HTTP и узнаете, как делать HTTP-запросы из Curl и Java.
Лекция 5. Spring, Threads, Annotations
Знакомство с популярным фреймворком Spring, который упрощает разработку веб-приложений.
Чтобы студенты попрактиковались в работе со Spring, после пятой лекции пройдёт командный хакатон. За ограниченное время нужно разработать чат и сделать его как можно более функциональным. Если будете смотреть курс на Youtube, можете самостоятельно сделать чат и поэкспериментировать с ним.
Лекции 6-7. Java + DB, Hibernate
Вы научитесь работать с базами данных. В очном курсе мы подняли базы данных для студентов на AWS. Тем, кто проходит курс онлайн, мы рекомендуем поднять базы локально или использовать in-memory базы данных (H2).
Часть 3. Игра
Вы получите задание по разработке клиент-серверной игры Bomberman. Клиент игры на JS, созданный на основе проекта Мэта Скалы, лежит в отдельном репозитории.
Формальное описание взаимодействия сервисов игры можно найти здесь, а вот наглядная схема.
Лекция 8. Full-duplex протокол WebSocket
Для общения клиента и сервера многопользовательской игры гораздо лучше, чем HTTP, подходит full-duplex протокол WebSocket. Вы научитесь работать с ним и переделаете на WebSocket свой чат, написанный ранее на основе HTTP. К сожалению, на Youtube нет видео этой лекции, но все материалы доступны на Github.
Лекция 9. Game architecture
Вы разберётесь в структуре игры и механизме взаимодействия сервисов.
Часть 4. Продвинутые темы
В этой части мы разбираем две темы, которые традиционно считаются продвинутыми, однако базовые знания по этим темам должен иметь любой Java-разработчик.
Лекции 10-11. Game threads, Practical concurrency
В лекции 10 на примерах рассматриваются опасности многопоточной разработки, а в лекции 11 — способы их обхода. Обратите внимание на поточную модель игрового сервиса.
Лекция 12. Garbage collection
Вы узнаете, как устроен heap и как работает сборка мусора. При этом для оценки лейаута объектов используются знания об устройстве структур данных.
Лекция 13. Interview questions
Последняя лекция курса посвящена разбору самых популярных вопросов на собеседованиях по Java (junior-middle разработчик).
Общая информация о курсе
Все материалы курса: https://github.com/rybalkinsd/atom
Клиент игры Bomberman: https://github.com/rybalkinsd/atom-bomberman-frontend
Канал курса в Telegram — здесь можно получить ответы на все вопросы, связанные с курсом.
Обратите внимание, что в конце некоторых лекций есть описание домашнего задания, а в коде лекций есть тесты. Сделайте pull request в ветку лекции. Если тесты на travis горят зеленым — вы выполнили задание верно.
ДЗ студентов, проходящих курс онлайн, не проверяются. Тем не менее, вы можете свободно делать pull request’ы в проект и смотреть, успешно ли проходятся тесты на travis. Кроме того, любые вопросы по курсу вы можете задать в чате. Авторы очень ценят обратную связь, особенно в виде pull request’ов с предложениями и исправлениями.
Авторы
Александр Помосов, Senior Engineer в Alibaba
Сергей Рыбалкин, Principal Engineer в Alibaba
Напомним: курс доступен всем желающим на нашем образовательном канале Технострим. Пообщаться с другими участниками и задать вопросы преподавателям можно в комментариях под плейлистом курса и в чате в Telegram.
Программирование — это инженерия, гораздо более открытая к экспериментам, чем другие области инженерии. Сделайте свой проект, поэкспериментируйте с ним, и вы получите не только опыт, но и много удовольствия!