Курс Java Pro
Описание курса
Старт курса — 23 марта 2023 года.
—
Язык Java уверенно держится в первых строчках по популярности, ведь его простота отлично сочетается с возможностью реализовывать сложные архитектурные решения. Он отлично подходит для разработки больших и сложным систем, а также программ, благодаря своей универсальности.
Широкое комьюнити, которое сформировалось за 10-летия существования языка, всегда поможет найти правильное решение в той или иной ситуации.
Программа рассчитана на комплексное освоение языка Java, его синтаксиса и возможностей, практических навыков и теоретических знаний по написанию как простых приложений, так и более серьезных проектов. Таким образом вы сможете применять знания в таких более узких направлениях, как разработка мобильных программ или веб-приложений.
После курса вы сможете:
- Писать на языке Java различные проекты
- Создавать свой загрузчик классов
- Разрабатывать небольшие IoC-контейнеры (маленький Spring)
- Писать модульные тесты и работать по TDD
- Эффективно пользоваться английским для общения с клиентами и коллегами
- Грамотно презентовать себя работодателю
Программа курса:
Обзор языков программирования
- Обзор парадигм программирования
- Обзор современных языков программирования
Понятие алгоритма
- Роль алгоритма в решении задач
- Понятие и свойства алгоритма
- Типы алгоритмов
Базовые конструкции программирования
- Понятие синтаксиса и семантики языков программирования
- Переменные, типы данных, выражения и присваивание значений переменным
- Представление данных в памяти компьютера: биты, байты и т.п.
- Простейший ввод/вывод
- Условные конструкции и их разновидности
- Итеративные конструкции (циклы)
Базовые структуры данных
- Одномерные массивы и работа с ними
- Двумерные массивы и работа с ними
- Пользовательские объекты, их свойства и методы
- Понятие ассоциативного массива и принципы работы с ним
- Формат JSON
- Особенности работы со строками
- Особенности работы с датами
Функции
- Описание функции
- Вызов функции
- Параметры функций
- Передача параметров из точки вызова в функцию
Построение простого графического интерфейса (GUI)
- Формы и работа с элементами управления на web-формах
- События, обработка событий мыши
Основы работы с системой контроля версий
Общая характеристика языка Java
- История языка Java
- Байт-код
- Виртуальная машина Java (JVM)
- Трансляция, интерпретация и компиляция
- JIT-компиляция
- JDK и его структура
- Команды JDK: javac, java, appletviewer, jar (en10)
- Их использование и параметры
- Поиск и загрузка классов
- Создание и запуск первого приложения на Java
- Выход из программы и завершения ее работы
- Использование IDE Eclipse/NetBeans/Intellij IDEA для создания и выполнения программ
Типы данных и основные операции с ними
- Алфавит языка
- Комментарии
- Ключевые слова
- Типы данных: простые(примитивные) и по ссылке
- Идентификаторы, выбор имен идентификаторов
- Переменные и константы
- Объявления и инициализация переменных
- Область видимости и время жизни переменных
- Операторы
- Операции: арифметические, присваивания, отношения и логические
- Преобразование и приведение числовых типов
- Приоритет операций
- Использование круглых скобок
Поток управления
- Составной оператор (блок)
- Условный оператор и его виды
- Оператор switch
- Циклы: for, while, do while
- Бесконечные циклы
- Прерывание потока управления, метки
- Оператор goto и причины почему его не следует применять
Массивы
- Объявления и инициализация массивов, в т.ч. анонимных
- Линейные массивы
- Итерация по элементам массива
- Массивы и присвоения
- Передача и возврат массивов в/из методов
- Копирование массивов
- Класс Arrays: заполнение, сравнение элементов и их сортировка
- Поиск в массивах
- Многомерные массивы, «неравные» массивы
- Методы: аргументы переменной длины
- Параметры командной строки
Строки
- Класс String. Неизменные объекты
- Хранение строк в памяти
- Основные операции класса String (создание, конкатенация, сравнение, поиск символов и подстрок в строках и др.). Преобразование простых типов данных
- Разбивка строк: класс StringTokenizer. Переменные объекты: классы StringBuffer и StringBuilder
- Основные методы. StringBuffer vs StringBuilder
Введение в объектно-ориентированное программирование. Объекты и классы
- Поля и методы (определение, синтаксис объявления)
- Спецификаторы доступа public и private
- Поля классов: инициализация явная и по умолчанию, спецификатор final и константы
- Доступ к полям и методам
- Методы: параметры (ссылки и простые типы) и возвращаемые, использование set и get- методов, перезагрузки методов, правила перезагрузки
- Объектная модель. Основные положения: абстрагирование, инкапсуляция, модульность, иерархия
- Диаграммы классов UML.
- Объекты и классы. Объекты. Определение (с примерами). Состояние. Поведение.
- Конструкторы: конструкторы по умолчанию, вызов одного конструктора из другого
- Блоки инициализации
- Статические поля и методы: инициализация константы, статические блоки инициализации. Использование this для доступа к членам класса
- Сбор мусора и удаления объектов
Отношение между объектами
- Зависимости, их разновидности
- Обобщение
- Ассоциации
- Реализации
- Связи, их множественность
Наследование и полиморфизм
- Наследование и полиморфизм как инструмент создания ПО. Суперкласс и подклассы, отношение обобщения, наследование в Java. Вызов конструкторов суперклассов, порядок вызовов. Ключевое слово super ()
- Переопределение методов, правила переопределения. Наследование и статические поля и методы классов. Абстрактные классы и методы, – понятие, вызов конструкторов, реализация методов в субклассы
- Интерфейсы. «Множественное» наследование. Определение и реализация интерфейсов. Расширение интерфейсов. Композиция как альтернатива множественному наследованию
- Полиморфизм. Иерархия наследования
- Преобразование и приведение типов. Использование instanceof. Отказ от наследования: терминальные (final) методы и классы. Включение как альтернатива множественному наследованию
- Пакеты. Вложенность пакетов. Повторное использование кода и пакеты. Защита доступа.
- Импорт: классов, статических методов и полей
Класс Object
- Глобальный суперкласс Object
- Методы equals (), hashCode (), toString (), finalize (), clone () и др
- Правила реализации equals () и hashCode ()
- Интерфейс Cloneable и его реализация
- Клонирование: поверхностное и глубокое
Внутренние классы
- Синтаксис объявления
- Создание объектов внутренних классов
- Поля и методы внутренних классов
- Вложенность внутренних классов и доступ к членам внешних классов
- Ссылка this во внутреннем классе
- Доступ к полям и методам внешнего класса с внутреннего
- Внутренние классы и спецификаторы доступа
- Вложенные интерфейсы
- Применение внутренних классов
- Внутренние локальные классы (Method-LocalInnerClasses)
- Анонимные внутренние классы
- Вложенные (внутренние статические) классы (static nested classes)
- Создание экземпляров
- Доступ к экземпляру внешнего класса
- Компиляция программ с внутренними классами
Перечисление
- Перечисление как классы. Методы values (), valueof (), name (), ordinal ().
- Константы, конструкторы, методы и поля
- Перечисление и конструкция switch. Импорт членов перечислений
Работа с базами данных
- Основы построения реляционных баз данных.
- SQL
- Нормальные формы. Запросы SELECT, INSERT, UPDATE, DELETE
- JDBC
- Driver, Connection, Statement, ResultSet, PrepareStatement
Обработка ошибок и исключения
- Подходы к обработке ошибок времени выполнения
- Понятие исключения и исключительной ситуации
- Иерархия классов исключений в Java
- Контролируемые (что проверяются) и неконтролируемые (не проверяются) исключения
- Генерация исключительной ситуации и оператор throws
- Объявления контролируемых исключений, ключевое слово throws
- Throws и перезагрузки методов
- Перехват исключений
- Перехват «всех» исключений
- Обработка исключений
- Повторная генерация исключений
- Блок finally: освобождение ресурсов
- Создание собственной иерархии исключений
- Регистрация ошибок, логирования: логеры, уровень логгер, уровень сообщений, обработчики (объекты подкласса java.util.logging.Handler)
- Пример
Система ввода-вывода
- Иерархия классов потокового ввода-вывода:
- Потоки ввода/вывода, механизм работы с потоками, иерархия потокового ввода-вывода
- Субклассы FilterOutputStream и FilterInputStream
- Байтовые потоки
- Символьные потоки
- Класс File. Класс RandomAccessFile
- Сериализация и десериализация объектов: понятие, назначение, реализация
- Пример
Desktop-приложения
- SWING, AWT. Пример простого приложения с GUI
- Обработка событий
Классы коллекций
- Понятие абстрактного типа данных (АТД)
- Структуры данных: списки, стеки, множества, дерева, карты
- Обход коллекций: интерфейсы Iteratorта и ListIterator, цикл «foreach»
- Компараторы
- Класс Collections: поиск и сортировка элементов, заполнения, синхронизование представления, неизменные представления и др.
Знакомство с XML
- Понятие формальной корректности и допустимости.
- Парсинг, хранение состояние объектов
- Примеры
Многопоточность
- Понятие потока. Особенности параллельного выполнения
- Потоки-демоны
- Приоритеты потоков. Метод yield ()
- Состояние потока: создание потоков, -runnable и -runninig – потоки
Классы BigInteger и BigDecimal. Основные операции
- Документирование кода
- Включение комментариев
- Документирование пакетов
- Дескрипторы общего назначения
- Комментарии к классам, методам и полей
- Использование javadoc
Универсальные типы
- Параметризованные типы: классы и интерфейсы. Параметры типа
- Ограничения, наложенные на параметризованные типы: простые типы, инстанцирование, суперкласс, исключение.
- Параметризованные типы и JVM
Утилитные пакеты
- Форматирование и время java.util, java.time
- Файловая система, java.io, Externalizable, java.nio
- Неизменяемые объекты
- Сериализация и десериализация данных
Java 8. Анонимные функции. Stream API
Maven
- Автоматизация сборки Java-проектов. Декларативное описание проекта. Управление зависимостями. Артефакты jar, war, ear. Правила разработки собственных фреймворков и библиотек
- Ant the Java legacy build tool
- Maven POM
Модульное тестирование
- Правила и принципы
- TDD
- Дублеры
- Mockito & PowerMock
Java annotations
Java reflection
Advanced generics
- Причины улучшения подсистемы типов
- Raw Types
- Wildcards, <? super T>, <? extends T>
- Type Erasure
- Получение информации о типе generic в runtime
- Дообработка собственной коллекции
Advanced collections
- Data Structure Complexity
- WeakHashMap и другие
- Сторонние библиотеки коллекций
Advanced multithreading / concurrency
- Низкоуровневый API
- Waiting/blocked/sleeping-потоки; состояние потока “dead”
- Получение результатов выполнения многопоточных вычислений. Метод join()
- Синхронизация: синхронизация методов. Синхронизационные блоки.
- Блокирование. Взаимодействие потоков (Thread Interaction)
- Синхронизация потоков, взаимодействие потоков, шаблон “Producer-Consumer”
- Особенность реализации volatile
- Java Memory Model (JMM)
- Публикация объектов
- Высокоуровневый API
- Библиотека java.util.concurrent
Advanced OOP
- SOLID (базовые принципы объектно-ориентированного программирования)
- Dependency injection (DI) and Inversion of control (IoC)
Design patterns
JRE security, JVM internals
- Платформы, архитектура, байт-код, ClassLoader, garbage collector, средства JVM для защищенного выполнения кода
- Sandbox
- Memory Management
- Performance Optimization
- Роль JAAS
Desktop-приложения: технология javafx
Spring
- Inversion of Control
- Доступ к данным
- Управление транзакциями
Работа с XML и JSON
- Потоковый анализ на основе SAX. Анализ на основе DOM
- Генерация Java-классов по схеме
- Валидация. JSON
Введение SQL
- DDL & DML
- Primary Key и Foreign Key
- SQL Types
- JOINs
- Database Indexes
JDBC
- Пул соединений
- Data Access Object
Знакомство с Lombok и Log4j
Экзамен. Защита программного проекта
Как составить резюме и пройти собеседование
- Структура резюме
- Часто задаваемые вопросы
- Как вести себя на собеседовании
- Основные ошибки на собеседовании
- Урок английского языка №1
- Урок английского языка №2
- Урок поиска работы
Минимальные требования:
- Вы — новичок и хотите освоить язык Java как можно скорее
- Вы хотите уйти с надоевшей работы, чтобы освоить мир ІТ
- Вы разработчик, но хотите сменить направление работы
- Вы самоучка, но понимаете, что полученных знаний недостаточно
Лекторы:
Курс Java Pro в Ташкенте
* Указанные скидки не суммируются с другими действующими акциями и специальными предложениями. Если у Вас возникли вопросы, обращайтесь за консультацией к нашим менеджерам!