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 для этих исключений |