РефератыИнформатика, программированиеJaJava99: Архитектура и интерфейсы

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

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



Многим наверняка
уже известно,
что язык Java был
разработан
фирмой Sun, как
платформенно-независимый,
переносимый,
объектно-ориентированный
язык для Internet и
Intranet. Я не вижу особого
смысла перечислять
преимущества
языка, его отличия
от C++ - это уже
описано в десятках
книг и сотнях
публикаций,
как за рубежом,
так и в нашей
стране. Здесь
мы остановимся
на том, что
представляет
собой платформа
Java сегодня, из
каких компонентов
она состоит
и какие средства,
доступны для
разработчиков.
Таким образом,
по завершении
данного цикла
вы должны будете
получить достаточно
четкое представление
о том, что предлагает
фирма Sun, какими
средствами
разработки
можно пользоваться,
какие существуют
компоненты
и средства для
их создания
и как с помощью
Java можно создавать
корпоративные
решения.



Технология
Java



Технология
Java обеспечивает
разработчиков
основой для
создания решений,
при разработке
которых не
нужно задумываться
об операционной
системе и аппаратной
платформе, на
которых эти
решения будут
функционировать.
Часто используемое
выражение
"Написано
однажды – работает
везде" лучшим
образом характеризует
основное назначение
этой технологии.
Независимость
от платформы
достигается
за счет того,
что уникальные
характеристики
каждой из
поддерживаемых
Java 2 платформ,
реализованы
в виде оболочки,
называемой
Java Runtime Environment (JRE). Во время
создания приложения
разработчик
пишет код на
языке Java так, как
если бы в мире
была бы всего
одна программно/аппаратная
платформа.
Компилятор
языка Java преобразует
код в последовательность
байт-кодов,
которая будет
выполняться
на одной из
платформ в
рамках JRE.



Java Runtime Environment содержит
специальные
средства проверки
кода, обеспечивающие
надежность
и защищенность
программ, загрузчик
классов, который
динамически
загружает
классы в процессе
выполнения
и виртуальную
машину Java (Java VM), которая
выполняет
последовательность
байт-кодов,
взаимодействую
с конкретной
операционной
системой. Такой
подходт освобождает
разработчика
от необходимости
обращать внимания
на специфику
какой-то конкретной
операционной
системы и позволяет
внедрять
Java-приложения
на более чем
одной платформе.
Компоненты
JavaRuntime
Environment показаны
на следующей
диаграмме.




То, что язык
Java за короткое
время стал
одним из самых
популярных
коммерческих
объектно-ориентированных
языков программирования,
помогает
распространению
технологии
Java и подтверждается
тем, что в настоящее
время этот язык
использует
около 1 млн.
разработчиков
(80% из них создает
кросс-платформенные
приложения),
продукты для
Java выпускают
сотни фирм, а
число копий
JDK, загруженных
с сайта фирмы
Sun, превысило
2.5 млн.



Платформа
Java 2



Платформа
Java 2 (Java Development Kit 1.2), объявленная
фирмой Sun в декабре
1998 года, представляет
собой физическую
реализацию
технологии
Java. Собственно
говоря, она
заключена в
небольшом по
объему файле
и состоит из
следующих
основных компонентов:



Средства
разработки
на Java – редактор,
компилятор,
отладчик и
средство для
документации
Java API



Богатый набор
Java-библиотек
и базовых классов
(foundation classes), которые
используются
для создания
графических
интерфейсов,
доступа к базам
данных, реализации
сетевых функций,
разработки
приложений,
работающих
с несколькими
языками и т.п.



Java 2 Runtime Environment – средство
для динамической
загрузки
Java-классов, их
проверки и
выполнения
Java-байт-кода.



Архитектура
платформы Java
2 показана на
следующей
диаграмме.





Изначально,
Sun выпустила
Java 2 Runtime Environment для следующих
платформ: Solaris,
Windows NT Server 4.0 и Windows 95/98. В ближайшие
месяцы поставщики
других платформ
выпустят
соответствующие
JRE. Таким образом,
Java 2 будет реализована
на следующих
платформах:
































AIX Digital UNIX HP-UX
IRIX Linux Mac OS
NetWare OpenServer OpenVMS
OS/2 OS/390 RISC-OS
Solaris Windows 95 Windows 98
Windows NT Windows NT-Alpha (DEC) UnixWare


Java 2 в деталях



Давайте
рассмотрим
состав Java 2 более
подробно. Я
выделил три
основных компонента
- средства разработки
на Java, набор
Java-библиотек
и базовых классов
и Java 2 Runtime Environment.



