Несколько дней новогоднего волшебства:
Успейте начать обучение в 2018-ом году со скидкой до 30%!
Выбрать курс

Разработчик Java

Курс о языке Java, особенностях платформы, стандартной библиотеке, о проектировании и тестировании, о том, как работать с базами, файлами, веб-фронтендом и другими приложениями.
Зачем нужно тестирование?

Длительность

6 месяцев

Начало

26 декабря

Занятия

Ср 20:00, Чт 20:00

Общая стоимость

60 000 ₽ 42 000 ₽

В месяц

12 000 ₽ 9720₽

В кредит:

12000 ₽ в месяц

Хочу дешевле
Общая стоимость
60 000 ₽ 42 000 ₽
В месяц: 12 000 ₽ 9720 ₽
В кредит: 12000 ₽
в месяц
Продолжительность
6 месяцев, 4 часа в неделю
Ср 20:00, Чт 20:00
Начало занятий
26 декабря
Что даст вам этот курс


  • Освоение разработки серверных приложений на Java.

  • Понимание библиотеки Java, особенностей языка и платформы Java.

  • Знание основных подходов программиста к проектированию приложений, работе с базами, файлами, веб-фронтендом.

  • Владение низкоуровневыми и высокоуровневыми подходами к созданию многопоточных и многопроцессных приложений.


31 работодатель

большое количество практических заданий

Всё о курсе «Разработчик Java», 24 декабря в 20:00
День Открытых Дверей — отличная возможность узнать подробнее о программе курса, особенностях онлайн-формата, навыках, компетенциях и перспективах, которые ждут выпускников после обучения. Формат проведения: онлайн-трансляция; участие свободное!
Ведет
Виталий
Чибриков
Предыдущий день открытых дверей
"Написание хорошего кода — базовое умение грамотного разработчика. Но настоящего профессионала отличает желание узнавать новое, доводить решения до совершенства и делиться приобретенными знаниями с коллегами".
Виталий Чибриков
Преподаватель курса
"Написание хорошего кода — базовое умение грамотного разработчика. Но настоящего профессионала отличает желание узнавать новое, доводить решения до совершенства и делиться приобретенными знаниями с коллегами".
Виталий Чибриков
Преподаватель курса
Преподаватели
Виталий Чибриков
Генеральный директор «OTUS. Онлайн-образование»
Сергей Петрелевич
Java-разработчик в Технологическом центре Deutche Bank
Владимир Сонькин
Luxoft Training Center
Егор Шубин
Rovio Entertainment Corporation
Антон Ильинчик
Software Engineer в Zalando (Germany)
Выпускник МФТИ 2004-го года по специальности «Инженер-математик». Профессиональный опыт: 12 лет программирования на Java, C++, C#, JavaScript, PHP, Python. Участник проектов различных уровней сложности: от стартапов на 3 человека/полгода до бизнес-приложений на 200 человек/4 года. 8 лет разработки серверов для клиентских игр на Java. Эксперт в разработке облачных приложений, автоматизации процессов разработки и тестирования.

Разрабатывал и запускал проекты MMORMGs: «Allods Online» и «Skyforge».
В отрасли с 2003 года. Программировать начал со времен ZX-Spectrum. 8 лет в разработке банковских процессинговых систем пластиковых карт.

Занимался разработкой "коробочных" систем для внешних заказчиков, разработкой систем для внутренних заказчиков. В 2003 году с отличием закончил Магнитогорский Государственный Интститут им. Носова, специальность — промышленная электроника.

Компании: Магнитогорский Металлургический Комбинат, Компас+, Borlas, СМП Банк. Интересы: JavaScript, многопоточное программирование, сборщики мусора в Java.
Эксперт по направлению Java и Web и тренер в Учебном Центре Люксофт. Более 4 лет разрабатывает и ведет курсы по Java и Web-технологиям. До этого более 7 лет работал программистом в Люксофт, разрабатывал системы для крупнейшего швейцарского банка UBS, авиастроительной компании Boeing, сельскохозяйственной компании Bunge и других крупных заказчиков. С технологиями Java Enterprise и JavaScript профессионально работает с 2000 года.
В 2000 году закончил ВМК МГУ, кафедру алгоритмических языков, занимался искусственным интеллектом и нейронными сетями.
Server Developer в Rovio Entertainment Corporation.

Профессиональный опыт: более 9 лет программирования на Java, Python, C#, C++.

