Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

VPS в России, Европе и США

Бесплатная поддержка и администрирование

Оплата российскими и международными картами

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

Книги: [Классика] [Базы данных] [Internet/WWW] [Сети] [Программирование] [UNIX] [Windows] [Безопасность] [Графика] [Software Engineering] [ERP-системы] [Hardware]

     

Философия JAVA. Библиотека программиста

Брюс Эккель

Издано: 2001, СПб., "Питер"
Для широкого круга программистов
ISBN: 5-272-00250-4
Мягкий переплет, 800 стр.
Формат: 70x100/16

Начало
Предисловие
Введение
Структура книги
Компакт-диск
[Заказать книгу в магазине "Мистраль"]

Содержание

Предисловие
  Предисловие ко второму изданию
    Java 2
Введение
  Предпосылки
  Изучение Java
  Цели
  Интерактивная документация
  Главы
  Упражнения
  Мультимедийный компакт-диск
  Исходные тексты программ
    Стандарты программирования
  Версии Java
  Семинары и преподавание
  Ошибки
  Благодарности
    Помощники из Интернета

Глава 1. Введение в объекты
  Развитие абстракции
  У объекта существует интерфейс
  Скрытая реализация
  Многократное использование реализации
  Наследование: многократное использование интерфейса
    Сравнение связей "это-есть-то" и "это-схоже-с-тем"
  Взаимозаменяемые объекты и полиморфизм
    Абстрактные базовые классы и интерфейсы
  Место существования и время жизни объектов
    Коллекции и итераторы
    Однокоренная иерархия
    Библиотеки коллекций и поддержка их простого использования
    Домашняя дилемма: кто убирает?
  Обработка исключений: борьба с ошибками
  Многозадачность
  Постоянство
  Java и Интернет
    Что такое сеть WWW?
    Клиентское программирование
    Серверное программирование
    Уединенная арена: приложения
  Анализ и планирование
    Этап 0: Создание плана
    Этап 1: Что мы делаем?
    Этап 2: Как мы будем это создавать?
    Этап 3: Создание ядра
    Этап 4: Перечисление случаев использования
    Этап 5: Эволюция
    Планы окупаются
  Экстремальное программирование
    Сначала пишем тест
    Программирование парами
  Почему Java имеет такой успех
    Системы легче описывать и понимать
    Самое быстрое средство достижения цели -- библиотеки
    Обработка ошибок
    Программирование в большом масштабе
  Стратегии для переходного периода
    Рекомендации
    Возможные препятствия
  Java или C++?
  Резюме

Глава 2. Все является объектом
  Вы манипулируете объектами с помощью ссылок
  Вы должны явно создавать все объекты
    Где находится хранилище
    Особый случай: примитивные типы
    Массивы в Java
  Вам никогда не придется удалять объект
    Область видимости
    Область видимости объектов
  Создание новых типов данных: класс
    Поля и методы
  Методы, параметры и возвращаемые значения
    Список параметров
  Создание программы на Java
    Видимость имен
    Использование дополнительных компонентов
    Ключевое слово static
  Ваша первая программа на Java
    Компиляция и выполнение
  Комментарии и встроенная документация
    Документация в комментариях
    Синтаксис
    Внедренный HTML
    @see: обращение к другим классам
    Знаки документации классов
    Знаки документации переменных
    Знаки документации методов
    Пример документации
  Стиль программирования
  Резюме
  Упражнения

Глава 3. Управление ходом программы
  Использование операторов Java
    Приоритет
    Присвоение
    Математические операторы
    Автоматическое приращение и уменьшение
    Операторы сравнения
    Логические операторы
    Поразрядные операторы
    Операторы сдвига
    Тройной оператор "если-то"
    Оператор-запятая
    Строковый оператор "+"
    Обычные ошибки при использовании операторов
    Операторы приведения
  В Java отсутствует "sizeof"
    Таблица приоритета операторов
    Полное собрание операторов
  Управление выполнением программы
    Значения true и false
    if-else
    Цикл
    do-while
    for
    Ключевые слова break и continue
    switch
  Резюме
  Упражнения

