The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.

Рассмотрены задачи, встречающиеся в повседневной работе любого разработчика в среде Java. Приведено более 300 приложений, содержащих свыше 1000 примеров. Продемонстрированы эффективные практические приемы и технические решения с учетом сложности кода, производительности, удобочитаемости и многого другого.

Рассмотрены строки, числа, объекты, массивы, коллекции и структуры данных, работа с датой и временем. Приведены задачи на логический вывод типов, а также файловый ввод/вывод. Представлены задачи, связанные с API рефлексии Java. Особое внимание уделено программированию в функциональном стиле, задачам с привлечением конкурентности, правилам работы с классом Optional, а также API HTTP-клиента и API протокола WebSocket.

Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by BHV.RU Publishing House, 2021-06-08 12:42:06

Java. Решение практических задач

Рассмотрены задачи, встречающиеся в повседневной работе любого разработчика в среде Java. Приведено более 300 приложений, содержащих свыше 1000 примеров. Продемонстрированы эффективные практические приемы и технические решения с учетом сложности кода, производительности, удобочитаемости и многого другого.

Рассмотрены строки, числа, объекты, массивы, коллекции и структуры данных, работа с датой и временем. Приведены задачи на логический вывод типов, а также файловый ввод/вывод. Представлены задачи, связанные с API рефлексии Java. Особое внимание уделено программированию в функциональном стиле, задачам с привлечением конкурентности, правилам работы с классом Optional, а также API HTTP-клиента и API протокола WebSocket.

Keywords: Java,bhv

А  переменными блока catch 1941–95
 экземплярными переменными 194–
Аксессор 382
Алгоритм сортировки 204 195
Аннотация:  класс анонимный 191
 инспектирование 389  лямбда-выражение 193–194
 объявленная 395  недопущение 180–181
 типа получателя 374–75  область видимости переменной 185–
Аннотирование:
 методов 390 186
 пакетов 389  объявления составные 184–185
Аутентификация соединения 681–682  оператор тренарный 186–187
 поток 188–189
Б  практически финальный 192–193
 примеры 174–177
Банда четырех (GoF), книга 112  разбиение вложенных/крупных
Барьер 564–568
Блок: цепочек выражений 189–190
 инструкций 126–127  совмещение с обобщенными типами T
 статический 234
Буква: 195–196
 инвертирование 38–39  сочетание с:
 подсчет гласных/согласных 40–41
Буфер байтовый, имплементирование  помощью программирования 182
 явного понижающего приведения
339–346
типа 180
В  ромбовидным оператором 183
 техническая сопроводимость
Ввод-вывод в среде Java, 285, 516 исходного кода 178–179
Возраст, вычисление 161–162  тип:
Время:  аргумента 190–191
 машинное, генерирование временных  возвращаемый из метода 190–191
 примитивный 177–178
меток 137–140 Вывод типов, логический, задачи 172
 проверка 498 Вычисление высокопроизводительное
 продолжительность 140–144 (HPC) 79
Вывод типа локальной переменной
Г
логический (LVTI) 172
 for 187–188 Геттер 382, 385
 try 194 Группирование элементов потока 478–
 замена:
485
 ковариантов 197  многоуровневое 484
 контравариантов 197  одноуровневое 478
 подстановочных знаков 196
 избегание использования с: Д
 null-инициализаторами 194–195
Данные:
 плохие, недопущение в немутируемых

объектах 114–116
 формы, обработка 693–695

Предметный указатель

Дата:  удаление 269
 узел 267
 LocalDate 160–61  Фенвика (BIT) 277–281
 цифровое 266–271
 вычисление разницы между датами
164–166 З

 обход интервала в цикле 160–161 Заголовок:
 Calendar 160  запроса 676–678
 LocalDate.datesUntil(LocalDate  настройка 676–678
endExclusive) 161  получение 676–78
Замóк на уровне:
Дата-время:  класса 524–527
 объекта 524–527
 Calendar 164–166 Запрос:
 GET асинхронный 673–675
 Date 145  отправка:

 java.util.Date 164–166  асинхронно 684–686
 синхронно 684–686
 LocalDate 137 Знак подстановочный 196
Значение:
 LocalDateTime 145  int:
 конвертирование в long 74–75
 LocalTime 137  сложение 67–68
 умножение 77–78
 Temporal 164–166  long:
 конвертирование в int 74–75
 без даты и времени 137  сложение 67–68
 умножение 77–78
 вывод на экран полетной информации  Optional:
