Блох Д., Java. Эффективное программирование
Лори, 2014 г., 978-5-85582-347-9
Наличие в интернет-магазинах
Описание книги
Купить эту книгу можно в интернет-магазинах
Ключевые слова
Поделиться ссылкой на книгу
Дополнительно о книге
Сразу оговоримся, что эта рецензия необычна уже тем, что против принятых нами самими правил, в нее включен небольшой список литературы по Java на русском языке. Этот перечень подобран несколько односторонне, поскольку, во-первых, в него включены [1 - 6] книги издательства "ЛОРИ" по этому направлению, а, во-вторых, [7 - 9] - книги по Java (список неполный), раздававшиеся участникам московских Java-конференциях в 2002 и 1998 гг., организованных отделением Sun Microsystems в России. Думается, что объяснить нашу предвзятость в данном случае не сложно.
Мы постоянно работаем с издательством "ЛОРИ" по Oracle-литературе и, естественно, следим за всем корпусом компьютерной литературы, выпускаемой этим издательством;
Книги из подсписка [8 - 10] настолько хороши (это мнение российских Java-профессионалов, не только наше), что в знак благодарности грех было не отметить столь щедрый презент от Sun Microsystems (Россия).
Если же говорить серьезно, то список литературы по Java/JavaScript на русском языке только в книжном интернет-магазине на всем известном www.citforum.ru ("Море(!) аналитической информации!") составляет 46 наименований, и это не единственный и не самый полный источник. Во всем же мире стопа сложенных вместе (по одному экземпляру !) Java-изданий достигает по некоторым данным высоты то ли Эйфелевой, то ли Останкинской башни.
Следует ли задать себе риторический вопрос, в чем же оригинальность рассматриваемой книги?! - Ответ прост: это первое издание на русском языке полностью посвященное союзу Oracle & Java. (Вообще говоря, любой уважающий себя Oracle-литератор обязательно сочтет необходимым вставить в свою книгу хоть несколько страниц про Java. Исключение могут позволить себе, да и то не всегда, только корифеи от Oracle: Т.Кайт, С.Фернстайн,..., но об этом в другой раз.)
Второе "серьезное" :) нарушение наших правил рецензирования состоит в том, что мы впервые помещаем в рецензии контент, который не содержится в рассматриваемой книге: фотография г-жи Нирва Мориссо-Леруа и один из графических образов некоего атмосферного явления, восстановленный по информации, хранящейся в ее базе научных данных.
Программные приложения, разработанные Нирва Мориссо-Леруа, помогают анализировать атмосферные события, происходящие по всему миру. Источник фотографий: http://www.miami.edu/veritas/march2001/class.html#anchor1483122 и http://www.data-i.com/profile/index.html
Это связано с тем, что объектно-реляционная схема "Scientific Observation" ("Научные наблюдения"), которая рассматривается в качестве демонстрационного примера в "Oracle 8i: Java-компонентное программирование...", является частью научного проекта "Atmospheric Observations, Analyses, and The World Wide Web Using a Semantic Database", в котором принимает участие одна из авторов этой книги Нирва Мориссо-Леруа. Тем самым, читатель, следуя по страницам и главам данного издания, погружается в серьезный современный научно-информационный проект, реализуемый в подтвержденной и успешной практике большого приложения промышленного уровня. Это же свидетельствует о высоком уровне подготовленности авторов, о не тривиальности мышления и манеры изложения материала. Все это дорогого стоит. В нашем случае также определяюще важно, что проект реализуется с применением технологий Oracle & Java.
И, наконец, третьим и последним отмеченным "нарушением" будет похвала авторам за большое количество SQL-скриптов, приводимых в тексте книги. Обычно (и очень часто справедливо) за обилием представленных SQL-скриптов мы видели лишь "раздувание" листажа, объема издания. Но в "Oracle 8i: Java-компонентное программирование...", книге для программистов-разработчиков, это вполне оправдано. Вплоть до того, что если иные из наших коллег, которые вообще не признают литературный текст в компьютерной литературе, требуя исключительно и наслаждаясь только чтением программных кодов, вот то-то они получат массу удовольствий! :).
Что в первую очередь ждет читатель от книги, в которой описывается некоторая новая технология? Ну, наверное, он захочет понять:
можно ли разобраться-таки, в чем заключается эта новая технология;
как развернуть и заставить работать хотя бы изложенный в книге учебный пример;
и, наконец, можно ли самому научится разрабатывать хотя бы простые приложения с использованием этой новой технологии.
Надо сказать, что, хотя рецензируемая книга в основном отвечает этим ожиданиям, было бы ошибкой надеяться на легкое путешествие в мир симбиоза Java и Oracle с этим, в целом, неплохим путеводителем.
Книга построена по классическому методу "изложение на демонстрационном примере". Уже во введении (!) вводятся SQL-скрипты создания реляционной схемы "Purchase Order" ("Заказ на покупку") и объектно-реляционной схемы "Scientific Observation" ("Научные наблюдения"). Далее следует "Общий обзор", которой по насыщенности и плотности информации никак нельзя отнести к категории "общая разминка". И понеслось:
Часть II "Построение компонентов Enterprise JavaBeans";
Часть III "Построение компонентов CORBA";
Часть IV "Построение web-приложений с помощью страниц JSP";
Часть V "Приложения".
С подробным содержанием книги и официальной аннотацией к ней можно познакомиться на сайте "ЛОРИ" по адресу http://www.lory-press.ru/books/Or8i_Java.htm, но перечень приложений привести стоит:
А - "Краткий справочник по сервлетам и общие сведения об API сервлетов"
B - "Краткое описание API Enterprise JavaBeans"
C - "Краткий справочник по Oracle8i CORBA для Java"
D - "Краткий справочник по JavaServer Pages"
Е - "Установка и конфигурирование web-серверов для работы с Oracle JSP"
F - "Инструментальные средства Oracle8i EJB и CORBA и поддержка JSP в Jdeveloper",
поскольку по нашему общему убеждению начинать изучение книги лучше с приложений. Именно приложения (особенно E и F) содержат информацию, необходимую для развертывания учебного примера, который широко используется при изложении материала книги. Кроме того, профессиональный программист, только желающий овладеть Java-технологиями, всегда предпочтет сначала взглянуть в "Краткий справочник", нежели читать техническую литературу с "Введения". (Еще раз подчеркнем, что данная книга в этом смысле является исключением.)
Но все ли так гладко и благополучно?
Трудности начинаются с поиска файлов для развертывания учебного примера. Сопутствующего CD к книге не приложено, и настойчивому читателю предлагается отыскать эти примеры на сайте www.lory-press.ru. Найти их не сложно, но там нет файлов с командами создания схемы данных для учебного примера. Эти файлы В.Абрамову удалось найти на сайте www.data-i.com ("Не набирать же 5 страниц текста вручную!" - В.Абрамов). На сайте же www.osborne.com, ссылка на который также дается во введении к книге, найти упоминания об ней не удалось, что, видимо, связано с тем, что оригинал книги был выпущен более двух лет назад. Справедливости ради стоит отметить, что за это время книга не устарела. Более того, другие книги на русском языке на эту тему практически отсутствуют, за исключением, пожалуй, выпущенной в 2001 году издательством "ЛОРИ" книге "Oracle8i. Создание Web-приложений" [10], где языку Java уделено15 страниц и не более 30 страниц - языку XML.
В.Абрамов счел нужным призвать читателей этой книги несколько критически отнестись к предисловию, написанному вице-президентом группы платформы Java корпорации Oracle Дэвидом А.Розенбергом в чрезвычайно комплиментарных словах. В.Абрамов: "Мы же все прекрасно понимаем, что, в отличие от нас, разработчиков, вице-президенты не разрабатывают программное обеспечение. Не стоит также близко к сердцу принимать уверения в том, что использование этой или какой-либо другой технологии когда-либо способно сократить время разработки серьезных больших приложений "с нескольких месяцев до двух недель" [Глава 1. "Знакомство с распределенными вычислительными системами"]. Весь мой прошлый опыт говорит о том, что с внедрением новых технологий для разработчика программного обеспечения меньше работы не становится."
С другой стороны, эта книга - один из лучших примеров того принципа, что недостатки часто являются продолжением достоинств. На наш взгляд, "Oracle 8i: Java-компонентное программирование..." не рассчитана на неподготовленного читателя.. Для понимания материала книги предварительное ознакомление с Oracle и Java очень и очень желательно. Это не беда, так как существует на русском языке, как прекрасная Java-литература [1 - 9], так и прекрасная Oracle-литература, о которой Вы могли узнать из наших предыдущих рецензий, регулярно публикуемых в нашем журнале "Oracle Magazine/Русское Издание". Также самостоятельно придется читателю раздобыть и JDeveloper (средство разработки Java-приложений корпорации Oracle).
Поэтому используйте рецензируемую книгу, чтобы научиться разрабатывать именно Java-приложения, системы больших масштабируемых эффективных Java-приложений на Oracle.
Чем более длинным становится список книг по какой-либо тематике, тем большая возникает необходимость в узкоспециализированной литературе, в книгах, так сказать следующего эшелона, сконцентрированных на своей проблематике, предполагающих в читателях активное использование общеметодологической литературы. "Oracle 8i: Java-компонентное программирование при помощи EJB, CORBA и JSP" - из разряда таких книг, и свое назначение она реализует.
Краткий перечень Java-литературы, упоминаемых в рецензии:
[ 1] Айвор Хортон "Java 2 JDK 1.3" В двух томах: том I: 512 стр., 2002 г. , том II: 512 стр, 2002
[ 2] Джошуа Блох "Java. Эффективное программирование" 240 стр., 2002 (Серия "Java из первых рук")
[ 3] Н.Кассем "Разработка бизнес-приложений с помощью Java 2" 400 стр., 2002 (Серия "Java из первых рук")
[ 4] Р.Орфали, Д.Харки "JAVA и CORBA в приложениях клиент/сервер" 736 стр., 2000
[ 5] Э. Р. Гарольд "JavaBeans" 352 стр., 1999
[ 6] Питер Вейнер "Языки программирования Java и JavaScript" 244 стр., 1998
[ 7] Брюс Эккель "Философия Java" С.Пб, "Питер", 880 стр., 2001
[ 8] Дэвид Флэнэген "Java in a nutshell" Киев, BHV, 720 стр., 1997
[ 9] Дж.Вебер. "Технология Java в подлиннике" С.Пб, BHV, 1104 стр., 1997 (Учебник. Практическое пособие. Справочник)
[10] "Oracle8i. Создание Web-приложений". М:, "ЛОРИ"
Содержание книги
Предисловие автора
1 Введение
2 Создание и уничтожение объектов
1 Рассмотрите возможность замены конструкторов
статическими методами генерации
2 Свойство синглтона обеспечивайте закрытым
конструктором
3 Отсутствие экземпляров обеспечивает закрытый
конструктор
4 Не создавайте дублирующих объектов
5 Уничтожайте устаревшие ссылки (на объекты)
6 Остерегайтесь методов finalize
3Методы, общие для всех объектов
7 Переопределяя метод equals, соблюдайте общие
соглашения
8 Переопределяя метод equals, всегда
переопределяйте hashCode
9 Всегда переопределяйте метод toString
10 Соблюдайте осторожность при
переопределении метода clone
11 Подумайте над реализацией интерфейса
Comparable
4Классы и интерфейсы
12Сводите к минимуму доступность классов
и членов
13 Предпочитайте постоянство,
14 Предпочитайте компоновку наследованию
15 Проектируйте и документируйте наследование
либо запрещайте его
16 Предпочитайте интерфейсы абстрактным
классам
17 Используйте интерфейсы только
для определения типов
18Предпочитайте статические классы-члены
нестатическим
5Замена конструкций на языке С
19 Заменяйте структуру классом
20 Заменяйте объединение иерархией классов
21 Заменяйте конструкцию enum классом
22 Указатель на функцию заменяйте классом
и интерфейсом
6Методы
23 Проверяйте достоверность параметров
24 При необходимости создавайте
резервные копии
25 Тщательно проектируйте сигнатуру метода
26 Перезагружая методы, соблюдайте
осторожность
27 Возвращайте массив нулевой длины, а не null
28 Для всех открытых элементов API
пишите doc-комментарии
7Общие вопросы программирования
29 Сводите к минимуму область видимости
локальных переменных
30 Изучите библиотеки и пользуйтесь ими
31 Если требуются точные ответы, избегайте
использования типов float и double
32 Не используйте строку там, где более уместен
иной тип
33 При конкатенации строк опасайтесь потери
производительности
34 Для ссылки на объект используйте
его интерфейс
35 Предпочитайте интерфейс отражению класса
36 Соблюдайте осторожность при использовании
машинно-зависимых методов
37 Соблюдайте осторожность при оптимизации
38 При выборе имен придерживайтесь
общепринятых соглашений
8Исключения
39Используйте исключения лишь в
исключительных
ситуациях
40 Применяйте обрабатываемые исключения для
восстановления, для программных ошибок
используйте исключения времени выполнения ...
41 Избегайте ненужных обрабатываемых
исключений
42 Предпочитайте стандартные исключения
43 Инициируйте исключения, соответствующие
абстракции
44 Для каждого метода документируйте
все инициируемые исключения
45 В описание исключения добавляйте
информацию о сбое
46 Добивайтесь атомарности методов
по отношению к сбоям
47Не игнорируйте исключений
9 Потоки
48 Синхронизируйте доступ потоков к совместно
используемым изменяемым данным
49 Избегайте избыточной синхронизации
50 Никогда не вызывайте метод wait вне цикла
51 Не попадайте в зависимость от планировщика
потоков
52 При работе с потоками документируйте
уровень безопасности
53 Избегайте группировки потоков
10 Сериализация
54Соблюдайте осторожность при реализации
интерфейса Serializable
55 Рассмотрите возможность использования
специализированной сериализованной формы
56 Метод readObject должен создаваться
с защитой
57При необходимости создавайте метод
readResolve
Литература
Об авторе
Отзывы
Кричащие про "устаревание" книги напомнили моих знакомых программистов стремящихся поставить самую последнюю версию JDK - при этом не знающих и половины возможностей версий предыдущих.
Как книга о базовых принципах языка может устареть? Джошуа же не описывает высокоуровневые API - он пишет о достоинствах и недостатках разных приемов программирования, а они устаревают очень медленно. Никто ведь не назовет усторевшим "Приемы ООП" от GoF - а они написаны еще раньше чем эта книга. Устаревшими можно назвать не более 2-3 статей - причем автор уже сам пишет что советы устареют если в языке появятся перечисления и статический импорт (и они появились в 1.5)
Еще одна польза от книги - проследить как развивались стандартные библиотеки Java - какие ошибки были дапущены в ее проектировании в первых версиях и какими новыми классами из=за этого библиотека дополнилась позднее.
Правда, расчитана книга на почти новичков - то есть тем кто только что освоил синтаксис но еще не начал серьезно кодить. Вот для них она может быть очень полезной. А тем кто уже освоил ООП реально полезными окажутся процентов 20. Лично мне пригодились главы про сериализацию и - самая первая статья про статические методы.
Если же вам нужна книга о нововведениях языка - есть прекрасная "Java. Новое поколение разработки". Хотя - что я говорю - кто-то и ее устаревшей назовет.
Объективно - книга на 4 - но ставлю 5 в противовес неадекватным двойкам.
Последние поступления в рубрике "Тематика определяется"
Математика. Подготовка к ЕГЭ. Задачи с параметрами.10-11 классы
В предлагаемом пособии представлен обширный материал, посвященный двум заключительным и сложным темам ЕГЭ профильного уровня: задачам с параметрами и числам и их свойствам. На многочисленных примерах с подробными решениями и обоснованиями (как и требуется на экзамене) показаны различные методы и решения задач.... | |
План счетов бухгалтерского учета с последними изменениями
Читателю предлагается самая последняя редакция Плана счетов бухгалтерского учета финансово-хозяйственной деятельности организаций и инструкции по его применению с учетом последних приказов Минфина РФ. План счетов - это важнейший инструмент бухгалтерского учета, настольная книга для каждого практического бухгалтера.... | |
На ферме. Книжка с наклейками
Игры с наклейками - занятие не только интересное, но и полезное. С этой книгой малыш познакомится с различными видами транспорта, потренируется решать простые логические задачки и находить соответствия.... |
Если Вы задавались вопросами "где найти книгу в интернете?", "где купить книгу?" и "в каком книжном интернет-магазине нужная книга стоит дешевле?", то наш сайт именно для Вас. На сайте книжной поисковой системы Книгопоиск Вы можете узнать наличие книги Блох Д., Java. Эффективное программирование в интернет-магазинах. Также Вы можете перейти на страницу понравившегося интернет-магазина и купить книгу на сайте магазина. Учтите, что стоимость товара и его наличие в нашей поисковой системе и на сайте интернет-магазина книг может отличаться, в виду задержки обновления информации.