Основная программа

В течение двух лет студенты получают знания о процессе проектирования и разработки высоконагруженных Java приложений. На проекте используется балльно-рейтинговая система. Контроль производится в течение семестра по результатам выполнения домашних заданий. В конце программы студенты защищают свой проект.

Только для студентов СПбПУ

  • Первый
  • Второй
  • Третий
  • Четвертый
  • Углубленное программирование на Java
    16 занятий, 16 академических часов
  • Алгоритмы и структуры данных
    13 занятий, 13 академических часов
  • Фронтенд-разработка
    11 занятий, 11 академических часов

О курсе «Углубленное программирование на Java» (Осень 2019)

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

 

График занятий в вузе – три дня в неделю с 18:00 до 21:00.

Занятия
    1. О программе курса. Введение в язык, среда программирования, основные конструкции языка.

      Введение в язык. История развития Java. Основные особенноссти платформы Java. JDK vs JRE, java, javac. Поставщики Java. Самый простой способ установки java. Что нового в Java 9-12. Будущее Java и основные проблемы.



      Презентации курса

       
    2. Классы и объекты, статические методы и поля.

      Введение в ООП. Применение предопределенных классов. Определение собственных классов. Статические методы и поля. Параметры методов. Конструирование объектов. Пакеты. Путь к классам. Комментарии и документирование.



      Презентации курса
    3. Инкапусляция и наследование. Интерфейсы, полиморфизм.

      Уровни доступа к членам класса.
      Классы, суперклассы и подклассы. Класс Object. equals, hashCode, toString. Объектные оболочки и boxing/unboxing. varargs. enum. Основы обработки исключений.
      Интерфейсы. Клонирование объектов. callback. Внутренние классы.
      Полиморфизм. Полиморфизм в Java. Принципы ООП.
    4. Внутренние и вложенные классы.

      Внутренние классы. Статически вложенные классы. Локальные классы. Анонимные классы.
    5. Параметризованные типы. Коллекции. Итераторы.

      Generics. Обообщенные классы и обобщенные методы. Ограничения на переменные типа. Generic-код и JVM. Ограничения и пределы в Generics. Наследование и Generics. Коллекции. Интерфейсы коллекций. Конкретные коллекции. Итераторы. Архитектура коллекций.
    6. Функционально программирование. Лямбда-выражения. Stream API

      Функциональные интерфейсы. Лямбда-выражения. Stream API. Spliteraror. Модель исполнения. Многопоточные Streams. Промежуточные и терминальные операции. ForkJoinPool.
    7. Reflection и аннотации. Unit-тестирование.

      Reflection. Ограничения на Reflection. Security Manager.
      Аннотации. Типы аннотаций.
      JUnit, Mock/Stub. Библиотека Mockito.
    8. Неблокирующий ввод/вывод. Шаблоны проектирования и рефакторинг

      Неблокирующий ввод/вывод. Шаблоны проектирования и рефакторинг
    1. Логгирование

      Логгирование. Встроенные возможности. log4j, self4j.

       
      <div id="gtx-trans" style="position: absolute; left: 9px; top: 58px;">
      <div class="gtx-trans-icon"> </div>
      </div>
    2. Работа с файлами. Потоки байтов

      Класс File. Класс Path. Класс Files и Paths. Байтовые потоки ввода и вывода
    3. Потоки символов. Логирование

      Потоки символов. Стандартные потоки ввода и вывода. Логирование. JUL. slf4j
    4. Потоки, синхронизация, взаимоблокировки. Volatile и основные шаблоны многопоточного программирования

      Потоки. Состояния потоков. Критическая секция. Ключевая проблема многопоточности. Synchonized. Понятие о производительности. Пропускная способности и Latency. Закон Амдала.
    5. Продвинутые шаблоны многопоточного программирования

      Пул потоков. Производитель/Потребитель. Очереди. Стеки.
    6. Блокирующий ввод/вывод

      Потоки байт. Потоки символов. Файловая система. Старый API. NIO и новый API. Сериализация и Десериализация
    7. Профилирование Java программ, оптимизация и представление различных конструкций языка в байткоде

      Профилирование Java программ, оптимизация и представление различных конструкций языка в байткоде
    8. Итоговое занятие. Работа с байткодом JVM. Java Agent. RPC в Java

      Работа с байткодом JVM. Java Agent. RPC в Java
Преподаватели
Тимур Насрединов
Александр Галкин
Результат

умение использовать принципы ООП с учетом специфики Java; умение использовать стандартную библиотеку для работы с функциями ввода/вывода; умение писать unit-test'ы для Java приложений; умение строить UI Java-приложения; умение анализировать код Java-приложения с помощью Reflection API.