150–151  flatMap() 663–665
 map() 663–665
 вычитание времени 145–146  беззнаковое:
 деление 70–71
 единица даты и времени 144–145  остаток от деления 70–71
 дефолтное, возвращение из коллекции
 конвертирование: Map 238–239
 в строку 130  многострочное строковое 59–60
 DateFormat 130–133  на основе:
 DateTimeFormatter 130  времени 140–144
 временной метки UNIX 151–152  даты 140–144
 псевдослучайное, создание
 локальная, получение: нелимитированных потоков 453
 Date 149  с плавающей точкой 76–77
 ZonedDateTime.now() 149
 во всех временных поясах 148–149

 прибавление времени 145–46

 форматирование 134–36
Деление:

 беззнаковых значений 70–71

 целая часть:
 деления 75–76
 остаток от деления 75–76

День месяца:

 первый 152–156

 последний 152–154
Дерево:

 префиксное 63, 266–271
 вставка 268
 отыскание 269
 строительство 268
 структура базовая 268

___________________________________ [ 709 ] ____________________________________

Предметный указатель

И  минимум 477
 подсчет 476
Идентификатор ресурса  сложение 474
унифицированный (URI) 288  усреднение 476

Индекс, проверка в интервале от 0 до  собственный 494–499
длины 94–96  посредством collect() 499

Инспектирование аннотаций параметров Коллекция:
методов 392
 задачи 199
Интервал, даты в цикле 160–161
Интернирование строк 104  конвертирование в массив 255–56
Интерфейс:
 инспектирование аннотаций 394  конкуррентная встроенная в Java 259–
 обобщенный 397–400 64
 функциональный 409–417  коллекция синхронизированная
263, 264
 абстрагирование типа List 415  множество нитебезопасное 259
 имплементирование фильтров 414  отображение Map нитебезопасное
 класс анонимный как лямбда- 260
 очередь нитебезопасная:
выражение 415  задержки 262
 передача поведения в качестве па-  на основе связных узлов 262
 поддерживаемая массивом 261
раметра 412  с приоритетом 262
 фильтрация дынь 410, 411  синхронная 262
Исключение:  трансферная 262
 выбрасываемое 391  против встроенных в Java синхрони-
 обобщенное 397–400 зированных коллекций 264
 списки нитебезопасные 259
К  стек нитебезопасный 263

Каркас разветвления/соединения 585–592  немодифицируемая 233–238
Класс немутируемый:  Arrays.asList() 234
 написание 108–109  Collections.unmodifiableList() 233
 List.of() 235
 посредством шаблона строителя  блок статический 234
112–114
 немутируемая 233–238
 объект мутируемый:  Arrays.asList() 234
 возврат 109–1111  Collections.unmodifiableList() 233
 передача 109–111  List.of() 235
 создание 233
Ковариант, замена с помощью  блок статический 234
логического вывода типа локальной
переменной (LVTI) 196–197  нитебезопасная 259–264

Код исходный:  фильтрация по списку 256–258
 в функциональном стиле, проверка Компаратор, композиция 510
Композиция 508–513
ссылок null 86–89
 императивный, проверка ссылок null  компараторов 510

86–89  предикатов 509
Коллектор:
 подытоживающий 474–77  функций 512
Конверсия беззнаковая 69
 максимум 477 Конец дня, поиск 162–164

___________________________________ [ 710 ] ____________________________________

Предметный указатель

Конкурентность 580  решения, встроенные в JDK 201–213
Конструктор:
 клонирование объектов 118  сортировка 201
 отрефлексированный 371–374  массива строк по длине 54–56
 приватный 372  параллельная 202
Конструкция:  по убыванию 203
 мостовая 376–377
 синтетическая 376–377  целых чисел 202
Контравариант, замена с помощью Метка:

логического вывода типа локальной  варианта 126
переменной (LVTI) 196–197
Кортеж 271–272  временная UNIX, конвертирование в
дату-время 151–152
Л
Метод:
Лямбда-выражение 193–194, 417–418
 orElseFoo() 651–652  accumulator() 497
 отладка 445–448
 тестирование методов 443–445  Arrays.asList() 218

М  characteristics() 498
 clone() 117