Разрабатывал и запускал MMORPG «Skyforge». Соавтор и преподаватель курса «Углубленное программирование на Java» в Технопарке Mail.Ru Group.

Выпускник МГТУ им. Баумана 2011 года по специальности “Инженер-программист”.

Интересуется разработкой видеоигр и серверными технологиями.
Специализируется на разработке высоконагруженных распределённых систем на Java.

За более чем 10 лет работы в индустрии получил опыт разработки информационных систем в таких отраслях, как здравоохранение, туризм, телеком, поучаствовал в проектах для государственных организаций и органов власти.

Сейчас работает над крупнейшим в Европе e-commerce проектом "Online Fashion Platform" (17 стран, более 23 миллионов активных пользователей).
Преподаватели
Виталий Чибриков
Генеральный директор «OTUS. Онлайн-образование»
Выпускник МФТИ 2004-го года по специальности «Инженер-математик». Профессиональный опыт: 12 лет программирования на Java, C++, C#, JavaScript, PHP, Python. Участник проектов различных уровней сложности: от стартапов на 3 человека/полгода до бизнес-приложений на 200 человек/4 года. 8 лет разработки серверов для клиентских игр на Java. Эксперт в разработке облачных приложений, автоматизации процессов разработки и тестирования.

Разрабатывал и запускал проекты MMORMGs: «Allods Online» и «Skyforge».
Сергей Петрелевич
Java-разработчик в Технологическом центре Deutche Bank
В отрасли с 2003 года. Программировать начал со времен ZX-Spectrum. 8 лет в разработке банковских процессинговых систем пластиковых карт.

Занимался разработкой "коробочных" систем для внешних заказчиков, разработкой систем для внутренних заказчиков. В 2003 году с отличием закончил Магнитогорский Государственный Интститут им. Носова, специальность — промышленная электроника.

Компании: Магнитогорский Металлургический Комбинат, Компас+, Borlas, СМП Банк. Интересы: JavaScript, многопоточное программирование, сборщики мусора в Java.
Владимир Сонькин
Luxoft Training Center
Эксперт по направлению Java и Web и тренер в Учебном Центре Люксофт. Более 4 лет разрабатывает и ведет курсы по Java и Web-технологиям. До этого более 7 лет работал программистом в Люксофт, разрабатывал системы для крупнейшего швейцарского банка UBS, авиастроительной компании Boeing, сельскохозяйственной компании Bunge и других крупных заказчиков. С технологиями Java Enterprise и JavaScript профессионально работает с 2000 года.
В 2000 году закончил ВМК МГУ, кафедру алгоритмических языков, занимался искусственным интеллектом и нейронными сетями.
Егор Шубин
Rovio Entertainment Corporation
Server Developer в Rovio Entertainment Corporation.

Профессиональный опыт: более 9 лет программирования на Java, Python, C#, C++.

Разрабатывал и запускал MMORPG «Skyforge». Соавтор и преподаватель курса «Углубленное программирование на Java» в Технопарке Mail.Ru Group.

Выпускник МГТУ им. Баумана 2011 года по специальности “Инженер-программист”.

Интересуется разработкой видеоигр и серверными технологиями.
Антон Ильинчик
Software Engineer в Zalando (Germany)
Специализируется на разработке высоконагруженных распределённых систем на Java.

За более чем 10 лет работы в индустрии получил опыт разработки информационных систем в таких отраслях, как здравоохранение, туризм, телеком, поучаствовал в проектах для государственных организаций и органов власти.

Сейчас работает над крупнейшим в Европе e-commerce проектом "Online Fashion Platform" (17 стран, более 23 миллионов активных пользователей).
Отзывы
10
Сергей
Торчиков
Для меня принять решение об обучении на курсе по языку Java было довольно просто, достаточно было посмотреть на преподавателя и структуру курса, также огромным плюсом было увидеть в партнерах Otus.ru компанию, в которой я хотел работать. Очень важно, что перед началом курса проводиться День открытых дверей, где можно лично задать вопросы по курсу и более подробно ознакомиться с программой. Я бы хотел по порядку разобрать основные составляющие курса.

Программа.

Изначально конечно в голову закрались сомнения, а есть ли смысл слушать лекции по программированию, которые затрагивают самые азы (типы данных, например), но как говориться повторение – мать учения, решил слушать, и не пожалел. Разбирали действительно все детально и домашние задания очень интересны, одно задание по замеру работы разных сборщиков мусора чего стоит. Приятно, что в программу включены Hibernate и Spring, хоть и основы, но этого действительно достаточно, чтобы понимать в какую сторону копать в случае чего. Достаточно было и сносок на дополнительный материал расширяющий тему урока.

