Курс Java Pro

Старт обучения
Дату уточните у администрации
111 час. по 2-3 раза в неделю

Описание курса

Старт курса — дату уточните у администрации.

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

 

Широкое комьюнити, которое сформировалось за 10-летия существования языка, всегда поможет найти правильное решение в той или иной ситуации.

 

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

После курса вы сможете:

  • Писать на языке Java различные проекты
  • Создавать свой загрузчик классов
  • Разрабатывать небольшие IoC-контейнеры (маленький Spring)
  • Писать модульные тесты и работать по TDD
  • Эффективно пользоваться английским для общения с клиентами и коллегами
  • Грамотно презентовать себя работодателю

Программа курса:

1. Общая характеристика языка Java

  • История языка Java
  • Байт-код
  • Виртуальная машина Java (JVM)
  • Трансляция, интерпретация и компиляция
  • JIT-компиляция
  • JDK и его структура
  • Команды JDK: javac, java, appletviewer, jar (en10)
  • Их использование и параметры
  • Поиск и загрузка классов
  • Создание и запуск первого приложения на Java
  • Выход из программы и завершения ее работы
  • Использование IDE Eclipse/NetBeans/Intellij IDEA для создания и выполнения программ

2. Типы данных и основные операции с ними

  • Алфавит языка
  • Комментарии
  • Ключевые слова
  • Типы данных: простые(примитивные) и по ссылке
  • Идентификаторы, выбор имен идентификаторов
  • Переменные и константы
  • Объявления и инициализация переменных
  • Область видимости и время жизни переменных
  • Операторы
  • Операции: арифметические, присваивания, отношения и логические
  • Преобразование и приведение числовых типов
  • Приоритет операций
  • Использование круглых скобок

3. Поток управления

  • Составной оператор (блок)
  • Условный оператор и его виды
  • Оператор switch
  • Циклы: for, while, do while
  • Бесконечные циклы
  • Прерывание потока управления, метки
  • Оператор goto и причины почему его не следует применять

4. Массивы

  • Объявления и инициализация массивов, в т.ч. анонимных
  • Линейные массивы
  • Итерация по элементам массива
  • Массивы и присвоения
  • Передача и возврат массивов в/из методов
  • Копирование массивов
  • Класс Arrays: заполнение, сравнение элементов и их сортировка
  • Поиск в массивах
  • Многомерные массивы, «неравные» массивы
  • Методы: аргументы переменной длины
  • Параметры командной строки

5. Строки

  • Класс String. Неизменные объекты
  • Хранение строк в памяти
  • Основные операции класса String (создание, конкатенация, сравнение, поиск символов и подстрок в строках и др.). Преобразование простых типов данных
  • Разбивка строк: класс StringTokenizer. Переменные объекты: классы StringBuffer и StringBuilder
  • Основные методы. StringBuffer vs StringBuilder

6. Основы работы с системой контроля версий


7. Введение в объектно-ориентированное программирование. Объекты и классы

  • Поля и методы (определение, синтаксис объявления)
  • Спецификаторы доступа public и private
  • Поля классов: инициализация явная и по умолчанию, спецификатор final и константы
  • Доступ к полям и методам
  • Методы: параметры (ссылки и простые типы) и возвращаемые, использование set и get- методов, перезагрузки методов, правила перезагрузки
  • Объектная модель. Основные положения: абстрагирование, инкапсуляция, модульность, иерархия
  • Диаграммы классов UML.
  • Объекты и классы. Объекты. Определение (с примерами). Состояние. Поведение.
  • Конструкторы: конструкторы по умолчанию, вызов одного конструктора из другого
  • Блоки инициализации
  • Статические поля и методы: инициализация константы, статические блоки инициализации. Использование this для доступа к членам класса
  • Сбор мусора и удаления объектов

8. Отношение между объектами

  • Зависимости, их разновидности
  • Обобщение
  • Ассоциации
  • Реализации
  • Связи, их множественность

