Java 2. Руководство разработчика

Майкл Морган

Java 2 for Professional Developers
книга Java 2. Руководство разработчика

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

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

Java - это независимый от платформы, объектно-ориентированный язык программирования, предназначенный в первую очередь для использования в Internet. В отличие от своего собрата JavaScript, Java разработан специально для профессиональных программистов.
Данная книга состоит из пяти частей и приложений. В ней подробно рассмотрена работа как с JDK 1.2.2 фирмы Sun, так и со средствами визуального проектирования. Сначала излагаются основы, а затем расширенные возможности языка Java, поэтому вы можете приступить к чтению книги с того места, где начинается новый для вас материал. Кроме фундаментальных знаний по Java читатель получит ценную информацию по таким темам, как UML, CORBA, объектно-ориентированный анализ, AWT, JavaBeans, Glasgow и др.
Книга рассчитана на читателей, знакомых с основами объектно-ориентированного программирования и профессиональных программистов.

768 стр., с ил.; ISBN 5-8459-0046-8, 0-672-31697-8; формат 70х100/16; CD-ROM, Web-сервер; серия Руководство разработчика; 2000, 1 кв.; Вильямс.



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







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



Об авторе

Майкл Морган (Michael Morgan) — профессиональный разработчик программного обеспечения на языке Java, а также создатель и президент компании DSE, Inc., которая занимается разработкой программного обеспечения для Web. Специалисты этой фирмы создавали программные продукты для таких компаний, как Intelect, Magnavox, DuPont, American Biorobotics Company и Satellite Systems Corporation, а также для правительства Исландии и воздушных сил Саудовской Аравии. Разработанные ими Web-узлы отличаются высокой эффективностью — на одном из них за 30 дней с момента объявления объем продаж составил около $100 тыс.

В течение 1989–1990 учебного года по приглашению адмирала военно-морского флота в отставке Рона Хейса (Ron Hays) Майкл Морган работал в Международном центре по использованию высоких технологий в мирных целях — Pacific International Center for High Technology Research (PICHTR) в Гонолулу, созданном под эгидой Гавайского университета. Его задача — обеспечить связь между академическими исследованиями и их применением в промышленности. Майк руководил первым проектом центра по внедрению технологии и содействовал в получении первого производственного контракта. От также помогал адмиралу Хейсу представлять PICHTR и обеспечивать интеграцию центра в исследовательскую и законодательную среду Гавайев.

Майк часто выступает на семинарах по информационным технологиям, преподает компьютерные дисциплины в Шаминадском университете в Гонолулу (Chaminade University), а также участвует в образовательной программе Тихоокеанского университета на Гавайях (Hawaii Pacific University). Он проводил семинары под эгидой IEEE, национальные семинары, семинары в Гавайском университете и в Университете Нотр Дама (University of Notre Dame).

Майк получил ученую степень магистра в области системного управления в Технологическом институте штата Флорида и степень бакалавра в области математики в колледже Витона (Wheaton College), где он изучал компьютерные науки. В Национальном технологическом университете он закончил многочисленные курсы повышения квалификации в компьютерной области. В настоящее время он аспирант Центра перспективных разработок в Регентском университете (Center for Leadership Studies at Regent University), где занимается изучением взаимосвязи между тенденциями в развитии программного обеспечения и военной теорией.

Майка обычно можно застать в офисе компании DSE, где он пишет программы на Java, прихлебывая диетическую пепси-колу. Он живет в городке Виргиния Бич (Virginia Beach) с женой Джин (Jean); у них шестеро детей.

Посвящение

Посвящается моей дочери Грейс (Grace).

"...мы расскажем будущему поколению о славных деяниях Господа..."

Книга Псалмов (новая международная версия); Псалом 78:4

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

Хотя на обложке этой книги значится мое имя, над созданием рукописи и превращением ее в готовое издание трудилось множество людей. И если книга вам понравится, то в этом и их заслуга.

