Язык программирования Java

3-е издание
Кен Арнолд, Джеймс Гослинг, Дэвид Холмс

The Java Programming Language Third Edition
Ken Arnold
книга Язык программирования Java, 3-е издание

Тираж данной книги закончился.
Введение

Обсуждение книг по Java в блоге Виктора Штонда

Книга посвящена Java - мощной системе программирования, завоевавшей мировое признание и развивающейся быстрыми темпами. Настоящее, третье, издание книги Язык программирования JavaT, выпущенное непосредственными руководителями и участниками проекта по созданию языка Java, служит ценным источником информации как для новичков, так и для ветеранов программирования. Обилие разнообразных сведений, доступный стиль изложения, обширный практический опыт, которыми авторы делятся щедро и непринужденно, - все это делает книгу ценным подспорьем для всех, кто стремится освоить передовые информационные технологии.Авторы сосредоточивают внимание на последней версии языка, соответствующей спецификации JavaT Language Specification, Second Edition и реализованной в продукте Java 2 SDK, Standard Edition, Version 1.3. Книгой можно пользоваться и как пособием по языку и основным библиотекам, и как справочником.

624 стр., с ил.; ISBN 5-8459-0215-0, 0-201-70433-1; формат 70x100/16; 2001, 4 кв.; Вильямс.



Понравилась книга? Порекомендуйте её друзьям и коллегам:







Книги, рекомендуемые вместе с этой книгой:

Раздел каталога:



Предисловие

Лучшие достижения архитектуры - это больше чем просто результат научного поиска. Подобно живым организмам, они словно одушевлены высшим разумом. В них запечатлен творческий порыв, подкрепленный самыми передовыми технологиями; они не следуют стереотипам, не потакают среднему вкусу и не нуждаются в одобрении бюрократов.

Фрэнк Ллойд Райт (Frank Lloyd Wright)

Язык программирования Java заслужил горячее признание мирового сообщества разработчиков программного обеспечения и провайдеров услуг Internet. Открыв для себя возможность применения безопасных и не зависящих от платформы приложений, пользователи Internet и World Wide Web приобрели несомненные выгоды. Преимущества получили и разработчики программного обеспечения - теперь они создают код только единожды, не заботясь о проблемах его переноса на разнообразные программные и аппаратные платформы.

Многие впервые услышали о языке Java как об инструменте создания аплетов для World Wide Web. Aieao - это небольшое приложение, выполняемое в контексте Web-страницы. Будучи загруженным с помощью Web-броузера, аплет способен решать конкретные задачи и взаимодействовать с пользователем Web-страницы, не обращаясь к ресурсам Web-сервера. (Разумеется, в некоторых ситуациях аплет вполне может адресоваться к Web-серверу за дополнительными инструкциями, но это несущественные детали.)

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

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

Язык программирования Java спроектирован таким образом, чтобы обеспечить наивысшую степень переносимости кода и настолько малый уровень его зависимости от особенностей конкретной платформы, насколько это возможно. Тип int, например, представляет 32-битовое знаковое целое число во всех реализациях Java, независимо от архитектуры используемого процессора. Разработчики Java постарались предусмотреть все, что только возможно, в отношении самого языка и условий его применения - это позволяет пользователям выполнять однажды скомпилированный код повсеместно и осуществлять взаимный обмен Java-приложениями без каких-либо ограничений.

Об этой книге

Наша книга научит применять язык Java любого, кто знаком с основами программирования. Материал преподносится без излишней строгости и, безусловно, не может претендовать на исчерпывающую полноту. Нашу книгу нельзя причислить к учебникам по объектно-ориентированному программированию, хотя некоторые вопросы такого рода мы просто обязаны были осветить, чтобы заложить общий терминологический фундамент. Подробности, касающиеся особенностей программирования аплетов, графических интерфейсов и компонентов, взаимодействия с базами данных и иных специфических задач, вы найдете в других книгах этой серии и - наиболее полно - в online-документации Java. (Обратите внимание на раздел Список литературы, приведенный в конце книги.)

Третье издание книги, которое вы держите в руках, охватывает изменения - такие как новое служебное слово strictfp, классы коллекций и т.д., - внесенные в язык спецификацией Java 2 Platform и реализованные в семействе продуктов Java 2 SDK, Standard Edition, Version 1.3 (иногда кратко называемых JDK 1.3 или просто 1.3). Если вы уже знакомы с предыдущими изданиями книги, сейчас вы убедитесь, что изрядная порция материала подверглась структурной реорганизации - мы стремились улучшить качество представления сведений о средствах языка (таких как вложенные классы и интерфейсы) и описаний API (от Application Programming Interface - интерфейс программирования приложений. - Прим. перев.) классов. В настоящем издании вашему вниманию предлагается масса свежей информации, но поскольку ядро языка не изменилось и почти все основные библиотеки-пакеты все еще используются, вам, возможно, потребуется уделить главное внимание только подлинным новшествам.

