Background image

Профессия
Java-разработчик
за 12 месяцев

Освойте программирование на Java от уровня “новичок” до Junior-специалиста на курсе от команды JavaRush — главного эксперта по Java в Рунете.

  • Формат обучения: видеоуроки с менторами, практические домашние задания, написание проектов на Java, помощь в обучении и трудоустройстве.

  • Занятия проходят в группах: уделим внимание каждому и подстроимся под ваш уровень знаний.

  • Старт занятий — 1 декабря 2021 года.

Записаться на курс
AudienceDropsArrowsСheeseStripes

Java-программист — востребованная профессия настоящего и будущего:

Спрос на Java-программистов высокий и постоянно растет. Сейчас только на "HH" открыто более 10 000 вакансий в России.

Хорошие зарплатные перспективы. Зарплаты Java-разработчиков — одни из самых высоких в мире IT.

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

arrows

Карьерный путь Java-разработчика

Java Junior. Начало

$600-$1000

Middle Java Developer. От 1 года

$1400-$3000

Senior Java Developer. От 2 лет и более

$3000+

background

Курс подойдет вам, если вы:

  • Новичок в программировании

    Вы только начинаете попробовать свои силы в разработке. Пошаговое обучение с опытным ментором, с еженедельными “маленькими победами” поможет вам отслеживать результат обучения и стать уверенным специалистом.

  • Хотите возобновить обучение

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

  • Выпускник технических ВУЗов

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

  • Специалист в IТ, но не разработчик

    Вы знакомы с требованиями в этой сфере, но знаний и опыта в программировании нет. Мы поможем развить навыки для реальной работы и подготовим к карьерному рывку.

Что включено в курс “Java-разработчик за 12 месяцев”

  • 1

    Регулярные занятия с менторами — Senior Java-разработчиками. 2 раза в неделю проходит 1.5-часовая онлайн-лекция, на которой разбирается новая теория и даются персональные рекомендации ученикам.

  • 2

    Интерактивный онлайн-тренажер — с первого занятия вы самостоятельно пишете программы: в браузере или профессиональной среде разработки.

  • 3

    Ежедневная поддержка в чате — Java-эксперты оперативно ответят на любые вопросы по теории Java и решению задач.

  • 4

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

  • 5

    Большие проекты-курсовые — вы получаете опыт работы с передовыми технологиями и учитесь создавать “живые” проекты, которые можно использовать, или добавить в свое портфолио.

  • 6

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

  • 7

    Диплом об окончании курса-профессии — завершенный курс JavaRush — “знак качества” по мнению IT-рекрутеров.

Подробная программа обучения

Для вашего удобства мы тщательно прорабатываем каждый шаг обучения

Модуль 1. Java Syntax

Модуль 2. Java Core

Модуль 3. Java professional

Модуль 4. Работа с базами данных. Hibernate

Модуль 5. Spring + Spring Boot

Модуль 6. Итоговый групповой проект

1. Вводное занятие. Команды и первая программа на Java.

  • О java преимуществах, области применения

  • О JavaRush академии и JavaRush

  • Структура программы, метод main

  • sout

  • Компиляция класса в байт-код из консоли, запуск программы

  • рассказ о WebIDE

2. Знакомство с типами и ввод с клавиатуры. Знакомство с IDEA.

  • Сохранение текста в переменную, ее вывод в консоль

  • Объявление и инициализация переменных String

  • Комментарии в коде

  • Переменные типа int

  • Элементарные математические операции с переменными типа int

  • Инкремент, декремент

  • Конкатенация

  • Integer.parseInt(), String.valueOf()

  • Хранение примитивных переменных в памяти

  • Хранения String переменных в памяти

  • byte, short, char, long, float, double, boolean

  • Методы Scanner

  • Установка IDEA, скачивание проекта, скачивание JDK

  • Установка плагина, рассказ о его функционале

  • Д.З. в Идее

3. Условный оператор.

  • if, if-else, if-else-if

  • Блоки команд

  • Вложенные блоки команд (вложенные if-ы)

  • Перегрузка методов, особенность вызова конструкторов

  • Операторы сравнения, в т.ч. double

  • Логические И, ИЛИ, НЕ

  • Тернарний оператор

  • Знакомство с потоками: Reader/Writer, FileReader/FileWriter

  • Сравнение примитивов и String

  • Д.З.

4. Циклы.

  • Проблематика на примере задачи сделать что-то много раз

  • while

  • break, continue

  • for

  • do-while

  • Сравнение разных циклов, выявление где какой лучше использовать

  • Д.З.