Массив 401–402
 алгоритмы сортировки 204  Collections.unmodifiableList() 233, 236
 задачи 199
 значение:  combiner() 497

 максимальное 224–227  compareAndSetForkJoinTaskTag() 593–
 минимальное 224–227 596
 среднее 224–227
 заполнение 229–231  dropWhile() 450–458
 инвертирование 227–229  equals() 97–103
 конвертирование коллекции 255–256
 сравнение лексикографическое 221–  filtering() 488–491
223
 настройка 229–231  finisher() 497
 тип компонента 370
 поиск элемента 218–221  flatMapping() 490
 поток 223–224
 примитивных типов 203  hashCode() метод 97–103
 присвоение переменной var 184  List.of() 235
 проверка:
 несовпадения 218–221  mapping() 490
 эквивалентности 218–221
 размер, изменение 232  max() 66–67

 min() 466–470

 ofNullable() 660–661
 Optional.filter() 665

 Optional.get() 646

 Optional.of() 660–661

 orElseFoo() 651–52

 Path.equals() 294
 sum()

 в потоке 466–470
 вычисление посредством

RecursiveTask 587
 терминальные операции 467

 supplier() 496
 takeWhile() 450–458

 связка методов 454

 toString() 121–123

 обобщенный 397–400

 по умолчанию 513–514

___________________________________ [ 711 ] ____________________________________

Предметный указатель

 прерываемый 581–585 Операция:
 статический 396–397
 тестирование с лямбда-выражениями  Callable 558–560

443–445  И 72–73
 трафаретный 423
 экземплярный 395–396  ИЛИ 72–73
Модуль, инспектирование 402–404
 ИЛИ исключающее 72–73
Н
 объединения 276
Наблюдатель 425–428
Наблюдение за путями 304–307  отмена 617–618
 модифицирование папки 305
Надкласс 393, 399  поиска 275
Начало дня, поиск 162–164
Немутируемость строковых значений  чувствительная к идентичности 667–
668
104–108
 недостатки 106 Остаток от деления 75–76
 преимущества 104
 беззнаковые значения 70–71
О
 целя часть 75–76
Обменник 568–571 Отклик:
Объект:
 User 691, 692  заголовок 677
 клонирование 116–121
 информация 687
 clone() 117 Отображение:
 Cloning 119
 JSON 121  compute() 241
 конструктор 118
 ручное 117  computeIfAbsent() 240
 сериализация 120
 мутируемый, класс немутируемый:  computeIfPresent() 239
 возврат 109–111
 передача 109–111  merge() 243
 немутируемый 103
 недопущение плохих данных 114–  putIfAbsent() 244

116  вычисление осутствия/присутствия
 обыкновенный Java (POJO) 121 элемента 239–244
Обязанность межобъектная (сквозная)
 замена элементов 245–246
404
Ожидание:  слияние двух отображений 252–253
 занятое оптимизирование 616
 циклическое 637  сортировка 248–251
 по значению посредством:
 компаратора 249
 потока 249
 списка 250
 по ключу посредством:
 TreeMap 249
 компаратора 249
 потока 249
 списка 250

 сравнение отображений 246–248

 удаление элемента 244–245

 упорядочивание в естественном
порядке 249

 элементов потока 458–463
 Stream.flatMap() 460
 Stream.map() 458

Отправка многочисленных запросов,
конкуррентная 685

Отступ 63–65
Очередь нитебезопасная 259–264

___________________________________ [ 712 ] ____________________________________

Предметный указатель

П  последовательный упорядоченный
451
Пакет:
 нелимитированный 453
 инспектирование 361
 внутри модулей 365  обработка параллельная 501–506
 операция терминальная 466–470
 получение классов 362
Папка, поиск в файловом дереве 308–310  поиск элемента 463–465
Пара суррогатная 34
Параметризация поведения 412  сбор результатов 470–473
Первым вошел первым вышел (FIFO) 261
Переменная атомарная 623–627  соединение результатов 473–474

 накопители 626  создание из массива 223–224
 сопоставление элементов 465–466
 сумматоры 626
Переполнение операции:  фильтрация ненулевых элементов 448–
450
 сложения 67–68
Пояс часовой:
 умножения 77–78
Перестановка, генерирование 46–48  API даты-времени Java 146–148
Перетасовка:
 GMT 146–148
 Кнута 213
 UTC 146–148
 массива объектов 213
 дата-время локальное 148–149
 Фишера — Йейтса 213
