quot;-//w3c//dtd html 4.0 transitional//en">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) | UnixWare |
Java 2 в деталях
Давайтерассмотримсостав Java 2 болееподробно. Явыделил триосновных компонента- средства разработкина Java, наборJava-библиотеки базовых классови Java 2 Runtime Environment.
Средстваразработкина Java
В состав JDK1.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 FoundationClasses (JFC) версии 1.1,предназначеннаядля созданияграфическихинтерфейсовJava-приложений.В ее составвходят собственнобиблиотекаJFC версии 1.1 (котораябыла доступнадля JDK 1.1 с февраляпрошлого года)и следующиеинтерфейсы:
AbstractWindowing Toolkit (AWT)
Swing
Java2D
Dragand 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 состоит измодели, котораяподдерживаетотрисовкулиний, графическихизображений,преобразованияцветов, составлениеграфики. Модельявляетсяаппаратно-независимой.Интерфейс 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- электроннаяпочта
EnterpriseJavaBeans
Сервлеты
Доступ кбазам данных
Интерфейс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 | Кодовоеназваниерасширенийдля поддержкиязыка XML |
Java Communications API | ПозволяетJava-приложениямиспользоватьпоследовательныеи параллельныепорты компьютера |
Jini | Набор пакетовдля обеспечениясетевых функций"plug-and-play" для компьютеров,периферийныхустройств иразличныхэлектронныхприспособлений |
Java Message Service | Представляетсобой интерфейсдля асинхронногообмена сообщениями. |
JavaTransaction 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для этих исключений |
Содержание.
quot;-//w3c//dtd html 4.0 transitional//en">Java:архитектураи интерфейсы
ТехнологияJava
ПлатформаJava 2
Средстваразработкина Java
Базовыеутилиты
RMI-утилиты
Средствадля локализацииприложений
Средствадля защитыприложений
IDL-утилиты
Набор Java-библиотеки базовых классов
Drag and Drop
Accessibility
Апплеты
JavaBeans
Java Media Framework
Поддержказвука
Разработкакорпоративныхприложений
Доступ кбазам данных
Поддержкараспределенныхобъектов
Распределенныеобъекты и CORBA
Сервисыимен и каталогов
Электроннаяпочта
Enterprise JavaBeans
Сервлеты
Приложение
ИнтерфейсыJava 2 API