Введение в программирование
Введение
https://kgeorgiy.info/courses/prog-intro/
Copyright © Георгий Корнеев
Структура курса
Содержание
Структура курса
Концепции Java
Hello World
Заключение
Лекторы
M3136-39
Корнеев Георгий Александрович
kgeorgiy@kgeorgiy.info
M3132−35
Бац Константин Александрович
kbats@itmo.ru
Структура
Лекции
Домашние задания
Практика
Зачёт
Досрочная сдача
Сдача в сессию
Практика и баллы
Версии
Простая
M3132−35
Сложная
M3136−39
Модификации
Сохраняйте оба кода
Задержка
Не более 3 недель
Минусы
Не горят
Бонусы
Первому сдавшему преподавателю
Нашедшим ошибки и опечатки
Почему Java?
Почему Java?
Простой
Ноги целее будут
Широкий спектр применения
Сервера
Десктоп
Мобилки
Смарт-карты
Домашние задания
По другим предметам
C++ будет
Базовый Python — сами
Концепции Java
Содержание
Структура курса
Концепции Java
Платформа
Идеология
Hello World
Заключение
Платформа
Содержание
Структура курса
Концепции Java
Платформа
Идеология
Hello World
Заключение
Состав платформы
Компилятор Java
The Java Language Specification
(JLS)
Виртуальная машина Java (JVM)
The Java Virtual Machine Specification
Стандартная библиотека
Соответствует версии платформы
Редакции Java-платформы
Standard Edition
Для обычных приложений
Enterprise Edition
Для серверных приложений
Micro Edition
Для мобильных приложений
То, что мертво, умереть не может
Java Card
SIM- и смарт-карты
Версии Java (1)
JDK 1.0
(январь 1996)
J2SE 1.2
(декабрь 1998)
Collections Framework
J2SE 5.0
(сентябрь 2004)
Generics
Java SE 8
(март 2014)
Streams и lambdas
Java SE 9
(сентябрь 2017)
Модули
Java SE 10
(март 2018)
var
Версии Java (2)
Java 11
(сентябрь 2018)
jshell
Java 17 [LTS-old]
(сентябрь 2021)
Предыдущая стабильная версия
Многочисленные мелкие изменения
Java 21 [LTS]
(сентябрь 2023)
Текущая стабильная версия
Java 24
(март 2025)
Текущая версия
Java 25
(сентябрь 2025)
Следующая версия
JDK и JRE
Набор инструментов разработчика
Java Development Kit (JDK)
JVM и инструменты для запуска
Java Runtime Environment (JRE)
Примеры JVM
OpenJDK
:
HotSpot
/
GraalVM
Eclipse
:
OpenJ9
Azul Systems
:
Zulu
/
Zing
Excelsior JET
Идеология
Содержание
Структура курса
Концепции Java
Платформа
Идеология
Hello World
Заключение
Байт-код и виртуальная машина
Что такое виртуальная машина
Что такое байт-код
Write once run anywhere
Преимущества и недостатки
JIT-компиляция
Сборка мусора
Что такое сборка мусора
Есть в
Lisp
/
Python
/
Go
/
CLR
Невозможность в
C
/
C++
Подсчет ссылок
Реализован в
Python
Не работает в общем случае
Обход графа ссылок
Реализован в JVM и CLR (.NET),
Go
Что еще
Простота языка
Надёжность и безопасность
Многоязычность (Unicode)
Многопоточность
Обратная совместимость
Оформление кода
Как на лекциях
Максимальная ширина: 120 символов
Отступы обязательны
Четыре пробела
Фигурные скобки
Открывающая – на той же строке
Закрывающая – на отдельной строке
Для педантов
Google Java Style Guide
Соглашения об именованиях
Naming Conventions for Java Programming Language
TypeNamingConvention
methodNamingConvention(…)
fieldNamingConvention
variableNamingConvention
CONSTANT_NAMING_CONVENTION
Hello World
Содержание
Структура курса
Концепции Java
Hello World
Заключение
Заключение
Содержание
Структура курса
Концепции Java
Hello World
Заключение
Основная документация
Java Technical Details
dev.java
Java Language and VM Specifications
Java Platform Documentation:
Java 17
Java 21
Java 24
Code Conventions
for the Java Programming Language
Литература
Англоязычная
The Java Tutorials
Baeldung
Get Started with Java
Русскоязычная
Шилдт Г.
Java. Полное руководство
12 издание, Java 17
Шилдт Г.
Java. Руководство для начинающих
9 издание, Java 17
Эккель Б.
Философия Java
4 издание
Вопросы
???