Период времени 140–144  извлечение смещения 147
Подинтервал 96–97 Предикат 412
Подстрока, подсчет появлений в строке
 композиция 509
56–57 Предмет в шаблоне наблюдателя 425
Поиск: Префикс наибольший общий 62–63
Программирование в функциональном
 двоичный 63
стиле 408, 439
 сперва в ширину (BFS) 264–266 Прокси-сервер 675–676
 алгоритм 265 Прохождение путей 296–304
 псевдокод 264
 File.walk() 303
Поле:
 JDK 8 303
 инспектирование аннотаций 393
 копирование папки 301
 обобщенное 397–400
Политика перенаправления 683  поиск файла по имени 297
Последним вошел первым вышел (LIFO)
 тривиальный обход папки 297
185
Посредник динамический 404–407  удаление папки 299
Пул:
 имплементирование 405
Построитель параметров запроса 675  нитей исполнения 527–531
Поток:  Executor 527
 Executors 530
 max() 466–470  ExecutorService 527
 ScheduledExecutorService 530
 min() 466–470  одна нить 531–539
 производитель ждет наличия по-
 null-безопасный 506–508 требителя 532
 производитель не проверяет на-
 sum() 466–470 личия потребителя 537
 с запланированными нитями 540–
 бесконечный 450–458 547
 последовательный неупорядочен-  с кэшированными нитями 540–547
ный 454

___________________________________ [ 713 ] ____________________________________

Предметный указатель

 с фиксированным числом нитей Символ:
539–340
 идеографический (CJKV) 506
 обкрадывающих 547–553
 крупное число малых операций  отыскание первого неповторяющегося
549 символа 36–38
 малое число времязатратных опе-
раций 551  подсчет дубликатов 32–35

 строковых констант (SCP) 104  удаление 51–52
Путь:  дубликатов символов 49–51
 абсолютный 290
 к файлу:  юникодный 33
Синхронизация 526
 абсолютный 289 Слово, инвертирование 38–39
 конвертирование 291–292 Смещение поясное, извлечение 154–156
 конструирование 293–294
 сравнение лексикографическое 295  java.time.ZoneId() 155
 представление одинакового фай-
 java.time.ZoneOffset() 155
ла/папки 295
 соединение 292–293  TimeZone.getRawOffset() 155
 создание 287–291 Сокращение 289
Сортировка:
 в корне файлового хранилища
288  вставками 206

 в текущей папке 288  кучи 209
 с помощью сокращений 289
 сравнение 294–296  массива:
 Path.equals() 294  параллельная 202
 частичное 296  по убыванию 203

Р  подсчетом 208

Разбиение 486–488  пузырьком 204
Разграничитель 44–45
Редукция 468  с двойным опорным элементом 202
Ресурс: Состояние жизненного цикла нити
 закачивание на сервер 696–698
 скачивание с сервера 695 исполнения Java 518–524

С  BLOCKED 520

Семафор 571–574  NEW 519
Сериализация, клонирование объектов
 RUNNABLE 519
120
Сеттер:  TERMINATED 523
 генерирование 385
 получение 382  TIMED_WAITING 522
Сжатие 692–93
 WAITING 521
Сочленение 492–494
Сплитератор собственный 506
Сравнение, подсчет 40–41
Сравнить и поменять местами (CAS

Compare и Swap) 624
Ссылка null 648–49

 Optional 648–49

 на метод 499–501
 статический 500
 экземплярный 500

 на конструктор 501

 проверка:
 в императивном стиле 86–89
 в функциональном стиле 86–89
 и возврат дефолтных ссылок не-null
93

___________________________________ [ 714 ] ____________________________________

Предметный указатель

 и выбрасывание заданного исклю-  удаление:
чения 91–92  пробелов 44
 замыкающих 62
 и выбрасывание специализирован-  начальных 62
ного исключения  символов 51–52
NullPointerException 89–91  повторяющихся 49–51

Стек нитебезопасный 259–264  число беззнаковое с основанием
Стопор 560–564 системы счисления 68–69
Строка:
Структуры данных, задачи 199
 генерирование перестановок 46–48
Т
 задачи 29
