Самостоятельная работа: 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-приложенияна более чемодной платформе.КомпонентыJavaRuntimeEnvironment показанына следующейдиаграмме.
/>
То, что язык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-байт-кода.
Архитектураплатформы Java2 показана наследующейдиаграмме.
/>
Изначально,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) UnixWareJava 2 в деталях
Давайтерассмотримсостав Java 2 болееподробно. Явыделил триосновных компонента- средства разработкина Java, наборJava-библиотеки базовых классови Java 2 Runtime Environment.
Средстваразработкина Java
В состав JDK1.2 входит большоечисло утилит, которые можноподразделитьна несколькокатегорий:
Базовые утилиты
RMI-утилиты
Средства для локализации приложений
Средства для защиты приложений
IDL-утилиты
Базовыеутилиты
Утилиты, относящиесяк этой категории, служат основойJava Development Kit. Они используютсядля компиляциии отладки создаваемыхJava-приложений.К базовым утилитамотносятся:
javac
Компилятор языка Javajava
Загрузчик Java-приложений. Используется и в стадии разработки, и в стадии внедрения приложенийjavadoc
Генератор документации для APIappletviewer
Утилита для запуска и отладки приложений без использования web-браузераjar
Утилита для управления Java Archive (JAR)-файламиjdb
Отладчик Java-приложений.javah
Генератор заголовочных файлов и заголушек для языка Cjavap
Дизассемблер Java-классовextcheck
Утилита для обнаружения конфликов между JAR-файламиRMI-утилиты
Утилиты, относящиесяк этой категории, используютсядля созданияприложений, взаимодействующихмежду собойпо Internet или другимтипам сетей.К таким утилитамотносятся:
rmic
Утилита для генерации заглушек и скелетов для удаленных объектовrmiregistry
Утилита для регистрации удаленных объектовrmid
Средство системной активации RMIserialver
Возвращает serialVersionUID.для данного классаСредствадля локализацииприложений
К средствамдля локализацииприложенийотноситсяутилита native2ascii, выполняющаяпреобразованиетекста в Unicode Latin-1.
Средствадля защитыприложений
Утилиты, относящиесяк этой категории, используютсядля заданияуровней защитыи созданияприложений, который работаютна удаленныхузлах. К такимутилитам относятся:
keytool
Средство для управления сертификатамиjarsigner
Утилита для генерации и проверки цифровых подписей в JAR-файлахpolicytool
Графическое средство для управления файлами доступаIDL-утилиты
Утилиты, относящиесяк этой категории, используютсяпри созданииприложений, использующихCORBA для доступак базам данных.К таким утилитамотносятся:
tnameserv
Обеспечивает доступ к сервисам имен (naming service)Idltojava
Создает java-файлы для интерфейсов OMG IDL и позволяет приложениям, написанным на языке Java, использовать функциональность CORBAНабор Java-библиотеки базовых классов
Ядром Java 2 являетсябиблиотекаклассов Java FoundationClasses (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.
Многие изэтих новыхкомпонентовможно найтив галерее поадресу: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 состоит измодели, котораяподдерживаетотрисовкулиний, графическихизображений, преобразованияцветов, составлениеграфики. Модельявляетсяаппаратно-независимой.Интерфейс Java2D реализованв пакетах java.awtи java.awt.image.
Drag and Drop
В Java 2 введенаподдержкаопераций Drag andDrop, с помощьюкоторых можноперетаскиватьразличныеобъекты. ИнтерфейсDrag and Drop в JDK 1.2 обеспечиваетплатформенно-независимуюподдержку этихопераций дляJava-приложений, причем можноосуществлятьперетаскиваниеобъектов какмежду Java-программамиЮтак и междуJava-программамии программами,«родными» дляконкретнойплатформы.Интерфейс Dragand 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) – этостандартноерасширениеплатформы Java2. 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, часть изних являютсяновыми для Java2. Ряд интерфейсовявляется базовымдля платформы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, который впервыепоявился в Java1.1. В платформеJava 2 появился рядновых классов, реализующихдополнительнуюфункциональность.Также в Java 2 включенпакет javax.sql, позволяющий, например, рассматриватьрезультатызапроса к базамданных какJavaBeans, выполнятьпулинг связейс базами и получатьинформациюо связях с базамичерез сервисыимен.
ИнтерфейсJDBC является простыми хорошо продуманным.Программисты, знакомые с SQLи основамипрограммноговзаимодействияс базами данных, смогут легковоспользоватьсяфункциями JDBCв Java-программах.
Поддержкараспределенныхобъектов
Распределенныеобъекты обеспечиваютмощную модельдля созданияобъектно-ориентированныхсетевых приложений, интерес к которымв последниегоды неуклоннорастет. В данноймодели клиентскаячасть должнаиметь возможностьвызывать методыобъектов, расположенныхна удаленныхсерверах так, как если бы этиобъекты располагалисьлокально. Даннаямодель можетбыть реализовананесколькимиспособами.Одним из нихявляется Java RemoteMethod Invocation (RMI). Соответствующиепрограмныеинтерфейсыреализованыв пакете java.rmi, который впервыепоявился в Java1.1 и был расширенв Java 2.
Распределенныеобъекты и CORBA
Java Remote Method Invocation – эторешение длясозданияраспределенныхсистем, котороеработает дляклиентскихи серверныхприложений, написанныхна языке Java. Нооно не подходитдля гетерогенныхсред, где клиентыи серверы написанына различныхязыках. Длятаких сред вплатформе Java2 реализованаподдержкаCORBA.
CORBA (Common Object Request Broker Architecture) –это стандарт, созданныйObject Management Group (OMG). Данныйстандарт реализованкак базоваясоставляющаяплатформы Java2 в пакете org.omg.CORBAи других подпакетах.Реализациявключает ObjectRequest 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, который являетсястандартнымрасширениемплатформы Java2.
ИнтерфейсыJNDI не являютсяспецифичнымидля каких-топротоколовподдержкисервисов имени каталогов.Вместо этогоони представляютсобой базовыеинтерфейсы, способныеработатть слюбыми серверами.Для поддержкикакого-то конкретногопротоколатребуетсяналичие специальногопровайдера.Для большинствапровайдеровтаких сервисов- LDAP, DNS или NIS реализованысоответствующиепрограммныесредства.
Электроннаяпочта
ИнтерфейсJavaMail представляетсобой независящийот протоколовинтерфейс ксервисам электроннойпочты. Он поддерживаетвозможностьотсылки и полученияэлектроннойпочты, а такжетакие функции, как поиск. ИнтерфейсJavaMail реализованв пакете javax.mailи подпакетахи являетсястандартнымрасширениемплатформы Java2.
Как и JNDI, JavaMail несвязан с каким-токонкретнымпротоколомдля полученияи отсылки электроннойпочты. JavaMail – этонабор базовыхфункций, способныхработать слюбым протоколом.Реализацияконкретногопротокола –SMTP, IMAP или POP3 – требуетналичия соответствующегопровайдера, который входитв комплектпоставки.
Enterprise JavaBeans
Enterprise JavaBeans – этосерверныйаналог JavaBeans. EnterpriseJavaBeans (EJB) представляетсобой компонентнуюмодель дляреализациибизнес логикии бизнес данных.Программнаямодель с «тонким»клиентом предполагаетвынос бизнес-логикис клиентскойчасти на серверили промежуточныйуровень (middle tier) ипозволяетсоздавать болеегибкие корпоративныеприложения.Но при этом, реализациябизнес логикисвязана снеобходимостьюподдержки кода, который быобрабатывалтранзакции, взаимодействовалбы с сетью иобеспечивалбы средствазащиты информации.
Модель EJB отделяетбизнес-логикуот низкоуровневыхфункций, позволяяразработчикамне заботитьсяо том, как в томили ином случаебудут реализованыстандартныефункции, например, для передачиданных илиобработкитранзакций.
Пакеты javax.ejbи javax.ejb.deploymentявляются стандартнымирасширениямиплатформы Java2 и содержатклассы, необходимыедля созданияи внедренияEJB. АрхитектураEJB также взаимодействуетс интерфейсамиJNDI и другим стандартнымрасширением- Java Transaction Services ( JTS).
Сервлеты
Сервлет– этоJava-код, выполняемыйна сервере, иобеспечивающийкакие-то сервисыдля клиента.Название «сервлет»схоже с названием«апплет» –сервлет являетсясервернымапплетом. ИнтерфейсJava Servlet предоставляетбазовый механизмдля расширенияфункциональностилюбого сервлета, использующегозапросы и ответына базе любогопротокола.
В настоящеевремя сервлетыиспользуются, в основном наWeb-серверах. Такимобразом сервлетыможно назватьJava-аналогомCGI-программ.Сервлеты вполнеконкурентно-спрособныс такими технологиями, как Active Server Pages фирмыMicrosoft или Cold Fusion фирмыAllaire. Преимуществомиспользованиясервлетовявляется то, что они являютсянезависимымиот платформыи сохраняютсяв памяти послезагрузки (вотличие отCGI-программ). Помимоэтого сервлетыимеют полныйдоступ к платформеJava и могут выполнятьтакие функции, как связь сбазами данных.
Сервлетыявляются стандартнымрасширениемплатформы Java2 и реализованыв пакетах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
Кодовое название расширений для поддержки языка XMLJava 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-Dropjava.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 Beansjava.beans.
beancontext
Реализует классы и интерфейсы для реализации контекста Java Beansjava.io
Содержит средства для работы с вводом и выводом через потоки данных, сериализацию и файловую системуjava.lang
Обеспечивает классы, реализующие основу языка Javajava.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
Содержит класс и два интерфейса для регистрации RMIjava.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
Интерфейс к JDBCjava.text
Предоставляет классы и интерфейсы для обработки текста, дат, чисел и сообщений, независимо от языкаjava.util
Содержит интерфейсы для работы с коллекциями (collections framework), событийную модель, функции для даты и времени, функции локализации и различные дополнительные классыjava.util.jar
Обеспечивает классы для чтения и записи файлов в формате JAR (Java ARchive), который основывается на стандарте ZIP с необязательными дополнениямиjava.util.zip
Содержит классы для чтения и записи файлов в формате ZIP и GZIPjavax.
accessibility
Реализует функции Accessibilityjavax.swing
Предоставляет набор легковесных компонентов для реализации пользовательских интерфейсовjavax.swing.
border
Содержит классы и интерфейсы для отрисовки специальных рамок вокруг компонентов Swing.javax.swing.
colorchooser
Содержит классы и интерфейсы, используемые компонентом JColorChooser
javax.swing.
event
Используется для поддержки событий в компонентах Swingjavax.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
Содержит парсер языка HTMLjavax.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