Java — язык программирования, который занимает первое место по популярности. Он востребованный, универсальный и с большим комьюнити: если у новичка возникают проблемы, ему всегда помогут быстро найти решение. Java используется для разработки больших систем. У него простой код, который могут читать другие разработчики, но при этом он реализовывает сложные архитектурные решения.
Вы будете создавать крутые и сложные проекты, используя популярный язык Java.
Программа курса рассчитана на комплексное освоение языка Java, его синтаксиса и возможностей, практических навыков и теоретических знаний по написанию как простых приложений, так и более серьезных проектов. Таким образом вы сможете применять знания в таких более узких направлениях, как разработка мобильных программ или веб-приложений.
Длительность курса 111 часов (37 занятий). Занятия проходят в вечернее время 2-3 раза в неделю с 19:00 до 22:00 (либо с 20:00 до 23:00).
В процессе обучения вы научитесь:
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
Урок поиска работы
Сертификат Учебного центра Softline об окончании курса и справка об обучении установленного образца: