КнигоПровод.Ru25.04.2024

/ИТ-книги

Горький вкус Java: Библиотека программиста — Тейт Б.
Горький вкус Java: Библиотека программиста
Тейт Б.
год издания — 2003, кол-во страниц — 333, ISBN — 5-88782-323-2, 1-930110-43-X, тираж — 4000, язык — русский, тип обложки — мягк., масса книги — 420 гр., издательство — Питер
серия — Библиотека программиста
КНИГА СНЯТА С ПРОДАЖИ
Bruce Tate
Bitter Java
Manning 2002

Пер. с англ. Е. Матвеева

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

Формат 70x100 1/16
ключевые слова — серверн, программирован, java, паттерн, j2ee, сервлет, jsp, ejb, масштабирован, интернет, tcp, http, html, xml, инкапсуляц, наследован, полиморфизм, экстремальн, веб-страниц, кэширован, c++, утечк, веб-служб, javabeans, объектно-ориентирован

Книга представляет собой систематизированный сборник ошибок серверного программирования на языке Java с описанием их причин и возможных решений. В ней приводятся анти-паттерны для таких фундаментальных концепций Java и J2EE, как сервлеты, JSP, компоненты EJB, модели подключений в корпоративных сетях и масштабирование. Книга написана для программистов Java среднего уровня, аналитиков или разработчиков архитектур, не желающих повторять чужие ошибки.


«…Для меня «Горький вкус Java» оказался потрясающе интересным чтением, и я абсолютно уверен, что такое же впечатление эта книга произведёт и на вас. Если вы занимаетесь программированием или руководите коллективом программистов, читайте эту книгу главу за главой. Думаю, я буду цитировать Брюса в своей следующей рецензии на чью-нибудь неудачную архитектуру. «Горький вкус Java» буквально наполнен мудростью и практическим опытом, так нужными любому хорошему программисту, а стандарт оформления кода Java из главы 9 вообще заслуживает отдельной публикации — я бы очень хотел, чтобы все программисты Java прочитали и придерживались его…»

Хейс «Скип» Маккормик III,
один из авторов книги «Antipattems: Refactoring Software, Architectures, and Projects in Crisis»

  • принципы экстремального программирования
  • концепция анти-паттернов
  • технология Java
  • стандартные ошибки
  • анти-паттерны JSP
  • кэширование
  • управление памятью
  • культура программирования
  • масштабирование приложений

ОГЛАВЛЕНИЕ

Предисловие Хейса Маккормика III13
 
Предисловие автора15
 
Благодарности18
 
О книге20
Структура книги20
От издательства22
 
Часть I
 
Глава 1 • Грустные истории об анти-паттернах24
 
Свободное падение на языке Java24
    Анти-паттерны в жизни27
Паттерны: изучение положительного опыта28
Анти-паттерны: изучение чужих ошибок28
    Некоторые распространённые анти-паттерны29
    Анти-паттерны на практике30
Идеи анти-паттернов не новы31
    Примеры из других областей32
    Детективная работа33
    Переработка решения и устранение анти-паттернов35
Зачем была написана эта книга?36
    Подход, использованный в книге36
    Инструментарий, использованный в книге36
    Структура книги37
Взгляд в будущее39
 
Глава 2 • Общая ситуация40
 
Благодатная почва для анти-паттернов40
    Преимущества многоуровневых структур41
    Недостатки многоуровневых структур43
Технологии Интернета44
    Влияние топологии Интернета на приложения45
    Безопасность в сетях организаций46
    Базовые стандарты Интернета и дополнительные уровни48
    Низкоуровневые коммуникации на базе TCP и IP49
    HTTP: транспортный протокол уровня приложения50
    HTML и XML50
    Мелкий анти-паттерн: Избыток объектов на веб-странице52
Объектные технологии и анти-паттерны53
    Инкапсуляция54
    Наследование55
    Полиморфизм55
    Мелкие анти-паттерны: Избыточные уровни56
    Приход Java59
Технологии Java и борьба с анти-паттернами59
Каскадный метод61
    Итеративные методы62
    Мелкие анти-паттерны: Неполное преобразование процесса63
    Экстремальное программирование64