Глава 4. Инициализация и завершение
  Конструктор гарантирует инициализацию
  Перегрузка методов
    Различение перегруженных методов
    Перегрузка с примитивными типами
    Перегрузка и возвращаемые значения
    Конструкторы по умолчанию
    Ключевое слово this
  Завершение: удаление и сборка мусора
    Для чего предназначен метод finalize()?
    Вы должны проводить завершающие действия
    Условие смерти
    Как работает сборщик мусора
  Инициализация членов класса
    Указание явной инициализации
    Инициализация конструктором
  Инициализация массивов
    Многомерные массивы
  Резюме
  Упражнения

Глава 5. Сокрытие реализации
  Пакет: элемент библиотеки
    Создание уникальных имен пакетов
    Библиотека инструментов
    Использование импорта для изменения поведения
    Предостережение при работе с пакетами
  Спецификаторы доступа Java
    "Дружественный"
    public: доступ к интерфейсу
    private: этого трогать нельзя!
    protected: что-то вроде "дружественного доступа"
  Интерфейс и реализация
  Доступ к классам
  Резюме
  Упражнения

Глава 6. Многократное использование классов
  Синтаксис композиции
  Синтаксис наследования
    Инициализация базового класса
  Сочетание композиции и наследования
    Обеспечение правильного завершения
    Сокрытие имен
  Выбор между композицией и наследованием
  protected
  Пошаговая разработка
  Восходящее преобразование типов
    Почему "восходящее преобразование"?
  Ключевое слово final
    Неизменные данные
    Неизменные методы
    Неизменные классы
    Предупреждение при работе с final
  Инициализация и загрузка классов
    Инициализация с наследованием
  Резюме
  Упражнения

Глава 7. Полиморфизм
  Восходящее преобразование: пересмотр
    Игнорирование типа объекта
  Трюк
    Связывание метод-вызов
    Получение нужного результата
    Расширяемость
  Переопределение против перегрузки
  Абстрактные классы и методы
  Конструкторы и полиморфизм
    Порядок вызова конструкторов
    Наследование и метод finalize()
    Действие полиморфных методов при вызове из конструкторов
  Использование наследования
    Чистое наследование в сравнении с расширением
    Нисходящее преобразование и динамическое определение типов
  Резюме
  Упражнения

Глава 8. Интерфейсы и внутренние классы
  Интерфейсы
    "Множественное наследование" в Java
    Расширение интерфейса с помощью наследования
    Группировка констант
    Инициализация полей интерфейсов
  Внутренние классы
    Внутренние классы и восходящее преобразование
    Внутренние классы в методах и областях видимости
    Безымянные внутренние классы
    Связь с внешним классом
    Статические внутренние классы
    Обращение к объекту внешнего класса
    Вложенные интерфейсы
    Использование внешнего окружения из внутреннего
    класса произвольного уровня вложенности
    Наследование от внутренних классов
    Можно ли переопределить внутренний класс?
    Идентификаторы внутренних классов
    Какой смысл во внутренних классах?
    Внутренние классы и система управления
  Резюме
  Упражнения

Глава 9. Хранение ваших объектов
  Массивы
    Массивы -- это первоклассные объекты
    Возвращение массива
    Класс Arrays
    Заполнение массива
    Копирование массива
    Сравнение массивов
    Сравнения элементов массива
    Сортировка массива
    Поиск в отсортированном массиве
    Массивы: резюме
  Введение в контейнеры
    Печать контейнеров
    Заполнение контейнеров
  Недостаток контейнеров: неизвестный тип
    Иногда это все равно работает
    Создание контейнера ArrayList для определенного типа
  Итераторы
  Классификация контейнеров
  Функциональность коллекций Collection
  Функциональность списков List
    Создание стека на основе списка LinkedList
    Создание очереди на основе списка LinkedList
  Функциональность множества Set
    Отсортированное множество SortedSet
  Функциональность таблицы Map
    Отсортированная таблица SortedMap
    Хэширование и хэш-код
    Переопределение метода hashCode()
  Хранение ссылок
    Таблица WeakHashMap
  Итераторы: еще один взгляд
    Выбор реализации
    Выбор списка List
    Выбор множества Set
    Выбор таблицы Map
  Сортировка и поиск в списках List
  Инструменты
    Получение неизменных коллекций и таблиц
    Синхронизация коллекции или таблицы
  Неподдерживаемые операции
  Контейнеры языка Java версий 1.0/1.1
    Vector и Enumeration
    Hashtable
    Stack
    BitSet
  Резюме
  Упражнения

Глава 10. Обработка ошибок и исключения
  Основные исключения
    Параметры при создании исключения
  Обработка исключения
    Блок try
    Обработчики исключений
  Создание собственных исключений
  Описание исключений
    Перехват любого типа исключения
    Повторное возбуждение исключения
  Стандартные исключения Java
    Особый случай -- RuntimeException
  Осуществление завершающих действий с помощью предложения finally
    Для чего нужно finally?
    Ловушка: потерянное исключение
  Ограничения исключений
  Конструкторы
  Соответствие исключений
    Исключения: полезные советы и рекомендации
  Резюме
  Упражнения

Глава 11. Система ввода/вывода Java
  Класс File
    Список директорий
    Создание директорий
  Ввод и вывод
    Разновидности входных потоков InputStream
    Разновидности выходных потоков OutputStream
  Добавление новых свойств и полезных интерфейсов
    Чтение из входного потока InputStream с помощью
    надстройки FilterInputStream
    Запись в выходной поток OutputStream с помощью
    надстройки FilterOutputStream
  Классы для чтения и записи данных -- Reader и Writer
    Источники и приемники данных
    Изменение поведения потока
    Классы, оставленные без изменений
  Сам по себе: класс RandomAccessFile
  Типичное использование потоков ввода/вывода
    Входные потоки
    Выходные потоки
    Ошибка?
    Каналы
  Стандартный ввод/вывод
    Чтение стандартного ввода
    Надстройка PrintWriter для стандартного вывода
    Перенаправление стандартного ввода/вывода
  Сжатие данных
    Простое сжатие алгоритмом GZIP
    Сжатие файлов в формате Zip
    Архивы Java ARchives (JARs)
  Сериализация объектов
    Нахождение класса
    Управление процессом сериализации
    Использование постоянства
  Разбитие входных данных
    StreamTokenizer
    StringTokenizer
    Проверка правильности написания имен
  Резюме
  Упражнения

Глава 12. Динамическое определение типов
  Необходимость в динамическом определении типов (RTTI)
    Объект Class
    Проверка перед преобразованием
  Синтаксис RTTI
  Отражение: динамическая информация о классе
    Информация о методах класса
  Резюме
  Упражнения

Глава 13. Создание окон и апплетов
  Простой апплет
    Ограничения апплетов
    Преимущества апплетов
    Каркасы приложения
    Запуск апплетов в Web-броузере
    Использование инструмента Appletviewer
    Тестирование апплетов
  Запуск апплетов из командной строки
    Инструмент для показа программ на экране
    Использование Проводника Windows
  Делаем кнопку
  Обработка события
  Многострочные текстовые поля
  Управление расположением компонентов
    Полярное расположение BorderLayout
    Последовательное расположение FlowLayout
    Табличное расположение GridLayout
    Расположение GridBagLayout
    Абсолютное расположение
    Блочное расположение BoxLayout
    Лучший вариант?
  Модель событий библиотеки Swing
    Типы событий и слушателей
    Обработка нескольких событий одновременно
  Каталог компонентов библиотеки Swing
    Кнопки
    Значки
    Подсказки
    Текстовые поля
    Рамки
    Панель прокрутки JScrollPane
    Мини-редактор
    Флажки
    Переключатели
    Комбинированные (выпадающие) списки
    Списки
    Панель вкладок
    Окна сообщений
    Меню
    Всплывающие меню
    Рисование
    Диалоговые окна
    Окно списка файлов
    Использование HTML для компонентов Swing
    Ползунки и индикаторы выполнения
    Деревья
    Таблицы
    Выбор внешнего вида и поведения программы
    Буфер обмена
  Упаковка апплета в файл формата JAR
  Техника программирования
    Динамическое связывание событий
    Разделение вычислений и пользовательского интерфейса
    Каноническая форма
  Визуальное программирование и компоненты JavaBeans
    Что такое компонент Bean?
    Получение информации о компоненте Bean
    с помощью инструмента Introspector
    Более сложный компонент Bean
    Упаковка компонента Bean
    Поддержка более сложных компонентов Bean
    Больше о компонентах Bean
  Резюме
  Упражнения

Глава 14. Многозадачность
  Чуткие пользовательские интерфейсы
    Наследование от потока Thread
    Использование потоков для создания чуткого интерфейса
    Совмещение потока с основным классом
    Создание произвольного количества потоков
    Потоки-демоны
  Совместное использование ограниченных ресурсов
    Неверный доступ к ресурсам
    Как Java разделяет ресурсы
    Компоненты JavaBeans: еще один взгляд
  Блокировка
    Переход в блокированное состояние
    Тупик
  Приоритеты
    Чтение и установка приоритетов
    Группы потоков
  Еще раз об интерфейсе Runnable
    Слишком много потоков
  Резюме
  Упражнения

Глава 15. Распределенное программирование
  Сетевое программирование
    Идентификация машины
    Разъемы
    Обслуживание произвольного количества клиентов
    Дейтаграммы
    Использование адресов URL из апплета
    Больше о сети
  Java и базы данных (интерфейс JDBC)
    Как сделать пример работоспособным
    Программа поиска с графическим пользовательским интерфейсом
    Почему интерфейс JDBC кажется таким сложным
    Более интересный пример
  Сервлеты
    Простой сервлет
    Сервлеты и многозадачность
    Обработка сеансов
    Запуск примеров-сервлетов
  Серверные страницы Java (JSP)
    Встроенные объекты
    Директивы страниц JSP
    Элементы сценариев страниц JSP
    Извлечение полей и значений
    Параметры и области видимости страниц JSP
    Страницы JSP и манипуляция сеансами
    Создание и модификация файлов cookie
    Серверные страницы JSP: резюме
  Удаленный вызов методов (RMI)
    Удаленные интерфейсы
    Реализация удаленного интерфейса
    Создание заглушек и каркасов
    Использование удаленного объекта
  CORBA
    Основы CORBA
    Пример
    Апплеты Java и архитектура CORBA
    CORBA в сравнении с RMI
  Технология Enterprise JavaBeans
    Сравнение компонентов JavaBeans и EJBs
    Спецификация EJB
    Компоненты EJB
    Составные части компонента EJB
    Действие EJB
    Типы компонентов EJB
    Разработка компонента EJB
    Компоненты EJB: резюме
  Jini: распределенные услуги
    Jini в контексте
    Что такое Jini?
    Как работает Jini
    Процесс обнаружения
    Процесс соединения
    Процесс поиска
    Разделение интерфейса и реализации
    Абстрагирование распределенных систем
  Резюме
  Упражнения

Приложение А. Передача и возвращение объектов
  Передача ссылок
    Совмещение имен
  Создание локальных копий
    Передача по значению
    Клонирование объектов
    Добавление к классу возможности клонирования
    Успешное клонирование
    Действие метода Object.clone()
    Клонирование составного объекта
    Глубокое копирование списка ArrayList
    Глубокое копирование сериализацией
    Добавление клонируемости далее по иерархии
    Почему все сделано так странно?
  Управление клонированием
    Конструктор-копировщик
  Классы "только для чтения"
    Создание классов "только для чтения"
    Недостаток неизменяемости
    Неизменные строки String
    Классы String и StringBuffer
    Строки String необычны
  Резюме
  Упражнения

Приложение Б. Java Native Interface (JNI)
  Вызов родного метода
    Генератор заголовочных файлов: javah
    Искажение имен и обозначения функций
    Реализация библиотеки DLL
  Доступ к функциям JNI: параметр JNIEnv
    Доступ к строкам
  Передача и использование объектов
  Интерфейс JNI и исключения
  Интерфейс JNI и многозадачность
  Использование уже существующего кода
  Дополнительная информация

Приложение В. Рекомендации по программированию на Java
  Проектирование
  Реализация

Приложение Г. Рекомендованная литература
  Программные средства
  Книги
    Анализ и планирование
    Язык Python
    Список моих собственных книг

Алфавитный указатель

Начало
Предисловие
Введение
Структура книги
Компакт-диск
Заказать книгу в магазине "Мистраль"

 

VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...