Поток 2016го года. Прогресс потока.
- Лектор - Федор Лаврентьев; telegram - fediq
- Группы 594 и 595 - Антон Зверев
- Группа 596 - Даниил Анастасьев
- Группа 597 - Александр Кисленко; telegram - ignorer
- Калькулятор - дедлайн 14.10.2016 23:59 MSK
- Key-value storage - дедлайн 31.10.2016 23:59 MSK
- Оптимизация производительности
- мягкий дедлайн: 21.11.2016 23:59 MSK (после его наступления можно получить максимум 1 балл)
- жесткий дедлайн: 28.11.2016 23:59 MSK
- REST API калькулятор - черновик!, дедлайна нет
- Если на момент дедлайна у преподавателя претензий к коду нет, задача считается принятой, за неё даётся 2 балла.
- Если на момент дедлайна тесты проходятся успешно, но у преподавателя есть замечания, задача считается сделанной, за неё дается 1 балл.
- Если на момент дедлайна тесты не проходятся или же pull request вообще не оформлен, задача считается не сделанной, за неё дается 0 баллов.
- Основы
- Объекты
- Классы
- Обобщения и лямбды
- Проектирование
- Многопоточность
- Бонус - головоломки
- Сборка и компоновка приложения (из курса Промышленное программирование)
- Распределенные системы (из курса Промышленное программирование)
- Реляционные базы данных (из курса Промышленное программирование)
- Кей Хорстманн - Java. Библиотека профессионала. Том 1. Основы (десятое издание).
- Кэти Сьерра и др - Head First. Изучаем Java.
- Джошуа Блох - Java. Эффективное программирование.
- Brian Goetz et al - Java Concurrency in Practice.
- Эрих Гамма и др - Приемы объектно-ориентированного проектирования.
- Эрик Фриман и др - Head First. Паттерны проектирования.
- Роберт Мартин - Чистый код.
- Eric Redmond et al - Seven Databases in Seven Weeks.
- Craig Walls - Spring in Action, Fourth Edition
- Oracle Java Code Conventions.
- Maven: The Definitive Guide.
- Spring Framework Reference Documentation.
Стараемся придерживаться google-кодстайла.
Проще всего этого можно добиться, скачав настройки для кодстайла. Посмотреть, как их устанавливать, можно здесь.
После этого не забываем использовать кнопку Code/Reformat Code, хотя бы перед коммитом.
Обязательным является прохождение проверки Maven Checkstyle. Она происходит при запуске всех тестов (например, с помощью mvn test
или по клавише test во вкладке Maven Projects).
- Java vs C++; Работа с исключениям и I/O (примеры кода, доп семинар)
- Паттерны проектирования (коллекция паттернов)
- Строки и обёртки над примитивными типами в Java. Антипаттерны (коллекция антипаттернов)
- Повторное использование кода в Java. Многопоточность в Java (видео: Java Memory Model)
- Средства синхронизации в Java (примеры кода)
- Рефлексия и сборка мусора в Java (примеры кода, хорошая статья про ссылки в Java)
- Lambdas & Streams (примеры кода, видео: Get a Taste of Lambdas and Get Addicted to Streams)
- Spring Framework Core (примеры кода)
- REST & DB (примеры кода)
- MVC (примеры: Spring MVC, WebSockets + JS-клиент, игрушечный MVC с Observer)
- Повторение пройденного (видео: JVM: краткий курс общей анатомии)
- Видео: Студенческий синдром: почему мы все делаем в последний момент?
- Видео: Get Past the Syntax, the Real Scare's in the Semantics
- Видео: Core Design Principles for Software Developers
- Предпосылки к появлению Java
- Примитивы
- java.lang.Object
- Классы, абстрактные классы, интерфейсы, внутренние классы, анонимные классы
- Наследование, переопределение методов
- Модификаторы доступа, инкапсуляция
- Обобщения (Generics)
- Лямбда-выражения
- Пакет java.util.Collections
- Компоновка программного кода
- Многослойная архитектура
- Порождающие шаблоны проектирования
- Структурные шаблоны проектирования
- Поведенческие шаблоны проектирования
- Потоки в JVM
- Критические секции, synchronized
Java Memory Model- Паттерны организации многопоточного кода
- Проблемы многопоточности
Сборщик мусораСтратегии сборки мусораСлабые ссылки- Пределы нагрузки JVM
- Оптимизация кода
ПрофайлингТюнинг параметров JVMReflection APIAspect-Oriented ProgrammingAbstract Syntax Tree- Фреймворки для компоновки сложных приложений
- Работа с SQL из Java
- HTTP в Java
- Парадигма REST
- Форматы сериализации
- Сравнение Java с другими языками
- Мотивация при выборе языка/фреймворка/сервиса