КнигоПровод.Ru22.11.2024

/ИТ-книги

Философия Java — Эккель Б.
Философия Java
Эккель Б.
год издания — 2001, кол-во страниц — 880, ISBN — 5-272-00250-4, тираж — 5000, язык — русский, тип обложки — мягк., масса книги — 800 гр., издательство — Питер
серия — Библиотека программиста
цена: 1000.00 рубПоложить эту книгу в корзину
Сохранность книги — хорошая

Bruce Eckel
President, MindView, Inc.
Thinking in Java
Second Edition

Prentice Hall 2000

Пер. с англ. И. Портянкина

Уровень пользователя: опытный/эксперт

Формат 70x100 1/16
ключевые слова — java, объект, интерфейс, полиморф, многозадачност, перегрузк, this, public, private, protected, наследован, массив, хэширован, jar, rtti, апплет, swing, javabeans, bean, thread, runnable, jdbc, сервлет, jsp, rmi, corba, ejb, jini, jni

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

ОГЛАВЛЕНИЕ

Предисловие20
 
Предисловие ко второму изданию22
Java 224
 
Введение25
 
Предпосылки25
Изучение Java26
Цели27
Интерактивная документация27
Главы28
Упражнения32
Мультимедийный компакт-диск32
Исходные тексты программ33
Стандарты программирования34
Версии Java34
Семинары и преподавание35
Ошибки35
Благодарности35
Помощники из Интернета38
 
Глава 1 • Введение в объекты39
 
Развитие абстракции40
У объекта существует интерфейс41
Скрытая реализация43
Многократное использование реализации44
Наследование: многократное использование интерфейса45
Сравнение связей «это-есть-то» и «это-схоже-с-тем»49
Взаимозаменяемые объекты и полиморфизм50
Абстрактные базовые классы и интерфейсы53
Место существования и время жизни объектов54
Коллекции и итераторы55
Однокоренная иерархия57
Библиотеки коллекций и поддержка их простого использования58
Домашняя дилемма: кто убирает?59
Обработка исключений: борьба с ошибками60
Многозадачность61
Постоянство62
Java и Интернет63
Что такое сеть WWW?63
Клиентское программирование65
Серверное программирование71
Уединённая арена: приложения71
Анализ и планирование72
Этап 0: Создание плана74
Этап 1: Что мы делаем?74
Этап 2: Как мы будем это создавать?78
Этап 3: Создание ядра81
Этап 4: Перечисление случаев использования81
Этап 5: Эволюция82
Планы окупаются83
Экстремальное программирование84
Сначала пишем тест84
Программирование парами86
Почему Java имеет такой успех87
Системы легче описывать и понимать87
Самое быстрое средство достижения цели — библиотеки87
Обработка ошибок87
Программирование в большом масштабе88
Стратегии для переходного периода88
Рекомендации88
Возможные препятствия90
Java или C++?92
Резюме93
 
Глава 2 • Всё является объектом95
 
Вы манипулируете объектами с помощью ссылок95
Вы должны явно создавать все объекты96
Где находится хранилище97
Особый случай: примитивные типы98
Массивы в Java99
Вам никогда не придётся удалять объект100
Область видимости100
Область видимости объектов101
Создание новых типов данных: класс102
Поля и методы102
Методы, параметры и возвращаемые значения104
Список параметров105
Создание программы на Java106
Видимость имён106
Использование дополнительных компонентов107
Ключевое слово static107
Ваша первая программа на Java109
Компиляция и выполнение111
Комментарии и встроенная документация111
Документация в комментариях112
Синтаксис112
Внедрённый HTML113
@see: обращение к другим классам114
Знаки документации классов114
Знаки документации переменных115
Знаки документации методов115
Пример документации116
Стиль программирования116
Резюме117
Упражнения117
 
Глава 3 • Управление ходом программы119
 
Использование операторов Java119
Приоритет120
Присвоение120
Математические операторы122
Автоматическое приращение и уменьшение124
Операторы сравнения125
Логические операторы127
Поразрядные операторы129
Операторы сдвига130
Тройной оператор «если-то»133
Оператор-запятая134
Строковый оператор «+»134
Обычные ошибки при использовании операторов135
Операторы приведения135
В Java отсутствует «sizeof»138
Таблица приоритета операторов138
Полное собрание операторов139
Управление выполнением программы147
Значения true и false147
if-else148
Цикл149
do-while150
for150
Ключевые слова break и continue151
switch157
Резюме160
Упражнения161
 
Глава 4 • Инициализация и завершение162
 