Преподаватель.

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

Команда OTUS

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

Минусы.

Те минусы, которые я могу отметь, насколько мне известно, уже исправлены. Например, платформа. Первые лекции были довольно не стабильны, но команда Otus.ru довольно быстро нашла аналог, который устроил всех. Все программисты относились к этому с пониманием, т.к. мы были первым набором, так сказать первопроходцами

Второй минус даже вовсе и не минус, а скорее неудобство – один преподаватель. Будущим группам повезло, у них, насколько я знаю, будет два преподавателя. В основном это относиться к проверке домашнего задания, на проверку уделялось 48 часов и, если есть замечания к решению, есть шанс не сдать в срок, т.к. исправленную версию вновь отправляешь на проверку. Хотя к этому относились также лояльно и никто не ругался, тут скорее проблема в моем перфекционизме, нужно все сдать в срок

Результат.

Через несколько дней я выхожу на работу в Москве именно в ту компанию, где хотел работать. Все интервью организовывали сотрудники Otus, так что результатом я конечно доволен На собеседованиях кстати пригодились те самые знания о сборщиках мусора, о которых я говорил ранее. Так что хотелось бы поблагодарить еще раз всю команду Otus.ru за профессионализм и работу, а также всех ребят с курса за интересные обсуждения и за то, что делились своими знаниями. Я продолжу следить за курсами и если будет что-то интересное для меня, обязательно приду снова!
Читать целиком
Николай
Добровольский
На курс записался в большей степени потому, что преподавателем был объявлен Виталий Чибриков. Знал преподавателя по другим курсам, плюс ранее прослушаны записи лекций в МГТУ им. Баумана в рамках проекта ТЕХНОПАРК (Москва). Поэтому сразу решил записаться в группу.

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

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

Курс помог не только систематизировать уже имеющиеся знания, а также приобрести новые. Особенно понравились темы про GC, JVM, многопоточность в Java, межпроцессное взаимодействие в Java.
После окончания курса гарантированы приглашения на собеседования, так что это огромный плюс)
На мой взгляд было бы здорово в рамках курса более подробно рассмотреть Spring, но основным направлением курса изначально было заявлено Java Core, поэтому за этой темой возможно стоит записываться на курс по Java EE.
Читать целиком
Антон
Матвеев
Курс OTUS "Разработчик Java" был очень полезен для меня, не имевшего ранее опыта коммерческой Java-разработки. Именно он помог собрать воедино знания, полученные посредством самообучения и других курсов. В отличие от других курсов был упор на формирование понимания процесса: как работает та или иная технология и какие задачи решает, а не на общее описание ее возможностей. Домашние задания подобраны таким образом, что заставляют проявить творчество и перечитать немало полезной информации. Особенно интересными были задания: написать json сериализатор, упрощенный тестовый фреймворк, свою маленькую orm, сервер обмена сообщения между бд и фронтэндами. Хотя домашние задания, может быть за исключением первых, совсем не укладывались в заявленное время на домашнюю работу по 4 часа в неделю - для того чтобы успеть сделать последние 2 задания в курсе мне пришлось брать отпуск.

Конечно основную ценность курс представляет из-за преподавателя. Очень качественное объяснение: не помню, чтобы хоть какой-то заданный по теме вопрос остался без ответа, также очень приятно и полезно было получать от Виталия не только информацию о недоработках в ДЗ, но и предложения об их возможной доработке уже за рамками задания.

Ну и, конечно, очень важна возможность пройти собеседования в крупные компании. Каждое такое собеседование это очень интересный опыт сам по себе, независимо от результата. Лично я нашел себе работу и очень рад что не пожалел денег на обучение!
Читать целиком
Алексей
Маянов
До поступления на курс я программировал на Java от случаю к случаю. Для меня курс во многом стал отправной точкой в систематизации и расширении собственных, уже имеющихся знаний. С абсолютной уверенностью могу сказать: после окончания обучения мои навыки использования Java перешли на новый уровень, в первую очередь этим я благодарен авторам курса.

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

