Об авторах ............................................................................................................. 14
Благодарности .......................................................................................................... 15
Введение .................................................................................................................. 16
Для кого эта книга ................................................................................................ 17
Темы, освещаемые в издании................................................................................ 17
Темы, не обсуждаемые в книге.............................................................................. 18
Виды обозначений................................................................................................. 19
Исходный код ........................................................................................................ 20
Ошибки и опечатки ............................................................................................... 21
p2p.wrox.com......................................................................................................... 21
Как читать эту книгу.............................................................................................. 22
Остаемся на связи ................................................................................................. 23
Глава 1. Общее введение в программирование ............................................... 24
Процесс программирования................................................................................... 25
Объектно-ориентированное программирование: предварительное знакомство...... 29
Ошибки программирования ................................................................................... 30
Ошибки синтаксиса/компиляции .....................................................................30
Ошибки времени выполнения .........................................................................30
Логические/семантические ошибки .................................................................31
Принципы тестирования программного обеспечения............................................. 31
Сопровождение программного обеспечения .......................................................... 33
Адаптивное сопровождение ............................................................................33
Улучшающее сопровождение ..........................................................................33
Корректирующее сопровождение ....................................................................33
Профилактическое сопровождение .................................................................33
Принципы структурного программирования........................................................... 34
Оглавление  7
Глава 2. Знакомство с Java .................................................................................. 35
Краткая история Java............................................................................................. 36
Характеристики Java.............................................................................................. 37
Детальный разбор ................................................................................................. 38
Байт-код..........................................................................................................38
Java Runtime Environment (JRE) .......................................................................40
Платформы Java..............................................................................................45
Приложения Java................................................................................................... 45
Автономные приложения.................................................................................45
Апплеты Java................................................................................................... 46
Сервлеты Java ................................................................................................. 47
Компоненты Java.............................................................................................47
Структура языка Java............................................................................................. 48
Классы ............................................................................................................49
Идентификаторы.............................................................................................49
Ключевые слова..............................................................................................50
Переменные.................................................................................................... 50
Методы ...........................................................................................................51
Комментарии................................................................................................... 52
Соглашения об именовании.............................................................................55
Типы данных в Java............................................................................................... 55
Примитивный тип данных................................................................................56
Литералы........................................................................................................57
Операторы ...................................................................................................... 58
Массивы..........................................................................................................63
Приведение типов...........................................................................................66
Резюме.................................................................................................................. 69
Глава 3. Настройка среды разработки ............................................................... 70
Интегрированные среды разработки...................................................................... 71
Программирование в текстовых редакторах ....................................................72
Выбор IDE ....................................................................................................... 76
8  Оглавление
Установка Eclipse на ваш компьютер ..................................................................... 77
Загрузка и установка Eclipse............................................................................78
Работа с Eclipse ............................................................................................... 79
Глава 4. Знакомство с объектно-ориентированным программированием ... 92
Основные понятия объектно-ориентированного программирования ...................... 93
Классы и объекты в Java........................................................................................ 95
Определение классов в Java............................................................................95
Создание объектов........................................................................................ 103
Хранение данных: переменные............................................................................ 107
Переменные экземпляра ............................................................................... 109
Переменные класса....................................................................................... 113
Неизменяемые переменные........................................................................... 115
Область видимости переменной .................................................................... 121
Основные понятия объектно-ориентированного программирования .................... 125
Методы экземпляров..................................................................................... 126
Методы класса .............................................................................................. 129
Конструкторы................................................................................................ 130
Метод Main.................................................................................................... 135
Передача аргумента метода .......................................................................... 144
Встроенные классы Java SE ................................................................................. 151
Классы в пакете java.lang.............................................................................. 152
Классы в пакетах java.io и java.nio ................................................................ 154
Классы в пакете java.math............................................................................. 154
Классы в пакетах java.net, java.rmi, javax.rmi
и org.omg.CORBA........................................................................................... 154
Классы в пакетах java.awt и javax.swing ........................................................ 155
Классы в пакете java.util................................................................................ 155
Другие классы и пользовательские библиотеки............................................. 164
Глава 5. Управление выполнением программы ............................................. 165
Использование операторов и методов в командах сравнения .............................. 166
Сопоставление примитивных типов данных и операторов сравнения ............ 166
Сопоставление составных типов данных с методами сравнения .................... 168
Оглавление  9
Понимание управления языком ........................................................................... 171
Создание условных инструкций..................................................................... 172
Написание циклов for.................................................................................... 175
Написание циклов while ................................................................................ 186
Сравнение циклов for и while ........................................................................ 194
Написание инструкций switch........................................................................ 195
Сравнение условных инструкций и инструкций switch .................................. 200
Обзор управляющих ключевых слов.............................................................. 201
Обзор управляющих конструкций.................................................................. 208
Глава 6. Обработка исключений и отладка .................................................... 210
Распознавание типов ошибок .............................................................................. 210
Выявление синтаксических ошибок ............................................................... 211
Выявление ошибок времени выполнения ...................................................... 215
Выявление логических ошибок...................................................................... 216
Исключения......................................................................................................... 220
Распространенные исключения ..................................................................... 220
Выявление исключений................................................................................. 228
Отладка приложений........................................................................................... 235
Использование отладчика ............................................................................. 236
Использование журналирующего API ............................................................ 240
Тестирование приложений .................................................................................. 252
Резюме................................................................................................................ 262
Глава 7. Подробнее о концепциях объектно-ориентированного
программирования ............................................................................................. 263
Аннотации........................................................................................................... 264
Перегрузка методов ............................................................................................ 265
Ключевое слово this ............................................................................................ 267
Сокрытие информации ........................................................................................ 272
Модификаторы доступа................................................................................. 273
Геттеры......................................................................................................... 274
Сеттеры ........................................................................................................ 275
10  Оглавление
Наследование классов......................................................................................... 284
Ключевое слово super ................................................................................... 285
Переопределение методов ............................................................................ 287
Полиморфизм................................................................................................ 288
Суперкласс Object ......................................................................................... 290
Абстрактные классы и методы....................................................................... 291
Пакеты ................................................................................................................ 297
Интерфейсы ........................................................................................................ 298
Сборка мусора..................................................................................................... 306
Глава 8. Обработка ввода и вывода ................................................................. 308
Основные потоки ввода и вывода........................................................................ 309
Ввод и вывод в Java............................................................................................. 313
Потоки ................................................................................................................ 316
Потоки байтов............................................................................................... 317
Потоки символов........................................................................................... 324
Буферизованные потоки................................................................................ 325
Потоки данных и объектов ............................................................................ 327
Другие потоки............................................................................................... 330
Сканеры .............................................................................................................. 331
Ввод и вывод из командной строки...................................................................... 333
Ввод и вывод из файлов...................................................................................... 341
Файловый ввод и вывод в NIO2 Java ............................................................. 342
Ввод и вывод устаревших файлов ................................................................. 356
Резюме................................................................................................................ 358
Глава 9. Работа с базами данных в Java .......................................................... 359
Основы реляционных баз данных ........................................................................ 361
Доступ к реляционным базам данных из Java ...................................................... 366
Java Database Connectivity (JDBC) .................................................................. 367
SQLJ.............................................................................................................. 374
Обеспечение сохраняемости объекта .................................................................. 377
Оглавление  11
Hibernate....................................................................................................... 379
Доступ к объектно-ориентированной базе данных из Java............................. 395
Сравнение технологий доступа к базе данных Java.............................................. 398
Что дальше ......................................................................................................... 399
Глава 10. Доступ к веб-ресурсам ...................................................................... 401
Краткое введение в сети ..................................................................................... 402
Веб-сервисы ........................................................................................................ 415
RPC и RMI ..................................................................................................... 416
SOAP ............................................................................................................. 419
REST ............................................................................................................. 422
Доступ к веб-сервисам и источникам с помощью Java ......................................... 424
Доступ к сервисам SOAP................................................................................ 424
Доступ к сервисам REST................................................................................ 465
Анализ экранных данных............................................................................... 511
Создание собственных веб-сервисов с помощью Java .......................................... 519
Настройка HTTP-сервера ............................................................................... 519
Предоставление REST-сервисов..................................................................... 522
Глава 11. Проектирование графических интерфейсов ................................. 524
Обзор основ GUI в Java ....................................................................................... 525
Обзор встроенных GUI-библиотек ................................................................. 525
Сборка с помощью контейнеров и компонентов ............................................ 529
Взглянем на полную картину......................................................................... 533
Сравнение менеджеров компоновки .................................................................... 538
FlowLayout..................................................................................................... 538
BorderLayout.................................................................................................. 541
GridLayout ..................................................................................................... 543
GridBagLayout................................................................................................ 545
CardLayout..................................................................................................... 549
BoxLayout...................................................................................................... 554
GroupLayout и SpringLayout............................................................................ 558
Абсолютное размещение (без менеджера компоновки)................................. 558
12  Оглавление
Основные сведения о событиях ........................................................................... 561
Знакомство с событиями ............................................................................... 561
Слушатели событий....................................................................................... 562
Потоки и Swing.............................................................................................. 580
Заключительные темы......................................................................................... 591
Полезные приемы: разделяйте внешний вид и бизнес-логику ....................... 591
Порисуем: определение пользовательского функционала для рисования...... 592
Визуальные GUI-редакторы: облегчают жизнь?............................................. 608
JavaFX: движемся вперед?............................................................................. 613
Глава 12. Использование объектно-ориентированных паттернов .............. 624
Введение в паттерны........................................................................................... 625
Объектно-ориентированные паттерны................................................................. 626
Порождающие паттерны ............................................................................... 626
Структурные паттерны .................................................................................. 636
Поведенческие паттерны .............................................................................. 661
Полезные библиотеки.......................................................................................... 684
Apache Commons ........................................................................................... 684
Google Guava................................................................................................. 685
Trove ............................................................................................................. 685
Colt ............................................................................................................... 686
Lombok.......................................................................................................... 686
OpenCSV........................................................................................................ 686
Библиотеки HTML и JSON ............................................................................. 687
Hibernate и другие совместимые с JPA библиотеки ........................................ 687
Joda-Time ...................................................................................................... 687
Библиотеки для создания диаграмм и графиков............................................ 687
Библиотеки 3D-графических функций ........................................................... 688
Библиотеки финансовых функций ................................................................. 688