Глава 1. ВКУС JAVA
Тематическая история Java
Зачем Internet нужен язык?
Что такое Java?
Что такое JDK?
Состояние мира приложений Internet: экскурсия
Искусство
Бизнес
Образование
Собственные страницы (homepages)
Игры и забавы
На острие ножа
К чему все это идет?
Что может дать миру Java?
Что в книге?
Пиктограммы, используемые в книге


Глава 2.НЕМНОГО ПИКАНТНОСТИ ДЛЯ СОБСТВЕННОЙ СТРАНИЦЫ
HTML
Приступим: апплет-ярлык
Что еще может делать апплет-ярлык?
Где найти адреса других апплетов?
JARS


Глава 3. ВВЕДЕНИЕ В ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ JAVA.
Первые шаги: Простая программа Java
Компиляция приложения
Выполнение приложения
Приложения против апплетов
Что такое MinimalHelloWorld.java?
Резюме
Добавление метода
Константы и их типы
Вызывать методы очень просто
Передача аргументов методу
У методов тоже есть типы
Переменные
Резюме
Приветствие пользователя
Аргументы командной строки
Массивы
Неприятности в раю
Вставка отладочного кода
Интерактивный отладчик Java
Как исправить программу
Оператор if
Управление потоком логики
Выражения
Резюме
Приветствия всем друзьям
Объявление переменных и инициализаций
Оператор приращения
Циклы for
Перебор элементов массивов
Резюме
Использование объектов
Конструкторы и переменные экземпляров
Вызов методов экземпляра
Резюме
Экскурсия по JDK
Как узнать о содержимом JDK более подробно?
Выращивая свою собственную (документацию имеется в виду)
Вставка комментариев в код
Перед дорогой


Глава 4. БАЗОВЫЕ ИНГРЕДИЕНТЫ КРЕПКОГО НАПИТКА
В воздухе что-то есть
Набор символов Unicode
Правила именования идентификаторов Java
Комментарии
Основные элементы: простые типы
Числовые типы
Целые типы
Целые константы
Операторы для целых
Унарные целые операторы
Бинарные целые операторы
Операторы операция = (Op=operators)
Операторы отношений
Тип char
Специальные символы
Типы с плавающей точкой
Константы с плавающей точкой
Операторы для значений с плавающей точкой
Тип boolean
Операторы для переменных boolean
А как насчет строк?
Приведение
Каша заваривается круче: управление потоком
Последовательное выполнение
Условное выполнение
Альтернативные пути
Условный оператор "?:"
Множественные альтернативные пути
Повторение
Цикл for
Метки
Оператор return
Классы и интерфейсы
Приведение классов
Методы
Переопределение методов
Конструкторы
Класс против объекта: статические атрибуты и поведение
Спецификаторы доступа
Модификатор final
Синхронизация
Абстрактные классы и методы
Интерфейсы
Массивы и жизнь без указателей
Сборка мусора и завершение (finalization)
Пакеты и модули компиляции (compilation units)
Использование определении из других пакетов
Порядок объявления и инициализации
Разрешение имен
Чего в Java нет


Глава 5 ИСКЛЮЧЕНИЯ: ЧТО ДЕЛАТЬ, КОГДА ЧТО-ТО ПРОИСХОДИТ НЕ ТАК
Основы
Ты бросаешь, я ловлю
Встроенные исключения
Большая перчатка
Иерархия исключении
Создание своих исключении
Поочередная переброска исключении
К чему столько хлопот?
Класс исключений времени выполнения
Так вот почему моя программа разрушилась!
Переброска багажа
Создание собственных исключений
Выбор родителя
Перенос багажа
Когда создавать свои исключения
Использование исключений для отладки
Зачем нужны исключения?
Коды возврата ошибки
А как дела у нас?
Исключения против кодов возврата ошибок
Класс Error
И наконец
Подведем итоги


Глава 6 ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ ДЛЯ НАЧИНАЮЩИХ
ООП без программирования
Базовые концепции обьектно ориентированного программирования
Как вы знаете то, что знаете?
Собаки и кошки
Черные ящики
Интерфейсы
Программирование на Java и ООП
Абстракция
Объект данные + методы
Реализация (instantiating) классов
Инкапсуляции
Элементы данных (data members)
Методы
Наследование
Доступ и видимость
Полиморфизм
Абстрактные методы и классы
Перегрузка методов
Кто ты?
this и super
Интерфейсы
Корень всех классов
Исследование базовых методов
Классы объектов в JDK
Дизайн ООП
Не пренебрегайте анализом
Не раздувайте свои объекты
Не пренебрегайте ООП конструированием
Будьте внимательны при расширении приложении
Если вам нравится это, то вы полюбите и вот это
Объектно-ориентированный анализ и дизайн
Шаблоны конструкции
Подведем итог


Глава 7 НЕСКОЛЬКО МОИХ ЛЮБИМЫХ СТРОК
Массивы в Java
Классы String и StringBuffer
Класс String
Создание нулевых cipoK (Null Strings)
Специальные символы в объектах String
Соединение строк вместе
Класс StringBuffer
Длина (length) StringBuffer в сравнении с его емкостью (capacity)
Класс StnngTokenizer
Использование классов оболочек
Использование статических методов
Класс Number и другие числовые классы
Классы Boolean и Character


Глава 8 ВВОД, ВЫВОД И СИСТЕМА
Можете ли вы выдержать еще одну программу "Hello, World"?
Разрешите и миру сказать "Здравствуй"
Ввод-вывод файлов
Форматируемый ввод вывод
файлы произвольного доступа
Класс File
Класс System
Класс Properties
Ридер файлов INI
Ввод-вывод, ввод-вывод, мы с тобой справились


Глава 9 СТРУКТУРЫ ДАННЫХ
Список покупок
Vector
Виктор, что такое вектор?
Что такое Enumeration
Емкость вектора
Добавление данных к вектору
HashCode и Equals
Получение данных из Vector
Разное
Stack
Dictionary (Словарь)
Hashtable
Более пристальный взгляд на Hashtable
Опять Enumeration
Удаление и очистка
Структуры данных Сделай сам
Очередь
Сериализация структур данных
Повторно используемый код
Давайте подытожим
Любимая структура данных


Глава 10 ДАТА И ВРЕМЯ
31 декабря 1999 11:59:57...11:59:58...11:59:59...О-о-о-п!
System и время
Что такое даты
Не подскажете, какой сейчас день?
Чувствительные строки
Проанализируйте это!
Что такое временные зомы
Форматирование Сделай сам
Всемирные время и дата
Сравнения времени и дат
Часы реального времени
Время истекло!


Глава 11 GREP: РЕАЛЬНОЕ ПРИЛОЖЕНИЕ
Что такое Grep?
Обзор
Что такое [A-Z] регулярные выражения?
Метасимволы, которые я никогда не любил
Наш пакет регулярных выражений
Класс RegExp
Реализация пакета регулярных выражении
Однако, хватит похвал. Давайте конструировать классы
Собирая в пакет
Построение пакета регулярных выражении
Обзор проектирования
Конструирование списка лексем
Код для обработки ошибок
RegExp match - основная движущая сила
REliteral match
Перебор с возвратами (backtracking)
Абстрактный класс RegExpToken
REliteral
REmultiLiteral
Проверка кода
Создание Grep в Java
Поиск интересующей почты в Java
Продвигаясь дальше
Если вам нравится это, вы полюбите и вот эго


Глава 12 ПРОГРАММИРОВАНИЕ АППЛЕТОВ JAVA
Что такое апплет7
"Hello, World" в п-ной степени
Компиляция и выполнение
Объяснения по поводу апплета "Hello, World"
Что? Нет main?
Класс Applet
Выполнение работы
Начало и конец
Методы init и destroy
Получение параметров
Один или два параметра, сэр?
Преобразование параметров
Параметры по умолчанию
Краткий обзор
Апплет ожил!
Красный свет - зеленый свет
Потоки
Создание потока для апплета
Итак, как это работает
Методы жизненного цикла
Исследование жизненного цикла апплета
Идиома апплета
Сообщения пользователю о том, что происходит
Отладка апплетов
Размещение апплета
Что можно делать с помощью апплетов?
Безопасность апплетов
Работа с менеджером безопасности
Программирование со связанными за спиной руками
Другие механизмы безопасности
Подведем итог


Глава 13 ИНСТРУМЕНТЫ ПОЛЬЗОВАТЕЛЬСКОГО ИНТЕРФЕЙСА JAVA
AWT
Краткое учебное пособие
Создание окна Frame: суть
Добавление кнопки
Заботы низкого уровня
Разберемся в деталях
Как заставить объекты отображать самих себя?
Смешивая свои картинки
Ключевая концепция
Отрисовка
Рисование границы
Рисование линии
Управляемая случайность
Еще о методах paint
Принудительная перерисовка
Как вызывается метод run Test?
Краткое отступление, посвященное порождению
Назад, к событию, требующему реакции
Раскладки
Загадка исчезнувшего цикла события
Компонент руководитель AWT
Элементы управления приспособления и компоненты
Контейнеры
Графика, пользовательские интерфейсы и броузеры
Еще одна тайна раскрыта
Что такое эксперты
В заключение


