Программирование на Java для начинающих

Онлайн-курс с нуля до трудоустройства за 12 месяцев

Получи профессию
«Java-разработчик»
Обучайся с ментором, освой разработку на Java — от основ до технологий, которые нужны для сильного резюме, и создай 10 крутых проектов для своего портфолио
с 5 ноября • на русском языке • 12 месяцев • практика с первого занятия • помощь со стартом карьеры • 5 модулей • 10 крутых проектов в портфолио

Официальный партнер карты обучения Эстонской Кассы по безработице

Программа «Работай и учись» направлена на обучение работающих жителей Эстонии

Онлайн-занятия с менторами

Видеолекции с разбором новых тем два раза в неделю, видеозаписи предоставляются

От «базы» до продвинутых технологий

5 модулей обучения: лекции, задачи, практические проекты. Продолжительность курса –⁠ 1 год

Международный сертификат, подтверждающий знания

Сертификат об окончании курса, который можно добавить к резюме

Усиленная подготовка к первой работе в IT

Консультация с HR-экспертом касаемо резюме, видеолекции о подготовке к собеседованиям

Почему Java
3 причины, почему тебе стоит выбрать Java для старта карьеры разработчика
01
Выход на глобальный IT‑рынок
Спрос на Java-программистов высокий, и эти специалисты не ограничены локальным рынком — они могут выбирать из множества вакансий во всем мире. А зарплаты джавистов на проектах, например, в США — до $150 тысяч в год
02
Работа в больших компаниях
Java – один самых популярных современных языков программирования. С его помощью можно писать сложные программы и приложения. Google, Facebook, Netflix, Amazon, Microsoft и ряд других компаний-гигантов сделали ставку на Java для бекенда
03
Java — везде
Этот язык используется для разработки под Android, в облачных проектах, виртуальной реальности, для создания инструментов разработки, работы с Big Data, беспилотными транспортными средствами, роботизированными медицинскими устройствами, в разработке игр, создании спецэффектов для киноиндустрии, космических разработках и так далее. Все технологии будущего будут написаны «с участием» языка Java
Твои карьерные перспективы в качестве Java‑разработчика
Со знанием программирования на Java ты можешь выбрать любую специализацию:

Java Full Stack Developer

Java Backend Developer

Big Data Engineer

Java Mobile Developer

QA Automation Engineer

Как будет проходить твое обучение на Java‑курсе
Два раза в неделю проводятся 1,5‑часовые онлайн‑лекции, на которых ментор объясняет новую теорию и дает персональные рекомендации ученикам
С первого занятия ты будешь писать программы в среде для разработки. В курсе — больше тысячи задач, и они проверяются автоматически. Пиши свое решение и мгновенно получай результат
Проверка решения покажет, какия условия задачи выполнены, какие — нет. Также ты получишь подсказки, как улучшить свой код
Кроме задач ты получаешь доступ к большому числу дополнительных лекций, которые помогут рассмотреть новую тему под другим углом
Куратор и ментор курса оперативно ответят в рабочие дни на любые вопросы по теории Java и решению задач в курсе
Ты получишь опыт работы с важными технологиями и научишься создавать “живые” проекты, которые можно использовать или добавить в свое портфолио
Оконченный курс Java от MYEDU – “знак качества” по мнению IT‑рекрутеров
Карьерный центр MYEDU поможет тебе усовершенствовать резюме, подготовит к поиску релевантных вакансий и прохождению собеседований
Технологии
На курсе ты с нуля изучишь множество важных технологий для разработчика
Проекты
Результат твоего обучения — не только знания и навыки, но и 10 готовых проектов в твоем портфолио
Криптоанализатор

Ты напишешь программу, которая работает с шифром Цезаря. В основе криптографического алфавита — все буквы английского алфавита, но можно добавить кодировку текста кириллицей, а также улучшить алгоритм работы твоего криптоанализатора. Задание «со звездочкой» — разработать графический интерфейс для твоей программы

Необитаемый остров

Твое задание — создать модель острова с изменяемыми параметрами, которая состоит из массива локаций. Локации будут заполнены растениями и животными, и животные будут выполнять определенные действия. Этот проект поможет тебе как следует попрактиковаться с концептами объектно-ориентированного программирования