5. Массивы.

  • Создание и заполнение массивов

  • Обход массива

  • Хранение массивов в памяти

  • Двумерные массивы

  • Зубчатые массивы

  • n-мерные массивы

  • Утилитный класс Arrays

6. Функции.

  • Объявление и вызов методов

  • Параметры

  • Возвращаемое значение, void

  • Модификаторы доступа

  • Локальные переменные метода

  • Модификаторы методов, метод main

  • Константы

  • Сокрытие переменных (shadowing)

7. Работа со строками. Факультатив (StringBuilder, String.format, кодировки, экранирование символов ...)

  • Литералы

  • Кодировки

  • Экранирование символов

  • Основные методы класса String

  • Вспомогательные классы для работы со строками

8. Типы данных. Знакомство с ООП.

  • Примитивные типы

  • Приведение типов данных

  • Ссылочные типы

  • Объекты

  • null

  • Знакомство с ООП

  • Наследование

9. Объекты.

  • Создание объектов (new)

  • Конструктор, конструктор по умолчанию

  • Конструктор с параметрами

  • Порядок вызова конструкторов при наследовании

  • Доступ к полям объекта (геттер, сеттер)

  • Жизненный цикл объекта

  • hashCode, equals

10. Классы и static.

  • Загрузка класса

  • Статические переменные

  • Сравнение статических и нестатических переменных

  • Статические методы

  • Порядок инициализации при использовании конструкторов и статических блоков

  • Внутренние классы

11. Списки и Generics.

  • Классы обертки

  • ArrayList

  • Array VS ArrayList

  • Статические методы

  • Типизация ArrayList (дженерики)

12. Коллекции.

  • Иерархия коллекций

  • LinkedList

  • ArrayList VS LinkedList

  • Set, HashSet

  • Queue

  • Map, HashMap, TreeMap

  • Для каких задач лучше использовать какие коллекции

  • iterator, for-each

  • Collections

13. Singleton, Enum, switch.

  • Зачем нужны перечисления

  • Объявления Enum

  • Enum - лучший синглтон

  • switch

14. Исключения.

  • Нормальное выполнение кода и ошибки в рантайме

  • try-catch

  • Иерархия исключений

  • multicatch

  • finally

  • throw

  • throws

  • Создание своих исключений

  • stack trace

  • try with resources

  • AutoCloseable

15. Потоки ввода-вывода.

  • InputStream

  • Reader

  • BufferedReader

  • OutputStream

  • Writer

  • BufferedWriter

16. Потоки ввода-вывода 2. Pattern Chain of responsibility.

  • ByteArrayInputStream

  • RByteArrayOutputStream

  • Комбинирование потоков

17. Потоки ввода-вывода 3. java.nio.

  • io VS nio

  • FileChannel

  • Selector

  • Path

  • Paths

  • Files

18. Работа со временем и датой.

  • Date

  • DateFormat

  • Calendar

  • LocalDate, LocalTime, LocalDateTime

  • Instant

  • ZonedDateTime

  • DateTimeFormatter

19. Git. Итоговый проект.

  • Делаем крипто-анализатор

1. ООП: инкапсуляция, полиморфизм. Интерфейсы.

  • Инкапсуляция

  • Полиморфизм

  • Приведение типов

  • this, super

  • Интерфейсы

2. ООП: Перегрузка, переопределение, Абстрактные классы.

  • Абстрактный класс

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

  • Перегрузка (overload) методов - одинаковые названия

  • Переопределение (override) методов

3. Stream API.

  • Анонимный внутренний класс

  • Лямбда выражения

  • Функциональные интерфейсы

  • method reference

  • Stream

  • Промежуточные и терминальные методы Stream-а

  • map-reduce

4. ООП: композиция, агрегация, наследование.

  • Ассоциация: композиция и агрегация

  • Наследование

5. Интерфейсы: сравнение с абстрактным классом, множественное наследование.

  • Объявление поведения

  • Дефолтные методы

  • Реализация нескольких интерфейсов

  • Проблема “ромба”

  • Сравнение абстрактных классов и интерфейсов

6. Приведение типов, instanceof switch-expression.

  • instanceof

  • Приведение типов (расширение и сужение)

  • switch-expression, Enum

7. Особенности вызова конструкторов. Блок static.

  • Процесс создание объекта

  • Порядок вызова конструкторов

  • Порядок инициализации переменных

8. Устройство Object: equals, hashCode, clone, toString(). Immutable objects.

  • Класс Object

  • Методы класса Object

  • mutable & immutable objects

9. Рекурсия.

  • Рекурсия

10. Знакомство с нитями: Thread, Runnable, start, sleep.

  • Thread

  • Runnable

  • start

  • sleep

  • interrupt

