Java: архитектура и интерфейсы

Страница 4

Распределенные объекты и CORBA

Java Remote Method Invocation – это решение для создания распределенных систем, которое работает для клиентских и серверных приложений, написанных на языке Java. Но оно не подходит для гетерогенных сред, где клиенты и серверы написаны на различных языках. Для таких сред в платформе Java 2 реализована поддержка CORBA.

CORBA (Common Object Request Broker Architecture) – это стандарт, созданный Object Management Group (OMG). Данный стандарт реализован как базовая составляющая платформы Java 2 в пакете org.omg.CORBA и других подпакетах. Реализация включает Object Request Broker (ORB), который Java-приложения могут использовать для общения с другими брокерами и другими CORBA-объектами.

Интерфейсы к удаленным CORBA-объектам являются независимыми от языка и платформы и описываются на языке описания интерфейсов - Interface Description Language (IDL). В состав Java Development Kit входит компилятор IDL, который преобразует интерфейсы, описанные на языке Interface Description Language в специальные Java-классы, необходимые для реализации IDL-интерфейсов на Java или для связи с удаленными реализациями интерфейсов из Java-кода.

Сервисы имен и каталогов

Интерфейсы Java Naming and Directory Interface (JNDI) представляют собой независимые от протоколов интерфейсы к сетевым сервисам имен и каталогов. Эти интерфейсы реализованы в пакете javax.jndi, который является стандартным расширением платформы Java 2.

Интерфейсы JNDI не являются специфичными для каких-то протоколов поддержки сервисов имен и каталогов. Вместо этого они представляют собой базовые интерфейсы, способные работатть с любыми серверами. Для поддержки какого-то конкретного протокола требуется наличие специального провайдера. Для большинства провайдеров таких сервисов - LDAP, DNS или NIS реализованы соответствующие программные средства.

Электронная почта

Интерфейс JavaMail представляет собой независящий от протоколов интерфейс к сервисам электронной почты. Он поддерживает возможность отсылки и получения электронной почты, а также такие функции, как поиск. Интерфейс JavaMail реализован в пакете javax.mail и подпакетах и является стандартным расширением платформы Java 2.

Как и JNDI, JavaMail не связан с каким-то конкретным протоколом для получения и отсылки электронной почты. JavaMail – это набор базовых функций, способных работать с любым протоколом. Реализация конкретного протокола – SMTP, IMAP или POP3 – требует наличия соответствующего провайдера, который входит в комплект поставки.

Enterprise JavaBeans

Enterprise JavaBeans – это серверный аналог JavaBeans. Enterprise JavaBeans (EJB) представляет собой компонентную модель для реализации бизнес логики и бизнес данных. Программная модель с "тонким" клиентом предполагает вынос бизнес-логики с клиентской части на сервер или промежуточный уровень (middle tier) и позволяет создавать более гибкие корпоративные приложения. Но при этом, реализация бизнес логики связана с необходимостью поддержки кода, который бы обрабатывал транзакции, взаимодействовал бы с сетью и обеспечивал бы средства защиты информации.

Модель EJB отделяет бизнес-логику от низкоуровневых функций, позволяя разработчикам не заботиться о том, как в том или ином случае будут реализованы стандартные функции, например, для передачи данных или обработки транзакций.

Пакеты javax.ejb и javax.ejb.deployment являются стандартными расширениями платформы Java 2 и содержат классы, необходимые для создания и внедрения EJB. Архитектура EJB также взаимодействует с интерфейсами JNDI и другим стандартным расширением - Java Transaction Services ( JTS).

Сервлеты

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

В настоящее время сервлеты используются, в основном на Web-серверах. Таким образом сервлеты можно назвать Java-аналогом CGI-программ. Сервлеты вполне конкурентно-спрособны с такими технологиями, как Active Server Pages фирмы Microsoft или Cold Fusion фирмы Allaire. Преимуществом использования сервлетов является то, что они являются независимыми от платформы и сохраняются в памяти после загрузки (в отличие от CGI-программ). Помимо этого сервлеты имеют полный доступ к платформе Java и могут выполнять такие функции, как связь с базами данных.

Сервлеты являются стандартным расширением платформы Java 2 и реализованы в пакетах javax.servlet и javax.servlet.http. Пакет javax.servlet задает классы для обработки клиентских запросов и серверных ответов. Пакет javax.servlet.http обеспечивает поддержку протокола HTTP, включая обработку запросов от нескольких клиентов в рамках одной клиентской сессии.

Это еще не все

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

Интерфейс

Описание

Advanced Imaging API

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

Java Speech

Обеспечивает поддержку синтеза речи и распознавание голоса.

Java Telephony

Представляет собой интерфейс для создания компьютерных приложений для работы с телефонией.

Project X

Кодовое название расширений для поддержки языка XML

Java Communications API

Позволяет Java-приложениям использовать последовательные и параллельные порты компьютера

Jini

Набор пакетов для обеспечения сетевых функций "plug-and-play" для компьютеров, периферийных устройств и различных электронных приспособлений

Java Message Service

Представляет собой интерфейс для асинхронного обмена сообщениями.

Java Transaction Service/Java

Transaction API

Эти программные интерфейсы задают средства управления транзакциями и их обработки. Реализуют стандарты X/Open XA и OMG OTS для управления транзакциями

Java Electronic Commerce Framework

Представляет собой набор классов для создания приложений электронной коммерции, используя метафору "бумажника" на клиентском компьютере

Java Management API

Задает набор интерфейсов для централизованного управления динамическими распределенными Java-приложениями и средами

Приложение

Интерфейсы Java 2 API

Пакет

Описание

java.applet

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

java.awt

Содержит все классы для создания пользовательских интерфейсов, отрисовки графики и изобржений