По моим ощущениям, проектный месяц получился достаточно скомканным: не удалось получить достаточной обратной связи по проекту. Думаю причина заключается в том, что у многих учеников скопились долги, и весь преподавательский ресурс ушёл на их проверку. Я считаю, что на последнем месяце преподавателям стоит отдавать приоритет работе с проектами, иначе получается, что ученики, которые сдали все задания вовремя и перешли к работе с проектами, стали заложниками долгов остальных учеников.

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

Как недостаток (или особенность) хотел бы отметить то, что чувствовалась изолированность от группы. При выполнении заданий казалось, что ты один на один с преподавателем (чат в slack не очень спасал в этом плане). Мне кажется, что общение между студентами через code review дало бы хороший эффект. Сначала преподаватель проверяет задание, принимает его, а потом студент должен еще посмотреть, выдать комментарии/замечания по двум-трем выполненным и принятым работам.
Также Виталий упоминал, что хорошо бы делать "выставку интересных работ" - тоже, думаю, что стоит, но не понятно в каком формате, т.к. набираются долги за всё время курса и некоторые задания сдаются в конце.

Хорошо было бы добавить блок теоретических вопросов по каждой теме (но об этом Виталий тоже уже говорил). Работу над проектом начинать в середине курса (месяца с третьего), а не в конце.

О преподавателе хочется отметить - грамотная речь. Вроде незначительно и само собой разумеется, но в русскоязычном Java-мире есть технически грамотные личности, выступления которых порой невозможно слушать из-за обилия паразитических слов. А вебинары OTUS я мог спокойно смотреть, находясь с ребенком в одной комнате, и не боясь, что Виталий выругается или скажет какое-нибудь "крепкое" слово.
Читать целиком
Михаил
Пыльцин
Здравствуйте. Я уже много раз благодарил за курсы, но хочу это сделать еще раз - многие курсы, что сейчас есть в рунете, довольно поверхностны и дают только основы. Ваши курсы как раз дают более глубокие знания по программированию. Сам курс очень интересен, но мне не хватило домашних заданий - нет, сами задания интересны и их довольно много, особенно последнее, но, к сожалению, они не охватывают весь материал. Виталий - высококлассный специалист и преподаватель, думаю, ради него многие и записались на курсы. Честно, устроенные собеседования, хоть и были объявлены, стали сюрпризом, так как не верилось, что такое возможно. Часть собеседований и выполнение тестового задания сорвалось по личным обстоятельствам. Сейчас прохожу несколько финальных собеседований - есть маленький шанс получить первую работу в Москве в сфере программирования. Хотелось бы более углубленные темы по Spring/Spring MVC/Spring Boot/Hibernate/Сокеты/Обмен данных по сети или интернету/более больше данных по ConcurrentCollection. А так - буду советовать Ваши курсы. Очень хочется отдельный курс по тем темам, что написал выше + Java ee (в части, которая наиболее востребована сейчас работодателями).
Читать целиком
Daniil
Klipov
У меня курс оставил только положительные впечатления, он позволил структурировать и углубить знания, почерпнутые из различных статей и пособий для начинающих, а так же задать направление дальнейшего развития. Из положительных сторон хочется отметить, достаточно сложные домашние задания, интересную подачу и качество подбора материала преподавателями. К отличительным особенностям курса можно отнести наличие входного порога и высокую интенсивность занятий. Могу порекомендовать его тем, кто уже овладел основами языка, но не знает в каком направлении продолжать движение.
Читать целиком
Сергей
Новожилов
Давно искал подобный курс, рассчитанный не на новичков. Было очень интересно и полезно. Особенно хочу отметить преподавателей. Не каждый, кто даже очень хорошо знает предмет может доступно рассказать и объяснить. У Виталия и Дмитрия это хорошо получается. Еще большой плюс - это разбор домашних заданий преподавателем, очень полезно получить комментарии, рекомендации. Вообщем, 5 баллов из 5.
Читать целиком
Вадим
Бубликов
Проходил курс в Отус. По качеству норм. По формату удобно, что были записи лекций и можно было смотреть в оффлайн, это выручало. Нужна предварительная подготовка, как они и пишут. Учеба довольно напряжённая, много домашних заданий.
Читать целиком
Ольга
Штыка
В целом курс очень понравился. Нетривиальные домашние задания, понятные и доступные лекции преподавателей. Сами темы занятий актуальные, порой не задумываешься о их значении в текущей разработке, но при обсуждении становится понятна степень необходимости их понимания. Домашние задания проверяют относительно быстро, я сдавала на проверку в выходные и в течение недели их проверяли с подробными комментариями. Единственный минус - это щекотливая ситуация с оплатой. Я платила отдельно за каждый месяц. Все домашние сдала вовремя. На проект, сразу понимала, что физически не хватает времени, поэтому отказалась от его выполнения. И получается, что оплата последнего месяца (в котором нет домашек) предполагает лишь выдачу сертификата. 10000 за сертификат? Не комильфо.
Читать целиком
Минимальные знания
  • Опыт разработки на Java от одного года или опыт разработки на другом языке от 3 лет (приветствуются любые языки ООП).
  • Знание основных структур данных и алгоритмов, принципов ООП, опыт работы с базами данных и понимание основ веб-разработки облегчат прохождение курса для программиста, но не являются обязательными.