Конструктор гарантирует инициализацию162
Перегрузка методов164
Различение перегруженных методов166
Перегрузка с примитивными типами167
Перегрузка и возвращаемые значения170
Конструкторы по умолчанию171
Ключевое слово this171
Завершение: удаление и сборка мусора174
Для чего предназначен метод finalize()?176
Вы должны проводить завершающие действия176
Условие смерти180
Как работает сборщик мусора181
Инициализация членов класса184
Указание явной инициализации186
Инициализация конструктором187
Инициализация массивов193
Многомерные массивы197
Резюме199
Упражнения200
 
Глава 5 • Сокрытие реализации202
 
Пакет: элемент библиотеки203
Создание уникальных имён пакетов205
Библиотека инструментов208
Использование импорта для изменения поведения209
Предостережение при работе с пакетами211
Спецификаторы доступа Java211
«Дружественный»212
public: доступ к интерфейсу213
private: этого трогать нельзя!214
protected: что-то вроде «дружественного доступа»215
Интерфейс и реализация216
Доступ к классам218
Резюме220
Упражнения222
 
Глава 6 • Многократное использование классов224
 
Синтаксис композиции225
Синтаксис наследования228
Инициализация базового класса230
Сочетание композиции и наследования232
Обеспечение правильного завершения233
Сокрытие имён236
Выбор между композицией и наследованием237
protected238
Пошаговая разработка239
Восходящее преобразование типов240
Почему «восходящее преобразование»?241
Ключевое слово final242
Неизменные данные242
Неизменные методы246
Неизменные классы248
Предупреждение при работе с final249
Инициализация и загрузка классов249
Инициализация с наследованием250
Резюме251
Упражнения252
 
Глава 7 • Полиморфизм254
 
Восходящее преобразование: пересмотр255
Игнорирование типа объекта256
Трюк257
Связывание метод-вызов257
Получение нужного результата258
Расширяемость261
Переопределение против перегрузки263
Абстрактные классы и методы265
Конструкторы и полиморфизм268
Порядок вызова конструкторов268
Наследование и метод finalize()270
Действие полиморфных методов при вызове из конструкторов273
Использование наследования275
Чистое наследование в сравнении с расширением277
Нисходящее преобразование и динамическое определение типов278
Резюме280
Упражнения281
 
Глава 8 • Интерфейсы и внутренние классы283
 
Интерфейсы284
«Множественное наследование» в Java286
Расширение интерфейса с помощью наследования290
Группировка констант291
Инициализация полей интерфейсов292
Внутренние классы293
Внутренние классы и восходящее преобразование295
Внутренние классы в методах и областях видимости297
Безымянные внутренние классы299
Связь с внешним классом301
Статические внутренние классы303
Обращение к объекту внешнего класса305
Вложенные интерфейсы306
Использование внешнего окружения из внутреннего класса произвольного
    уровня вложенности309
Наследование от внутренних классов310
Можно ли переопределить внутренний класс?310
Идентификаторы внутренних классов312
Какой смысл во внутренних классах?313
Внутренние классы и система управления317
Резюме324
Упражнения324
 
Глава 9 • Хранение ваших объектов327
 
Массивы328
Массивы — это первоклассные объекты329
Возвращение массива332
Класс Arrays333
Заполнение массива343
Копирование массива344
Сравнение массивов345
Сравнения элементов массива345
Сортировка массива348
Поиск в отсортированном массиве350
Массивы: резюме351
Введение в контейнеры352
Печать контейнеров353
Заполнение контейнеров354
Недостаток контейнеров: неизвестный тип358
Иногда это всё равно работает360
Создание контейнера ArrayList для определённого типа361
Итераторы362
Классификация контейнеров366
Функциональность коллекций Collection368
Функциональность списков List371
Создание стека на основе списка LinkedList374
Создание очереди на основе списка LinkedList375
Функциональность множества Set376
Отсортированное множество SortedSet378
Функциональность таблицы Map378
Отсортированная таблица SortedMap382
Хэширование и хэш-код383
Переопределение метода hashCode()390
Хранение ссылок393
Таблица WeakHashMap395
Итераторы: ещё один взгляд396
Выбор реализации397
Выбор списка List398
Выбор множества Set401
Выбор таблицы Map403
Сортировка и поиск в списках List405
Инструменты406
Получение неизменных коллекций и таблиц407
Синхронизация коллекции или таблицы408
Неподдерживаемые операции409
Контейнеры языка Java версий 1.0/1.1.412
Vector и Enumeration412
Hashtable413
Stack413
BitSet414
Резюме416
Упражнения416
 