java.awt.color

Содержит классы для уветовых схем

java.awt.

datatransfer

Предоставляет интерфейсы и классы для передачи данных между приложениями или внутри одного приложения

java.awt.dnd

Обеспечивает интерфейсы и классы для поддержки операций Drag-and-Drop

java.awt.event

Содержит интерфейсы и классы для обработки различных событий, возникающих в AWT-компонентах

java.awt.font

Содержит классы и шрифты для работы со шрифтами

java.awt.geom

Предоставляет класы Java 2D для выполнения операций над объектами, реализующими 2-мерную геометрию

java.awt.im

Содержит классы и интерфейсы для реализации ввода (input method framework)

java.awt.image

Реализует классы для создания и модификации графических изображений

java.awt.image.

renderable

Содержит классы и интерфейсы для обработки графических изображений

java.awt.print

Предоставляет классы и интерфейсы для поддержки работы с принтером

java.beans

Содержит классы, относящиеся к разработке Java Beans

java.beans.

beancontext

Реализует классы и интерфейсы для реализации контекста Java Beans

java.io

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

java.lang

Обеспечивает классы, реализующие основу языка Java

java.lang.ref

Содержит ссылочные классы, поддерживающие связь со сборщиком "мусора"

java.lang.

reflect

Содержит классы и интерфейсы для получения информации о классах и объектах

java.math

Обеспечивает классы для выполнения арифметических действий

java.net

Содержит классы для выполнения сетевых функций

java.rmi

Представляет собой RMI-методы

java.rmi.

activation

Обеспечивает поддержку RMI Object Activation.

java.rmi.dgc

Содержит классы и интерфейсы для распределенной сборки "мусора" на основе RMI - Distributed Garbage-Collection (DGC).

java.rmi.

registry

Содержит класс и два интерфейса для регистрации RMI

java.rmi.server

Содержит классы и интерфейсы для поддержки серверных RMI.

java.security

Содержит классы и интерфейсы для защиты (security framework)

java.security.

acl

Реализует классы и интерфейсы, которые в Java 2 реализованы в пакете java.security

java.security.

cert

Обеспечивает классы и интерфейсы для обработки сертификатов

java.security.

interfaces

Содержит интерфейсы для генерации RSA-ключей и DSA-ключей в соответствии со стандартами

java.security.

spec

Обеспечивает интерфейсы для различных спецификаций защиты

java.sql

Интерфейс к JDBC

java.text

Предоставляет классы и интерфейсы для обработки текста, дат, чисел и сообщений, независимо от языка

java.util

Содержит интерфейсы для работы с коллекциями (collections framework), событийную модель, функции для даты и времени, функции локализации и различные дополнительные классы

java.util.jar

Обеспечивает классы для чтения и записи файлов в формате JAR (Java ARchive), который основывается на стандарте ZIP с необязательными дополнениями

java.util.zip

Содержит классы для чтения и записи файлов в формате ZIP и GZIP

javax.

accessibility

Реализует функции Accessibility

javax.swing

Предоставляет набор легковесных компонентов для реализации пользовательских интерфейсов

javax.swing.

border

Содержит классы и интерфейсы для отрисовки специальных рамок вокруг компонентов Swing.

javax.swing.

colorchooser

Содержит классы и интерфейсы, используемые компонентом JColorChooser

javax.swing.

event

Используется для поддержки событий в компонентах Swing

javax.swing.

filechooser

Содержит классы и интерфейсы, используемые компонентом JFileChooser

javax.swing.

plaf

Содержит один интерфейс и несколько абстрактных классов, используемых Swing для реализации переключаемых настроек (pluggable look-and-feel)

javax.swing.

plaf.basic

Содержит интерфейсные объекты для базовой настройки (Basic look-and-feel)

javax.swing.

plaf.metal

Содержит интерфейсные объекты для настройки ``metal'

javax.swing.

plaf.multi

Позволяет объединять различные интерфейсные настройки

javax.swing.

table

Содержит классы и интерфейсы, используемые java.awt.swing.JTable

javax.swing.

text

Обеспечивает классы и интерфейсы для редактируемых и нередактируемых текстовых компонентов

javax.swing.

text.html

Содержит класс HTMLEditorKit и подклассы для создания HTML-редакторов

javax.swing.text.html.parser

Содержит парсер языка HTML

javax.swing.text.rtf

Содержит класс RTFEditorKit для создания RTF-редакторов

javax.swing.tree

Содержит классы и интерфейсы для java.awt.swing.JTree

javax.swing.undo

Обеспечивает поддержку отмены/повтора операций в приложениях.

org.omg.CORBA

Реализует интерфейсы OMG CORBA на языке Java, включая класс ORB, который может использоваться как полнофункциональный брокер - Object Request Broker (ORB).

org.omg.CORBA.

DynAnyPackage

Поддерживает исключительные ситуации, используемые интерфейсом DynAny (InvalidValue, Invalid, InvalidSeq, и TypeMismatch).

org.omg.CORBA.

ORBPackage

Поддерживает исключение InvalidName для метода ORB.resolve_initial_references и исключение InconsistentTypeCode,.

org.omg.CORBA.

portable

Обеспечивает уровень переносимости – набор интерфейсов ORB, которые делают возможным выполнение кода для одного брокера под управлением другого

org.omg.CORBA.

TypeCodePackage

Поддерживает исключения BadKind и Bounds

org.omg.

CosNaming

Реализует сервисы имен для Java IDL.

org.omg.CosNamongContextPackage

Поддерживает исключения для пакета org.omg.CosNaming (AlreadyBound, CannotProceed, InvalidName, NotEmpty и NotFound) и классы Helper и Holder для этих исключений