Программируем на Java

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

Неважно кто вы — разработчик ПО или пользователь — в любом случае слышали о языке Java. В этой книге вы на конкретных примерах изучите основы Java, API, библиотеки классов, приемы и идиомы программирования. Особое внимание авторы уделяют построению реальных приложений. Вы освоите средства управления ресурсами и исключениями, а также познакомитесь с новыми возможностями языка, появившимися в последних версиях Java.

Author(s): Марк Лой, Патрик Нимайер, Дэниэл Лук
Series: Бестселлеры O’Reilly
Edition: 5
Publisher: Питер
Year: 2023

Language: Russian
Commentary: Publisher's PDF
Pages: 544
City: СПб.
Tags: Programming; Multithreading; Java; Web Applications; Logging; Application Development; Object-Oriented Programming; Networking; Error Handling; Elementary

Предисловие
Кому пригодится эта книга
Последние изменения
Что нового в этом издании книги (Java 11, 12, 13, 14)
Структура книги
Интернет-ресурсы
Условные обозначения
Использование исходного кода примеров
Благодарности
От издательства
Глава 1. Современный язык
Появление Java
Происхождение Java
Развитие
Виртуальная машина
Сравнение Java с другими языками
Структурная безопасность
Упрощать, упрощать, упрощать…
Безопасность типов и связывание методов
Инкрементальная разработка
Динамическое управление памятью
Обработка ошибок
Потоки
Масштабируемость
Безопасность на уровне исполнительной системы Java
Верификатор
Загрузчики классов
Менеджеры безопасности
Безопасность на уровнях приложения и пользователя
История Java
Прошлое: Java 1.0 — Java 13
Настоящее: Java 14
Будущее
Доступные средства
Глава 2. Первое приложение
Инструменты и среда Java
Установка JDK
Установка OpenJDK в Linux
Установка OpenJDK в macOS
Установка OpenJDK в Windows
Настройка конфигурации IntelliJ IDEA и создание проекта
Запуск программы
Загрузка примеров кода
HelloJava
Классы
Метод main()
Классы и объекты
Переменные и типы
HelloComponent
Наследование
Класс JComponent
Отношения между классами
Пакеты и импортирование
Метод paintComponent()
HelloJava2: продолжение
Переменные экземпляра
Конструкторы
События
Метод repaint()
Интерфейсы
До свидания… и снова здравствуйте!
Глава 3. Рабочие инструменты
Среда JDK
Виртуальная машина Java
Запуск приложений Java
Системные параметры
Classpath
javap
Модули
Компилятор Java
Первые эксперименты с Java
JAR-файлы
Сжатие
Утилита jar
Утилита pack200
Следующий шаг
Глава 4. Язык Java
Кодирование текста
Комментарии
Комментарии javadoc
Переменные и константы
Типы
Примитивные типы
Ссылочные типы
Автоматическое определение типов
Передача ссылок
Несколько слов о строках
Команды и выражения
Команды
Выражения
Массивы
Типы массивов
Создание и инициализация массива
Использование массивов
Анонимные массивы
Многомерные массивы
Типы, классы, массивы... и jshell
Глава 5. Объекты в Java
Классы
Объявление классов и создание экземпляров
Обращение к полям и методам
Статические поля и методы
Методы
Локальные переменные
Замещение
Статические методы
Инициализация локальных переменных
Передача аргументов и ссылки
Обертки для примитивных типов
Перегрузка методов
Создание объектов
Конструкторы
Работа с перегруженными конструкторами
Уничтожение объектов
Уборка мусора
Пакеты
Импортирование классов
Пользовательские пакеты
Видимость полей и методов класса
Компиляция с пакетами
Нетривиальное проектирование классов
Субклассирование и наследование
Интерфейсы
Внутренние классы
Анонимные внутренние классы
Систематизация кода и планирование на случай ошибок
Глава 6. Обработка ошибок и запись в журнал
Исключения
Исключения и классы ошибок
Обработка исключений
Всплывающие исключения
Трассировка стека
Проверяемые и непроверяемые исключения
Выдача исключений
«Расползание» блока try
Секция finally
try с ресурсами
Обработка исключений и быстродействие
Проверочные утверждения
Включение и отключение проверочных утверждений
Использование проверочных утверждений
Журнальный API
Общие сведения
Уровни вывода
Простой пример
Конфигурирование журнального API
Протоколировщик
Быстродействие
Исключения в реальном мире
Глава 7. Коллекции и обобщения
Коллекции
Интерфейс Collection
Разновидности коллекций
Интерфейс Map
Ограничения типов
Контейнеры
Можно ли улучшить контейнеры?
Знакомство с обобщениями
Несколько слов о типах
«Ложки не существует»
Стирание типов
Необработанные типы
Отношения между параметризованными типами
Почему List не является List?
Преобразования типов
Преобразования между коллекциями и массивами
Итератор
Метод sort()
Приложение: деревья на поле
Заключение
Глава 8. Текст, числа, дата и время
Строки
Создание строк
Создание строк по другим данным
Сравнение строк
Поиск
Список методов String
Создание объектов по строкам
Разбор примитивных чисел
Разбиение текста на лексемы
Регулярные выражения
Общие сведения о регулярных выражениях
API регулярных выражений java.util.regex
Класс Math
Класс java.lang.Math
Большие числа
Дата и время
Локальные дата и время
Создание и обработка значений даты и времени
Часовые пояса
Разбор и форматирование даты и времени
Разбор ошибок
Временные метки
Другие полезные средства
Глава 9. Потоки
Знакомство с потоками
Класс Thread и интерфейс Runnable
Управление потоками
Смерть потоков
Синхронизация
Организация последовательного доступа к методам
Обращение к переменным классов и экземпляров из нескольких потоков
Планирование и приоритеты
Состояние потока
Квантование
Приоритеты
Уступка управления
Быстродействие потоков
Цена синхронизации
Потребление ресурсов потоками
Вспомогательные средства параллелизма
Глава 10. Десктопные приложения
Кнопки, ползунки и текстовые поля
Иерархии компонентов
Архитектура «Модель — представление — контроллер»
Надписи и кнопки
Текстовые компоненты
Другие компоненты
Контейнеры и макеты
JFrame и JWindow
JPanel
Менеджеры макетов
События
События мыши
События действий
События Change
Другие события
Модальные и всплывающие окна
Диалоговые окна сообщений
Диалоговые окна подтверждения
Диалоговые окна ввода
Влияние многопоточности
SwingUtilities и обновление компонентов
Таймеры
Что дальше?
Меню
Хранение конфигураций
Нестандартные компоненты и Java 2D
JavaFX
Думайте о пользователях
Глава 11. Сетевые коммуникации и ввод-вывод
Потоки данных
Базовый ввод-вывод
Символьные потоки данных
Обертки для потоков данных
Класс java.io.File
Файловые потоки данных
RandomAccessFile
Файловый API пакета NIO
FileSystem и Path
Файловые операции NIO
Пакет NIO
Асинхронный ввод-вывод
Быстродействие
Отображаемые и блокируемые файлы
Каналы
Буферы
Кодировщики и декодировщики символов
FileChannel
Сетевое программирование
Сокеты
Клиенты и серверы
Клиент DateAtHost
Сетевая игра
Дальнейшие исследования
Глава 12. Веб-программирование
URL
Класс URL
Потоковые данные
Получение контента в виде объекта
Управление соединениями
Проблема обработчиков
Полезные фреймворки обработчиков
Взаимодействие с веб-приложениями
Метод GET
Метод POST
HttpURLConnection
HTTPS и безопасная передача данных
Веб-приложения Java
Жизненный цикл сервлета
Сервлеты
Сервлет HelloClient
Ответ сервлета
Параметры сервлетов
Сервлет ShowParameters
Управление сеансами пользователей
Сервлет ShowSession
Контейнеры сервлетов
Настройка конфигурации с использованием web.xml и аннотаций
URL-шаблоны
Развертывание сервлета HelloClient
Безграничный интернет
Глава 13. Перспективы Java
Выпуски Java
JCP и JSR
Лямбда-выражения
Переработка существующего кода
За пределами базовых возможностей Java
Заключение и следующие шаги
Приложение. Примеры кода и IntelliJ IDEA
Где загрузить примеры кода
Установка IntelliJ IDEA
Установка в Linux
Установка в macOS
Установка в Windows
Импортирование примеров кода
Запуск примеров кода
Загрузка кода веб-приложений
Работа с сервлетами
Глоссарий
Об авторах
Об обложке