Глава 14 КОМПОНЕНТЫ ПОЛЬЗОВАТЕЛЬСКОГО ИНТЕРФЕЙСА
Недавняя история
События
Компоненты
Класс Component
Совершим волшебное путешествие по компонентам
Метки
Метка римской цифры
Римские цифры
Кнопки
Меню
Элементы управления выбором (Checkbox-элементы) и переключатели
Поля текста и области текста
Поля текста
Поле ввода пароля
Обработка формы
Область текста
Создание консоли отладки
Списки
Выборы
Линейки прокрутки
Ввод цифровых значении
Canvas (полотно)
Контейнеры
Апплет
Кадр
Взаимообмен между классами Frame и Applet
Панель
Диалоги
Диалог File
Реализация своих собственных диалогов
Диалог Quit
Диалог About
Периодическая таблица элементов
Прогон учебного гримера
Разработка периодической таблицы
Документирование событий
Разработка зонда события
Дешифрация события
Применение зонда
Место для проверки нашего собственного зонда
Прогон зонда
Как поддерживать зонд событий на современном уровне
Подведем итог


Глава 15 ГРАФИКА: КАК НАУЧИТЬСЯ ШИТЬ, ИСПОЛЬЗУЯ БЛЕСТКИ
Шитье с использованием блесток
Система координат
Программы этого раздела
Рисование линии: краткий обзор
Устройства для рисования
Метод рисования
Краткое руководство по объектам Graphics
Ограничивающее окно
Прямоугольники
Закругленные прямоугольники
3D-прямоугольники
Формы с кривыми
Дуги
Многоугольники (Polygon)
Создание своих собственных форм
Улучшение 3D-прямоугольников
Как рисовать собственные окружности
Сохранение целостности ваших форм
Отсечение
Очистка графики
Режимы рисования
Составление карты вашего прогресса
Класс Graph
Построение графика
Проверка графика
Биологическая случайность
Улучшенная программа графики
Генератор случайных чисел
Ограничение чисел
Программа для игры в кости
Как это работает
Псевдослучайные числа
Цвета
Создание цветов
Зачем три способа создания цвета?
Изменение цветов
Наблюдатель и наблюдаемый
Текст
Шрифты
Листинг всех шрифтов, имеющихся в машине
Что такое Toolkit?
Выбор шрифта
Реализация селектора шрифта
Font Metrics (метрика шрифта)
Текст, который покачивается
Подведем итог


Глава 16 ВЗАИМОДЕЙСТВИЕ С ПОЛЬЗОВАТЕЛЕМ
Обработка событий - резюме
У нее "Глаза Java"
Как работает программа
Обработка события mouseMove
Кадр и апплет
Включение новых компонентов
Щелчки по мыши
Обнаружение двойного щелчка по кнопке мыши
События клавиатуры
Дешифрация значений клавиши
Дешифрация специальных клавиш
Дешифрация клавиши
Некоторые полезные значения клавиш
Дешифрация модификаторов
Объекты динамического рисования
Как это работает
Класс Shematic
Класс Device
Класс Resistor
Как работает выбор
В тисках ограничивающего окна
Улучшение ограничивающего окна
Перемещение устройства
Плавное перемещение
Установка правильного положения
Организация оболочек динамических объектов
Подведем итог


Глава 17 ИЗОБРАЖЕНИЕ И ЗВУК
Загрузка Image
Создание и загрузка объекта Image
Отображение изображении
Просмотр файла GIF
Развернутое изображение
Наблюдатели изображения и метод imageUpdate
Прекращение мерцания
Новый и улучшенный апплет изображения
Цикл изображения
Слежение за медиа
Полезные источники для анимации GIF
Предотвращение повторного мерцания
Рисование объектов с неправильной формой
Прозрачные файлы GIF
Создание прозрачного GIF
Двойная буферизация
Цикл изображении последняя версия (честная)
Скорость фильма
Демонстрационная программа аниматора
За пределами циклов изображения
Масштабирование изображения
Два новых друга
Быстрое резюме
Готовы для еще чего-то?
Создание изображении в памяти
Потребитель изображения
Фильтрация изображений
Ореол изображения и постепенное появление и исчезновение
Значение альфа
Расслабьтесь в бассейне с рыбой
Спрайт
Бассейн для рыбок
Звук
Создание ваших собственных звуков
Подведем итог