Таймаут 682–683
 инвертирование: Тело запроса:
 символов 38–39  настройка 679–681
 слов 38–39  создание из:

 конвертирование в:  InputStream 680
 double 43–44  значения типа String 679
 float 43–44  массива байт 680
 int 43–44  файла 681
 long 43–44 Тело отклика, обработка 687–689
 дату-время 130–133  как InputStream 688
 как значения типа String 688
 конкатенация 60–62  как массива байтов 688
 как потока значений типа String 689
 отступ 63–65  как файла 688
Тип возвращаемого значения,
 подсчет: инспектирование аннотаций 392
 гласных 40–41 Тупик 637–40
 повторяющихся символов 32–35
 появлений некоторого символа 42– У
43
 появлений подстроки 56–57 Умножение и сложение совмещенное
 согласных 40–41 (FMA) 79

 поиск: Управление гнездовым доступом
 наибольшего общего префикса 62– (гнездами) посредством API рефлексии
63 Java 378–382
 первого неповторяющегося символа
36–38 Ф
 символа с наибольшим числом по-
явлений 52–54 Фазировщик 574–579
Файл:
 проверка на наличие:  cookie 686–687
 анаграмм 58–59  CSV 325–329
 палиндрома 48–49  JSON 325–329
 подстроки 56
 цифр 39–40

 решения 32, 86, 130, 174, 201, 287, 361,
409, 441, 518, 581, 643, 672

 соединение с помощью разделителя
44–45

 сортировка массива по длине строк 54–
56

 трансформирование 65–66

___________________________________ [ 715 ] ____________________________________

Предметный указатель

 большой  компактное:
 BufferedReader 322  разбор 82
 MappedByteBuffer 324  форматирование 79–83
 Scanner 323
 поиск строки в файле 321–325  максимум 66–67
 Файл.lines() 323  минимум 66–67
 Файл.readAllLines() 322
Ш
 временный 330–334
 создание 330 Шаблон:
 удаление посредством:  декоратора 430–434
 DELETE_ON_CLOSE 333  исполнения вокруг опорной операции
 deleteOnExit() 332
 перехватчика отключения 331 418–420
 каскадного строителя 434–435
 двоичный:  команд 435–438
 запись 320  наблюдателя 425–428
 эффективная 317  одалживания 428–430
 чтение:  стратегий 422–423
 в память 319  строителя, класс немутируемый 112–
 эффективное 317–321
114
 запись форматированного результата  трафаретного метода 423–425
351–54  фабричный 420–422
 форматирования даты-времени 134–136
 лексемизация (токенизация) 347–51
 многочастный, закачивание на сервер Э

696–698 Элемент:
 обнаружение несовпадений 337–339  замена в списке 258
 передача потоковая 307–308  не-null, фильтрация из потока 448–450
 поиск в деревьях файлов 308–310  поиск:
 текстовый:
 в массиве 218–221
 запись 316  в потоке 463–465
 эффективная 310–317
 findAny() 464
 чтение:  findFirst() 464
 в память 314  проверка:
 эффективное 310–317  присутствия 214
 только первого индекса 217
 фильтрация 334–337  разделение посредством
 File.newDirectoryStream() 334 Collectors.partitioningBy() 255
 FileFilter 337  следующий больший (NGE) 231
 FilenameFilter 336  сопоставление в потоке 465–466
 удаление:
Фибоначчи последовательность 588  из коллекции 253–255
Фильтр Блума 281–284  посредством Collection.removeIf() 254
Функция:  посредством Stream 254
 высшего порядка 441–43  посредством итератора 2
 композиция 512

Ч

Часы шахматные 166–171
Число:
 беззнаковое, сравнение 70

___________________________________ [ 716 ] ____________________________________

Машнин Т.

JavaFX 2.0: разработка RIA-приложений

www.bhv.ru

Отдел оптовых поставок
e-mail: [email protected]

• Новые GUI-компоненты с поддержкой CSS

• Визуальные эффекты, трансформации и
анимации

• Воспроизведение аудио и видео

• Язык FXML для создания GUI-интерфейса

Книга посвящена разработке RIA-приложений (Rich Internet Applications) с исполь-
зованием технологии JavaFX 2.0. Рассмотрены архитектура платформы JavaFX 2.0,
ее основные компоненты графического интерфейса пользователя, применение CSS-
стилей, создание визуальных эффектов, трансформация и анимация изображений,
совместное использование JavaScript и JavaFX, Swing и JavaFX, выполнение фоно-
вых задач, использование компонентов JavaFX Beans и связывание данных, язык
FXML и др. Приведен справочник программного интерфейса JavaFX 2.0 API. Ма-
териал книги сопровождается большим количеством примеров с подробным анали-
зом исходных кодов. На сайте издательства находятся проекты примеров из книги,
а также дополнительные материалы.