Глава 10 • Обработка ошибок и исключения421
 
Основные исключения422
Параметры при создании исключения423
Обработка исключения424
Блок try424
Обработчики исключений425
Создание собственных исключений426
Описание исключений429
Перехват любого типа исключения430
Повторное возбуждение исключения432
Стандартные исключения Java435
Особый случай — RuntimeException435
Осуществление завершающих действий с помощью предложения finally437
Для чего нужно finally?438
Ловушка: потерянное исключение441
Ограничения исключений442
Конструкторы445
Соответствие исключений448
Исключения: полезные советы и рекомендации449
Резюме449
Упражнения450
 
Глава 11 • Система ввода/вывода Java452
 
Класс File453
Список директорий453
Создание директорий456
Ввод и вывод458
Разновидности входных потоков InputStream459
Разновидности выходных потоков OutputStream460
Добавление новых свойств и полезных интерфейсов461
Чтение из входного потока InputStream с помощью надстройки
    FilterlnputStream462
Запись в выходной поток OutputStream с помощью надстройки
    FilterOutputStream463
Классы для чтения и записи данных — Reader и Writer464
Источники и приёмники данных465
Изменение поведения потока465
Классы, оставленные без изменений466
Сам по себе: класс RandomAccessFile467
Типичное использование потоков ввода/вывода467
Входные потоки470
Выходные потоки472
Ошибка?473
Каналы474
Стандартный ввод/вывод474
Чтение стандартного ввода475
Надстройка PrintWriter для стандартного вывода475
Перенаправление стандартного ввода/вывода476
Сжатие данных477
Простое сжатие алгоритмом GZIP478
Сжатие файлов в формате Zip478
Архивы Java ARchives (JARs)481
Сериализация объектов482
Нахождение класса486
Управление процессом сериализации487
Использование постоянства495
Разбитие входных данных502
StreamTokenizer502
StringTokenizer504
Проверка правильности написания имён506
Резюме514
Упражнения515
 
Глава 12 • Динамическое определение типов517
 
Необходимость в динамическом определении типов (RTTI)517
Объект Class520
Проверка перед преобразованием .522
Синтаксис RTTI529
Отражение: динамическая информация о классе531
Информация о методах класса533
Резюме537
Упражнения538
 
Глава 13 • Создание окон и апплетов540
 
Простой апплет543
Ограничения апплетов543
Преимущества апплетов544
Каркасы приложения544
Запуск апплетов в Web-броузере546
Использование инструмента Appletviewer547
Тестирование апплетов548
Запуск апплетов из командной строки549
Инструмент для показа программ на экране551
Использование Проводника Windows553
Делаем кнопку554
Обработка события555
Многострочные текстовые поля558
Управление расположением компонентов559
Полярное расположение BorderLayout560
Последовательное расположение FlowLayout561
Табличное расположение GridLayout561
Расположение GridBagLayout562
Абсолютное расположение562
Блочное расположение BoxLayout563
Лучший вариант?566
Модель событий библиотеки Swing567
Типы событий и слушателей567
Обработка нескольких событий одновременно573
Каталог компонентов библиотеки Swing576
Кнопки576
Значки579
Подсказки581
Текстовые поля581
Рамки583
Панель прокрутки JScrollPane584
Мини-редактор586
Флажки587
Переключатели588
Комбинированные (выпадающие) списки589
Списки590
Панель вкладок592
Окна сообщений593
Меню595
Всплывающие меню600
Рисование602
Диалоговые окна604
Окно списка файлов608
Использование HTML для компонентов Swing610
Ползунки и индикаторы выполнения611
Деревья612
Таблицы614
Выбор внешнего вида и поведения программы616
Буфер обмена618
Упаковка апплета в файл формата JAR621
Техника программирования621
Динамическое связывание событий622
Разделение вычислений и пользовательского интерфейса623
Каноническая форма626
Визуальное программирование и компоненты JavaBeans626
Что такое компонент Bean?628
Получение информации о компоненте Bean с помощью инструмента
    Introspector630
Более сложный компонент Bean635
Упаковка компонента Bean638
Поддержка более сложных компонентов Bean640
Больше о компонентах Bean641
Резюме641
Упражнения642
 
Глава 14 • Многозадачность645
 