Средства
разработки
на Java



В состав JDK
1.2 входит большое
число утилит,
которые можно
подразделить
на несколько
категорий:


Базовые
утилиты


RMI-утилиты


Средства
для локализации
приложений


Средства
для защиты
приложений


IDL-утилиты



Базовые
утилиты



Утилиты,
относящиеся
к этой категории,
служат основой
Java Development Kit. Они используются
для компиляции
и отладки создаваемых
Java-приложений.
К базовым утилитам
относятся:








































javac


Компилятор
языка Java


java


Загрузчик
Java-приложений.
Используется
и в стадии
разработки,
и в стадии
внедрения
приложений


javadoc


Генератор
документации
для API


appletviewer


Утилита для
запуска и отладки
приложений
без использования
web-браузера


jar


Утилита для
управления
Java Archive (JAR)-файлами


jdb


Отладчик
Java-приложений.


javah


Генератор
заголовочных
файлов и заголушек
для языка C


javap


Дизассемблер
Java-классов


extcheck


Утилита для
обнаружения
конфликов
между JAR-файлами


RMI-утилиты



Утилиты,
относящиеся
к этой категории,
используются
для создания
приложений,
взаимодействующих
между собой
по Internet или другим
типам сетей.
К таким утилитам
относятся:  




















rmic


Утилита для
генерации
заглушек и
скелетов для
удаленных
объектов


rmiregistry


Утилита для
регистрации
удаленных
объектов


rmid


Средство
системной
активации
RMI


serialver


Возвращает
serialVersionUID.для данного
класса


Средства
для локализации
приложений



К средствам
для локализации
приложений
относится
утилита native2ascii,
выполняющая
преобразование
текста в Unicode Latin-1.



Средства
для защиты
приложений



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
















keytool


Средство
для управления
сертификатами


jarsigner


Утилита для
генерации и
проверки цифровых
подписей в
JAR-файлах


policytool


Графическое
средство для
управления
файлами доступа


IDL-утилиты



Утилиты,
относящиеся
к этой категории,
используются
при создании
приложений,
использующих
CORBA для доступа
к базам данных.
К таким утилитам
относятся:  












tnameserv


Обеспечивает
доступ к сервисам
имен (naming service)


Idltojava


Создает
java-файлы для
интерфейсов
OMG IDL и позволяет
приложениям,
написанным
на языке Java,
использовать
функциональность
CORBA


Набор Java-библиотек
и базовых классов



Ядром Java 2 является
библиотека
классов Java Foundation
Classes (JFC) версии 1.1,
предназначенная
для создания
графических
интерфейсов
Java-приложений.
В ее состав
входят собственно
библиотека
JFC версии 1.1 (которая
была доступна
для JDK 1.1 с февраля
прошлого года)
и следующие
интерфейсы:


Abstract
Windowing Toolkit (AWT)


Swing


Java
2D


Drag
and Drop


Accessibility



Архитектура
Java Foundation Classes показана
на следующей
диаграмме.





Abstract Windowing Toolkit позволяет
создавать
программы с
графическими
интерфейсами,
независящими
от конкретной
платформы.
Более того,
программный
интерфейс AWT
намного проще
и понятнее
программных
интерфейсов
Windows, Motif или OS/2. В JDK 1.2 было
добавлено много
новых классов
и интерфейсов,
включая поддержку
функций рисования,
вывода на принтер,
обработки
изображений
и поддержки
Drag and Drop и Java 2D.



 Многие из
этих новых
компонентов
можно найти
в галерее по
адресу:
http://java.sun.com/products/jfc/swingdoc-current/comp_gal.html.
Также, можно
посмотреть
программу
SwingSet, чтобы увидеть
компоненты
Swing в действии.



Компоненты
Swing являются 100%
Java-компонентами.
Это означает,
что они не зависят
от конкретных
реализаций
интерфейсных
элементов на
той или иной
платформе. Это
также означает,
что эти компоненты
доступны на
всех платформах,
где есть поддержка
Java 2. Компоненты
Swing реализованы
как расширение
AWT, но не используют
компонентов
AWT. На самом деле,
многие традиционные
компоненты
AWT – кнопки, списки,
диалоговые
панели, были
переделаны
в компоненты
Swing Благодаря
этому, компоненты
AWT стали более
доступными
на различных
платформах
и теперь предоставляют
дополнительные
возможности,
отсутствующие
в некоторых
графических
средах. На следующей
диаграмме
показано
взаимодействие
Swing и AWT.