Итоги65
Анти-паттерны этой главы66
    Избыток объектов на веб-странице66
    Избыточные уровни67
    Неполное преобразование процесса67
 
Часть II
 
Глава 3 • Сервлеты70
 
Ошибки на старте71
    Исторический анти-паттерн: Волшебная кнопка71
    Паттерн «Модель-представление-контроллер»72
    Отсутствие разделения модели и представления73
    Выделение модели73
Анти-паттерн: Волшебный сервлет75
    Может ли сервлет использоваться в качестве модели?76
    Ловушка «Волшебного сервлета»78
    Причины появления «Волшебного сервлета»82
Решение: переработка с применением команд83
    Выделение модели84
    Инкапсуляция модели в объектах команд84
    Выделение модельной логики85
    Отделение возврата90
    Использование JSP при возврате92
Итоги94
Анти-паттерны этой главы95
    Волшебный сервлет95
 
Глава 4 • JSP97
 
На середине пути97
    Признаки опасности98
Анти-паттерн: Монолитная страница JSP99
    Отделение модели от представления100
    Решение: переработка в архитектуру «Модель-представление-контроллер»102
Анти-паттерн: Составная страница JSP103
    Нужно ли объединять страницы JSP?104
    Пример с объединением двух интерфейсов105
    Решение: разбиение JSP109
    Принятие решений в контроллере109
Мелкие анти-паттерны: Слишком крупные и мелкие команды113
    Чрезмерная группировка команд114
    Решение: переработка с правильной гранулярностью114
    Рекомендации по выбору гранулярности116
Мелкий анти-паттерн: Жирная команда117
Анти-паттерны JSP117
Анти-паттерны этой главы118
    Монолитная страница JSP118
    Составная страница JSP119
    Крупные и мелкие команды119
    Жирные команды120
 
Глава 5 • Кэширование121
 
Даёшь кэширование!121
Анти-паттерн: Отсутствие кэша123
    Плохой вариант: BBS без кэширования124
    Модель, представление и контроллер в треугольнике ShowBoard126
    Модель, представление и контроллер для вывода обсуждения128
    Модель, представление и контроллер для добавления нового сообщения132
    Проблемы производительности138
Решение: кэширование138
    Решение 1. Аппаратный кэш139
    Решение 2. Кэширование команд139
    Реализация кэша в примере с форумом141
    Возможные усовершенствования кэша команд146
Мелкие анти-паттерны, связанные с кэшированием148
    Параллельный доступ к статическому кэшу149
    Разрастание кэша149
Анти-паттерн: Монопольная синхронизация чтения/записи150
    Снижение производительности вследствие конфликтов между
       операциями чтения151
    Правильная организация совместного доступа с использованием
       блокировок чтения/записи151
Решение проблем с кэшированием153
Анти-паттерны этой главы154
    Отсутствие кэша154
    Монопольная синхронизация чтения/записи155
 
Глава 6 • Управление памятью156
 
Утечка памяти и анти-паттерны156
    Управление памятью157
    Уборка мусора158
    Подсчёт ссылок159
    Достижимость объеюов160
Переход с C++ на Java160
    Возникновение утечки памяти в Java161
    Поиск утечек памяти в Java162
Анти-паттерн: Неиспользуемый слушатель163
    Опасные привычки164
    Решение 1. Явное удаление слушателей166
    Решение 2. Сокращение жизненного цикла якорного объекта168
    Решение 3. Ослабление ссылки168
    Ссылочные объекты упрощают управление памятью168
Анти-паттерн: Утечка в коллекциях169
    Проблемы с кэшами и сеансовыми данными171
    Решение 1. Поиск стандартных признаков171
    Решение 2. Жёсткое сопоставление парных операций172
    Решение 3. Использование мягких ссылок при кэшировании172
    Решение 4. Использование коллекций со слабыми ссылками173
    Решение 5. Использование finally173
Борьба с утечкой памяти173
    Выявление утечки памяти174
    Принятие решения об исправлении175
    Изоляция проблемы176
    Определение причины и исправление ошибки176
    Страховка от будущего повторения утечки памяти178
