Профессия Java-разработчик за 12 месяцев от JavaRush.
Освойте программирование на Java от уровня “новичок” до Junior-специалиста на курсе от команды JavaRush — главного эксперта по Java в мире.
Java-программист — востребованная профессия настоящего и будущего:
- Спрос на Java-программистов высокий и постоянно растет. Сейчас только на «HH» открыто более 10 000 вакансий в России.
- Хорошие зарплатные перспективы. Зарплаты Java-разработчиков — одни из самых высоких в мире IT.
- Java-программисту есть из чего выбрать. Этот язык используется для создания серверных приложений в сфере финансовых услуг, веб-приложений, встраиваемых систем, больших данных, для написания Android-программ и научных приложений.
- Новичок в программировании. Вы только начинаете попробовать свои силы в разработке. Пошаговое обучение с опытным ментором, с еженедельными “маленькими победами” поможет вам отслеживать результат обучения и стать уверенным специалистом.
- Выпускник технических ВУЗов. У вас есть база, но мало практического опыта. На курсе вы получите много практики и сами напишете настоящие проекты. Мы сделаем из вас специалиста, который нужен IТ-рынку.
- Хотите возобновить обучение. Вы уже обучались на онлайн-курсе JavaRush или осваивали Java-разработку где-либо, но не довели дело до конца. Системное обучение с четкой датой достижения цели поможет вам сохранить мотивацию.
- Специалист в IТ, но не разработчик.Вы знакомы с требованиями в этой сфере, но знаний и опыта в программировании нет. Мы поможем развить навыки для реальной работы и подготовим к карьерному рывку.
- Новичок в программировании. Вы только начинаете попробовать свои силы в разработке. Пошаговое обучение с опытным ментором, с еженедельными “маленькими победами” поможет вам отслеживать результат обучения и стать уверенным специалистом.
- Выпускник технических ВУЗов. У вас есть база, но мало практического опыта. На курсе вы получите много практики и сами напишете настоящие проекты. Мы сделаем из вас специалиста, который нужен IТ-рынку.
- Хотите возобновить обучение. Вы уже обучались на онлайн-курсе JavaRush или осваивали Java-разработку где-либо, но не довели дело до конца. Системное обучение с четкой датой достижения цели поможет вам сохранить мотивацию.
- Специалист в IТ, но не разработчик.Вы знакомы с требованиями в этой сфере, но знаний и опыта в программировании нет. Мы поможем развить навыки для реальной работы и подготовим к карьерному рывку.
- Новичок в программировании. Вы только начинаете попробовать свои силы в разработке. Пошаговое обучение с опытным ментором, с еженедельными “маленькими победами” поможет вам отслеживать результат обучения и стать уверенным специалистом.
- Выпускник технических ВУЗов. У вас есть база, но мало практического опыта. На курсе вы получите много практики и сами напишете настоящие проекты. Мы сделаем из вас специалиста, который нужен IТ-рынку.
- Хотите возобновить обучение. Вы уже обучались на онлайн-курсе JavaRush или осваивали Java-разработку где-либо, но не довели дело до конца. Системное обучение с четкой датой достижения цели поможет вам сохранить мотивацию.
- Специалист в IТ, но не разработчик.Вы знакомы с требованиями в этой сфере, но знаний и опыта в программировании нет. Мы поможем развить навыки для реальной работы и подготовим к карьерному рывку.
- о java преимуществах, области применения
- о JavaRush и Java-университете
- структура программы, метод main
- sout
- рассказ о сайте и WebIDE
- сохранение текста в переменную, ее вывод в консоль
- объявление и инициализация переменных String
- комментарии в коде
- элементарные математические операции с переменными типа int
- инкремент, декремент
- конкатенация
- Integer.parseInt(), String.valueOf()
- хранение примитивных переменных в памяти
- хранения String переменных в памяти
- byte, short, char, long, float, double
- System.in, Scanner
- методы Scanner
- установка IDEA, скачивание проекта, скачивание JDK (версия 11)
- установка плагина, рассказ о его функционале
- if, if-else, if-else-if
- блоки команд
- вложенные блоки команд (вложенные if-ы)
- Тип boolean
- операторы сравнения, в т.ч. double
- логические И, ИЛИ, НЕ
- тернарний оператор
- сравнение примитивов и String
- Подтягиваем новичков
- Опытным рассказываем про фишки IDEA и т.п.
- компиляция класса в байт-код из консоли, запуск программы
- проблематика на примере задачи сделать что-то много раз
- while
- break, continue
- for
- do-while
- сравнение разных циклов, выявление где какой лучше использовать
- создание и заполнение массивов
- обход массива
- хранение массивов в памяти
- двумерные массивы
- зубчатые массивы
- n-мерные массивы
- объявление и вызов методов
- параметры
- возвращаемое значение, void
- модификаторы доступа
- локальные переменные метода
- модификаторы методов, метод main
- константы
- сокрытие переменных (shadowing)
- экранирование символов
- основные методы класса String
- литералы
- кодировки
- вспомогательные классы для работы со строками: StringBuilder, String.format
- утилитный класс Arrays
- примитивные типы
- приведение типов данных
- ссылочные типы
- объекты
- null
- знакомство с ООП
- наследование
- создание объектов (new)
- конструктор, конструктор по умолчанию
- конструктор с параметрами
- порядок вызова конструкторов при наследовании
- доступ к полям объекта (геттер, сеттер)
- hashCode, equals
- статические переменные
- сравнение статических и нестатических переменных
- статические методы
- порядок инициализации при использовании конструкторов и статических блоков
- внутренние классы
- жизненный цикл объекта
- загрузка класса
- классы обертки
- ArrayList
- Array VS ArrayList
- типизация ArrayList (дженерики)
- иерархия коллекций
- Set, HashSet
- iterator, for-each
- Map, HashMap
- для каких задач лучше использовать какие коллекции
- Collections
- LinkedList
- ArrayList VS LinkedList
- Queue
- SortedMap, TreeMap
- зачем нужны перечисления
- объявления Enum
- Enum - лучший синглтон
- switch
- нормальное выполнение кода и ошибки в рантайме
- try-catch
- иерархия исключений
- multicatch
- throw
- checked и unchecked исключения
- throws
- finally
- создание своих исключений
- Throwable
- stack trace
- try with resources
- AutoCloseable
- Оборачивание исключения
- Error
- InputStream
- Reader
- BufferedReader
- OutputStream
- Writer
- BufferedWriter
- ByteArrayInputStream
- ByteArrayOutputStream
- комбинирование потоков
- io VS nio
- FileChannel
- Selector
- Path
- Paths
- Files
- Date
- DateFormat
- Calendar
- LocalDate, LocalTime, LocalDateTime
- Instant
- ZonedDateTime
- DateTimeFormatter
Модуль 2. Java-Core
- инкапсуляция
- полиморфизм
- приведение типов
- this, super
- интерфейсы
- абстрактный класс
- реализация абстрактных методов предка
- перегрузка (overload) методов - одинаковые названия
- переопределение (override) методов
- анонимный внутренний класс
- реализация абстрактных методов предка
- лямбда выражения
- функциональные интерфейсы
- method reference
- Stream
- промежуточные и терминальные методы Stream-а
- map-reduce
- ассоциация: композиция и агрегация
- наследование
- объявление поведения
- дефолтные методы
- реализация нескольких интерфейсов
- проблема “ромба”
- сравнение абстрактных классов и интерфейсов
- instanceof
- приведение типов (расширение и сужение)
- switch-expression, Enum
- процесс создание объекта
- порядок вызова конструкторов
- порядок инициализации переменных
- класс Object
- методы класса Object
- mutable & immutable objects
- рекурсия
- Thread
- Runnable
- start
- sleep
- interrupt
- synchronized
- volatile
- join
- wait, notify
- проблема DeadLock
- ExecutorService
- паттерн “фабричный метод”
- добавление задач в сервис
- Callable
- получение результата: Future
- остановка ExecutorService
- FixedThreadPool
- CachedThreadPool
- ScheduledExecutorService
- ThreadLocal контекст
- ThreadLocalRandom
- вложенные классы
- внутренние классы
- внутренние статические классы
- внутренние анонимные классы
- примеры разных типов классов из JDK
- java сериализация
- форматы данных xml, json, yaml
- jackson ObjectMapper
- зачем нужен Reflection API
- получение данных: класса, метода, конструктора, поля
- создание объекта
- изменение внутреннего состояния объекта
- прокси
- RMI
- декларативный и императивный подход написания кода
- популярные аннотации: @Deprecated, @Override, @Nullable,...
- создание аннотаций
- обработка аннотаций в рантайме
- работа с Swing
- Socket
- ServerSocket
- live coding: написание примитивного чата для группы
Модуль 3. Java-professional
- память JVM: stack и heap
- CG: Serial, Parallel, CMS, G1, Shenandoah, ZGC
- кеш
- WeakReference, SoftReference, PhantomReference
- поведенческие: цепочка ответственности, команда, итератор, интерпретатор, посредник, хранитель, наблюдатель, состояние, стратегия, посетитель, шаблонный метод
- порождающие: прототип, строитель, синглтон, абстрактная фабрика, фабричный метод
- декоратор, компоновщик, фасад, приспособленец, прокси
- waterfall
- v-model
- incremental
- RAD model
- agile
- iterative
- spiral
- скачивание, прописывание переменных окружения
- создание maven-проекта
- зависимости
- плагины
- фазы (lifecycle)
- профили
- билд артефактов
- Multimap, BiMap
- Multiset
- неизменяемые коллекции
- Objects: hashCode, equals
- Throwables
- CollectionUtils
- StringUtils
- зачем нужно тестирование
- типы тестирования
- @test
- @Before,
- @BeforeClass, @AfterClass
- параметризованные тесты
- моки
- mock и spy
- when и thenReturn
- verify
- any, once, times
- зачем нужны логи
- уровни логирования
- slf4j
- реализации: log4j, JUL, logback, common-loggins
- аппендеры
- топология сети
- модель OSI
- DNS
- клиент-серверная архитектура
- трехуровневая архитектура (клиент-сервер-БД)
- критерии хорошей архитектуры: эффективность, гибкость, расширяемость, масштабируемость, удобство тестирования, читаемый и понятный код
- модульная архитектура. декомпозиция
- протоколы передачи данных в сети
- http методы (GET, POST, PUT, …)
- параметры запросов
- тело запроса
- хедеры
- коды ответов
- http VS https
- http сессии
- куки
- http/2
- AJAX
- java http client
- синхронные и асинхронные запросы
- задача на получение данных с нета, например погода
- что такое сервлет
- жизненный цикл
- сервлет-контейнер Tomcat
- doGet, doPost
- redirect VS forward
- фильтры
- практика по предыдущей лекции
- набор архитектурных принципов и идей MVC
- схемы MVC
- MVC в вебе
- типичная ошибка: бизнес-логика в контроллере
- MVC на примере задачи
- JSP
- что такое веб-сервис
- протоколы http, jms, ftp,...
- синхронные и асинхронные запросы
- облачные сервисы: IaaS, PaaS, SaaS (что угодно as a service)
- что такое HTML
- структура HTML документа
- теги и их атрибуты
- CSS, его синтаксис
- классы и идентификаторы
- селекторы
- Написать на сервлетах текстовую пошаговую игру-квест
МОДУЛЬ 4. Работа с базами данных. Hibernate.
- зачем нужны БД
- реляционные и нереляционные БД
- реляционная модель
- CAP теорема
- установка MySQL developer
- группы SQL (ddl, dml, dcl, tcl)
- создание схемы
- создание таблиц
- изменение структуры таблиц
- 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...
- зачем нужен
- основные интерфейсы
- получение данных в приложении из БД
- обновление и удаление данных в приложении из БДа
- транзакции
- уровни изоляции
- обработка checker исключений
- нестыковки объектной и реляционной моделей данных
- ORM (Hibernate), JPA
- архитектура hibernate
- конфигурация, основные аннотации
- получение данных в приложении из БД
- обновление и удаление данных в приложении из БД
- Hibernate VS JDBC
- отношения (работа с коллекциями)
- одна таблица для каждого класса
- одна таблица для каждого класса с предками
- единая таблица для всей иерархии классов
- одна таблица для каждого класса с использованием соединений (join)
- hash for passwords
МОДУЛЬ 5. Spring + Spring Boot
- почему Spring стал де-факто стандартом отрасли (преимущества)
- принципы IoC и DI
- бин
- контекст (ApplicationContext)
- AOP
- core (beans, core, context, SpEL)
- data access
- testing
- web
- integration
- web mvc
- оперирование ресурсами, а не методами
- http методы
- http коды ответов
- ошибки
- запрос коллекции
- запрос количества объектов в коллекции
- запрос объекта коллекции
- добавление данных в коллекцию
- редактирование
- удаление
- д.з. спроектировать 2-ранговый REST API
- иерархия контекстов
- servlet config
- контроллер - прием запроса
- сервис - бизнес логика
- dao - хранение состояния
- абстракция “транзакция”
- декларативные транзакции
- transaction propagation
- преимущества ORM + Spring
- настройка hibernate SessionFactory
- live coding example
- unit testing
- integration testing
- основные аннотации
- TestContext
- live coding example (тестирование API-метода или пары методов)
- spring commons logging bridge
- ключевые объекты контекста spring security: SecurityContextHolder, Authentication, UserDetails, GrantedAuthority
- авторизация и аутентификация
- OAuth2
- сессии в памяти
- сессии в БД
- стартеры
- автоконфигурация
- встроенные tomcat
- аннотации конфигурации
- демонстрация spring data jpa (генерация запроса по названию метода в рантайме)
- Новичок в программировании. Вы только начинаете попробовать свои силы в разработке. Пошаговое обучение с опытным ментором, с еженедельными “маленькими победами” поможет вам отслеживать результат обучения и стать уверенным специалистом.
- Выпускник технических ВУЗов. У вас есть база, но мало практического опыта. На курсе вы получите много практики и сами напишете настоящие проекты. Мы сделаем из вас специалиста, который нужен IТ-рынку.
- Хотите возобновить обучение. Вы уже обучались на онлайн-курсе JavaRush или осваивали Java-разработку где-либо, но не довели дело до конца. Системное обучение с четкой датой достижения цели поможет вам сохранить мотивацию.
- Специалист в IТ, но не разработчик.Вы знакомы с требованиями в этой сфере, но знаний и опыта в программировании нет. Мы поможем развить навыки для реальной работы и подготовим к карьерному рывку.
- Новичок в программировании. Вы только начинаете попробовать свои силы в разработке. Пошаговое обучение с опытным ментором, с еженедельными “маленькими победами” поможет вам отслеживать результат обучения и стать уверенным специалистом.
- Выпускник технических ВУЗов. У вас есть база, но мало практического опыта. На курсе вы получите много практики и сами напишете настоящие проекты. Мы сделаем из вас специалиста, который нужен IТ-рынку.
- Хотите возобновить обучение. Вы уже обучались на онлайн-курсе JavaRush или осваивали Java-разработку где-либо, но не довели дело до конца. Системное обучение с четкой датой достижения цели поможет вам сохранить мотивацию.
- Специалист в IТ, но не разработчик.Вы знакомы с требованиями в этой сфере, но знаний и опыта в программировании нет. Мы поможем развить навыки для реальной работы и подготовим к карьерному рывку.
- Новичок в программировании. Вы только начинаете попробовать свои силы в разработке. Пошаговое обучение с опытным ментором, с еженедельными “маленькими победами” поможет вам отслеживать результат обучения и стать уверенным специалистом.
- Выпускник технических ВУЗов. У вас есть база, но мало практического опыта. На курсе вы получите много практики и сами напишете настоящие проекты. Мы сделаем из вас специалиста, который нужен IТ-рынку.
- Хотите возобновить обучение. Вы уже обучались на онлайн-курсе JavaRush или осваивали Java-разработку где-либо, но не довели дело до конца. Системное обучение с четкой датой достижения цели поможет вам сохранить мотивацию.
- Специалист в IТ, но не разработчик.Вы знакомы с требованиями в этой сфере, но знаний и опыта в программировании нет. Мы поможем развить навыки для реальной работы и подготовим к карьерному рывку.
- Новичок в программировании. Вы только начинаете попробовать свои силы в разработке. Пошаговое обучение с опытным ментором, с еженедельными “маленькими победами” поможет вам отслеживать результат обучения и стать уверенным специалистом.
- Выпускник технических ВУЗов. У вас есть база, но мало практического опыта. На курсе вы получите много практики и сами напишете настоящие проекты. Мы сделаем из вас специалиста, который нужен IТ-рынку.
- Хотите возобновить обучение. Вы уже обучались на онлайн-курсе JavaRush или осваивали Java-разработку где-либо, но не довели дело до конца. Системное обучение с четкой датой достижения цели поможет вам сохранить мотивацию.
- Специалист в IТ, но не разработчик.Вы знакомы с требованиями в этой сфере, но знаний и опыта в программировании нет. Мы поможем развить навыки для реальной работы и подготовим к карьерному рывку.