Одно из наиболее
интересных
свойств библиотеки
Swing – это возможность
изменения
внешнего вида
компонентов
и интерфейсов
- Pluggable Look and Feel (PL&F). Архитектура
PL&F позволяет
настраивать
внешний вид
и поведение
как одного
компонента,
так и группы
компонентов.
Также в состав
Swing входит ряд
предопределенных
настроек - Metal L&F,
Motif L&F, Windows L&F. Существуют
настройки по
умолчанию для
Macintosh и других
платформ.



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




























































































































































































Компонент




Описание




Box




Контейнер
общего назначения
для организации
вложенных
компонентов
используя
модель BoxLayout.




Japplet




Подкласс
класса Applet
содержащий
JRootPane для
того, чтобы
добавить к
приложению
различные
интерфейсные
элементы типа
меню




Jbutton


Кнопка, которая
может содержать
либо текст,
либо графическое
изображение,
либо и то и другое


JcheckBox


Кнопка с
независимой
фиксацией


JcheckBoxMenuItem


Кнопка с
независимой
фиксацией
для использования
в меню


JcolorChooser




Компонент
для выбора
цвета в одной
из цветовых
схем. Используется
совместно с
javax.swing.colorchooser 




JcomboBox


Комбинированый
список – строка
ввода и выпадающий
список. Пользователь
может вводить
текст или выбирать
элемент из
списка.


Jcomponent


Корневой
элемент иерархии
библиотеки
компонентов
Swing. Добавляет
специфические
свойства типа
подсказок и
поддержки
двойной буферизации


JdesktopPane




Контейнер
для компонентов
JInternalFrame
имитирующий
работу desktop в одном
окне. Поддерживает
многооконный
интерфейс
(MDI) 




Jdialog


Контейнер
для отображения
диалоговых
панелей


JeditorPane




Текстовый
редактор с
богатыми
возможностяим,
управление
свойствами
которого возможно
через объект
EditorKit. По
умолчанию
может отобрать
и редактировать
текст в формате
HTML и RTF




JfileChooser




Компонент
для выбора
файла или
каталога.
Поддерживается
фильтрация
и возможность
предварительного
просмотра
содержимого
файла. Используется
совместно с
javax.swing.filechooser




Jframe


Контейнер
для окон верхнего
уровня


JinternalFrame




Контейнер
для вложенных
окон. Схож с
JFrame и
отображает
заголовок
окна. В то же
время не является
независимым
окном и отображается
внутри родительского
контейнера.
Часто используется
вместе с JDesktopPane.




Jlabel


Компонент
для отображения
текста, графического
изображения
или того и другого


JlayeredPane


Контейнер,
позволяющий
дочерним объектам
перекрывать
друг друга.
Управляет
порядком наложения
дочерних объектов
двуг на друга


Jlist


Компонент
для отображения
списка с возможностью
выбора. Элементами
списка могут
быть строки,
графические
изображения
или другие
объекты


Jmenu




Выпадающее
меню в JMenuBar
или подменю
внутри другого
меню




JmenuBar


Компонент,
отображающий
набор выпадающих
меню.


JmenuItem


Один элемент
меню


JoptionPane




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




Jpanel




Контейнер
для группировки
компонентов
в соответствующем
LayoutManager.




JpasswordField


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


JpopupMenu




Окно, в котором
отображается
всплывающее
меню. Используется
JMenu или
для создания
отдельных
всплывающих
меню




JprogressBar


Компонент,
который показывает
процесс выполнения
длительной
операции


JradioButton


Кнопка с
зависимой
фиксацией


JradioButtonMenuItem


Кнопка с
зависимой
фиксацией
для использования
в меню


JrootPane




Комплексный
контейнер,
используемый
JApplet, JDialog,
JFrame и
JInternalFrame. 




JScrollBar


Горизонтальная
или вертикальная
полоса прокрутки


JScrollPane


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


Jseparator


Компонент
для отрисовки
горизонтальных
и вертикальных
разделителей.


Jslider


Компонент
для наглядного
ввода цифровых
значений


JSplitPane


Контейнер,
в котором
отображаются
два дочерних
объекта, размер
которых можно
изменять


JtabbedPane


Контейнер,
реализующий
панель с закладками


Jtable




Компонент
для отображения
таблиц с возможностью
редактирования
их содержимого.
Может отображать
как строчные
данные, так
и любой другой
тип данных.
Обычно используется
совместно с
javax.swing.table




JtextArea




Компонент
для отображения
и редактирования
многострочного
текста. Основан
на компоненте
JTextComponent.




JtextComponent




Компонент
для реализации
компонентов
для отображения
и редактирования
текста. Является
частью javax.swing.text