Чуткие пользовательские интерфейсы646
Наследование от потока Thread648
Использование потоков для создания чуткого интерфейса650
Совмещение потока с основным классом652
Создание произвольного количества потоков654
Потоки-демоны657
Совместное использование ограниченных ресурсов659
Неверный доступ к ресурсам659
Как Java разделяет ресурсы663
Компоненты JavaBeans: ещё один взгляд668
Блокировка672
Переход в блокированное состояние672
Тупик682
Приоритеты686
Чтение и установка приоритетов686
Группы потоков690
Ещё раз об интерфейсе Runnable697
Слишком много потоков700
Резюме703
Упражнения705
 
Глава 15 • Распределённое программирование707
 
Сетевое программирование708
Идентификация машины708
Разъёмы712
Обслуживание произвольного количества клиентов718
Дейтаграммы723
Использование адресов URL из апплета723
Больше о сети726
Java и базы данных (интерфейс JDBC)726
Как сделать пример работоспособным729
Программа поиска с графическим пользовательским интерфейсом733
Почему интерфейс JDBC кажется таким сложным735
Более интересный пример735
Сервлеты742
Простой сервлет743
Сервлеты и многозадачность747
Обработка сеансов748
Запуск примеров-сервлетов752
Серверные страницы Java (JSP)752
Встроенные объекты754
Директивы страниц JSP755
Элементы сценариев страниц JSP755
Извлечение полей и значений757
Параметры и области видимости страниц JSP758
Страницы JSP и манипуляция сеансами759
Создание и модификация файлов cookie761
Серверные страницы JSP: резюме762
Удалённый вызов методов (RMI)762
Удалённые интерфейсы763
Реализация удалённого интерфейса764
Создание заглушек и каркасов766
Использование удалённого объекта767
CORBA768
Основы CORBA769
Пример770
Апплеты Java и архитектура CORBA775
CORBA в сравнении с RMI775
Технология Enterprise JavaBeans776
Сравнение компонентов JavaBeans и EJBs777
Спецификация EJB778
Компоненты EJB778
Составные части компонента EJB780
Действие EJB781
Типы компонентов EJB781
Разработка компонента EJB783
Компоненты EJB: резюме787
Jini: распределённые услуги787
Jini в контексте787
Что такое Jini?788
Как работает Jini789
Процесс обнаружения789
Процесс соединения790
Процесс поиска790
Разделение интерфейса и реализации791
Абстрагирование распределённых систем792
Резюме793
Упражнения793
 
Приложение А • Передача и возвращение объектов796
 
Передача ссылок797
Совмещение имён797
Создание локальных копий799
Передача по значению800
Клонирование объектов800
Добавление к классу возможности клонирования802
Успешное клонирование804
Действие метода Object.clone()806
Клонирование составного объекта808
Глубокое копирование списка ArrayList809
Глубокое копирование сериализацией811
Добавление клонируемости далее по иерархии813
Почему всё сделано так странно?814
Управление клонированием814
Конструктор-копировщик819
Классы «только для чтения»823
Создание классов «только для чтения»824
Недостаток неизменяемости825
Неизменные строки String827
Классы String и StringBuffer830
Строки String необычны832
Резюме833
Упражнения834
 
Приложение Б • Java Native Interface (JNI)836
 
Вызов родного метода837
Генератор заголовочных файлов: javah838
Искажение имён и обозначения функций838
Реализация библиотеки DLL839
Доступ к функциям JNI: параметр JNIEnv840
Доступ к строкам841
Передача и использование объектов841
Интерфейс JNI и исключения843
Интерфейс JNI и многозадачность844
Использование уже существующего кода844
Дополнительная информация845
 
Приложение В • Рекомендации по программированию
на Java846
 
Проектирование846
Реализация852
 
Приложение Г • Рекомендованная литература858
 
Программные средства858
Книги858
Анализ и планирование860
Язык Python862
Список моих собственных книг862
 
Алфавитный указатель864

Книги на ту же тему

  1. Spring 4 для профессионалов. — 4-е изд., Шефер К., Хо К., Харроп Р., 2015
  2. Java сервлеты и JSP: сборник рецептов, Перри Б. У., 2005
  3. XML и Java 2 (+CD), Даконта М., Саганич А., 2001
  4. Электронный магазин на Java и XML (+CD-ROM), Брогден Б., Минник К., 2002
  5. Разработка программных проектов: на основе Rational Unified Process (RUP), Полис Г., Огастин Л., Лоу К., Мадхар Д., 2009
  6. Средства визуального проектирования на Java, Чекмарев А., 1998
  7. Макропроцессоры и мобильность программного обеспечения, Браун П., 1977
  8. UNIX. Профессиональное программирование. — 2-е изд., Стивенс Р., Раго С., 2007

© 1913—2013 КнигоПровод.Ruhttp://knigoprovod.ru