Подготовительный курс
Формат: видео лекции (4 модуля по 3 видеолекции каждый).
Прохождение подготовительного курса даст:
- необходимые базовые знания для курса «Разработчик Java»;
- возможность поступить на курс «Разработчик Java» без вступительного тестирования;
- скидку на приобретение курса «Разработчик Java», равную стоимости подготовительного курса;
- приглашение в slack-чат курса «Разработчик Java».
Записаться
Процесс обучения
Обучение проходит в формате вебинаров (онлайн). Слушателям предлагаются к выполнению домашние задания, которые позволят применить на практике полученные во время вебинаров знания. По каждому домашнему заданию преподаватель дает развернутый фидбек.
Преподаватель находится в едином коммуникационном пространстве с группой на протяжении всего курса, т. е. в процессе обучения слушатель может задавать преподавателю уточняющие вопросы по материалам лекций и домашних заданий.
Программа обучения
Модуль 1
Язык и платформа Java
Модуль 2
Проектирование
Модуль 3
Работа с окружением
Модуль 4
Многопоточность
Модуль 5
Проектная работа
Язык и платформа Java
1.1 Подготовка к курсу
Введение. Обзор и задачи курса. Настройка окружения: система контроля версий git, система контроля зависимостей maven, среда разработки Intellij IDEA. Сборка и запуск java приложений.
26 декабря, 20:00 — 21:30
Домашние задания: 1
1 ДЗ 01. Сборка и запуск проекта
Создать проект под управлением maven в Intellij IDEA.

Добавить зависимость на Google Guava/Apache Commons/библиотеку на ваш выбор.
Использовать библиотечные классы для обработки входных данных.

Задать имя проекта (project_name) в pom.xml
Собрать project_name.jar содержащий все зависимости.
Проверить, что приложение можно запустить из командной строки.

Выложить проект на github.

Создать ветку "obfuscation" изменить в ней pom.xml, так чтобы сборка содержала стадию обфускации байткода.
1.2 Байт код
Байт код. Содержание .class. Декомпиляция. Обфускация. История изменений языка Java от версии к версии. Разбор ДЗ.
9 января, 20:00 — 21:30
2.1 Углубленные основы
Углубленные основы. Загрузка классов. Виды и задачи class loader-ов. Класс Class<?>. Примитивные типы, строки, массивы. Память, которую занимают объекты.
10 января, 20:00 — 21:30
Домашние задания: 1
1 ДЗ 02. Измерение памяти
Напишите стенд для определения размера объекта.
Передавайте для измерения в стенд фабрику объектов.

Определите размер пустой строки и пустых контейнеров. Определите рост размера контейнера от количества элементов в нем.

Если вы знакомы с инструментированием, сравните результаты измерениий.
2.2 Remote debug
Hot swap. Remote debug. Сборщик мусора. Instrumentation. Разбор примеров и ДЗ.
16 января, 20:00 — 21:30
3.1 Контейнеры и алгоритмы
Generics. Контейнеры и алгоритмы. Обзор устройства и работы контейнеров из java.util. Сравнение контейнеров. Карты на основе хэш функции и на основе дерева. Разбор алгоритмов из java.util.Collections.
17 января, 20:00 — 21:30
Домашние задания: 1
1 ДЗ 03. MyArrayList
Написать свою реализацию ArrayList на основе массива.

class MyArrayList<T> implements List<T>{...}

Проверить, что на ней работают методы
addAll(Collection<? super T> c, T... elements)
static <T> void copy(List<? super T> dest, List<? extends T> src)
static <T> void sort(List<T> list, Comparator<? super T> c)