JtextField




Компонент
для отображения,
ввода и редактирования
одной строки
текста. Основан
на компоненте
JTextComponent.




JtextPane




Подкласс
JEditorPane для
отображения
и редактирования
отформатированного
текста, который
не является
текстом в формате
HTML или RTF




JtoggleButton




Родительский
компонент
для JCheckBox
и JRadioButton.




JtoolBar


Компонент
для отображения
панели инструментов


JtoolTip


Окно для
отображения
подсказок
или другой
пояснительной
инфомации


Jtree




Компонент
для отображения
древрвидной
структуры
данных. Помимо
строчных данных
может отображать
любые другие.
Используется
совместно с
javax.swing.tree




Jviewport




Контейнер
для отображения
какой-лиюбо
части дочернего
объекта. Обычно
используется
совместно с
JScrollPane.




Jwindow


Окно, но без
заголовка,
полос прокрутки
и других элементов.


С помощью
Java 2D можно
разрабатывать
графические
приложения.
Этот программный
интерфейс
обеспечивает
поддержку
двумерной
графики, обработку
графических
изображений,
рендеринг,
управление
цветами и работу
с устройствами
печати. Интерфейс
Java 2D состоит из
модели, которая
поддерживает
отрисовку
линий, графических
изображений,
преобразования
цветов, составление
графики. Модель
является
аппаратно-независимой.
Интерфейс Java
2D реализован
в пакетах java.awt
и java.awt.image.



Drag and Drop



В Java 2 введена
поддержка
операций Drag and
Drop, с помощью
которых можно
перетаскивать
различные
объекты. Интерфейс
Drag and Drop в JDK 1.2 обеспечивает
платформенно-независимую
поддержку этих
операций для
Java-приложений,
причем можно
осуществлять
перетаскивание
объектов как
между Java-программамиЮ
так и между
Java-программами
и программами,
"родными" для
конкретной
платформы.
Интерфейс Drag
and Drop реализован
в пакете java.awt.dnd
и поддерживается
классами и
интерфейсами
других пакетов
JFC.



Accessibility



Для пользователей
с различными
физическими
недостатками
в JDK 1.2 введен ряд
интерфейсов,
облегчающих
создание
сотоветствующих
программных
средств. Интерфейс
Accessibility в JDK 1.2 реализован
в пакете
java.awt.accessibility.



Апплеты



При обзоре
платформы Java
нельзя не упомянуть
апплеты –
мини-приложения,
загружаемые
из сети и выполняемые
в Web-браузере.
Так как аплеты
загружаются
из сети, они
обычно содержат
"непроверенный"
код, что накладывает
опрделенные
требования
к проверке их
надежности.
Апплеты сыграли
большую роль
в популяризации
платформы Java
и практически
не изменились
со времен Java 1.0. В
Java 2 появился
Swing-класс JApplet
и новая, более
гибкая модель
защиты.



Базовый класс
Applet и Swing-класс
JApplet являются
GUI-контейнерами,
которые могут
содержать
другие GUI-компоненты
и контейнеры.
Но не эти свойства
определяют
основные
характеристики
апплетов. Наиболее
важными здесь
являются возможность
работы в сети,
динамическая
загрузка и
выполнение
и развитые
средства защиты.



JavaBeans



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



В Java 2 появилось
понятие контекста
компонента,
- контейнера,
который может
содержать в
себе компоненты
и другие контейнеры.
Такой контейнер
может обеспечивать
набор сервисов,
например, возможность
работы с устройством
печати, для
всех вложенных
компонентов.
Фактически,
контекст контейнера
является расширением
модели апплетов
– в платформе
Java 2 реализована
поддержка
создания объектов,
которые могут
выступать и
как компоненты,
и как апплеты.



Java Media Framework



Java Media Framework (JMF) – это
стандартное
расширение
платформы Java
2. JMF задает библиотеку
классов для
работы со звуком
и видео. В дополнение
к возможностям
воспроизведения
аудиоданных
и отображения
видеоданных,
закодированных
в различных
форматах, JMF
включает средства
для обработки,
контроля и
синхронизации
потоков мультимедийных
данных. Java Media Framework
может работать
как с файлами,
хранимыми на
локальных
дисках, так и
упакованными
потоковыми
данными, передаваемыми
в реальном
времени по
сети.



Java Media Framework реализовано
полностью на
языке Java и может
работать на
любой платформе,
поддерживающей
язык Java. В дополнение
к этому, сущес

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



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



Поддержка
звука