Глава 18. МЕНЕДЖМЕНТ КОМПОНОВКИ
Быстрое резюме
Состояние постоянного движения
Стандартные классы компоновки
BorderLayout
FlowLayout
GndLayout
GndBagLayout
CardLayout
Метод add
Заранее определенные компоновки контейнеров
Смешение компоновок
Руководство по разработке компоновок
Некоторые полезные компоновки
Полное заполнение окна
Кнопочная идиома ОК/Сапсеl
Компоновка входов формы
Метод insets
Как работает менеджмент компоновки
Основные игроки
Размещение компонентов
Абстрактный класс LayoutManager
Построение собственного менеджера компоновки
CenterLayout
Если вам нравится это, вы полюбите и другое
XYLаyout
PаckerLаyout
Подведем итог


Глава 19 СОЗДАНИЕ ВАШИХ СОБСТВЕННЫХ КОМПОНЕНТОВ
Гитарные аккорды
Что она будет делать?
Реализация элемента управления диаграммы аккордов
Модель аккорда
Входной формат
Диаграмма аккордов
UndecoratedChordDiagram
Иерархия элементов управления
Рисование диаграммы
Взаимодействие с пользователем
Делая его настраиваемым
Тестирование кода
Обзор выполненного
Является ли этот подход единственным?
Зачем вам писать собственные органы управления?
Приступая к написанию собственных элементов управления
Выбор собственного родительского класса
Если вам нравится это, вы полюбите и другое


Глава 20 ЗАМЕЧАТЕЛЬНЫЕ ПОТОКИ, JAVA-МЭН!
Возврат к основам
Простейший поток
Один поток плюс три
Состязание потоков
Жизнь и периоды потока
Порядок исполнения
Приостановить, но не удалить
Как создать поток
Метод run
Стандартная идиома потоков
Углубленные вопросы потоков
Блокирование ввода/вывода
Синхронизация
Степень детализации блокирования
Взаимные блокировки (тупиковые ситуации)
Данные специфичные для потока
Приоритеты потоков
ThreadGroup
Руководящие принципы по поводу потоков
Подведем итог
Если вам нравится это, вы полюбите и другое
comp.programming.threads
Sun\'s Threads Page


Глава 21 ВОСПОЛЬЗУЙТЕСЬ INTERNET САМИ
Великое рядом
Протоколы с сорванным покровом тайны
Адреса Internet
URL и другие обитатели Internet
История протоколов
Как разрабатывалась Internet
Протоколы служат ключом
Рождение протокола
Протокол Whols
Экзотические порты вызова
Общепринятые номера портов
Премудрость гнезд
Снова возвращаясь к ServerSocket
Исследование: кто есгь кто в Internet
Другие популярные протоколы
Time
Finger
Email
FTP
News
Проблемы апплетов
Applet Context
Управление броузером
Загрузка удаленного апплета
Поговорите между собой, апплеты
Обработка множества содержаний
Определенное содержание
Определение различных содержании
Детали содержания
Платформа обработчика содержания
Создание связи
ContentHandlers со сборочного конвейера
Получение индекса обработчика
Что распознает ContentHandler
Объекты спроектированные вами
Вкус подхода клиент-сервер
Отношение
Я слышу голоса
Заставляя это жужжать
Вы должны быть обслужены?
Клиент
Вопросы предвидения
Сияющий орб (ORB)
Подведем итог
Если вам нравится это, вы полюбите и другое
Страницы Java VPRO
JIDL
Mapplet


Глава 22 ВЗАИМОДЕЙСТВИЕ С ЯЗЫКОМ ПРОГРАММИРОВАНИЯ С
Вы внутри
Что такое собственный метод?
Основы программирования
Шесть шагов к небесам
Шаг 1: написание собственного метода Java
Шаг 2: трансляция собственного метода Java
Шаг 3: создание переходного .h файла
Шаг 4: создание переходного .с файла
Шаг 5: реализация функции С
Шаг 6: Создание библиотеки
Шаг 6а: для Windows 95/NT
Шаг 6b: Для Solaris
Использование собственного метода
Вывод
Использование переменных экземпляров
Передача параметров
Возвращаемые значения
Вызов методов Java
Должны ли вы использовать собственные методы?
Если вам нравится это, вы полюбите и другое
Подведем итог


ПРИЛОЖЕНИЕ А

ПРИЛОЖЕНИЕ В

ПРИЛОЖЕНИЕ С

ИСПОЛЬЗОВАНИЕ CD-ROM