Java обладает многими возможностями, присущими большинству других современных языков программирования. Java покажется "родным" для опытных программистов, применяющих языки C и C++, - и неудивительно, поскольку там, где это оказывалось возможным, архитекторы Java пользовались синтаксическими конструкциями, характерными именно для C и C++. Впрочем, заметим, что мы ни в коей мере не стремились представить сравнительный анализ этих языков либо предложить пособие по "переходу" с C/C++ на Java - от вас совершенно не требуется знаний C или C++. Напротив, знатокам C++ придется даже переучиваться, и ранее приобретенный ими багаж знаний, возможно, послужит некоторой помехой на пути к цели.

Глава 1, Краткий обзор, позволит вам быстро ознакомиться с предметом. Ее можно рекомендовать и тем, кто еще не знаком с основами объектно-ориентированного программирования, и более подготовленным читателям - последние найдут здесь полезные сведения об особенностях реализации этой популярной парадигмы в языке Java.

Главы 2-5 посвящены описанию объектно-ориентированного ядра языка, а именно способов объявления классов, образующих структуру программы, и создания их объектов. Глава 2, Классы и объекты, трактует основы языка - классы. В главе 3, Наследование, рассказывается о том, каким образом существующие классы могут быть расширены, или унаследованы, с целью создания новых классов, предусматривающих наличие дополнительных данных и методов их обработки. Глава 4, Интерфейсы, содержит сведения о способах объявления интерфейсных типов, представляющих собой абстрактные определения характеристик "поведения" будущих объектов классов и предлагающих в распоряжение архитекторов классов и тех, кто займется прикладным программированием, максимум гибкости при принятии проектных решений. В главе 5, Вложенные классы и интерфейсы, представлена информация о том, каким образом классы и интерфейсы могут быть объявлены внутри других классов и интерфейсов, и о преимуществах подобного дизайна.

В главах 6 и 7 рассмотрены стандартные конструкции, общие для большинства языков программирования. Глава 6, Лексемы, операторы и выражения, описывает способы конструирования и вычисления сложных выражений языка, созданных с помощью операторов из элементарных составных частей. В главе 7, Управляющие структуры, рассказывается о том, как специальные конструкции языка позволяют задать порядок выполнения выражений программы.

В главе 8, Исключения, излагаются сведения о предусмотренных в Java мощных средствах обработки ошибок, возникающих в период выполнения программы.

Глава 9, Строки, содержит информацию о встроенных механизмах поддержки объектов типа String.

В главе 10, Потоки вычислений, вниманию читателя предложен обзор функций Java, которые позволяют снабдить программу средствами организации нескольких одновременно выполняющихся потоков вычислений. Наличие таких возможностей важно, например, при проектировании приложений, реализующих графические интерфейсы пользователя. Чтобы программа работала верно, потоки должны взаимодействовать - подобные требования полностью удовлетворяются моделью многопоточности, реализованной в Java.

Глава 11, Типы и метаклассы, содержит сведения о классах-оболочках, представляющих простые типы данных, такие как целые числа и числа с плавающей запятой, и специальных метаклассах, позволяющих получать информацию об объектах программы и создавать их динамически.

В главе 12, Управление памятью и сборка мусора, рассматриваются аспекты проблемы управления памятью и механизмы автоматического контроля за ее эффективным использованием.

В главе 13, Пакеты-библиотеки, рассказывается о том, каким образом наборы классов и интерфейсов могут быть сгруппированы в виде пакетов.

В главе 14, Документирование кода с помощью комментариев, излагаются особые правила комментирования текста программного приложения, позволяющие получить полноценную электронную документацию.

Главы 15-19 посвящены основным пакетам Java. Глава 15, Ввод-вывод, описывает подсистему ввода-вывода данных, основанную на модели потоков. В главе 16, Коллекции, рассматриваются контейнерные классы, такие как множества и списки. Глава 17, Прикладные классы, охватывает вопросы применения различных классов специального назначения - например, таких, которые дают возможность работать с наборами битов или генерировать случайные числа. Глава 18, Системное программирование, познакомит вас с иерархией системных классов, обеспечивающих доступ к низкоуровневым элементам программно-аппаратных платформ. Глава 19, Региональные стандарты и локализация, содержит сведения об инструментах Java, позволяющих проектировать программные приложения, которые способны гибко адаптироваться с учетом особенностей языковой среды и региональных стандартов.