В первых двух
версиях Java (1.0 и
1.1) были лишь
рудиментарные
функции для
поддержки звука
– можно было
воспроизводить
только звук,
закодированный
в формате AU фирмы
Sun. Соответствующие
интерфейсы
были доступны
только для
апплетов. Платформа
Java 2 содержит новое
ядро для воспроизведения
звуковых файлов
в наиболее
популярных
форматах, а
программные
интерфейсы
могут использоваться
в любом Java-коде,
не только в
апплетах, как
это было раньше.



Для поддержки
звука в состав
Java 2 включен интерфейс
Java Sound, обеспечивающий
полный контроль
над аудиоданными.



Разработка
корпоративных
приложений



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



Некоторые
из этих интерфейсов
существовали
в Java 1.1, часть из
них являются
новыми для Java
2. Ряд интерфейсов
является базовым
для платформы
Java 2, остальные
– это дополнения
и расширения.
Тем не менее
именно платформа
Java 2.является
первой, где
полностью
реализованы
интерфейсы
Java Enterprise, и которая
служит в качестве
основы для
создания
корпоративных
приложений.



Ниже мы кратко
рассмотрим
основные интерфейсы
Java Enterprise (более подробно
мы поговорим
об этих интерфейсах
в одной из следующих
статей данного
цикла). К ним
относятся:


JDBC
- доступ к базам
данных


RMI
- поддержка
распределенных
объектов


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


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


JavaMail
- электронная
почта


Enterprise
JavaBeans


Сервлеты



Доступ к
базам данных



Интерфейс
Java Database Connectivity (JDBC) позволяет
Java-программам
посылать SQL-запросы
и обновлять
данные на серверах
баз данных, а
также обрабатывать
полученные
с сервера результаты.
JDBC также позволяет
получать
метаинформацию
о базе данных
и ее таблицах
с сервера баз
данных. Архитектура
JDBC основывается
на классе Driver,
который "скрывает"
все детали
общения с конкретным
сервером баз
данных. Каждый
конкретный
сервер требует
наличия соответствующего
класса Driver,
с которым
взаимодействуют
Java-программы.
Большинство
производителей
баз данных
поставляют
JDBC-драйверы со
своими продуктами.
Помимо этого,
существуют
специальные
драйверы для
взаимодействия
с базами через
соответствующие
ODBC-драйверы. На
следующей
диаграмме
показаны два
возможных
варианта создания
JDBC-приложений
- с использованием
только JDBC-драйверов
и с использованием
JDBC/ODBC-драйверов.





Интерфейс
JDBC реализован
в пакете java.sql,
который впервые
появился в Java
1.1. В платформе
Java 2 появился ряд
новых классов,
реализующих
дополнительную
функциональность.
Также в Java 2 включен
пакет javax.sql,
позволяющий,
например,
рассматривать
результаты
запроса к базам
данных как
JavaBeans, выполнять
пулинг связей
с базами и получать
информацию
о связях с базами
через сервисы
имен.



Интерфейс
JDBC является простым
и хорошо продуманным.
Программисты,
знакомые с SQL
и основами
программного
взаимодействия
с базами данных,
смогут легко
воспользоваться
функциями JDBC
в Java-программах.



Поддержка
распределенных
объектов



Распределенные
объекты обеспечивают
мощную модель
для создания
объектно-ориентированных
сетевых приложений,
интерес к которым
в последние
годы неуклонно
растет. В данной
модели клиентская
часть должна
иметь возможность
вызывать методы
объектов,
расположенных
на удаленных
серверах так,
как если бы эти
объекты располагались
локально. Данная
модель может
быть реализована
несколькими
способами.
Одним
из них
является Java Remote
Method Invocation (RMI). Соответствующие
програмные
интерфейсы
реализованы
в пакете java.rmi,
который впервые
появился в Java
1.1 и был расширен
в Java 2.



Распределенные
объекты и 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
для этих исключений




Содержание.



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



Технология
Java



Платформа
Java 2



Средства
разработки
на Java



Базовые
утилиты



RMI-утилиты



Средства
для локализации
приложений



Средства
для защиты
приложений



IDL-утилиты



Набор Java-библиотек
и базовых классов



Drag and Drop



Accessibility



Апплеты



JavaBeans



Java Media Framework



Поддержка
звука



Разработка
корпоративных
приложений



Доступ к
базам данных



Поддержка
распределенных
объектов



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



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



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



Enterprise JavaBeans



Сервлеты



Приложение



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

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

Название реферата: Java99: Архитектура и интерфейсы

Слов:5952
Символов:64418
Размер:125.82 Кб.