9. Наследование и полиморфизм

  • Наследование и полиморфизм как инструмент создания ПО. Суперкласс и подклассы, отношение обобщения, наследование в Java. Вызов конструкторов суперклассов, порядок вызовов. Ключевое слово super ()
  • Переопределение методов, правила переопределения. Наследование и статические поля и методы классов. Абстрактные классы и методы, – понятие, вызов конструкторов, реализация методов в субклассы
  • Интерфейсы. «Множественное» наследование. Определение и реализация интерфейсов. Расширение интерфейсов. Композиция как альтернатива множественному наследованию
  • Полиморфизм. Иерархия наследования
  • Преобразование и приведение типов. Использование instanceof. Отказ от наследования: терминальные (final) методы и классы. Включение как альтернатива множественному наследованию
  • Пакеты. Вложенность пакетов. Повторное использование кода и пакеты. Защита доступа.
  • Импорт: классов, статических методов и полей

10. Класс Object

  • Глобальный суперкласс Object
  • Методы equals (), hashCode (), toString (), finalize (), clone () и др
  • Правила реализации equals () и hashCode ()
  • Интерфейс Cloneable и его реализация
  • Клонирование: поверхностное и глубокое

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

  • Синтаксис объявления
  • Создание объектов внутренних классов
  • Поля и методы внутренних классов
  • Вложенность внутренних классов и доступ к членам внешних классов
  • Ссылка this во внутреннем классе
  • Доступ к полям и методам внешнего класса с внутреннего
  • Внутренние классы и спецификаторы доступа
  • Вложенные интерфейсы
  • Применение внутренних классов
  • Внутренние локальные классы (Method-LocalInnerClasses)
  • Анонимные внутренние классы
  • Вложенные (внутренние статические) классы (static nested classes)
  • Создание экземпляров
  • Доступ к экземпляру внешнего класса
  • Компиляция программ с внутренними классами

12. Перечисление

  • Перечисление как классы. Методы values (), valueof (), name (), ordinal ().
  • Константы, конструкторы, методы и поля
  • Перечисление и конструкция switch. Импорт членов перечислений

13. Работа с базами данных

  • Основы построения реляционных баз данных.
  • SQL
  • Нормальные формы. Запросы SELECT, INSERT, UPDATE, DELETE
  • JDBC
  • Driver, Connection, Statement, ResultSet, PrepareStatement

14. Обработка ошибок и исключения

  • Подходы к обработке ошибок времени выполнения
  • Понятие исключения и исключительной ситуации
  • Иерархия классов исключений в Java
  • Контролируемые (что проверяются) и неконтролируемые (не проверяются) исключения
  • Генерация исключительной ситуации и оператор throws
  • Объявления контролируемых исключений, ключевое слово throws
  • Throws и перезагрузки методов
  • Перехват исключений
  • Перехват «всех» исключений
  • Обработка исключений
  • Повторная генерация исключений
  • Блок finally: освобождение ресурсов
  • Создание собственной иерархии исключений
  • Регистрация ошибок, логирования: логеры, уровень логгер, уровень сообщений, обработчики (объекты подкласса java.util.logging.Handler)
  • Пример

15. Система ввода-вывода

  • Иерархия классов потокового ввода-вывода:
  • Потоки ввода/вывода, механизм работы с потоками, иерархия потокового ввода-вывода
  • Субклассы FilterOutputStream и FilterInputStream
  • Байтовые потоки
  • Символьные потоки
  • Класс File. Класс RandomAccessFile
  • Сериализация и десериализация объектов: понятие, назначение, реализация
  • Пример

16. Desktop-приложения

  • SWING, AWT. Пример простого приложения с GUI
  • Обработка событий

17. Классы коллекций

  • Понятие абстрактного типа данных (АТД)
  • Структуры данных: списки, стеки, множества, дерева, карты
  • Обход коллекций: интерфейсы Iteratorта и ListIterator, цикл «foreach»
  • Компараторы
  • Класс Collections: поиск и сортировка элементов, заполнения, синхронизование представления, неизменные представления и др.

18. Знакомство с XML

  • Понятие формальной корректности и допустимости.
  • Парсинг, хранение состояние объектов
  • Примеры