Десктопная 2D-игра

Ты напишешь свою игру на JavaFX с помощью игрового движка от JavaRush, которую «запакуешь» в исполняемый JAR‑файл — чтобы ее можно было запустить и поиграть

Админпанель для управления MMO‑игрой

Ты поработаешь над созданием пользовательского интерфейса (UI) для CRUD бекенда проекта. Во время работы ты будешь использовать такие технологии как HTML, CSS, JS, jQuery.

Игра «Крестики-нолики»

Проект, который ты напишешь с использованием сервлетов и JSP

Текстовый квест

Это Maven проект, в котором ты будешь работать с сервлетами, JSP, jstl, а также Tomcat

Проект на Hibernate

Ты напишешь альтернативную реализацию слоя репозитория с использованием Hibernate

Проект по работе с базами данных + Hibernate

Ты поработаешь с разными технологиями (MySQL, Hibernate, Redis, Docker) в рамках проекта по оптимизации работы с запросами к реляционной БД MySQL

“To-do list”

Ты создашь программу — список заданий, в котором можно просматривать задачи, добавлять новые, редактировать и удалять те, которые уже существуют. В этом проекте используются Maven, MySQL, Hibernate, Spring, Spring MVC, Thymeleaf.docker

“JiraRush” — доска задач

Это финальный проект по разработке доски задач по типу Jira или Trello. Готовый продукт поможет отслеживать любую активность — от ведения проекта до передачи списка покупок

Готов начинать?
Оставь заявку: менеджер свяжется с тобой и ответит на все вопросы
Программа обучения
Обучение на Java‑разработчика включает в себя 5 модулей с лекциями, практикой и итоговыми проектами (от новичка до уровня Junior-разработчика), а также финальный групповой проект
Вводное занятие. Команды и первая программа на Java
  • о преимуществах Java и его сферах применения
  • структура программы, метод main
  • sout
  • знакомство с сайтом и WebIDE
Работа с переменными, типы int и String
  • охранение текста к переменной, вывод ее в консоли
  • объявление и инициализация переменных String
  • комментарии в коде
  • элементарные математические операции с переменными типа int
  • инкремент, декремент
  • конкатенация
  • Integer.parseInt(), String.valueOf()
Знакомство с типами и ввод с клавиатуры. Знакомство с IDEA
  • хранение примитивных переменных в памяти
  • хранения String переменных в памяти
  • byte, short, char, long, float, double
  • System.in, Scanner
  • методы Scanner
  • установка IDEA, скачивание проекта, скачивание JDK (версия 11)
  • установка плагина, рассказ о его функционале
Условный оператор
  • if, if-else, if-else-if
  • блоки команд
  • вложенные блоки команд (вложенные if-ы))
  • тип boolean
  • операторы сравнения, в т.ч. double
  • логические AND, OR, NOT, XOR
  • тернарний оператор
  • сравнение примитивов и String
Факультатив
  • подтягиваем новичков
  • опытным рассказываем про фишки IDEA и т.п.
  • компиляция класса в байт-код из консоли, запуск программы
Циклы
  • проблематика на примере задачи сделать что-то много раз
  • while
  • break, continue
  • for
  • do-while
  • сравнение разных циклов, выявление где какой лучше использовать
Массивы
  • создание и заполнение массивов
  • обход массива
  • хранение массивов в памяти
Двумерные массивы
  • двумерные массивы
  • зубчатые массивы
  • n-мерные массивы
Функции
  • объявление и вызов методов
  • параметры
  • возвращаемое значение, void
  • модификаторы доступа
  • локальные переменные метода
  • модификаторы методов, метод main
Работа со строками и продолжение предыдущей темы
  • константы
  • сокрытие переменных (shadowing)
  • экранирование символов
  • основные методы класса String
Факультатив
  • литералы
  • кодировки
  • вспомогательные классы для работы со строками: StringBuilder, String.format
  • утилитный класс Arrays
Типы данных. Знакомство с ООП
  • примитивные типы
  • приведение типов данных
  • ссылочные типы
  • объекты
  • null
  • знакомство с ООП
  • наследование
