Java-программист — востребованная профессия настоящего и будущего:
Спрос на Java-программистов высокий и постоянно растет. Сейчас только на "HH" открыто более 10 000 вакансий в России.
Хорошие зарплатные перспективы. Зарплаты Java-разработчиков — одни из самых высоких в мире IT.
Java-программисту есть из чего выбрать. Этот язык используется для создания серверных приложений в сфере финансовых услуг, веб-приложений, встраиваемых систем, больших данных, для написания Android-программ и научных приложений.
Карьерный путь Java-разработчика
Java Junior. Начало
$600-$1000
Middle Java Developer. От 1 года
$1400-$3000
Senior Java Developer. От 2 лет и более
$3000+
Курс подойдет вам, если вы:
Новичок в программировании
Вы только начинаете попробовать свои силы в разработке. Пошаговое обучение с опытным ментором, с еженедельными “маленькими победами” поможет вам отслеживать результат обучения и стать уверенным специалистом.
Хотите возобновить обучение
Вы уже обучались на онлайн-курсе 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