Мелкие анти-паттерны: Стадо поросят178
    Коллекции179
    Иерархия наследования180
Итоги181
Анти-паттерны этой главы181
    Неиспользуемый слушатель181
    Утечка в коллекциях182
 
Глава 7 • Подключения и привязка183
 
Создание подключений183
Анти-паттерн: Суета с подключениями184
    Создание и закрытие подключения при каждом обращении185
    Решение: пул подключений186
    Переработка интернет-форума для поддержки пулов подключений188
    Использование метода getPooledConnection190
    Архитектура коннекторов J2EE191
Анти-паттерн: Разделённое закрытие192
    Проявления анти-паттерна при обработке исключений194
    Решение: закрытие подключения в блоке finally194
Анти-паттерн: Жёсткое подключение196
    Коммуникационный буфер197
    Преждевременное связывание200
    Решение 1. Разделение с использованием сообщений XML200
    Решение 2. Отложенное связывание с использованием веб-служб202
Мелкие анти-паттерны при использовании XML203
    Золотой молоток203
    Сложности с переходами204
Мелкие анти-паттерны: Негибкий XML205
    Конфликты имён205
    Негибкие конструкции208
    Контейнеры с переменным содержимым209
    Контроль версии212
Итоги213
Анти-паттерны этой главы213
    Суета с подключениями213
    Разделенное закрытие214
    Жёсткое подключение214
    Неправильное использование XML215
    Негибкий XML216
 
Глава 8 • EJB217
 
Краткий обзор Enterprise JavaBeans217
    Распределённая архитектура на базе компонентов218
    Разновидности EJB219
Интернет-форум на базе EJB220
    Структура приложения EJB221
    Построение удалённого интерфейса222
    Создание домашнего интерфейса224
    Реализация класса компонента225
    Класс компонента Board225
    Определение первичного ключа231
    Создание дескриптора применения231
    Использование модели234
Анти-паттерн: Лишние обращения234
    Оценка затрат в распределённой модели234
    Интерфейс с избытком коммуникационных циклов236
    Решение: группировка циклов в фасаде237
    Корни анти-паттерна238
    Переработка интернет-форума с применением фасада239
Анти-паттерн: Квадратная пробка для круглой дыры245
   Мелкий анти-паттерн: Объединение данных под управлением компонента246
    Решение: объединение под управлением компонента247
    Мелкий анти-паттерн: Применение компонентов сданными
       при решении простых задач247
    Мелкий анти-паттерн: Компоненты с данными, используемые
       только для чтения249
    Мелкий анти-паттерн: Компоненты сданными, используемые
       только для записи249
    Многостраничные списки249
    Общее решение: правильный выбор типа компонента
       для конкретной задачи250
Мелкий анти-паттерн: Бездумное применение EJB251
EJB и кэширование252
    Реализация кэширования в фасаде252
Итоги253
Анти-паттерны этой главы254
    Лишние обращения254
    Квадратная пробка для круглой дыры255
    Бездумное применение EJB256
 
Часть III
 
Глава 9 • Культура программирования258
 
Зачем изучать культуру программирования?259
    Экстремальное программирование требует высокой культуры259
    Стандарты оформления кода как средство борьбы с анти-паттернами260
Мелкие анти-паттерны: Нечитаемый код262
    Выбор имён262
    Стандарты выбора имён263
    Фигурные скобки и отступы267
    Комментарии269
    Табуляция и пробелы272
    Редакторы273
    Мелкие анти-паттерны: организация и видимость273
Мелкие анти-паттерны: структура программы276
    Основные принципы объектно-ориентированного программирования277
    Низкоуровневые архитектурные факторы278
    Исключения280
Мелкие анти-паттерны: утечки ресурсов и производительность281
Правила тестирования283
Написание хорошего руководства по стилю284
    Купить, позаимствовать, украсть?285
    Короткое руководство по стилю программирования от Contextual, Inc285
Сводка стандартов оформления кода288
 
Глава 10 • Масштабируемость292
 
Топологии, обеспечивающие хорошую производительность293
    Группировка однородного оборудования295
    Другие варианты топологии297