В главе 20, Стандартные пакеты, кратко описаны библиотечные модули из состава JDK 1.3, не упоминавшиеся в предыдущих главах книги.

В приложении А, Типы исключений RuntimeException и Error, перечисляются классы Java, позволяющие обрабатывать исключительные и ошибочные ситуации периода выполнения программы.

Приложение Б, Справочные таблицы, содержит полезную информацию справочного характера.

В разделе Список литературы заинтересованный читатель найдет немалое количество ссылок на информационные источники, подробно освещающие те или иные аспекты программирования на языке Java.

Примеры и документация

Все примеры программного кода, приведенные на страницах нашего издания, откомпилированы и проверены в среде последней версии Java, которая была доступна в период работы над книгой, - Java 2 SDK, Standard Edition, Version 1.3. Вашему вниманию предлагаются только те средства языка, которые поддерживаются и рекомендуются для использования, - устаревшие типы, методы и поля классов были исключены из рассмотрения во всех случаях, когда это оказывалось возможным. Книга содержит не только такую информацию, которую легко проверить с помощью соответствующего примера. При изучении языка программирования необходимо уделить внимание общим принципам его эффективного применения. Поэтому мы попытались продемонстрировать образцы качественного стиля программирования и примеры добротного дизайна.

Время от времени мы отсылаем читателя к online-документации Java. Вы можете (и, вероятно, должны) снабжать документацией и собственные программные проекты - эту задачу нетрудно решить с помощью инструментов из состава среды разработки Java, которые позволяют автоматизировать процесс получения HTML-документов на основе специальных комментариев, размещенных в тексте программ. Подобную документацию легко просматривать средствами стандартных Web-броузеров.

Благодарности

И третье издание потребовало немалых усилий - список всех тех, кто нам помогал в работе над книгой, по-прежнему занимает в ней почетное место. Лайза Френдли (Lisa Friendly), как всегда, держала руку на пульсе - недалек тот день, когда мы будем понимать друг друга без слов. В коллектив рецензентов влились новые лица, но и многие старые друзья остались с нами - мы в равной степени признательны и тем и другим. Вот они: Джошуа Блок (Joshua Bloch), Джозеф Боубир (Joseph Bowbeer), Джилад Браха (Gilad Bracha), Кейт Эдуардз (Keith Edwards), Джошуа Энгел (Joshua Engel), Ричард Гиллам (Rich Gillam), Питер Хаггар (Peter Haggar), Кай Хорстманн (Cay Horstmann), Дуглас Ли (Doug Lea), Кейт Ли (Keith Lea), Тим Линдхолм (Tim Lindholm), Дэвид Менделхолл (David Mendelhall), Эндрю М. Морган (Andrew M. Morgan), Реймонд Ортигас (Ray Ortigas), Брайан Престон (Brian Preston), Марк Шульденфрей (Mark Schuldenfrei), Питер Спараго (Peter Sparago), Ги Стил (Guy Steele), Антуан Трю (Antoine Trux), а также наши русские сограждане Александр Кузьмин, Леонид Арбузов, Валерий Шакуров, Вячеслав Рыбалов, Евгений Латкин, Дмитрий Хухро, Константин Анисимов, Алексей Кайгородов, Олег Олейник и Максим Сокольников. Особое терпение и внимание к нашим дискуссиям, направленным на улучшение качеств книги, проявили Питер Джонс (Peter Jones), Роберт Шейфлер (Robert W. Scheifler), Сьюзен Снайдер (Susan Snyder), Ги Стил (Guy Steele), Джимми Торрес (Jimmy Torres) и Энн Вуллрат (Ann Wollrath). Элен Лири (Helen Leary), специалист по вопросам логистики, справлялась со своими обязанностями, как всегда, отменно.

Мы благодарны за техническую поддержку сотрудникам издательства Addison-Wesley - Джули ди Никола (Julie DiNicola), Майку Хендриксону (Mike Hendrickson) и Трейси Расс (Tracy Russ).

Да, с момента выхода в свет предыдущего издания произошли важные события - фирма Peet's Coffee and Tea открыла свой филиал на восточном побережье Штатов, на радость живущим неподалеку членам нашего большого творческого коллектива и всем тамошним обитателям. Ничего не скажешь - мир неуклонно стремится к совершенству!

Сугубая ответственность за любые ошибки или недочеты, оставшиеся незамеченными несмотря на согласованные усилия всех, кому была небезразлична судьба книги, лежит исключительно на нас, ее авторах.

Результаты? Вы спрашиваете, почему у меня так много удачных результатов? Может быть, просто потому, что ошибочных решений у меня было во сто крат больше.


Томас Эдисон


Copyright © 1992-2019 Издательская группа "Диалектика-Вильямс"

Rambler  Top100