19. Многопоточность

  • Понятие потока. Особенности параллельного выполнения
  • Потоки-демоны
  • Приоритеты потоков. Метод yield ()
  • Состояние потока: создание потоков, -runnable и -runninig – потоки

20. Классы BigInteger и BigDecimal. Основные операции

  • Документирование кода
  • Включение комментариев
  • Документирование пакетов
  • Дескрипторы общего назначения
  • Комментарии к классам, методам и полей
  • Использование javadoc

21. Универсальные типы

  • Параметризованные типы: классы и интерфейсы. Параметры типа
  • Ограничения, наложенные на параметризованные типы: простые типы, инстанцирование, суперкласс, исключение.
  • Параметризованные типы и JVM

22. Утилитные пакеты

  • Форматирование и время java.util, java.time
  • Файловая система, java.io, Externalizable, java.nio
  • Неизменяемые объекты
  • Сериализация и десериализация данных

23. Java 8. Анонимные функции. Stream API


24. Maven

  • Автоматизация сборки Java-проектов. Декларативное описание проекта. Управление зависимостями. Артефакты jar, war, ear. Правила разработки собственных фреймворков и библиотек
  • Ant the Java legacy build tool
  • Maven POM

25. Модульное тестирование

  • Правила и принципы
  • TDD
  • Дублеры
  • Mockito & PowerMock

26. Java annotations


27. Java reflection


28. Advanced generics

  • Причины улучшения подсистемы типов
  • Raw Types
  • Wildcards, <? super T>, <? extends T>
  • Type Erasure
  • Получение информации о типе generic в runtime
  • Дообработка собственной коллекции

29. Advanced collections

  • Data Structure Complexity
  • WeakHashMap и другие
  • Сторонние библиотеки коллекций

30. Advanced multithreading / concurrency

  • Низкоуровневый API
  • Waiting/blocked/sleeping-потоки; состояние потока “dead”
  • Получение результатов выполнения многопоточных вычислений. Метод join()
  • Синхронизация: синхронизация методов. Синхронизационные блоки.
  • Блокирование. Взаимодействие потоков (Thread Interaction)
  • Синхронизация потоков, взаимодействие потоков, шаблон “Producer-Consumer”
  • Особенность реализации volatile
  • Java Memory Model (JMM)
  • Публикация объектов
  • Высокоуровневый API
  • Библиотека java.util.concurrent

31. Advanced OOP

  • SOLID (базовые принципы объектно-ориентированного программирования)
  • Dependency injection (DI) and Inversion of control (IoC)

32. Design patterns


33. JRE security, JVM internals

  • Платформы, архитектура, байт-код, ClassLoader, garbage collector, средства JVM для защищенного выполнения кода
  • Sandbox
  • Memory Management
  • Performance Optimization
  • Роль JAAS

34. Desktop-приложения: технология javafx


35. Spring

  • Inversion of Control
  • Доступ к данным
  • Управление транзакциями

36. Работа с XML и JSON

  • Потоковый анализ на основе SAX. Анализ на основе DOM
  • Генерация Java-классов по схеме
  • Валидация. JSON

37. Введение SQL

  • DDL & DML
  • Primary Key и Foreign Key
  • SQL Types
  • JOINs
  • Database Indexes

38. JDBC

  • Пул соединений
  • Data Access Object

39. Знакомство с Lombok и Log4j


40. Экзамен. Защита программного проекта


41. Как составить резюме и пройти собеседование

  • Структура резюме
  • Часто задаваемые вопросы
  • Как вести себя на собеседовании
  • Основные ошибки на собеседовании
  • Урок английского языка №1
  • Урок английского языка №2
  • Урок поиска работы

Минимальные требования:

  • Вы — новичок и хотите освоить язык Java как можно скорее
  • Вы хотите уйти с надоевшей работы, чтобы освоить мир ІТ
  • Вы разработчик, но хотите сменить направление работы
  • Вы самоучка, но понимаете, что полученных знаний недостаточно

Лекторы:


Курс Java Pro в Ташкенте

* Указанные скидки не суммируются с другими действующими акциями и специальными предложениями. Если у Вас возникли вопросы, обращайтесь за консультацией к нашим менеджерам!

spinner-it