Оглавление Предисловие к третьему изданию |
11 |
Введение |
13 |
Глава 1. Общие представления о языке Java |
17 |
1.1. Java и другие языки программирования. Системное и прикладное
программирование |
17 |
1.2. Виртуальная Java-машина, байт-код, JIT-компиляция. Категории программ,
написанных на языке Java |
22 |
1.3. Алфавит языка Java. Десятичные и шестнадцатеричные цифры и целые числа.
Зарезервированные слова |
28 |
Алфавит языка Java |
29 |
Десятичные и шестнадцатеричные цифры и целые числа |
29 |
Зарезервированные слова и литералы языка Java |
31 |
1.4. Управляющие последовательности. Символы Unicode. Специальные символы |
32 |
Управляющие последовательности |
32 |
Управляющие последовательности — символы формирования текста |
32 |
Управляющие последовательности — символы Unicode |
32 |
Простые специальные символы |
33 |
Составные специальные символы |
34 |
1.5. Идентификаторы. Переменные и типы. Примитивные и ссылочные типы |
35 |
1.6. Процедурное и объектно-ориентированное программирование. Инкапсуляция |
38 |
1.7. Работа со ссылочными переменными. Сборка мусора |
43 |
1.8. Проекты. Пакеты. Уровни видимости классов. Импорт классов |
47 |
1.9. Базовые пакеты и классы Java |
51 |
1.10. Технологии Java, .NET, ASP, PHP |
55 |
1.11. Среды разработки NetBeans, Eclipse, JDeveloper, JBuilder, IntelliJ IDEA |
59 |
NetBeans 6.5 |
61 |
Eclipse 3.4.1 (Ganimede) |
63 |
JDeveloper 11 |
65 |
JBuilder 2008 |
67 |
IntelliJ IDEA 7.0.4 |
69 |
Общий итог сравнения сред разработки |
70 |
Краткие итоги по главе |
70 |
Типичные ошибки |
73 |
Задания |
74 |
Глава 2. Среда NetBeans 6.5 |
75 |
2.1. Установка JDK 6 |
75 |
2.2. Установка среды NetBeans 6.5 |
79 |
2.3. Создание в NetBeans простейшего приложения Java |
87 |
2.4. Компиляция файлов проекта и запуск приложения. Jar-файлы |
92 |
2.5. Структура проекта NetBeans |
96 |
2.6. Создание в NetBeans приложения Java с графическим интерфейсом |
100 |
2.7. Редактор экранных форм |
105 |
2.8. Свойства компонентов |
110 |
2.9. Внешний вид приложения — технология Look and Feel |
116 |
2.10. Ведение проектов |
119 |
2.11. Редактирование меню экранной формы |
121 |
2.12. Создание нового класса |
129 |
2.13. Документирование исходного кода в Java |
130 |
2.14. Основные компоненты пакетов swing и awt |
139 |
2.15. Менеджеры размещения (Layout) и якоря (Anchor) |
144 |
2.16. Создание приложения Desktop Application |
145 |
Краткие итоги по главе |
147 |
Типичные ошибки |
148 |
Задания |
148 |
Глава 3. Примитивные типы данных и операторы для работы с ними |
150 |
3.1. Булевый (логический) тип |
150 |
3.2. Целые типы, переменные, константы |
151 |
3.3. Основные операторы для работы с целочисленными величинами |
155 |
3.4. Вещественные типы и класс Math |
156 |
3.5. Правила явного и автоматического преобразования типа при работе
с числовыми величинами |
160 |
3.6. Оболочечные классы. Упаковка (boxing) и распаковка (unboxing) |
162 |
3.7. Приоритет операторов |
164 |
Краткие итоги по главе |
165 |
Типичные ошибки |
167 |
Задания |
167 |
Глава 4. Работа с числами в языке Java |
169 |
4.1. Двоичное представление целых чисел |
169 |
Позиционные и непозиционные системы счисления |
169 |
Двоичное представление положительных целых чисел |
171 |
Двоичное представление отрицательных целых чисел. Дополнительный код |
172 |
Сложение положительного и отрицательного чисел |
173 |
Сложение отрицательных чисел |
174 |
Проблемы целочисленной машинной арифметики. Целочисленное переполнение |
174 |
Сложение положительных чисел |
174 |
Умножение положительных чисел |
175 |
Шестнадцатеричное представление целых чисел и перевод из одной системы
счисления в другую |
177 |
Преобразование чисел из системы с меньшим основанием в систему
с большим основанием |
178 |
Преобразование чисел из системы с большим основанием в систему
с меньшим основанием |
178 |
Преобразование чисел в системах счисления с кратными основаниями |
179 |
4.2. Побитовые маски и сдвиги |
180 |
4.3. Двоичное представление вещественных чисел |
183 |
Двоичные дроби |
183 |
Мантисса и порядок числа |
183 |
Научная нотация записи вещественных чисел |
185 |
Стандарт IEEE 754 представления чисел в формате с плавающей точкой |
186 |
Краткие итоги по главе |
190 |
Типичные ошибки |
191 |
Задания |
191 |
Глава 5. Управляющие конструкции |
193 |
5.1. Составной оператор |
193 |
5.2. Условный оператор if |
194 |
5.3. Оператор выбора switch |
198 |
5.4. Условное выражение ...?... : ... |
199 |
5.5. Операторы инкремента ++ и декремента -- |
200 |
5.6. Оператор цикла for |
200 |
5.7. Ошибки при использовании вещественного счетчика цикла |
202 |
5.8. Эффективная организация циклов при вычислениях в формате
с плавающей точкой |
205 |
5.9. Особенности целочисленных вычислений — организация циклов, приоритет
операторов и арифметическое переполнение |
210 |
5.10. Оператор цикла while — цикл с предусловием |
215 |
5.11. Оператор цикла do...while — цикл с постусловием |
217 |
5.12. Операторы прерывания continue, break, return, System.exit |
217 |
Краткие итоги по главе |
221 |
Типичные ошибки |
222 |
Задания |
222 |
Глава 6. Начальные сведения об объектном программировании |
223 |
6.1. Наследование и полиморфизм |
223 |
6.2. Функции. Модификаторы. Передача примитивных типов в функции |
231 |
6.3. Локальные и глобальные переменные. Модификаторы доступа и правила
видимости. Ссылка this |
235 |
6.4. Передача ссылочных типов в функции. Проблема изменения ссылки
внутри подпрограммы |
238 |
6.5. Наследование. Суперклассы и подклассы. Переопределение методов |
245 |
6.6. Наследование и правила видимости. Зарезервированное слово super |
250 |
6.7. Статическое и динамическое связывание методов. Полиморфизм |
252 |
6.8. Базовый класс Object |
254 |
6.9. Конструкторы. Зарезервированные слова super и this. Блоки инициализации |
256 |
6.10. Удаление неиспользуемых объектов и метод finalize. Проблема деструкторов
для сложно устроенных объектов |
260 |
6.11. Перегрузка методов |
261 |
6.12. Правила совместимости ссылочных типов как основа использования
полиморфного кода. Приведение и проверка типов |
263 |
Краткие итоги по главе |
267 |
Типичные ошибки |
268 |
Задания |
269 |
Глава 7. UML-диаграммы. Прямое и обратное проектирование.
Рефакторинг |
271 |
7.1. UML-диаграммы |
271 |
7.2. Структура окон проектов с UML-диаграммами |
279 |
7.3. Панель инструментов проектов с UML-диаграммами |
282 |
7.4. Прямое проектирование (Forward engineering) — построение кода классов по UML-
диаграммам |
286 |
7.5. Обратное проектирование (Reverse engineering) — построение UML-диаграмм по
разработанным классам |
293 |
7.6. Рефакторинг |
298 |
Первый случай — переименование элементов программы |
301 |
Второй случай — перемещение класса |
303 |
Третий случай — копирование класса для его дальнейшей модификации |
303 |
Четвертый случай — безопасное удаление элемента программы |
304 |
Пятый случай — изменение списка параметров метода |
304 |
Шестой случай — инкапсуляция полей данных |
305 |
Краткие итоги по главе |
306 |
Типичные ошибки |
306 |
Задания |
307 |
Глава 8. Важнейшие объектные типы |
308 |
8.1. Массивы |
308 |
8.2. Коллекции, списки, итераторы |
314 |
8.3. Перебор в цикле элементов коллекций. Оператор цикла for-each |
318 |
8.4. Работа со строками в Java. Строки как объекты. Классы String, StringBuffer и
StringBuilder |
319 |
8.5. Типы-перечисления (enum) |
333 |
8.6. Работа с датами и временем. Класс GregorianCalendar |
335 |
8.7. Работа с графикой и графическим пользовательским интерфейсом |
338 |
Код визуализации и код бизнес-логики приложения |
338 |
Графические примитивы |
339 |
Пример метода, работающего с графикой |
341 |
8.8. Исключительные ситуации |
345 |
Обработка исключительных ситуаций |
345 |
Иерархия исключительных ситуаций |
348 |
Объявление типа исключительной ситуации и оператор throw |
351 |
Объявление метода, который может возбуждать исключительную ситуацию.
Зарезервированное слово throws |
352 |
8.9. Работа с файлами и папками |
355 |
Работа с файлами и папками с помощью объектов типа File |
356 |
Выбор файлов и папок с помощью файлового диалога |
359 |
Работа с потоками ввода/вывода |
364 |
Краткие итоги по главе |
372 |
Типичные ошибки |
373 |
Задания |
374 |
Глава 9. Интерфейсы и композиция |
375 |
9.1. Проблемы множественного наследования классов. Интерфейсы |
375 |
9.2. Отличия интерфейсов от классов. Проблемы наследования интерфейсов |
378 |
9.3. Пример работы с интерфейсами |
380 |
9.4. Композиция — еще одна альтернатива множественному наследованию |
383 |
Краткие итоги по главе |
385 |
Типичные ошибки |
385 |
Задания |
385 |
Глава 10. Многопоточное программирование и многоядерные системы |
387 |
10.1. Потоки выполнения (threads) и синхронизация |
387 |
10.2. Преимущества и проблемы при работе с потоками выполнения |
388 |
10.3. Синхронизация по ресурсам и событиям |
389 |
Синхронизация по ресурсам |
389 |
Синхронизация по событиям |
391 |
10.4. Класс Thread и интерфейсы Runnable и Callable. Создание и запуск потока
выполнения |
392 |
10.5. Поля и методы, заданные в классе Thread |
394 |
10.6. Работа многопоточных приложений в многопроцессорных и многоядерных
системах |
396 |
Причины перехода к многопроцессорным и многоядерным системам |
396 |
Пример многопоточной программы |
398 |
Работа многопоточного приложения на многоядерном компьютере |
406 |
10.7. Синхронизация на основе интерфейсов Lock и Condition |
408 |
Интерфейс Lock |
408 |
Интерфейс Condition |
412 |
Краткие итоги по главе |
414 |
Типичные ошибки |
415 |
Задания |
416 |
Глава 11. Введение в сетевое программирование |
417 |
11.1. Краткая справка по языку HTML |
417 |
Система WWW и язык HTML |
417 |
Теги и их атрибуты |
419 |
Математические и специальные символы, греческие буквы |
425 |
11.2. Апплеты |
427 |
Структура апплета |
427 |
Примеры апплетов. Аннотация @Override |
429 |
Создание проекта с апплетами |
434 |
Редактор HTML-документов, стилей CSS и кода JavaScript |
437 |
11.3. Сервлеты |
442 |
Создание сервлета и конфигурирование сервера приложений |
444 |
Локализация сервлетов — работа с языковыми форматами |
451 |
11.4. Технология JSP — Java Server Pages |
456 |
11.5. Технология JSTL — JSP Standard Tag Library |
460 |
Краткие итоги по главе |
462 |
Типичные ошибки |
463 |
Задания |
464 |
Глава 12. Вложенные классы |
465 |
12.1. Виды вложенных классов |
465 |
12.2. Статические (static) вложенные классы и интерфейсы |
466 |
12.3. Внутренние (inner) классы |
468 |
12.4. Локальные (local) классы |
471 |
12.5. Анонимные (anonimous) классы и обработчики событий |
471 |
12.6. Анонимные (anonimous) классы и слушатели событий (listeners) |
472 |
Краткие итоги по главе |
475 |
Типичные ошибки |
477 |
Задания |
477 |
Глава 13. Приложение с графическим интерфейсом — DesktopApplication |
478 |
13.1. Структура простой заготовки DesktopApplication |
478 |
13.2. Исходный код класса DesktopApplication |
480 |
13.3. Исходный код класса DesktopApplicationView |
482 |
13.4. Конструктор главной формы приложения. Ресурсы приложения и концепция
управляющих синглетонов |
486 |
13.5. Аннотация @Action и показ справки |
491 |
13.6. Концепция управляющего объекта-модели. Модель TaskMonitor, класс Task
и обработчик propertyChange |
493 |
13.7. Создание задачи типа Task. Назначение иконок и добавление изображений |
500 |
13.8. Локализация приложения |
505 |
13.9. Измерение времени и досрочное прекращение выполнения задания |
510 |
13.10. Работа с межпрограммным буфером обмена — Сlipboard |
511 |
Копирование строк и изображений из буфера обмена в программу |
511 |
Копирование строк из программы в буфер обмена. Класс StringSelection |
514 |
Копирование изображений из программы в буфер обмена. Создание класса
ImageSelection |
515 |
13.11. Многопоточная система вычислений и индикации |
519 |
Краткие итоги по главе |
523 |
Типичные ошибки |
524 |
Задания |
525 |
Глава 14. Программирование мобильных телефонов |
526 |
14.1. Спецификация Java Micro Edition. Конфигурации и профили. Мидлеты |
526 |
14.2. Создание приложений для мобильных устройств |
527 |
14.3. Дизайнер пользовательского интерфейса мидлета |
533 |
14.4. Исходный код мидлета Hello, World! |
538 |
14.5. Заготовка мидлета "Крестики-нолики" |
547 |
14.6. Код бизнес-логики мидлета |
556 |
14.7. Создание собственного компонента, являющегося наследником TableItem,
и мидлета на его основе. Создание библиотеки |
563 |
14.8. Запуск мидлета "Крестики-нолики" на реальном телефоне |
571 |
14.9. Пример мидлета с переключением экрана и списком выбора |
573 |
14.10. Примеры приложений для мобильных телефонов, поставляемые со средой
NetBeans |
574 |
Краткие итоги по главе |
577 |
Типичные ошибки |
578 |
Задания |
578 |
Глава 15. Компонентное программирование |
579 |
15.1. Компонентная архитектура JavaBeans |
579 |
15.2. Создание компонента в NetBeans 6.5 |
580 |
15.3. Пример создания компонента в NetBeans 6.5 — панель с заголовком |
584 |
15.4. Добавление в компонент новых свойств |
588 |
15.5. Добавление в компонент новых событий |
590 |
Краткие итоги по главе |
593 |
Типичные ошибки |
594 |
Задания |
595 |
Глава 16. Платформо-зависимые методы и модуль C/C++ Pack |
596 |
16.1. Использование динамических библиотек. Объявление платформо-зависимых
(native) методов |
596 |
16.2. Интерфейс JNI (Java Native Interface) взаимодействия Java с C/C++.
Соответствие типов Java и C++ |
597 |
16.3. Пакет C/C++ Pack. Подключение компиляторов C++, C и библиотек |
603 |
16.4. Создание приложений C++ и C |
612 |
16.5. Примеры приложений с native-методами |
616 |
Первый этап. Создание исходного кода Java для native-методов |
617 |
Второй этап. Генерация h-файла заголовка C++, содержащего декларацию методов |
617 |
Третий этап. Написание на C++ реализации методов, заголовки которых заданы
в сгенерированном файле jnipackage_JniMultiply.h |
619 |
Четвертый этап. Компиляция кода C++ в динамическую библиотеку (DLL) |
620 |
Пятый этап. Запуск приложения вместе с DLL в NetBeans |
621 |
Шестой этап. Распространение приложения вместе с DLL |
621 |
Краткие итоги по главе |
625 |
Типичные ошибки |
626 |
Задания |
626 |
Глава 17. Отладка, тестирование и профилирование программ |
627 |
17.1. Отладка приложений в среде NetBeans |
627 |
17.2. Команды режима пошагового выполнения |
631 |
17.3. Пример отладки неправильно работающего приложения |
638 |
17.4. Принцип "презумпции виновности" и тестирование классов |
642 |
17.5. Профилирование приложений |
656 |
17.6. Профилирование отдельных методов |
664 |
17.7. Настройка профилировщика "на лету". Точки профилирования |
670 |
17.8. Нахождение проблем с использованием памяти — телеметрия |
678 |
17.9. Профилирование использования памяти классами |
681 |
Краткие итоги по главе |
687 |
Типичные ошибки |
688 |
Задания |
688 |
Заключение |
689 |
Приложение. Описание прилагаемого DVD |
691 |
Литература |
698 |
Основная |
698 |
Дополнительная |
698 |
Предметный указатель |
699 |
4 Оглавление
Оглавление |
9 |
|