Машнин Тимур Сергеевич, инженер-программист с многолетним опытом разра-
ботки программных комплексов и внедрения информационных систем. Автор книг
«Современные Java-технологии на практике», «Web-сервисы Java» и др.

Прохоренок Н.

www.bhv.ru OpenCV и Java.
Обработка изображений и компьютерное зрение

Отдел оптовых поставок:
e-mail: [email protected]

Взгляни на мир глазами робота
 Загрузка изображения из файла

 Захват кадров с веб-камеры

 Трансформация изображения

 Применение фильтров

 Сегментация изображения

 Выделение границ объектов

 Поиск и сравнение контуров

 Поиск объекта по цвету или шаблону

 Поиск и сравнение особых точек

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

Пользоваться библиотекой OpenCV в Java просто и очень эффективно! Для пони-
мания материала книги потребуется всего лишь владение основами языка програм-
мирования Java Standard Edition и знание математики на уровне средней школы.

Прохоренок Николай Анатольевич, профессиональный программист, автор книг
«HTML, JavaScript, PHP и MySQL. Джентльменский набор Web-мастера», «Python 3.
Самое необходимое», «Python 3 и PyQt 5. Разработка приложений», «Основы Java»
и др.

www.bhv.ru Прохоренок Н.

Основы Java
2-е изд.

Отдел оптовых поставок
e-mail: [email protected]

Просто о сложном

• Базовый синтаксис языка Java
• Объектно-ориентированное программирование
• Работа с файлами и каталогами
• Stream API
• Функциональные интерфейсы
• Лямбда-выражения
• Работа с базой данных MySQL
• Получение данных из Интернета
• Интерактивная оболочка JShell

Если вы хотите научиться программировать на языке Java, то эта книга для вас.
В книге описан базовый синтаксис языка Java: типы данных, операторы, условия,
циклы, регулярные выражения, лямбда-выражения, ссылки на методы, объектно-
ориентированное программирование. Рассмотрены основные классы стандартной
библиотеки, получение данных из сети Интернет, работа с базой данных MySQL.
Во втором издании приводится описание большинства нововведений: модули, ин-
терактивная оболочка JShell, инструкция var и др.

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

Прохоренок Николай Анатольевич, профессиональный программист, автор книг
«HTML, JavaScript, PHP и MySQL. Джентльменский набор Web-мастера», «Python 3.
Самое необходимое», «Python 3 и PyQt 5. Разработка приложений», «OpenCV и Java.
Обработка изображений и компьютерное зрение» и др.

Прохоренок Н.

JavaFX

www.bhv.ru

Отдел оптовых поставок:
e-mail: [email protected]

Разработка оконных приложений на языке Java

 Управление окнами приложения

 Размещение компонентов внутри окна

 Обработка событий

 Работа с графикой и изображениями

 Трансформации и эффекты
 Создание анимации

 Графики и диаграммы

 Воспроизведение аудио и видео

 JavaFX CSS

 Программа Scene Builder

Описываются базовые возможности библиотеки JavaFX, позволяющей создавать
приложения с графическим интерфейсом на языке Java. Книга ориентирована на
тех, кто уже знаком с языком программирования Java и хотел бы научиться разра-
батывать оконные приложения, насыщенные графикой, анимацией и интерактив-
ными элементами. Рассматриваются способы обработки событий, управление свой-
ствами окна, создание формы с помощью программы Scene Builder, а также все
основные компоненты (кнопки, текстовые поля, списки, таблицы, меню и др.) и
варианты их размещения внутри окна.

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

Прохоренок Николай Анатольевич, профессиональный программист, имеющий
большой практический опыт создания и продвижения сайтов, анализа и обработки
данных, автор книг «Основы Java», «OpenCV и Java. Обработка изображений и
компьютерное зрение», «HTML, JavaScript, PHP и MySQL. Джентльменский набор
Web-мастера», «Python 3. Самое необходимое», «Python 3 и PyQt 5. Разработка
приложений» и др., многие из которых выдержали несколько переизданий и стали
бестселлерами.


Click to View FlipBook Version