из java.util.Collections
3.2 Инструменты для преобразования контейнеров
Инструменты для преобразования контейнеров. Apache Commons. Google Guava. Разбор примеров и ДЗ.
23 января, 20:00 — 21:30
4.1 Сборщик мусора
Параметры запуска VM. Сборщик мусора. Виды сборок. Разделение памяти под разные поколения объектов. Виды сборщиков. JMX. Управление приложением из jconsole. OutOfMemory. dump памяти. Исседование thread dump и heap dump.
24 января, 20:00 — 21:30
Домашние задания: 1
1 ДЗ 04. Измерение активности GC
Написать приложение, которое следит за сборками мусора и пишет в лог количество сборок каждого типа (young, old) и время которое ушло на сборки в минуту.
Добиться OutOfMemory в этом приложении через медленное подтекание по памяти (например добавлять элементы в List и удалять только половину).
Настроить приложение (можно добавлять Thread.sleep(...)) так чтобы оно падало с OOM примерно через 5 минут после начала работы.
Собрать статистику (количество сборок, время на сборрки) по разным типам GC.
Сделать выводы.
4.2 QA и тестирование
QA, тестирование. Виды тестов. "Заглушки". Testing frameworks: junit, mockito. Разбор примеров и ДЗ.
30 января, 20:00 — 21:30
5.1 Аннотации
Аннотации. Стандартные аннотации. Применение аннотаций. Типы аннотаций. Синтаксис. Создание своих аннтатаций. Reflection.
31 января, 20:00 — 21:30
Домашние задания: 1
1 ДЗ 05. Тестовый фреймворк на аннотациях
Написать свой тестовый фреймворк.
Поддержать свои аннотации @Test, @Before, @After.
Запускать вызовом статического метода с именем класса с тестами.
5.2 Java 8
Элементы функционального программирования. Streams. Lambdas. Примеры.
6 февраля, 20:00 — 21:30
6.1 Типы ссылок. Кэширование
Типы ссылок в Java. Системы кэширования. Ehcache.
7 февраля, 20:00 — 21:30
Домашние задания: 1
1 ДЗ-06: my cache engine
Напишите свой cache engine с soft references.
6.2 Логгирование
java.util.logging, log4j, slf4j. Разбор примеров и ДЗ.
13 февраля, 20:00 — 21:30
Проектирование
7.1 Концепты проектирования ООП
Понятие дизайна приложения и паттерна проектирования. Концепты проектирования ООП: delegation, aggregation, composition, association, coupling and cohesion. SOLID.
14 февраля, 20:00 — 21:30
Домашние задания: 1
1 ДЗ 06. Написать эмулятор АТМ
Написать эмулятор АТМ (банкомата).

Объект класса АТМ должен уметь
• принимать банкноты разных номиналов (на каждый номинал должна быть своя ячейка)
• выдавать запрошенную сумму минимальным количеством банкнот или ошибку если сумму нельзя выдать
• выдавать сумму остатка денежных средств
7.2 Behavioral patterns
Behavioral patterns часть 1. Разбор примеров и ДЗ.
20 февраля, 20:00 — 21:30
8.1 Structural patterns
Behavioral patterns часть 2. Structural patterns.
21 февраля, 20:00 — 21:30
Домашние задания: 1
1 ДЗ 07. ATM Department
Написать приложение ATM Department:
• Приложение может содержать несколько ATM
• Departmant может собирать сумму остатков со всех ATM
• Department может инициировать событие – восстановить состояние всех ATM до начального.
(начальные состояния у разных ATM могут быть разными)
8.2 Creational patterns
Creational patterns. Связь между паттернами, "похожие" паттерны. Антипаттерны. Разбор примеров и ДЗ.
27 февраля, 20:00 — 21:30
Работа с окружением
9.1 Сериализация
Java IO. Сериализация. Запись и чтение бинарных файлов. Работа с simple-json, javax.json и com.google.code.gson.
28 февраля, 20:00 — 21:30
Домашние задания: 1
1 ДЗ-08: JSON object writer
Напишите свой json object writer (object to JSON string) аналогичный gson на основе javax.json или simple-json и Reflection.
Поддержите массивы объектов и примитивных типов, и коллекции из стандартный библиотерки.
9.2 XML
XML. Java NIO. Разбор примеров и ДЗ.
6 марта, 20:00 — 21:30
10.1 JDBC
Работа с реляционной базой. JDBC. ORM через паттерн Executor. JPA.
7 марта, 20:00 — 21:30
Домашние задания: 1
1 ДЗ-10: myORM
Создайте в базе таблицу с полями:
• id bigint(20) NOT NULL auto_increment
• name varchar(255)
• age int(3)

