Предисловие редактора перевода
Данная книга — одна из немногих на сегодняшний день работ, посвященных созданию корпоративных систем. Авторы Перроун и Чаганти изложили здесь практически все вопросы, связанные с построением системы уровня предприятия. Авторы, безусловно, являются высококвалифицированными специалистами и владеют материалом по своей специальности, как говорится, "на уровне подсознания".
Однако некоторые особенности применения терминов не совсем привычны для читателя. Так, например, каждый, изучающий Java хорошо представляет себе различия между классами, абстрактными классами и интерфейсами. В частности, тот факт, что создать экземпляр абстрактного класса невозможно, не вызывает у него сомнений. Тем не менее, в тексте книги часто встречаются выражения типа "создается экземпляр класса MyAbstractClass", несмотря на то, что MyAbstractClass был перед этим определен как абстрактный класс. Дело в том, что авторы писали данную книгу в расчете на квалифицированных специалистов и справедливо предполагали, что читатель поймет, что приведенная выше фраза на самом деле означает "создается экземпляр подкласса, для которого суперклассом является абстрактный класс MyAbstractClass". Более того, вы даже встретите выражения типа "создается экземпляр интерфейса MyInterface". Очевидно, что эту фразу надо понимать так: "создается экземпляр класса, реализующего интерфейс MyInterface".
Также иногда авторы применяют выражения "класс A вызывает класс B". Авторы поступают так в тех случаях, когда обращение класса A к классу B предполагает вызов нескольких, а не одного конкретного метода.
Материал книги иллюстрируется UML-диаграммами. Помимо других компонентов, на диаграмме изображаются связи между классами, которым присваиваются имена и роли. Поскольку роли тесно связаны с именами классов и методов, названия ролей в большинстве случаев не переводятся и представлены так, как они выглядят в оригинале книги.
В состав книги включено большое количество примеров. Некоторым читателям описание примеров может показаться слишком кратким. Однако, необходимо учесть обилие материала, приведенного в книге. В разных главах рассмотрены самые различные вопросы и почти все из них проиллюстрированы примерами. Если бы авторы стали подробно описывать назначение каждой строки кода, им пришлось бы пожертвовать частью материала. Они же предпочли наиболее полно представить вопросы построения корпоративных систем, справедливо ожидая, что данная книга поможет читателю в повседневной работе.
Об авторах
Пол Дж. Перроун — основатель, президент и старший консультант по программному обеспечению компании Assured Technologies. Работая в Assured Technologies (http://www.assuredtech.com), Пол консультировал по различным вопросам, связанным с программным обеспечением, организовывал курсы подготовки специалистов, разрабатывал программные продукты и проводил исследования для компаний, испытывающих потребность в масштабируемых защищенных системах уровня предприятия, в том числе ориентированных на поддержку электронной коммерции и взаимодействия "бизнес–бизнес" (B2B). Мощные и безопасные системы, созданные с его участием, способствовали росту авторитета возглавляемой им компании. Пол играл ключевые роли в разработке архитектуры и построении больших распределенных систем для предприятий Fortune 500, а также для организаций меньшего масштаба. Наиболее часто в поле зрения Пола попадали технологии Java предприятия Enterprise JavaBeans, вопросы взаимодействия приложений в системе предприятия, CORBA, XML, UML, объектно-ориентированные и компонентные программы. Помимо данной книги, Пол публикует свои работы в различных журналах. Он имеет степень магистра университета штата Виргиния и степень бакалавра университета Рутгерс. Он является членом IEEE и ACM, а также выполняет обязанности председателя секции в Northern Virginia IEEE Computer Society. Связаться с ним можно по адресу [email protected] или по телефону (703) 728-0115.
Венката С. Р. "Кришна" Р. Чаганти занимает должность старшего консультанта по программному обеспечению. В течение последних семи лет он занимался разработкой распределенного программного обеспечения на языках Java и C++. Кришна сотрудничает с предприятиями Fortune 500 и создает программные средства EJB, CORBA и DCE, необходимые для поддержки распределенных вычислений. На протяжении двух лет он изучал технологии Java. Кришна имеет степень магистра университета штата Алабама по компьютерной и электронной технике. Кроме того, он имеет степень бакалавра по электронике и технике связи в университете Нараджуна в Индии. Связаться с ним можно по адресу [email protected].
Введение
Прежде чем погрузиться в чтение данной книги, стоит еще раз убедиться в том, что вы четко определили для себя проблему, которую собираетесь решить. Зная суть проблемы, легко понять, насколько полезной станет для вас эта книга. Прочитав введение, вы узнаете, какие вопросы рассматриваются в ней, на какую аудиторию она рассчитана и как излагается в ней материал.
Как активизировать деятельность предприятия
Рассмотрим проблемы, решению которых посвящена данная книга. Много лет назад, когда мы лишь начинали свою деятельность как консультанты и должны были в жестких условиях (под давлением сроков) находить правильные решения, нам бы очень пригодилась книга вроде этой. Данная книга поможет решить вопросы, возникающие при создании конкурентоспособных систем уровня предприятия, кроме того, в ней учтены новейшие технологии, имеющиеся в руках разработчиков. Мы начнем этот раздел с краткого перечня основных вопросов, рассматриваемых в книге, а затем перейдем к проблемам, в решении которых она сможет вам помочь.
О чем эта книга
Данная книга представляет собой исчерпывающее практическое руководство по построению масштабируемых, защищенных, распределенных приложений уровня предприятия, обеспечивающих поддержку Web. Для создания приложений используется платформа Java 2 Enterprise Edition (J2EE). Технологии, представленные в данной книге, позволяют быстро строить системы для взаимодействия предприятий, занимающихся электронной коммерцией, с потребителями и деловыми партнерами. Кроме того, здесь рассматриваются вопросы, связанные с интеграцией приложений в рамках предприятия, безопасностью распределенных систем, взаимодействующих с Internet, их надежностью, масштабируемостью и поддержкой.
Проблемы и решения
Системами уровня предприятия принято называть распределенные масштабируемые многопользовательские системы, реализующие бизнес-логику и способствующие повышению эффективности работы предприятий. Мы живем в разгар революционных преобразований в информационных технологиях, которые ускоряют развитие экономики и повышают уровень жизни. Одним из основных средств автоматизации, определяющих рост производительности, являются системы управления предприятием. Пытаясь снизить себестоимость продукции и повысить ее конкурентоспособность, предприятия включают свои системы в сложную информационную сеть. Современные системы управления предприятием должны поддерживать средства электронной коммерции, Internet/Web-обмен и B2B-взаимодействие, обеспечивать разведку данных и удовлетворять многим другим требованиям.
Разработчики всегда искали эффективные средства построения корпоративных систем, решающих поставленные задачи и удовлетворяющих высоким требованиям, предъявляемым к подобным системам. Корпорации, в свою очередь, активно ищут специалистов, способных справиться с построением программного обеспечения уровня предприятия. Java-технологии предприятия и, в частности, J2EE позволяют быстро и эффективно создавать масштабируемые, защищенные и надежные системы, допускающие повторное использование компонентов.
Структура книги
Данная книга состоит из семи частей, за которыми следуют приложения. Структура книги подробно описана ниже. Прочитав это описание, вы будете знать, какие сведения вы найдете в той или иной части (возможно, некоторые вопросы уже знакомы вам), и сможете планировать свою работу с книгой. В этом разделе мы также познакомим вас с обозначениями, встречающимися в тексте книги.
Часть I. Общие сведения о системах уровня предприятия
В первой части данной книги описываются основные понятия и подходы к решению проблем, используемые в ост частях. Вначале мы расскажем о проблемах, возникающих при построении корпоративных систем, и наметим пути разрешения этих проблем. Рассматривая объектно-ориентированный и компонентный подходы к созданию программного обеспечения, мы поговорим о том, насколько они применимы при построении систем уровня предприятия. После этого разговор пойдет об основах программирования на языке Java, платформе Java 2 Enterprise Edition и об особенностях платформы, ускоряющих процесс разработки систем. Первая часть книги завершается обсуждением пользовательских интерфейсов и компонентов JavaBeans. Как видите, эта часть носит характер обзора и предназначена для быстрого ознакомления широкой аудитории с базовыми понятиями, которые будут использоваться в дальнейшем.
Часть II. Организация доступа к данным
При построении системы управления предприятием чрезвычайно важно обеспечить доступ к хранилищам информации. Существует много способов взаимодействия Java-приложений с базами данных, однако предпочтительнее всего использовать JDBC (Java Database Connectivity) API. JDBC является составной частью J2EE. Средства JDBC 1.0 часто используются при построении систем на базе JDK 1.1. JDBC 2.0 в составе платформы J2SE (Java 2 Standard Edition) предоставляет разработчикам ряд дополнительных возможностей. Часть II данной книги посвящена вопросам доступа к данных. В частности, в ней вы найдете подробные инструкции по построению клиент-программы, использующей JDBC API. В этой части рассматриваются как базовые, так и расширенные средства JDBC. Прочитав соответствующие главы, вы поймете принципы JDBC-взаимодействия с базами и основные средства, позволяющие организовать это взаимодействие.
Часть III. Коммуникационные средства и распределенные вычисления
В третьей части книги рассматриваются основы распределенных вычислений в рамках предприятия, в частности некоторые средства, доступные разработчику. Поскольку все технологии распределенных вычислений базируются на использовании протоколов семейства TCP/IP, мы описывает архитектуру TCP/IP и Java-интерфейсы, предназначенные для взаимодействия с этими протоколами. После обсуждения HTTP-взаимодействия, мы непосредственно перейдем к рассмотрению различных моделей распределенных вычислений. Модель CORBA входит в состав как J2EE, так и J2SE и предоставляет богатые возможности для организации взаимодействия между распределенными объектами. Модель RMI также входит в состав J2SE и J2EE; в настоящее время наблюдается тенденция к объединению RMI с CORBA посредством RMI/IIOP. Кроме того, в части III будет рассмотрена модель DCOM, которая, хотя и не входит в состав J2EE, тем не менее обеспечивает взаимодействие распределенных объектов. Модель DCOM ориентирована на платформу Microsoft Windows.
Часть IV. Сервисные средства для распределенных приложений
Часть IV данной книги посвящена рассмотрению служб, действующих в распределенной среде и упрощающих взаимодействие Java-приложений с распределенными объектами. Обсуждение различных служб начинается со службы имен, поддерживающей соответствие между распределенными объектами и их символьными именами. В данной части будут рассмотрены такие службы, как JNDI, RMI-реестр и CORBA Naming Service. Затем речь пойдет о службах каталогов и службах поставки, позволяющих выполнять поиск распределенных объектов по значениям атрибутов, в частности будут использованы средства JNDI, LDAP, Jini и CORBA Trading Service. Способы динамической загрузки объектов из области постоянного хранения в оперативную память и перевода их из состояния ожидания в активное состояние будут обсуждаться при рассмотрении служб активации, в частности Java Activation Framework. В части IV данной книги будут также представлены службы сообщений, такие как JMS, JavaMail и CORBA Event Service. Эти службы позволяют объектам обмениваться сообщениями в асинхронном режиме. И, наконец, мы рассмотрим средства поддержки транзакций, обеспечивающие выполнение правил атомарности, согласованности, независимости и постоянства. К службам транзакций относятся CORBA Object Transaction Service, JTS и JTA. Указанные службы могут использоваться различными приложениями, работающими с распределенными объектами, кроме того, они являются мощным средством интеграции Java-программ в системе предприятия.
Часть V. Обеспечение жизнеспособности корпоративных систем
Обеспечение жизнеспособности системы предприятия включает решение вопросов, связанных с защитой, надежностью, доступом к компонентам и поддержкой системы. Поскольку сроки создания программ ограничены, у разработчика может возникнуть соблазн уменьшить время работы над программой за счет ее жизнеспособности, однако, когда речь идет о системе предприятия, потери, вызванные подобным решением, во много раз превышают ожидаемый выигрыш. Планируя увеличение сроков разработки, вызванное реализацией средств повышения жизнеспособности, необходимо ясно представлять себе, какие меры действительно необходимы для конкретной системы. В части V данной книги мы обсудим общие вопросы, связанные с жизнеспособностью, а затем перейдем к рассмотрению защиты — одного из главных показателей жизнеспособности системы. Сначала мы рассмотрим основные понятия и модели, на которых базируются средства защиты Java и CORBA, а затем — архитектуру средств защиты Java. После этого мы подробно обсудим модель защиты приложений уровня предприятия, а также модель защиты CORBA, используемую для обеспечения безопасности CORBA-систем.
Часть VI. Web-взаимодействие в системе предприятия
Начиная со середины 90-х годов появилась тенденция к подключению систем управления предприятиями к Internet. Internet-взаимодействие позволяет дополнить коммерческую деятельность предприятия средствами электронной коммерции. Подключение к Internet производится не только для продажи продукции по сети. Немаловажную роль также сыграла возможность доступа к приложениям, расположенным в любой точке Земли, и удаленного взаимодействия с сотрудниками и деловыми партнерами. В части VI данной книги вы ознакомитесь со средствами, позволяющими организовать Web-взаимодействие системы уровня предприятия. Мы расскажем о применении языков разметки HTML и XML для представления информации и обмена данными между Web-сервером и Web-клиентом. HTML, как правило, используется для создания Web-страниц. Границы применимости XML гораздо шире, с его помощью можно организовать доставку J2EE-компонентов, а также передавать сообщения не только в пределах одной системы, но и между различными системами. В части VII мы подробно рассмотрим Java-сервлеты и Java Server Pages — технологии, чаще всего используемые для реализации Web-приложений в системах уровня предприятия.
Часть VII. Взаимодействие приложений
Многие технологии и службы, описанные в данной книге, применимы как для независимых приложений, так и для работы в прикладной среде предприятия. В части VII данной книги основное внимание уделяется доступу к технологиям посредством сервера приложений, а также средствам построения независимых приложений, имеющихся в руках разработчиков. J2EE Enterprise JavaBeans представляет собой базовую модель, используемую при создании распределенных приложений предприятия. Мы опишем процесс построения и доставки EJB на базе J2EE, а также взаимодействие "толстых" клиентов с EJB. Мы также рассмотрим более сложные вопросы, например взаимодействие EJB — CORBA, безопасность EJB, EJB-транзакции и взаимосвязь между EJB и другими технологиями, описанными в данной книге. Закончим мы эту часть книги разговором о реализации B2B-обмена посредством EJB и независимых приложений и об интеграции с внешними приложениями и программами, уже используемыми для управления предприятием.
Приложения
Приложения, дополняют и иллюстрируют материал, представленный в основных частях книги. В приложениях приводятся сведения о конфигурации примеров программ и о настройке коммерческого программного обеспечения, используемого при изложении материала, а также ссылки, по которым можно найти дополнительную информацию.
Обозначения
При изложении материала данной книги используются специальные обозначения, причем смысл их зависит от контекста. Зачастую одно и то же выражение в тексте главы и в коде примера интерпретируется по-разному. Несмотря на то что обозначения в большинстве случаев интуитивно понятны, мы приводим ниже их перечень.
- Многоточие (...) в исходном тексте примера означает пропущенный фрагмент кода.
- Квадратные скобки ([ ]) в имени каталога или файла содержат выражение, которое должно быть заменено реальным именем.
- Квадратные скобки ([ ]) в тексте или коде примера содержат необязательные данные, которые могут быть пропущены или заменены другими.
- Угловые скобки (< >) в тексте или коде примера содержат обязательную информацию, которая, тем не менее, может быть заменена другими данными.
- Часть кода, выделенная курсивом должна быть заменена реальным выражением или последовательностью символов.
- Курсив в тексте главы служит лишь для того, чтобы обратить внимание читателя на термин или выражение.
- Важные ключевые слова в коде примера или в описании формата файла выделяются полужирным шрифтом.
- Коды примеров, включаемые в текст главы, как правило, имеют такой же вид, в каком они находятся на компакт-диске.
Прочие соглашения
Чтобы читатель мог легко отличить примеры от основного текста, материал представлен следующим образом.
Коды программ, текст, вводимый пользователем, и информация, отображаемая на экране, представлены моноширинным шрифтом.
Так выглядит сообщение, которое программа выводит на экран.
Как и для кого написана эта книга
Теперь, когда вы знаете круг вопросов, рассматриваемых в данной книге, попробуем определить предполагаемую аудиторию, а также расскажем о том, как представлен материал.
Предполагаемая аудитория
В первую очередь данная книга должна заинтересовать специалистов занимающихся разработкой архитектуры, проектированием и построением программного обеспечения. Таким образом, основную массу читателей, по-видимому, составят профессиональные разработчики программ, имеющие опыт создания объектно-ориентированного программного обеспечения, которым необходимо освоить принципы построения систем уровня предприятия на Java. В начале книги вы найдете обзор основных понятий, на которых базируются Java-технологии уровня предприятия. Это поможет специалистам освежить в памяти некоторые вопросы. Те же читатели, чья подготовка в вопросах Java окажется недостаточной, могут использовать материал, расположенный в начале книги, как вводный курс. Эта книга также поможет менеджерам изучить некоторые вопросы, например основы построения систем электронной коммерции и B2B-приложений, которые они как специалисты по управлению предприятием обязаны знать. Специалистам подобного профиля пригодится материал, приведенный в начале каждой главы, а также обзорные главы, специально посвященные рассмотрению базовых понятий.
Способ изложения материала
Несмотря на то что многие Java-технологии, рассматриваемые в данной книге, использовались ранее, в J2EE они были интегрированы в рамках единой платформы. Конечно же, J2EE сама по себе не решит всех проблем, возникающих при построении системы уровня предприятия, поэтому мы будем рассматривать и другие Java-технологии. В данной книге мы постарались обобщить наш опыт использования этих технологий и время от времени будет рассматривать конкретные проблемы и пути их решения.
Мы старались построить книгу как полное руководство по вопросам построения систем уровня предприятия на языке Java. И поэтому мы не ограничились детальным рассмотрением архитектуры и способов построения Java-приложений уровня предприятия, а также включили в текст книги множество примеров. Большое внимание здесь уделяется использованию базовых API при построении приложений уровня предприятия, а также конфигурации этих приложений в составе системы. Учитывая обилие возможностей, предоставляемых J2EE и Java API предприятия, мы рассматриваем лишь основные средства API. Такой подход вполне оправдан, поскольку данная книга посвящена процессу разработки систем уровня предприятия и ее нельзя рассматривать как справочное пособие по API. Ссылки на дополнительные источники информации об API вы найдете в приложении Б. Поскольку данная книга представляет собой практическое руководство, мы иногда ссылаемся на API, которые, хотя и не входят в состав J2EE, но, тем не менее, часто используются в системах управления предприятием. Заметьте также, что говоря о J2EE, мы имеем в виду как J2SE, так и расширения, превращающие J2SE в J2EE.
Ожидаемые результаты
Прочитав данную книгу, вы будете вооружены знаниями о применении Java-технологий предприятия для организации взаимодействия распределенных объектов и доступа к данным, обеспечения жизнеспособности системы и обмена информацией с Web. Свои знания вы сможете успешно применить на практике. Основными инструментами для построения системы уровня предприятия будут J2EE и Java-технологии предприятия.
Теперь приготовьте кофе, сядьте поудобнее и принимайтесь за чтение книги, в которой мы рассказываем о том, как J2EE может повысить эффективность работы предприятия. Если вы захотите связаться с нами, обратитесь по адресу: http://www.assuredtech.com/books/j2ee/feedback.html.