Объекты
  • создание объектов (new)
  • конструктор, конструктор по умолчанию
  • конструктор с параметрами
  • порядок вызова конструкторов при наследовании
  • доступ к полям объекта (геттер, сеттер)
  • hashCode, equals
Классы и static
  • статические переменные
  • псравнение статических и нестатических переменных
  • статические методы
  • порядок инициализации при использовании конструкторов и статических блоков
  • внутренние классы
Факультатив
  • жизненный цикл объекта
  • загрузка класса
Списки и Generics
  • классы обертки
  • ArrayList
  • Array VS ArrayList
  • типизация ArrayList (дженерики)
Коллекции
  • иерархия коллекций
  • Set, HashSet
  • iterator, for-each
Коллекции
  • Map, HashMap
  • для каких задач лучше использовать какие коллекции
Collections
  • Collections
Факультатив
  • LinkedList
  • ArrayList VS LinkedList
  • Queue
  • SortedMap, TreeMap
Singleton, Enum, switch
  • зачем нужны перечисления
  • объявления Enum
  • Enum – лучший синглтон
  • switch
Исключения
  • нормальное выполнение кода и ошибки в рантайме
  • try-catch
  • иерархия исключений
  • multicatch
  • throw
  • checked и unchecked исключения
  • throws
Исключения
  • finally
  • создание своих исключений
  • Throwable
  • stack trace
  • try-with-resources
  • AutoCloseable
Факультатив
    • Оборачивание исключения
Потоки ввода-вывода. java.nio
      • io VS nio
      • FileChannel
      • Selector
      • Path
      • Paths
      • Files
Работа со временем и датой
      • Date
      • DateFormat
      • Calendar
      • LocalDate, LocalTime, LocalDateTime
      • Instant
      • ZonedDateTime
      • DateTimeFormatter
Git. Итоговый проект. (Крипто-анализатор)
ООП: инкапсуляция, полиморфизм. Интерфейсы
  • инкапсуляция
  • полиморфизм
  • приведение типов
  • this, super
  • интерфейсы
ООП: Перегрузка, переопределение, абстрактные классы
  • абстрактный класс
  • реализация абстрактных методов предка
  • перегрузка (overload) методов — одинаковые названия
  • переопределение (override) методов
Stream API
  • анонимный внутренний класс
  • реализация абстрактных методов предка
  • лямбда выражения
  • функциональные интерфейсы
  • method reference
  • Stream
  • промежуточные и терминальные методы Stream-а
  • map-reduce
ООП: композиция, агрегация, наследование
  • ассоциация: композиция и агрегация
  • наследование
Интерфейсы: сравнение с абстрактным классом, множественное наследование
  • объявление поведения
  • дефолтные методы
  • реализация нескольких интерфейсов
  • проблема «ромба»
  • сравнение абстрактных классов и интерфейсов
Приведение типов, instanceof switch-expression
  • instanceof
  • приведение типов (расширение и сужение)
  • switch expression, Enum
Особенности вызова конструкторов. Блок static
  • процесс создание объекта
  • порядок вызова конструкторов
  • порядок инициализации переменных
Устройство Object: equals, hashCode, clone, toString(). Immutable objects
  • Object
  • методы класса Object
  • mutable та immutable objects
Рекурсия
  • Рекурсия
Знакомство с нитями: Thread, Runnable, start, sleep
  • Thread
  • Runnable
  • start
  • sleep
  • interrupt
Знакомство с нитями: synchronized, volatile, wait, notify.DeadLock
  • synchronized
  • volatile
  • join
  • wait, notify
  • проблема DeadLock

Executors
  • ExecutorService
  • патерн (шаблон) «фабричний метод»
  • добавление задач в сервис
  • Callable
  • получение результата: Future
  • остановка ExecutorService
  • FixedThreadPool
  • CachedThreadPool
  • ScheduledExecutorService

ThreadLocal, Callable, Future
  • ThreadLocal контекст
  • ThreadLocalRandom

Внутренние/вложенные классы, примеры: Map.Entry
  • вложенные классы
  • внутренние классы
  • внутренние статические классы
  • внутренние анонимные классы
  • примеры разных типов классов из JDK