11. Знакомство с нитями: synchronized, volatile, wait, notify.DeadLock.

  • synchronized

  • volatile

  • join

  • wait, notify

  • Проблема DeadLock

12. Executors.

  • ExecutorService

  • Паттерн “фабричный метод”

  • Добавление задач в сервис

  • Callable

  • Получение результата: Future

  • Остановка ExecutorService

  • FixedThreadPool

  • CachedThreadPool

  • ScheduledExecutorService

13. ThreadLocal, Callable, Future.

  • ThreadLocal контекст

  • ThreadLocalRandom

14. Внутренние/Вложенные классы, примеры: Map.Entry.

  • Вложенные классы

  • Внутренние классы

  • Внутренние статические классы

  • Внутренние анонимные классы

  • Примеры разных типов классов из JDK

15. Сериализация JSON/XML/YAML.

  • Java сериализация

  • Форматы данных xml, json, yaml

  • jackson ObjectMapper

16. Reflection API.

  • Зачем нужен Reflection API

  • Получение данных: класса, метода, конструктора, поля

  • Создание объекта

  • Изменение внутреннего состояния объекта

  • Прокси

  • RMI

17. Executors.

  • Аннотации в Java

  • декларативный и императивный подход написания кода

  • популярные аннотации: @Deprecated, @Override, @Nullable, @SuppressWarnings

  • Создание аннотаций

  • Обработка аннотаций в рантайме

18. Sockets.

  • Socket

  • ServerSocket

  • live coding: написание примитивного чата для группы

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

1. Сборка мусора и типы ссылок в Java.

  • Память JVM: stack и heap

  • CG: Serial, Parallel, CMS, G1, Shenandoah, ZGC

  • Кеш

  • WeakReference, SoftReference, PhantomReferenc

2. Паттерны проектирования.

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

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

  • Структурные: адаптер, мост, декоратор, компоновщик, фасад, приспособленец, прокси

3. Методологии разработки.

  • waterfall

  • v-model

  • incremental

  • RAD model

  • agile

  • iterative

  • spiral

4. Основы Maven. Установка Maven, управление зависимостями, виды Maven-репозиториев, сборка Java-проекта.

  • Скачивание, прописывание переменных окружения

  • Создание maven-проекта

  • Зависимости

  • Плагины

  • Фазы (lifecycle)

  • Профили

  • Билд артефактов

5. Опыт работы с Guava, Apache Commons Collections.

  • Multimap, BiMap

  • Multiset

  • Неизменяемые коллекции

  • Objecs: hashCode, equals

  • Throwables

  • CollectionUtils

  • StringUtils

6. JUnit.

  • Зачем нужно тестирование

  • Типы тестирования

  • @Test

  • @Before, @After

  • @BeforeClass, @AfterClass

  • Параметризованные тесты

7. Mockito.

  • Моки

  • mock и spy

  • when и thenReturn

  • verify

  • any, once, times

8. Логирование.

  • Зачем нужны логи

  • Уровни логирования

  • slf4j

  • Реализации: log4j, JUL, logback, common-loggins

  • Аппендеры

9. Устройство сети. Сетевая модель.

  • Топология сети

  • Модель OSI

  • DNS

10. Архитектура ПО. Клиент-серверная архитектура и ее составляющие, трехуровневая архитектура, архитектурные шаблоны.

  • Клиент-серверная архитектура

  • Трехуровневая архитектура (клиент-сервер-БД)

  • Критерии хорошей архитектуры: эффективность, гибкость, расширяемость, масштабируемость, удобство тестирования, читаемый и понятный код

  • Модульная архитектура. Декомпозиция.

11. Протоколы HTTP/HTTPS. Протокол передачи данных, HTTP-запросы и ответы, отличия HTTP и HTTPS. Cookies, Session.

  • Протоколы передачи данных в сети

  • http методы (GET, POST, PUT)

  • Параметры запросов

  • Тело запроса

  • Хедеры

  • Коды ответов

  • http VS https

  • http-сессии

  • Куки

  • http/2

12. HttpClient.

  • AJAX

  • java http client

  • Синхронные и асинхронные запросы

  • Задача на получение данных с Интернета

13. Сервлеты, Java servlet API. Пишем простое веб-приложение.

  • Что такое сервлет

  • Жизненный цикл

  • Сервлет-контейнер Tomcat

  • Тело запроса

  • doGet, doPost

  • Коды ответов

  • redirect VS forward

  • Фильтры

14. Контейнеры сервлетов: Tomcat, развертывание приложения, настройка сервера.

  • Практика по предыдущему модулю