Создайте абстрактный класс DataSet. Поместите long id в DataSet.
Добавьте класс UserDataSet (с полями, которые соответствуют таблице) унаследуйте его от DataSet.

Напишите Executor, который сохраняет наследников DataSet в базу и читает их из базы по id и классу.

<T extends DataSet> void save(T user){…}
<T extends DataSet> T load(long id, Class<T> clazz){…}

Проверьте его работу на UserDataSet
10.2 myBatis
Inmemory базы. myBatis. Разбор примеров и ДЗ.
13 марта, 20:00 — 21:30
11.1 Hibernate
Hibernate. Конфигурирование Hibernate в коде и в XML. Java persistency query language. DBSevice pattern.
14 марта, 20:00 — 21:30
Домашние задания: 1
1 ДЗ-11: Hibernate ORM
На основе ДЗ 10:
1. Оформить решение в виде DBService (interface DBService, class DBServiceImpl, UsersDAO, UsersDataSet, Executor)
2. Не меняя интерфейс DBSerivice сделать DBServiceHibernateImpl на Hibernate.
3. Добавить в UsersDataSet поля:
адресс (OneToOne)
class AddressDataSet{
private String street;
}
и телефон* (OneToMany)
class PhoneDataSet{
private String number;
}
Добавить соответствущие датасеты и DAO.
* можно не поддерживать в ДЗ 10
11.2 JPQL
Connection Pools. JPQL. Разбор примеров и ДЗ.
20 марта, 20:00 — 21:30
12.1 Web сервер
Встроенный веб сервер. Сервлеты: servlet API, жизненный цикл сервлета. Jetty: устройство, работа, подключение сервлетов.
21 марта, 20:00 — 21:30
Домашние задания: 1
1 ДЗ-12: Веб сервер
Встроить веб сервер в приложение из ДЗ-11.
Сделать админскую страницу, на которой можно добавить пользователя, получить имя пользователя по id и получить количество пользователей в базе.
12.3 No SQL
No SQL. Работа с MongoDB. Разбор примеров и ДЗ.
27 марта, 20:00 — 21:30
Многопоточность
13.1 Thread
Многопоточность. Класс и объект Thread. Создание многопоточного приложения. Проблемы многопоточного доступа.
28 марта, 20:00 — 21:30
Домашние задания: 1
1 ДЗ-14: Многопоточная сортировка
Написать приложение, которое сортирует массив чисел в 4 потоках с использованием библиотеки или без нее.
13.2 JMM
Happens before. Cooperation. Atomics.
3 апреля, 20:00 — 21:30
14.1 Dependency injection
Web archive. Jetty as an external web server. Spring IoC. Spring beans.
4 апреля, 20:00 — 21:30
Домашние задания: 1
1 ДЗ-13: WAR
Собрать war для приложения из ДЗ-12.
Создавать кэш и DBService как Spring beans, передавать (inject) их в сервлеты.
Запустить веб приложение во внешнем веб сервере.
14.2 Asynchronous Web applications
AJAX. Long polling. Websockets. Разбор примеров из ДЗ.
10 апреля, 20:00 — 21:30
15.1 Message System
Потокобезопасные контейнеры.Система обмена сообщениями.
11 апреля, 20:00 — 21:30
Домашние задания: 1
1 ДЗ-15: MessageSystem
Добавить систему обмена сообщениями в веб сервер из ДЗ-13.
Пересылать сообщения из вебсокета в DBService и обратно.
Организовать структуру пакетов без циклических зависимостей.
15.2 Executors
Поддержка многопоточности в стандартной библиотеке. Workers. Executors. Fork/Join. Разбор примеров и ДЗ.
17 апреля, 20:00 — 21:30
16.1 Многопроцессные приложения
Сокеты. RMI. Разбор примера многопроцессного приложения.
18 апреля, 20:00 — 21:30
Домашние задания: 1
1 ДЗ-16: MessageServer
Cревер из ДЗ-15 разделить на три приложения:
• MessageServer
• Frontend
• DBServer
Запускать Frontend и DBServer из MessageServer.
Сделать MessageServer сокет-сервером, Frontend и DBServer клиентами.
Пересылать сообщения с Frontend на DBService через MessageServer.
Запустить приложение с двумя фронтендами (на разных портах)* и двумя датабазными серверами.

* если у вас запуск веб приложения в контейнере, то MessageServer может копировать root.war в контейнеры при старте
16.2 NIO
Registration. NIO для сокетов. Проектная работа.
24 апреля, 20:00 — 21:30
Проектная работа
Заключительный месяц курса посвящен проектной работе. Свой проект это то, что интересно писать студенту. То, что можно создать на основе знаний, полученных на курсе.
При этом не обязательно закончить его за месяц. В процессе написания по проекту можно получить консультации преподавателей.

Проект должен стать примером кода, который можно показывать потенциальным работодателям.

Примеры тем проекта:
- web сервер (разберите протокол)
- socket сервер на NIO (как netty)
- свой ORM
- распределенный кэш
- кэш для hibernate
17.1 Консультация по ДЗ и проектам
25 апреля, 20:00 — 21:30
18.1 Консультация по ДЗ и проектам
1 мая, 20:00 — 21:30
Выпускной проект
Заключительный месяц курса посвящен проектной работе. Свой проект — это то, что интересно писать слушателю. То, что можно создать на основе знаний, полученных на курсе. При этом не обязательно закончить его за месяц. В процессе написания по проекту можно получить консультации преподавателей.

Проект должен стать примером кода, который можно показывать потенциальным работодателям.


Примеры тем проекта:

  • web сервер (разберите протокол);

  • socket сервер на NIO (как netty);

  • свой ORM;

  • распределенный кэш;

  • кэш для hibernate​.

Подглядеть
Java: примеры паттернов
Виталий Чибриков
Паттерн Visitor на примере обхода дерева полей объекта
Виталий Чибриков
Java: исключения
Многопоточность в Java: по ту сторону от synchronized-notifyAll
Сергей Петрелевич
Java-разработчик
Ирина Гаранина, тимлид команды разработки
Aсинхронное программирование
Владимир Сонькин
Многопоточность в Java. Базовые примитивы синхронизации.
Сергей Петрелевич
Больше материалов
Видеоматериалы по теме
День открытых дверей
26 октября в 20:00
День открытых дверей
28 августа в 20:00
День открытых дверей
26 июня в 20:00
После обучения вы

  • получите материалы по всем занятиям (видеозаписи занятий, презентации, примеры кодов);

  • существенно повысите свою компетенцию в сфере разработки на Java;

  • научитесь разрабатывать коммерческие приложения самостоятельно и в команде;

  • получите сертификат об окончании курса;

  • получите приглашение пройти собеседование в компаниях-партнерах (в случае успешного обучения на курсе).

Ваш сертификат
otus.ru
Константин Константинопольский
успешно закончил курс
«Разработчик Java»
Успешных заданий:
16 из 16
Проектная работа:
Распределённая система сетевого мониторинга
Виталий Чибриков
Генеральный директор
№ 0001
otus.ru
Константин Константинопольский
успешно закончил курс
«Разработчик Java»
Успешных заданий:
16 из 16
Проектная работа:
Распределённая система сетевого мониторинга
Виталий Чибриков
Генеральный директор
№ 0001
Общая стоимость
60 000 ₽ 42 000 ₽
В месяц: 12 000 ₽ 9720 ₽
В кредит: ₽ в месяц
Продолжительность
6 месяцев
Начало занятий
26 декабря
Java – это один из языков программирования, с помощью которого создают приложения для работы и игр. Такие продукты устанавливаются на стационарные компьютеры, мобильные устройства и облачные высоконагруженные кластеры. Высокая востребованность разработчиков, владеющих этим языком, делает популярными курсы Java. Если вы хотите стать настоящим профессионалом в сфере IT, приглашаем пройти обучение в нашем центре.
Условия и результаты
Сразу отметим, что Java-изучение у нас предусматривает подготовку не с нуля. Чтобы стать слушателем, необходимо владеть базовыми знаниями и иметь определенный опыт работы с этим или другим языком. Если ваш уровень слишком низкий, можете пройти подготовительные курсы, где получите требуемые навыки взаимодействия с Java.
Подготовительные и основные занятия проводятся в формате онлайн. После выпуска вы:
сможете заниматься разработкой серверных приложений;
освоите разные подходы к созданию программных продуктов;
поймете особенности языка и платформы;
получите все видеозаписи и материалы, используемые во время занятий.
Также обучение Java в OTUS – это шанс на трудоустройство в крупную IT-компанию. Проходите вступительное тестирование и записывайтесь на курсы по телефону или онлайн.