• A
  • A
  • A
  • АБВ
  • АБВ
  • АБВ
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта

Java Programming

2019/2020
Учебный год
ENG
Обучение ведется на английском языке
4
Кредиты

Преподаватель

Course Syllabus

Abstract

Язык программирования Java был разработан в начале 90-х гг. XX века в компании Sun Microsystems. Основным требованием к разрабатываемому языку была возможность выполнять код на различных аппаратных платформах без его перекомпиляции и пересборки. Язык в значительной степени унаследовал синтаксис C++, но имеет упрощенную по сравнению с С++ объектную модель и меньше возможностей напрямую работать с аппаратной частью. Приложения Java компилируются в специальный промежуточный машинный код (байт-код) и запускаются под управлением виртуальной Java-машины. Помимо этого к основным особенностям языка можно отнести: полную объектную ориентированность, встроенный «сборщик мусора», дополнительные средства для повышения надежности и стабильности кода.
Learning Objectives

Learning Objectives

  • Целями освоения данной дисциплины являются как закрепление теоретических знаний в области объектно-ориентированного программирования, так и получение практических навыков программирования на языке JAVA с использованием стандартных средств раз-работки.
Expected Learning Outcomes

Expected Learning Outcomes

  • Выделять Java среди других языков программирования
  • Называть основные свойства и отличительные особенности Java
  • Применять синтаксис Java при разработке программ
  • Создавать классы, методы и интерфейсы на языке Java
  • Проверять возникновение исключений в Java-коде
  • Применять базовую библиотеку ввода-вывода
  • Применять параметризацию при написании Java-программ
  • Применять структуру коллекций при написании Java-кода
  • Применять библиотеку классов Java при разработке программ
  • Создавать потоки, решать прикладные задачи с помощью многопоточности
  • Применять правильные шаблоны при проектировании Java-программ
  • Применять библиотеку RxJava при разработке Java-программ
  • Понимать механизм аннотаций и рефлексии в Java
  • Применять бибилиотеку Stream API и лямбда-выражения при разработке Java-программ
Course Contents

Course Contents

  • Введение
    Как и почему появился язык Java? Основные ключевые особенности языка (кросс-платформенность, байткод, полная объектная ориентированность, надежность и безопасность кода) Основные инструменты разработки на Java (JSDK, Eclipse, NetBeans).
  • Синтаксис Java
    Идентификаторы. Константы. Комментарии. Ключевые слова. Блоки кода. Простые типы данных (byte, short, int, long, float, double, char, boolean). Объявление и инициализация переменных. Время жизни и область действия переменных. Автоматическое и явное преобразование типов. Массивы. Операции. Управляющие операторы (if, switch, while, do while, for, break, continue, return).
  • Классы, интерфейсы, пакеты
    Создание объектов. Конструкторы. Ссылочные переменные. Методы. Перегрузка методов. Модификатор static. Ссылочная переменная this. Вложенные классы. Анонимные вложенные классы. Наследование. Порядок вызова конструкторов при наследовании. Динамическая диспетчеризация ссылок. Переопределение методов. Абстрактные методы и классы. Интерфейсы. Объявление и реализация интерфейсов. Модификатор final. Класс Object. Аннотации. Перечисления. Пакеты. Уровни доступа к данным с учетом пакетов. Импортирование имен классов. Архитектура Java-программы.
  • Ввод-вывод
    Байтовые и символьные потоки. Классы InputStream и OutputStream и их непосредственные подклассы. Классы Reader и Writer и их непосредственные подклассы. Буферизованный ввод-вывод. Класс File, работа с файловой системой. Сериализация.
  • Обработка исключений
    Исключения в Java. Ключевые слова: try, catch, finally. Стек вызовов. Типы исключений (обязательные и необязательные к обработке). Ручное «выбрасывание» исключений (throw, throws). Условие “Catch or specify”.
  • Параметризация типов в Java
    Параметризация классов. Параметризация методов. Ограниченная параметризация. Подтипизация. Универсальные символы (wildcards) Очистка типов.
  • Библиотека классов Java
    Оболочки примитивных типов. Управление памятью. Класс System. Загрузка классов. Классы String и StringBuffer. Другие полезные классы(java.lang).
  • Коллекции
    Структура коллекций. Интерфейсы: Collection, List, Set, SortedSet, Map, SortedMap. Абстрактные классы-коллекции. Итераторы и компараторы. Списки: ArrayList, LinkedList. Отображения: HashMap, TreeMap. Множества: HashSet, TreeSet. Классы: Vector, Arrays, HashTable. Алгоритмы в коллекциях и их эффективность.
  • Многопоточность в Java
    Создание и завершение потоков в Java. Взаимодействие потоков и синхронизация. Мониторы и wait-set блоки. Пакет java.concurrency (Executors, Atomics, Queues, Locks, Concurrent collections)
  • Шаблоны проектирования в Java
    Понятие о шаблонах проектирования. Смысл использования шаблонов. Виды шаблонов. Примеры на языке Java.
  • Библиотека RxJava
    Observables. Subscribers. Schedulers. Operators.
  • Аннотации и рефлексия в Java
    Механизм аннотаций. Reflection API
  • Потоки и лямбда-выражения.
    Функциональные интерфейсы. Лямбда-выражения. Stream API. Конвейерные и терминальные потоки.
Assessment Elements

Assessment Elements

  • non-blocking Практические самостоятельные работы
  • Partially blocks (final) grade/grade calculation Тестовая работа
Interim Assessment

Interim Assessment

  • Interim assessment (4 module)
    0.6 * Практические самостоятельные работы + 0.4 * Тестовая работа
Bibliography

Bibliography

Recommended Core Bibliography

  • - Вязовик Н.А. — Программирование на Java - Национальный Открытый Университет "ИНТУИТ" - 2016 - ISBN: - Текст электронный // ЭБС Лань - URL: https://e.lanbook.com/book/100405
  • - Кишори Шаран — Java 9. Полный обзор нововведений. Для быстрого ознакомления и миграции - Издательство "ДМК Пресс" - 2018 - ISBN: 978-5-97060-575-2 - Текст электронный // ЭБС Лань - URL: https://e.lanbook.com/book/108130
  • Пруцков, А.В. Программирование на языке Java. Введение в курс с примерами и практическими заданиями : учебник / А.В. Пруцков. — М. : КУРС, 2018.- 208 с. - ISBN 978-5-906923-51-6. - Режим доступа: http://znanium.com/catalog/product/1017180

Recommended Additional Bibliography

  • - Нуркевич Т., Кристенсен Б. — Реактивное программирование с применением RxJava - Издательство "ДМК Пресс" - 2017 - ISBN: 978-5-97060-496-0 - Текст электронный // ЭБС Лань - URL: https://e.lanbook.com/book/100907
  • - Уорбэртон Р. — Лямбда-выражения в Java 8. Функциональное программирование – в массы - Издательство "ДМК Пресс" - 2014 - ISBN: 978-5-94074-919-6 - Текст электронный // ЭБС Лань - URL: https://e.lanbook.com/book/93568