Сериализация JSON/XML/YAML
  • java сериализация
  • форматы данных xml, json, yaml
  • jackson ObjectMapper

Reflection API
  • зачем нужен Reflection API
  • получение данных: класса, метода, конструктора, поля
  • создание объекта
  • изменение внутреннего состояния объекта
  • прокси

RMI
  • RMI

Аннотации в Java
  • декларативный и императивный подход написания кода
  • популярные аннотации: @Deprecated, @Override, @Nullable, …
  • создание аннотаций
  • обработка аннотаций в рантайме

Факультатив
  • работа с Swing
  • Socket
  • ServerSocket
  • live coding: написание примитивного чата для группы

Итоговый проект

    Сборка мусора и типы ссылок в Java
    • память JVM: stack и heap
    • CG: Serial, Parallel, CMS, G1, Shenandoah, ZGC
    • кеш
    • WeakReference, SoftReference, PhantomReference

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

    Методологии разработки
    • waterfall
    • v-model
    • incremental
    • RAD model
    • agile
    • iterative
    • spiral

    Основы Maven. Установка Maven, управление зависимостями, виды Maven-репозиториев, сборка Java-проекта
    • скачивание, прописывание переменных окружения
    • создание maven-проекта
    • зависимости
    • плагины
    • фазы (lifecycle)
    • профили
    • билд артефактов

    Опыт работы с Guava, Apache Commons Collections
    • Multimap, BiMap
    • Multiset
    • неизменяемые коллекции
    • Objects: hashCode, equals
    • Throwables
    • CollectionUtils
    • StringUtils

    JUnit
    • зачем нужно тестирование
    • типы тестирования
    • @Test
    • @Before, @After
    • @BeforeClass, @AfterClass
    • параметризованные тесты

    Mockito
    • моки
    • mock и spy
    • when и thenReturn
    • verify
    • any, once, times

    Логирование
    • зачем нужны логи
    • уровни логирования
    • slf4j
    • реализации: log4j, JUL, logback, common-loggins
    • аппендеры

    Устройство сети. Сетевая модель
    • топология сети
    • модель OSI
    • DNS

    Архитектура ПО. Клиент-серверная архитектура и ее составляющие, трехуровневая архитектура, архитектурные шаблоны
    • клиент-серверная архитектура
    • трехуровневая архитектура (клиент-сервер-БД)
    • критерии хорошей архитектуры: эффективность, гибкость, расширяемость, масштабируемость, удобство тестирования, читаемый и понятный код
    • модульная архитектура. декомпозиция

    Протоколы HTTP/HTTPS. Протокол передачи данных, HTTP-запросы и ответы, отличия HTTP и HTTPS. Cookies, Session
    • протоколы передачи данных в сети
    • GET, POST, PUT, …
    • параметры запросов
    • тело запроса
    • хедеры
    • коды ответов
    • http VS https
    • http сессии
    • куки
    • http/2
    • HttpClient
    • AJAX
    • java http client
    • синхронные и асинхронные запросы
    • задача на получение данных с нета, например погода

    Сервлеты, Java servlet API. Пишем простое веб-приложение
    • что такое сервлет
    • жизненный цикл
    • сервлет-контейнер Tomcat
    • doGet, doPost
    • redirect VS forward
    • фильтры

    Контейнеры сервлетов: Tomcat, развертывание приложения, настройка сервера
    • практика по предыдущей лекции

    Знакомство с MVC (Model-View-Controller). JSP
    • набор архитектурных принципов и идей MVC
    • схемы MVC
    • MVC в вебе
    • типичная ошибка: бизнес-логика в контроллере
    • MVC на примере задачи
    • JSP

    Веб-сервисы
    • что такое веб-сервис
    • протоколы http, jms, ftp, …
    • синхронные и асинхронные запросы
    • облачные сервисы: IaaS, PaaS, SaaS (что угодно as a service))

    HTML-факультатив
    • что такое HTML
    • структура HTML документа
    • теги и их атрибуты
    • CSS, его синтаксис
    • классы и идентификаторы
    • селекторы

    Итоговый проект. Servlet-quest конкурс
    • Написать на сервлетах текстовую пошаговую игру-квест

    Введение в базы данных. Установка СУБД (MySQL). ddl, dml
    • зачем нужны БД
    • реляционные и нереляционные БД
    • реляционная модель
    • CAP теорема
    • установка MySQL developer
    • группы SQL (ddl, dml, dcl, tcl)

    Типы данных. Создание таблицы. Написание insert, select, update, delete
    • создание схемы
    • создание таблиц
    • изменение структуры таблиц
    • insert
    • select
    • update
    • delete

    Выбор данных
    • select с условием
    • перечень выбираемых данных
    • subselect
    • join: left, right, inner, cross
    • group by и агрегатные функции
    • index

    Транзакции БД
    • концепции ACID (Atomicity, Consistency, Isolation, Durability)
    • управление транзакциями
    • уровни изоляции данных

    Проектирование баз данных
    • первая нормальная форма
    • вторая нормальная форма
    • третья нормальная форма
    • ключи (foreign key)
    • отношения: one to …, many to …

    JDBC 1
    • зачем нужен
    • основные интерфейсы
    • получение данных в приложении из БД
    • обновление и удаление данных в приложении из БД

    JDBC 2
    • транзакции
    • уровни изоляции
    • обработка checker исключений

    ORM. Hibernate
    • нестыковки объектной и реляционной моделей данных
    • ORM (Hibernate), JPA
    • архитектура Hibernate
    • конфигурация, основные аннотации
    • получение данных в приложении из БД
    • обновление и удаление данных в приложении из БД
    • Hibernate VS JDBC

    Hibernate. OneTo…, ManyTo…
    • отношения (работа с коллекциями)

    Наследование Entity for ORM
    • одна таблица для каждого класса
    • одна таблица для каждого класса с предками
    • единая таблица для всей иерархии классов
    • одна таблица для каждого класса с использованием соединений (join)

    Итоговый проект
    • hash for passwords

    IoC, DI. Spring. Components. Beans
    • почему Spring стал де-факто стандартом отрасли (преимущества)
    • принципы IoC и DI
    • бин
    • контекст (ApplicationContext)
    • AOP

    Spring modules general. Spring Web MVC
    • core (beans, core, context, SpEL)
    • data access
    • testing
    • web
    • integration
    • web mvc

    Проектирование REST API
    • оперирование ресурсами, а не методами
    • http методы
    • http коды ответов
    • ошибки
    • запрос коллекции
    • запрос количества объектов в коллекции
    • запрос объекта коллекции
    • добавление данных в коллекцию
    • редактирование
    • удаление
    • домашнее задание: спроектировать 2-ранговый REST API

    App controller-service-dao
    • иерархия контекстов
    • servlet config
    • контроллер — прием запроса
    • сервис — бизнес логика
    • dao – хранение состояния

    Spring ORM. @Transaction
    • абстракция «транзакция»
    • декларативные транзакции
    • transaction propagation
    • преимущества ORM + Spring
    • SessionFactory
    • live coding example

    Spring Test. AOP (logging)
    • unit testing
    • integration testing
    • основные аннотации
    • TestContext
    • live coding example (ттестирование API-метода или пары методов)
    • spring commons logging bridge

    Spring Security (memory, DB)
    • SecurityContextHolder, Authentication, UserDetails, GrantedAuthority
    • авторизация и аутентификация
    • OAuth2
    • сессии в памяти
    • сессии в БД

    Spring Boot. Spring JPA
    • стартеры
    • автоконфигурация
    • встроенные tomcat
    • аннотации конфигурации
    • демонстрация spring data jpa (генерация запроса по названию метода в рантайме)
    Преподаватели
    Курс ведут практикующие специалисты в области программирования на Java:
    Василий Малик

    Team lead команды программистов. Эксперт по backend-разработке и работе с базами данных

    Антон Купрейчик

    Java Developer с опытом в сфере гейминга и аутсорс-компаниях

    Татьяна Бакач

    Software Engineer, эксперт в области автоматизации тестирования на Java

    Александр Хмелев

    Software Engineer, Fata Scientist, преподаватель в ВУЗ

    Юрий Сыроватько

    IT Service Engineer с опытом работы в системных интеграторах, телеком-сфере, ритейл-компаниях

    Гюнай Гашимова

    Backend Developer с опытом работы в банковской сфере

    Программа трудоустройства
    Подготовься к первой работе в IT вместе с MYEDU
    01

    Онлайн-консультация с HR-экспертом касаемо улучшения твоего резюме

    02

    Видеолекции о том, как устроен рынок труда, как создавать резюме на LinkedIn и портфолио на GitHub, где искать IT‑вакансии

    03

    Разбор разных этапов собеседования. Как подготовиться и чего ожидать от intro-звонка с HR, тестового задания или live-кодинга, team culture интервью, интервью с менеджером, оффера

    04

    Разбор «практики» интервью в топ-компаниях

    05

    Чеклист подготовки к собеседованиям

    Твое резюме после завершения курса:
    Должность

    Java developer

    Зарплата

    От €1200

    Формат работы

    Удаленно

    Навыки и технологии
    Другое
    Международный сертификат MYEDU
    Подтвердит твои глубокие знания в Java-разработке и будет веским аргументом при трудоустройстве
    Онлайн-курс Java-разработчик с 23 сентября на русском языке!
    Оставь заявку на обучение
    FAQ
    • обучение проходит под руководством менторов
    • занятия проводятся в небольших группах
    • студенты пишут большие проекты-курсовые, получают опыт работы с передовыми технологиями Java, которые потом можно добавить в портфолио
    • есть регулярная поддержка в slack-чате, где Java-эксперты оперативно отвечают на любые вопросы по теории Java и решению задач
    • предоставляется помощь в трудоустройстве: карьерный центр MYEDU проверяет ваше резюме, подготавливает к поиску подходящих вакансий и прохождению интервью
    • по запросам студентов организовываются дополнительные факультативы и live-сессии для ответов на вопросы и прочее
    Курс рассчитан как на людей с нулевыми знаниями в программировании, так и на специалистов, которые частично знают язык Java, но хотят усовершенствовать свои навыки или повторить материал.
    Мы рекомендуем уделять обучению минимум 10-12 часов в неделю. Чем больше, тем лучше.
    12 месяцев – оптимальный период времени изучения теории и наработки навыков для позиции Junior Java Developer. Вы шаг за шагом пройдете все необходимые уровни под руководством действующих разработчиков Java.
    После прохождения курса у вас будут все шансы устроиться на работу в качестве Junior Java Developer, так как вы получите все необходимые знания и навыки для этой позиции. Карьерный центр MYEDU поможет правильно составить резюме и подготовит будущих специалистов к прохождению собеседования.
    Да, в MYEDU доступны разные способы оплаты, в том числе, обучение за счет работодателя или оплата частями. Сумму можно разбить на 6 или 12 платежей.
    MYEDU является официальным партнером карты обучения Эстонской кассы страхования от безработицы.
    Средние показатели зарплаты на рынке труда для Java Junior составляют от €1200, для Middle Java Developer – от €1400, а для Senior Java Developer – от €3000.
    Если во время обучения у вас возникнут трудности или вопросы — напишите нам на info@myedu.ee или в Телеграм, и мы обязательно поможем вам с их решением.
    Да, после успешного прохождения курса мы выдаем сертификат в международном формате на английском языке.
    Наша программа разработана с учетом требований к начинающим Java-разработчикам на рынке труда и опыта наших выпускников. Менторы пошагово знакомят студентов с теоретической частью изучения Java и регулярно взаимодействуют в чатах для разрешения вопросов и недопонимания. Курс наполнен множеством вариаций применения теории Java на практике для закрепления пройденного материала и использования в будущих проектах. Это 1200 задач с автоматической проверкой решения, мини-проекты по прохождению каждого модуля и финальный групповой проект, который можно добавить в свое портфолио.
    Остались вопросы?
    Напишите нам или закажите консультацию!
    Чем поможет консультант:










      * - поля, обязательные для заполнения

      Контакты

      Официальный партнер карты обучения Эстонской Кассы по безработице

      Программа «Работай и учись» направлена на обучение работающих жителей Эстонии

      Официальный партнер карты обучения Эстонской Кассы по безработице

      Программа «Работай и учись» направлена на обучение работающих жителей Эстонии