15. Знакомство с MVC (Model-View-Controller). JSP.

  • Набор архитектурных принципов и идей MVC

  • http методы (GET, POST, PUT)

  • Схемы MVC

  • Тело запроса

  • MVC в вебе

  • Типичная ошибка: бизнес-логика в контроллере

  • MVC на примере задачи

  • http-сессии

  • JSP

16. Веб-сервисы.

  • Что такое веб-сервис

  • Протоколы http, jms, ftp и пр.

  • Облачные сервисы: IaaS, PaaS, SaaS

17. HTML - факультатив.

  • Что такое html

  • Структура html-документа

  • Теги и их атрибуты

  • CSS, его синтаксис

  • Хедеры

  • Классы и идентификаторы

  • Селекторы

18. Итоговый проект. Servlet-quest конкурс.

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

1. Введение в базы данных. Установка СУБД (MySQL). ddl, dml.

  • Зачем нужны БД

  • Реляционные и нереляционные БД

  • Реляционная модель

  • CAP теорема

  • Установка MySQL developer

  • Группы SQL (ddl, dml, dcl, tcl)

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

  • Создание схемы

  • Создание таблиц

  • Изменение структуры таблиц

  • insert

  • select

  • update

  • delete

3. Выбор данных.

  • select с условием

  • Перечень выбираемых данных

  • Реляционная модель

  • subselect

  • join: left, right, inner, cross

  • group by и агрегатные функции

  • index

4. Транзакции БД.

  • концепции ACID (Atomicity, Consistency, Isolation, Durability)

  • Управление транзакциями

  • Уровни изоляции данных

5. Проектирование баз данных.

  • Первая нормальная форма

  • Вторая нормальная форма

  • Третья нормальная форма

  • Ключи (foreign key)

  • Отношения: one to …, many to ...

6. JDBC 1.

  • Зачем нужен

  • Основные интерфейсы

  • Получение данных в приложении из БД

  • Обновление и удаление данных в приложении из БД

7. JDBC 2.

  • Транзакции

  • Уровни изоляции

  • Обработка checker исключений

8. ORM. Hibernate.

  • Нестыковки объектной и реляционной моделей данных

  • Основные интерфейсы

  • ORM (Hibernate), JPA

  • Архитектура Hibernate

  • Конфигурация, основные аннотации

  • Получение данных в приложении из БД

  • Обновление и удаление данных в приложении из БД

  • Hibernate VS JDBC

9. Hibernate. OneTo…, ManyTo… .

  • Отношения (работа с коллекциями)

10. Наследование Entity for ORM.

  • Одна таблица для каждого класса

  • Одна таблица для каждого класса с предками

  • Единая таблица для всей иерархии классов

  • Одна таблица для каждого класса с использованием соединений (join)

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

  • Hash for passwords

IoC, DI. Spring. Components. Beans.

  • Почему Spring стал де-факто стандартом отрасли (преимущества)

  • Принципы IoC и DI

  • Бин

  • Контекст (ApplicationContext)

  • AOP

Spring modules general. Spring 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

  • Настройка Hibernate 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).

  • Ключевые объекты контекста spring security: SecurityContextHolder, Authentication, UserDetails, GrantedAuthority

  • Авторизация и аутентификация

  • OAuth2

  • Сессии в памяти

  • Сессии в БД

Spring Boot. Spring JPA.

  • Стартеры

  • Автоконфигурация

  • Встроенные Tomcat

  • Аннотации конфигурации

  • Демонстрация Spring data, JPA (генерация запроса по названию метода в рантайме)

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

Записаться на курс

Преподаватели

  • Василий Малик

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

  • Антон Кашников

    Java-программист JavaRush, Java-ментор. Занимается разработкой технологических решений для онлайн-обучения.

Поддержка

  • Павел Плинько

    Java-разработчик. Занимается улучшением обучающего контента JavaRush.

  • Роман Прищепа

    Java-разработчик, имплементирует новые фичи в продукт, улучшает контент курса.

  • Дмитрий Семененко

    Java-разработчик, автор задач и практических проектов в курсе JavaRush.

Ваше резюме

Резюме, которое вы сможете показать IT-рекрутерам после завершения курса.

Иванна Иванова

Java Developer

от $1000

Профессиональные навыки

  • Java core

  • Java Streams

  • OOP, SOLID

  • Патерны (basic)

  • SQL (MySQL)

  • Spring

  • Hibernate

  • git/GitHub

  • Maven

  • REST API

  • Tomcat

  • Spring boot

  • Интеграции

  • Алгоритмы

  • IDEA

  • JUnit

  • xml, json, yaml

  • Apach HTTP Client

Дополнительные навыки

  • MongoDB

  • HTML, CSS, JS (basic)

  • English (intermediate)

  • Docker

  • ELK

  • Jenkins