<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://www.wikicshse.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9F%D1%80%D0%BE%D0%BC%D1%8B%D1%88%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0_Java</id>
	<title>Промышленное программирование на Java - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://www.wikicshse.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9F%D1%80%D0%BE%D0%BC%D1%8B%D1%88%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0_Java"/>
	<link rel="alternate" type="text/html" href="https://www.wikicshse.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%BC%D1%8B%D1%88%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0_Java&amp;action=history"/>
	<updated>2026-06-06T13:51:46Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://www.wikicshse.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%BC%D1%8B%D1%88%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0_Java&amp;diff=1940&amp;oldid=prev</id>
		<title>imported&gt;Ekononova: add concurrency terms</title>
		<link rel="alternate" type="text/html" href="https://www.wikicshse.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%BC%D1%8B%D1%88%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0_Java&amp;diff=1940&amp;oldid=prev"/>
		<updated>2025-06-02T10:39:27Z</updated>

		<summary type="html">&lt;p&gt;add concurrency terms&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== О курсе ==&lt;br /&gt;
&lt;br /&gt;
=== Аннотация ===&lt;br /&gt;
&lt;br /&gt;
Java — один из самых популярных языков программирования. Он используется для широкого круга задач: разработки десктопных, мобильных и веб-приложений, серверной логики, высоконагруженных систем в сфере финансов, рекламы, мониторинга, банковской деятельности и многого другого. Специфицированная модель языка и управления памятью, а также огромное коммерческое и некоммерческое сообщество, поддерживающее открытые исходные коды платформы, позволяют создавать промышленные и безопасные приложения.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Лектор:&amp;#039;&amp;#039;&amp;#039; [https://www.hse.ru/staff/egorlitvinenko Литвиненко Егор Викторович]&lt;br /&gt;
&lt;br /&gt;
=== Цели освоения курса ===&lt;br /&gt;
&lt;br /&gt;
Основные знания и навыки, которые приобретаются на этом курсе:&lt;br /&gt;
&lt;br /&gt;
# Стандартные библиотеки JDK java.util.* (Collections, Stream API, etc.). &lt;br /&gt;
# Паттерны написания конкурентного потокобезопасного кода: как использовать паттерны блокировки из java.concurrency.* и других библиотек: locks, compare-and-swap, double-check-locking, non-blocking структуры и др.&lt;br /&gt;
# Виды и использование object pools (thread pools, connection pool, object pool).&lt;br /&gt;
# Системы сборки Java-приложений (Maven и/или Gradle).&lt;br /&gt;
# Java Input/Output Stream API, работа с файлами, NIO, ByteBuffer.&lt;br /&gt;
# Spring Framework.&lt;br /&gt;
# Взаимодействие с базами данных: Hibernate, Jakarta Persistence API.&lt;br /&gt;
# Виды бэкенд-серверов (Netty, Undertow, Vert.x и др.), серверов приложений (Tomcat EE, Glassfish, Wildfly и др.) и их применимость, оценка нагрузки приложений.&lt;br /&gt;
# Написать свой сервер с использованием GRPC, Spring Framework, Hibernate, и базы данных на выбор.&lt;br /&gt;
# Настройка JVM и garbage collectors.&lt;br /&gt;
# Инструменты отладки, профилирования и мониторинга Java приложений: IDE, MBeans, VisualVM, perf, async-profiler, log4j, logback, MAT, jstack, jmap, jps, Prometheus/Micrometer/OpenTelemetry.&lt;br /&gt;
&lt;br /&gt;
=== Пререквизиты курса (необязательные) ===&lt;br /&gt;
&lt;br /&gt;
Лучше знать один или несколько языков: Java, C++, C#, Python, Go, Rust. Основы синтаксиса рассматриваются, но в этом курсе не будет простых задач на усвоение основ языка. Упор на практические знания и применение языка Java.&lt;br /&gt;
&lt;br /&gt;
=== Технические требования ===&lt;br /&gt;
&lt;br /&gt;
Компьютер с JDK 17+ версии. IDE для разработки (IDEA CE, VS code, Eclipse, NetBeans). У преподавателя IDEA CE.&lt;br /&gt;
&lt;br /&gt;
== Понедельный план курса ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! № !! Тема лекции !! Тема семинара !! Кто готовит?&lt;br /&gt;
|-&lt;br /&gt;
| 1 || История, Использование, Статистика популярности, Создатель, WORA, Компиляция, Исполнение, C1/C2, Гарантии, Спецификации, Memory Model, Управление памятью, GC, Анатомия (JDK, JRE, JVM), Реализации JVM, Коммьюнити, Итоги, Hello world || Типы данных, управляющие конструкции, строки, операции || Егор Литвиненко&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Основы языка: Типы и управляющие конструкции, Пакеты, классы, объекты, наследование, Исключения || Система сборки проектов Maven || Егор Литвиненко&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Коллекции в Java || Знакомство с тестами, классами, исключениями, List, Map || Егор Литвиненко&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Функциональные интерфейсы, лямбды, ссылки на методы, введение в Stream API || Требования к ПО, Тестирование || Егор Литвиненко&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Параметризация типов, обобщения, специализации || Тестирование (продолжение), Логгирование, Примеры || Егор Литвиненко&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Servers, Web Servers, Application Servers и их применение в Java (Tomcat, Netty и т.д.) || Дебаг программ и инструменты диагностики верхнеуровневого уровня || Егор Литвиненко&lt;br /&gt;
|-&lt;br /&gt;
| 7 || Многопоточность и конкурентное программирование, Ч.1: примитивы, атомарные операции || Многопоточное программирование, Ч.1 || Егор Литвиненко&lt;br /&gt;
|-&lt;br /&gt;
| 8 || Многопоточность и конкурентное программирование, Ч.2: блокирующие/неблокирующие коллекции, пулы потоков, CompletableFuture, паттерны || Многопоточное программирование, Ч.2 || Егор Литвиненко&lt;br /&gt;
|-&lt;br /&gt;
| 9 || Многопоточность и конкурентное программирование, Ч.3: Закон Мура, Закон Амдала, USL, Java Memory Model, volatile, happens-before, program-order, sequential consistency || Многопоточное программирование, Ч.3 || Егор Литвиненко&lt;br /&gt;
|-&lt;br /&gt;
|10 || Annotations, Reflection API || CI &amp;amp; CD, Kafka || Егор Литвиненко&lt;br /&gt;
|-&lt;br /&gt;
|11 || Method Handles, Var Handles || Настройка Kafka, Kafka Producer и Consumer || Егор Литвиненко, все студенты&lt;br /&gt;
|-&lt;br /&gt;
|12 || IO, ByteBuffers, zero copy || Настройка Kafka, обзор Protobuf || Егор Литвиненко&lt;br /&gt;
|-&lt;br /&gt;
|13 || IoC, DI, Spring || Как написать свой сервис с нуля, Ч.1 || Егор Литвиненко&lt;br /&gt;
|-&lt;br /&gt;
|14 || SpringBoot, AOP, диагностика Spring, настройки, слоистая архитектура || Демо день + Как написать свой сервис с нуля, Ч.2 || Егор Литвиненко&lt;br /&gt;
|-&lt;br /&gt;
|15 || RDMBS, JDBC, DAO, JPA, Транзакции, ORM || Как написать свой сервис с нуля – Ч.3, разбор домашних заданий || Егор Литвиненко, все студенты&lt;br /&gt;
|-&lt;br /&gt;
|16 || RDMBS, JDBC, DAO, JPA, Транзакции, ORM, POJO || Разбор домашних заданий, семинарского проекта, использование AI в Java, Ч.1 || Егор Литвиненко&lt;br /&gt;
|-&lt;br /&gt;
|17 || JVM компиляция, bytecode, структура класса, кодогенерация, теория поколений GC || Демо день: итерация изменений семинарских проектов || Егор Литвиненко, все студенты&lt;br /&gt;
|-&lt;br /&gt;
|18 || Утилиты JDK: debugging, profiling, анализ памяти, Native Memory Tracking || Анализ JFR для Spring, AI в Java, Ч.2 || Егор Литвиненко&lt;br /&gt;
|-&lt;br /&gt;
|19 || Виды и опции настройки GC || Практика настройки GC, AI в Java, Ч.3 || Егор Литвиненко&lt;br /&gt;
|-&lt;br /&gt;
|20 || Демо день: лучшие ИДЗ || Демо день: финальная презентация проектов || Егор Литвиненко, все студенты&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Формы контроля ==&lt;br /&gt;
&lt;br /&gt;
=== Индивидуальное домашнее задание по лекциям ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Разработка сервиса для прогноза продаж&amp;#039;&amp;#039;&amp;#039;, предоставляющего &amp;#039;&amp;#039;&amp;#039;gRPC&amp;#039;&amp;#039;&amp;#039; и &amp;#039;&amp;#039;&amp;#039;REST API&amp;#039;&amp;#039;&amp;#039;, с интеграцией в &amp;#039;&amp;#039;&amp;#039;Kafka&amp;#039;&amp;#039;&amp;#039;.  &lt;br /&gt;
Задача сервиса — эмулировать прогнозирование продаж на основе истории заказов.&lt;br /&gt;
&lt;br /&gt;
Задание выдаётся на первом занятии. Объясняется, как можно начать работу, используя генераторы шаблонов для новых проектов.&lt;br /&gt;
&lt;br /&gt;
Домашнее задание рассчитано на весь семестр.&lt;br /&gt;
* Если задание выполнено — начисляется полный балл.&lt;br /&gt;
* Если не выполнено — 0 баллов.&lt;br /&gt;
* В случае просрочки — 0.5 балла.&lt;br /&gt;
* Доступно бонусное задание, позволяющее повысить итоговую оценку.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Максимальный балл: 2.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Готовит Егор Литвиненко, выдается до 09.03.&lt;br /&gt;
&lt;br /&gt;
=== 5 домашних заданий в рамках лекций ===&lt;br /&gt;
&lt;br /&gt;
Каждое домашнее задание по 0,4 балла. Суммарно 2 балла.&lt;br /&gt;
&lt;br /&gt;
Готовит Егор Литвиненко, выдается по графику: примерно каждые две недели с начала занятий.&lt;br /&gt;
&lt;br /&gt;
=== Командный проект по семинарам ===&lt;br /&gt;
&lt;br /&gt;
Команды и тема проекта формируются до &amp;#039;&amp;#039;&amp;#039;13.02&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
* Если задание выполнено — начисляется полный балл.  &lt;br /&gt;
* Если не выполнено — 0 баллов.  &lt;br /&gt;
* В случае просрочки — 0.5 балла.  &lt;br /&gt;
* Доступно бонусное задание, позволяющее повысить итоговую оценку.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Максимальный балл: 4.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Готовит Егор Литвиненко, выдается до 13.02.&lt;br /&gt;
&lt;br /&gt;
=== Посещение 30% лекций ===&lt;br /&gt;
&lt;br /&gt;
Если критерий выполнен, то максимум 1 балл.&lt;br /&gt;
&lt;br /&gt;
=== Посещение 30% семинаров ===&lt;br /&gt;
&lt;br /&gt;
Если критерий выполнен, то максимум 1 балл.&lt;br /&gt;
&lt;br /&gt;
=== Пересдача ===&lt;br /&gt;
&lt;br /&gt;
Выполнение домашних заданий в ускоренной форме с новыми дедлайнами.&lt;br /&gt;
&lt;br /&gt;
== Формула оценки и пересдачи ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1 балл&amp;#039;&amp;#039;&amp;#039; — посещение 30% лекций  &lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1 балл&amp;#039;&amp;#039;&amp;#039; — посещение 30% семинаров  &lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;2 балла&amp;#039;&amp;#039;&amp;#039; — 5 домашних заданий в рамках лекций (каждое по 0.4 балла)  &lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;2 балла&amp;#039;&amp;#039;&amp;#039; — индивидуальный проект по лекциям  &lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;4 балла&amp;#039;&amp;#039;&amp;#039; — командный семинарский проект  &lt;br /&gt;
&lt;br /&gt;
По всем заданиям предусмотрены дедлайны. Возможны дополнительные задания, позволяющие повысить итоговый балл.  &lt;br /&gt;
Подробнее — см. раздел «Формы контроля».&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&lt;br /&gt;
=== Рекомендуемая основная литература ===&lt;br /&gt;
* [https://docs.oracle.com/javase/specs/jls/se21/jls21.pdf Java Language Specification, Java SE 21]&lt;br /&gt;
* [https://docs.oracle.com/en/java/javase/21/ Официальная документация Java SE 21]&lt;br /&gt;
* [https://docs.oracle.com/javase/8/javase-books.htm Java SE 8 Books]&lt;br /&gt;
* Открытые записи лекций Тагира Валиева по языку Java&lt;br /&gt;
* &amp;#039;&amp;#039;Java EE: паттерны проектирования для профессионалов&amp;#039;&amp;#039;, Мурат Йенер, Алекс Фридом&lt;br /&gt;
* &amp;#039;&amp;#039;Чистый код&amp;#039;&amp;#039; (Clean Code), Роберт Мартин&lt;br /&gt;
* &amp;#039;&amp;#039;Effective Java&amp;#039;&amp;#039;, Joshua Bloch&lt;br /&gt;
&lt;br /&gt;
=== Рекомендуемая дополнительная литература ===&lt;br /&gt;
* &amp;#039;&amp;#039;97 вещей, о которых должен знать каждый Java-программист&amp;#039;&amp;#039;, Кевлин Хенни, Триша Джи&lt;br /&gt;
* &amp;#039;&amp;#039;Паттерны объектно-ориентированного проектирования&amp;#039;&amp;#039; (GoF), Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес&lt;br /&gt;
* &amp;#039;&amp;#039;Основы программирования на Java: ООП, алгоритмы и структуры данных&amp;#039;&amp;#039;, Роберт Седжвик, Кевин Уэйн&lt;br /&gt;
* &amp;#039;&amp;#039;Совершенный алгоритм: графовые алгоритмы и структуры данных&amp;#039;&amp;#039;, Тим Рафгарден&lt;br /&gt;
* &amp;#039;&amp;#039;Усовершенствованные структуры данных&amp;#039;&amp;#039;, Петер Брасс&lt;br /&gt;
* &amp;#039;&amp;#039;Алгоритмы. Построение и анализ&amp;#039;&amp;#039;, Т. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн&lt;br /&gt;
* &amp;#039;&amp;#039;Высоко-нагруженные приложения: программирование, масштабирование, поддержка&amp;#039;&amp;#039;, Мартин Клеппман&lt;br /&gt;
* &amp;#039;&amp;#039;Распределённые данные: алгоритмы работы современных систем хранения информации&amp;#039;&amp;#039;, Алекс Петров&lt;br /&gt;
* &amp;#039;&amp;#039;System Design Interview&amp;#039;&amp;#039;, Алекс Сюй&lt;br /&gt;
* &amp;#039;&amp;#039;SQL. Полное руководство&amp;#039;&amp;#039;, Джеймс Р. Грофф, Пол Н. Вайнберг, Эндрю Дж. Оппель&lt;br /&gt;
* &amp;#039;&amp;#039;Архитектура компьютера&amp;#039;&amp;#039;, Эндрю Таненбаум, Тодд Остин&lt;br /&gt;
* &amp;#039;&amp;#039;Конкретная математика. Математические основы информатики&amp;#039;&amp;#039;, Грэхэм, Кнут, Паташник&lt;br /&gt;
* &amp;#039;&amp;#039;Искусство программирования. Том 1. Основные алгоритмы&amp;#039;&amp;#039;, Дональд Кнут&lt;br /&gt;
* &amp;#039;&amp;#039;Искусство программирования. Том 2. Получисленные алгоритмы&amp;#039;&amp;#039;, Дональд Кнут&lt;br /&gt;
* &amp;#039;&amp;#039;Искусство программирования. Том 3. Сортировка и поиск&amp;#039;&amp;#039;, Дональд Кнут&lt;br /&gt;
* &amp;#039;&amp;#039;Мифический человеко-месяц&amp;#039;&amp;#039;, Фредерик Брукс&lt;br /&gt;
* &amp;#039;&amp;#039;Джедайские техники. Как воспитать свою обезьяну, опустошить инбокс и сберечь мыслетопливо&amp;#039;&amp;#039;, Максим Дорофеев&lt;br /&gt;
* [https://www.geeksforgeeks.org/introduction-to-gang-of-fourgof-design-patterns/ Gangs of Four Software Patterns (GeeksForGeeks)]&lt;br /&gt;
* [https://t.me/microJUG Канал microJUG в Telegram]&lt;br /&gt;
* [https://t.me/javatg Канал JavaTG в Telegram]&lt;br /&gt;
* [https://lmax-exchange.github.io/disruptor/user-guide/index.html LMAX Disruptor User Guide]&lt;/div&gt;</summary>
		<author><name>imported&gt;Ekononova</name></author>
	</entry>
</feed>