Анти-паттерн: Запоздалая забота о производительности298
    Разработка без планирования производительности299
    Примеры из практики301
    Решение: планирование производительности301
Анти-паттерн: Лишние обращения304
    Решение: кэш и фасад301
Анти-паттерн: Плохое управление нагрузкой307
    Решение: управление нагрузкой308
    Полноценная балансировка нагрузки311
Анти-паттерн: Хаотическое управление сеансовыми данными312
    Решение 1. Диспетчеризация с учётом сеансовой привязки312
    Решение 2. Использование распределённых средств управления
       состоянием312
    Решения на базе сеансовых компонентов313
    Решения на базе компонентов с данными313
Анти-паттерн: Бестолковая оптимизация314
    Решение: использование правильной методики оптимизации315
Итоги317
Анти-паттерны этой главы317
    Запоздалая забота о производительности317
    Лишние обращения318
    Плохое управление нагрузкой319
    Хаотическое управление сеансовыми данными319
    Бестолковая оптимизация320
 
Глава 11 • Прощальные размышления321
 
Анти-паттерны на разных уровнях322
    Карьерные перспективы322
    Понимание анти-паттернов улучшает программы323
    Понимание анти-паттернов улучшает программистов323
Интеграция борьбы с анти-паттернами324
Следующий шаг, последний шаг326
 
Алфавитный указатель328

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

  1. Spring 4 для профессионалов. — 4-е изд., Шефер К., Хо К., Харроп Р., 2015
  2. Java сервлеты и JSP: сборник рецептов, Перри Б. У., 2005
  3. Конструирование распределённых объектов. Методы и средства программирования интероперабельных объектов в архитектурах OMG/CORBA, Microsoft/COM и Java/RMI, Эммерих В., 2002
  4. Java. Справочник, 4-е издание, Флэнаган Д., 2004
  5. Java. Сборник рецептов для профессионалов, Дарвин Я. Ф., 2002
  6. Java в примерах. Справочник, 2-е издание, Флэнаган Д., 2003
  7. UNIX. Профессиональное программирование. — 2-е изд., Стивенс Р., Раго С., 2007
  8. Введение в Java-технологию, Сафонов В. О., 2002
  9. Java для Internet в Windows и Linux, Дунаев С. Б., 2004
  10. Java 2, Ноутон П., Шилдт Г., 2000
  11. Философия Java, Эккель Б., 2001
  12. Технология Java Card™ для смарт-карт. Архитектура и руководство программиста, Жикун Чен, 2008
  13. JavaBeans, Гарольд Э. Р., 1999
  14. Разработка корпоративных Java-приложений с использованием J2EE и UML, Амриш К. И., Ахмед Х. З., 2002
  15. Enterprise JavaBeans, Монсон-Хейфел Р., 2002
  16. Java и XML, Мак-Лахлин Б., 2002
  17. Платформа .NET для Java-программистов, Гиббонз П., 2003
  18. Разработка приложений для электронной коммерции на Oracle8i и Java, Заккар М., 2000
  19. Электронный магазин на Java и XML (+CD-ROM), Брогден Б., Минник К., 2002
  20. XML и Java 2 (+CD), Даконта М., Саганич А., 2001
  21. Рефакторинг: улучшение существующего кода, Фаулер М., 2003
  22. UML. Основы, Фаулер М., Скотт К., 2002
  23. Базы данных и UML. Проектирование, Мюллер Р. Д., 2002
  24. Экстремальное программирование: постановка процесса. С первых шагов и до победного конца, Ауэр К., Миллер Р., 2003
  25. Разработка программных проектов: на основе Rational Unified Process (RUP), Полис Г., Огастин Л., Лоу К., Мадхар Д., 2009
  26. Экстремальное программирование, Бек К., 2002
  27. Экстремальное программирование: разработка через тестирование, Бек К., 2003
  28. Применение объектного моделирования с использованием UML и анализ прецедентов на примере книжного Internet-магазина, Розенберг Д., Скотт К., 2002
  29. Средства визуального проектирования на Java, Чекмарев А., 1998
  30. Языки программирования. Практический сравнительный анализ, Бен-Ари М., 2000

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