Я особенно благодарен тем из вас, кто посещал мои семинары по Java, проводимые Национальной группой семинаров — National Seminars Group (http://www.natsem.com/). Ваши вопросы и замечания оказались весьма полезными при выборе материала для этой книги. Спасибо за участие!

Сотрудники издательства Sams в очередной раз проявили свои незаурядные способности и профессионализм. Тим Райан (Tim Ryan) и Джон Стивер (Jon Steever) изучили всю рукопись, глубоко анализируя многие вопросы, относящиеся к новейшим технологиям. Джоди Йенсен (Jodi Jensen) и Ронда Тинч-Майз (Rhonda Tinch-Mize) отредактировали книгу, проделав колоссальную работу, требующую безграничного терпения. Спасибо, ребята!

Я также благодарен читателям нынешней и предыдущих моих книг за обратную связь. Обращайтесь, пожалуйста, на мой Web-узел http://www.MichaelMorgan.com или присылайте электронные сообщения по адресу: [email protected]. Буду рад получить от вас известие.

Как обычно, за все ошибки и неточности несу ответственность я сам.

Майк Морган
Виргиния Бич
28 мая 1999

Введение

Бытует мнение, что программист, владеющий языком Java, зарабатывает $400 в час и если изучать этот язык в течение полугода, то для получения достойной работы достаточно лишь заявить о своем желании. Возможно, это небольшое преувеличение, но в каждой шутке, как известно, есть доля шутки. Том Полк (Tom Paulk), представитель одного из самых солидных кадровых агентств — компании Snelling Personnel, уверяет, что программисты, владеющие языком Java пользуются самым высоким спросом на рынке труда. Чтобы удостовериться в этом и посмотреть список реальных предложений для Java-программистов, посетите Web-узел Тома по адресу: http://www.snelling.com/chesapeake/.

ДЛЯ КОГО ПРЕДНАЗНАЧЕНА ЭТА КНИГА

Java — это независимый от платформы, объектно-ориентированный язык программирования, предназначенный в первую очередь для использования в Internet. В отличие от своего собрата JavaScript, Java разработан специально для профессиональных программистов.

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

Если вы программируете на языке С или С++, то вам также будет полезна эта книга. В разделе "Опираясь на мощь языка C++" приложения А, "Язык Java для программистов на C++", поясняется, почему Java может с успехом заменить С++.

Возможно, вы программируете на одном из так называемых классических языков, например COBOL или RPG. Тогда с помощью Java вы сможете придать своим приложениям "товарный" вид, чтобы пользователи компьютеров на платформах PC, Macintosh и рабочих станций под управлением Unix могли воспользоваться плодами вашего труда. Имеет смысл перевести некоторые ваши программы на язык Java, чтобы распространять их по сети. И наконец, стоит изучать Java хотя бы для повышения своего профессионального уровня, чтобы идти в ногу со временем.

Если вы пока не знакомы с программированием, добро пожаловать! Java прекрасно выполнит роль первого в вашей жизни языка программирования. Возможно, для его изучения вам придется приложить несколько больше усилий, чем опытным программистам, однако игра стоит свеч. Умение программировать — это очень ценное качество, поэтому изучение Java окупится сторицей. Если у вас есть некоторый опыт использования HTML или JavaScript, то вы можете применять Java для усовершенствования своих Web-страниц.

КАК ПОСТРОЕНА ЭТА КНИГА

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

В части I, "Основы", вы познакомитесь с языком Java. Из главы 1, "Что нового в Java 2", вы узнаете, какое место занимает Java в мире языков программирования. В отличие от программ, написанных на любых других языках программирования, созданные на Java программы можно использовать практически на всех платформах. Если вы хотите применять Java для модернизации Web-узла, то с удовольствием узнаете о средствах защиты, которые делают Java-аплеты практически неподверженными влиянию компьютерных вирусов.

Чтобы писать Java-программы, вам понадобится набор инструментальных средств Java Software Development Kit (SDK), разработанный компанией Sun Microsystems. В главе 2, "Введение в Java 2 SDK", вы узнаете, где можно получить этот пакет и как его установить на компьютере. Затем вы попытаетесь создать маленькое приложение и превратить его в аплет. Краткое описание компонентов SDK поможет вам понять предназначение каждого из них.

Начиная с главы 3, "Данные и операции над ними", внимание концентрируется на самом языке Java. Так, в главе 3 описываются основные типы данных — целые числа, символы и числа с плавающей точкой, которые используются во всех Java-программах. Там же вводится понятие класса — основного структурного элемента объектно-ориентированного программирования. В главе 4, "Операторы ветвления и циклы", продолжается обсуждение базовых конструкций языка. Создателю языка Pascal Николасу Вирту (Nicolas Wirth) принадлежит изречение: "Алгоритмы + структуры данных = программы". Изучив главы 3 и 4, вы узнаете, как строить алгоритмы и манипулировать простыми структурами данных в языке Java.

Таким образом, из материала части I вы узнаете, где следует использовать Java и с чего начать. Вы научитесь помещать существующие аплеты на Web-страницы и создавать собственные простые аплеты и приложения.

На сегодняшний день одной из наиболее сложных структур данных является объект. Часть II названа "Работа с объектами". Чтобы использовать объект, необходимо вызвать один из его методов (methods). Метод можно сравнить с сообщением, посылаемым клиентам класса, к которому принадлежит данный объект. Еще не приступив к написанию собственного кода, вы уже имеете доступ к сотням объектов различных классов и тысячам методов, встроенных в SDK. В главе 5, "Методы", излагается концепция повторного использования кода и разъясняется, как избежать написания лишнего кода за счет вызова методов существующих классов. (Хотя создание собственных классов — процесс довольно увлекательный и поучительный, как профессиональный программист, вы не должны упускать ни единой возможности сэкономить средства за счет повторного использования кода.)

Изучив базовые структуры данных и принципы использования методов, определенных для классов в SDK, вы наверняка захотите приступить к созданию собственных классов. Главы 6, "Объектно-ориентированный анализ", и 7, "Объектно-ориентированное программирование в среде Java", позволят вам взглянуть на приложение как на набор взаимосвязанных объектов и научат превратить эти объекты в определения классов. Анализ — это процесс формирования требований к приложению. Основная задача аналитика — выяснить у пользователя, решение каких задач он хочет возложить на "плечи" компьютера. Вы познакомитесь с методами практического анализа, которые позволят вам быстро найти общий язык с пользователем и составить описание приложения. Затем вы узнаете, как использовать части речи (существительные, глаголы и прилагательные) для описания практической модели и последующего преобразования ее в модель высокого уровня (top-level design). Вы научитесь определять, какие существительные должны превратиться в имена классов и как расположить эти классы в иерархическом порядке. Из главы 7 вы узнаете, как на основе модели высокого уровня создать подробную модель, от которой до реальной программы останется всего один шаг. Вы познакомитесь с некоторыми принципами программирования, способными сделать ваши Java-программы более понятными потенциальным пользователям. В главе 8, "Интерфейсы", речь идет о том, как создавать классы, которые ведут себя так, будто принадлежат к нескольким различным иерархиям. Изучив материал части II, вы усвоите основы квалифицированного объектно-ориентированного программирования.

Чтобы использовать все возможности Java, вам придется познакомиться с интерфейсом прикладных программ (Application Programming Interface — API), обеспечиваемым SDK. Часть III, "Основы Java API", содержит описание основных классов SDK. Глава 9, "Исключительные ситуации", посвящена проблеме, с которой сталкивались программисты, владеющие языками первого поколения, существовавшими до появления С++. Язык С++ обладает мощными средствами контроля и выявления ошибок на стадии выполнения программы. Описываемые средства называют исключениями (Exceptions). Из этой главы вы узнаете, как использовать эти возможности в Java.

На сегодняшний день программы — это не просто набор структур данных и алгоритмов для их обработки. Существует еще один важный аспект — графический интерфейс пользователя. Конечно, можно написать приложение, которое прекрасно запускается из командной строки, однако большинство пользователей требуют сегодня наличия графического интерфейса с кнопками, полосами прокрутки и другими привычными элементами. В следующих четырех главах речь идет именно о том, как разработать такой интерфейс.

В главе 10, "Создание интерфейса пользователя с помощью пакета AWT", описывается классический пакет для создания графического интерфейса Java — Abstract Windowing Toolkit. Новейшие компоненты интерфейса входят в состав библиотеки Java Foundation Classes (JFC). Графические компоненты JFC, получившие название Swing-компонентов, рассматриваются в главах 11, "Построение интерфейса пользователя с помощью пакета JFC Swing", 12, "Проектирование интерфейса средствами пакета JFC", и 13, "Возможности пакета JFC".

Как профессионал, вы наверняка захотите удостовериться, что ваши приложения без проблем установятся на компьютерах, где работают другие приложения Java. Для этого придется использовать пакеты (package) — предмет обсуждения главы 14, "Разработка пакетов".

И наконец, в третьей части рассматривается еще два вопроса, имеющих важное значение для большинства приложений, — распараллеливание вычислений с помощью потоков команд и организация ввода-вывода. В главе 15, "Разработка многопоточных приложений", речь идет о том, как запустить несколько управляемых процессов одновременно. Приложения, использующие эту технологию, называются многопоточными (multithreading). Из главы 16, "Обмен данными в Java: потоки и сетевые соединения", вы узнаете, как писать клиентные и серверные приложения — важнейшие элементы приложений для Internet.

Часть IV, "Расширенные возможности Java API", охватывает вопросы, с которыми вам, возможно, не придется сталкиваться каждый день, но которые имеют важное значение для отдельных приложений. В главах 17, "Создание компонентов с помощью технологии JavaBeans", и 18, "Создание усовершенствованных компонентов JavaBeans", описывается, как использовать Java для создания компонентов. Даже начинающие программисты смогут поместить эти компоненты в визуальную среду разработки и создавать программы без написания кода. Подобная методология визуального программирования положена в основу многих систем быстрой разработки приложений, предназначенных для непрофессиональных программистов, которым по роду своей деятельности приходится создавать приложения и которым нет смысла тратить много усилий на написание кода. В главе 19, "Использование пакета JDBC", рассматриваются вопросы использования в Java-приложениях информации из реляционных баз данных.

Книгу завершает часть V, "Разработка программного обеспечения на Java", в которой описываются некоторые новейшие средства, предоставленные в распоряжение Java-программистов. Конечно, можно разрабатывать приложения даже без использования описанных в этой части приемов. Однако профессиональные программисты наверняка захотят воспользоваться как возможностями отладчика Java, описанного в главе 20, "Тестирование и отладка Java-программ", так и методами повышения эффективности программ, рассмотренными в главе 21, "Повышение производительности Java-приложений".

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

Достигнув достаточно высокого уровня профессионализма в программировании, вы захотите удостовериться, что ваш код пригоден для повторного использования и легко поддается модификации. Если рассматривать вашу работу с этой точки зрения, то сложность кода — ваш враг. Поэтому для обеспечения простоты сопровождения приложений вам необходимо научиться управлять сложностью кода. Прочтите главу 23, "Структуризация программ и их повторное использование", и вы узнаете, как защитить себя от избыточной сложности и благодаря этому сэкономить значительные ресурсы системы.

В приложениях содержится информация, которая может пригодиться многим читателям. Приложение А, "Язык Java для программистов на C++", рассчитано на опытных программистов, владеющих языком С++, которые хотят освоить Java в качестве второго языка программирования. Всем без исключения читателям советуем обратить внимание на приложение Б, "Ресурсы языка Java". Из представленного в нем материала вы сможете узнать, где получить дополнительную информацию по вопросам, которые освещаются в этой книге.

В приложении В, "Справочник по языку Java", анализируется синтаксис языка. Приведенный в нем материал пригодится при устранении ошибок, о которых сообщает компилятор. В приложении Г, "Создание аплетов Java в среде IDE", речь идет о возможностях интегрированной среды разработки Java — Java Integrated Development Environment, а также о том, как приступить к ее использованию.

Приложение Д, "Глоссарий", представляет собой глоссарий — словарь терминов, в котором можно найти толкование любого незнакомого технического термина. Помещенные в глоссарий термины при первом упоминании в тексте книги выделяются курсивом.

КАК РАБОТАТЬ С ЭТОЙ КНИГОЙ

Каким бы ни был ваш опыт в программировании, советую начать знакомство с книгой с главы 1, "Что нового в Java 2". Если вы уже знакомы с современными языками программирования типа C, С++, Ada или Pascal, переходите сразу к главе 2, "Введение в Java 2 SDK". Синтаксис Java во многом перекликается с C или С++. Поэтому если вы знакомы хотя бы с одним из упомянутых языков программирования, то сможете разобраться в тех простых приложениях и аплетах, которые рассматриваются в этой главе.

Замечания для опытных программистов на С/С++

Поскольку у вас есть опыт работы с языком программирования, близким к Java, вам можно не углубляться в главы 3, "Данные и операции над ними", и 4, "Операторы ветвления и циклы", посвященные собственно языку Java. Просто просмотрите их, чтобы познакомиться с синтаксисом Java, а затем периодически возвращайтесь к ним, чтобы лучше понять незнакомые фрагменты Java-программ, приведенных в книге. Если вы знакомы с принципами объектно-ориентированного программирования, то можете лишь бегло просмотреть также главы 5, "Методы", 6, "Объектно-ориентированный анализ", и 7, "Объектно-ориентированное программирование в среде Java", посвященные объектно-ориентированному анализу и разработке приложений. Однако главы 8, "Интерфейсы", и 9, "Исключительные ситуации", нужно изучить внимательно, поскольку в них рассматриваются вопросы, которые в Java решены совсем не так, как в других языках программирования.

Программистам на языке С++ окажется полезным и приложение А, "Язык Java для программистов на C++".

Кроме того, стоит прочитать главу 10, "Создание интерфейса пользователя с помощью пакета AWT", чтобы научиться создавать графический интерфейс пользователя для приложений. Если вы хотите познакомиться с дополнительными возможностями Swing-компонентов, обратитесь к главам 11, "Построение интерфейса пользователя с помощью пакета JFC Swing", 12, "Проектирование интерфейса средствами пакета JFC", и 13, "Возможности пакета JFC".

Тем, кто работает исключительно с SDK (а не в интегрированной среде разработки), следует обратить внимание на главу 20, "Тестирование и отладка Java-программ". Если при работе в IDE вы планируете пользоваться отладчиком, вам придется прочитать раздел "Отладка программ" главы 20.

Познакомившись с главой 20, вы можете сами решить, куда двигаться дальше. В остальных главах (с 15 по 19 и с 21 по 23) вы найдете недостающую информацию, которая поможет вам при создании собственных программ. Настоятельно советую прочитать главу 23, "Структуризация программ и их повторное использование". Из нее вы узнаете, как оценить сложность кода и время, необходимое для разработки новой программы. Эти два аспекта, вероятно, больше любых других позволяют отличить профессионального разработчика программного обеспечения от программиста-любителя.

Замечания для программистов на других языках

Если вы имеете опыт программирования на языках, отличных от С и С++, советуем внимательно изучить главы 3 и 4. В них описаны основы языка Java. Затем прочтите главы 5, 6 и 7, чтобы поближе познакомиться с принципами объектно-ориентированного программирования. И наконец, прочтите весь материал, предназначенный для программистов на С и С++ (как описано выше).

СОГЛАШЕНИЯ, ПРИНЯТЫЕ В КНИГЕ

Язык Java можно использовать для написания как аплетов, так и полноценных приложений. Поэтому для описания программного продукта, созданного на Java, мы будем использовать слово "программа" (не уточняя, каким образом она реализована: в виде аплета или приложения). Термином "приложение" будем называть программы, работающие без поддержки других программ (например, броузеров Internet).

В каждой главе вы встретите слова, выделенные курсивом, а также нумерованные и маркированные списки. Курсивом выделяются ключевые слова или словосочетания. Их краткое определение или объяснение содержится в самой главе, а более полная информация о многих терминах вынесена в глоссарий.

Маркированные списки используются для перечисления элементов, порядок следования которых несуществен. Отдельные элементы представляют взаимосвязанные понятия, которые поясняются в списке.

Нумерованные списки используются в том случае, когда важное значение имеет порядок следования элементов. В виде нумерованного списка оформляется последовательность действий при выполнении некоторой процедуры. Эти действия нужно выполнить по очереди от начала до конца. Удостоверьтесь, что вам понятен каждый шаг. Нельзя пропустить один из шагов только потому, что вы его не поняли.

Информация, имеющая отношение к обсуждаемому вопросу, или "уточнения" автора выносятся на врезки. Таким образом она отделяется от основного текста, чтобы помочь читателю сконцентрировать внимание на особо важных моментах.

В тексте книги также встречаются рисунки. Они, как правило, представляют собой копии экрана, благодаря которым читатель может лучше понять, чего следует ожидать от своего компьютера. На самом деле ваш экран может выглядеть несколько иначе, чем в примерах из книги. Это объясняется различием в интерфейсе пользователя Web-броузеров, редакторов HTML и конфигурации аппаратных средств.

Кроме того, в книге встречаются фрагменты кода. Они выделяются моноширинным шрифтом. Эти фрагменты иллюстрируют применение описываемых приемов, но сами по себе не являются завершенными программами. Если строка кода достаточно длинная и не помещается в одной строке книги, то ее часть переносится на новую строку, в которой вставляется символ продолжения Д.

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

Эта книга достаточно объемна, как, впрочем, и сам предмет ее описания — язык Java. Но даже в такой фундаментальной книге мы смогли затронуть лишь наиболее популярные вопросы. Освоив основы программирования на языке Java, вы, вероятно, захотите прочитать более специализированные книги, такие как Pure JFC, Java Distributed Objects и Developing Java Servlets издательства Sams Publishing.

НЕСКОЛЬКО СЛОВ О JAVA 2 SDK 1.2

Этот SDK появился в декабре 1998 года, а настоящая книга вышла в свет в июне 1999, поэтому она включает максимально возможное количество точной информации. Но есть одна неточность — само название пакета. Хотя официально компания Sun присвоила ему имя SDK, в документации все еще иногда встречается термин JDK. Поэтому в данной книге мы использовали оба термина, SDK и JDK, как синонимы.

Для доступа к материалам книги щелкните наэтой ссылке.


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

Rambler  Top100