Java: архітектура і інтерфейси
Багатьом, напевно, вже відомо, що мова Java був розроблений фірмою Sun, як платформо-незалежний, переносимо, об'єктно-орієнтована мова програмування для Internet і Intranet. Я не бачу особливого сенсу перераховувати переваги мови, його відмінності від C + + - це вже описано в десятках книг і сотнях публікацій, як за кордоном, так і в нашій країні. Тут ми зупинимося на тому, що являє собою платформа Java сьогодні, з яких компонентів вона складається і які кошти, доступні для розробників. Таким чином, після закінчення даного циклу ви повинні будете отримати достатньо чітке уявлення про те, що пропонує фірма Sun, якими засобами розробки можна користуватися, які існують компоненти та засоби для їхнього створення і як за допомогою Java можна створювати корпоративні рішення.
Технологія Java
b>
Технологія 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 b>
Платформа 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 в деталях
b>
Давайте розглянемо на Java 2 більш докладно. Я виділив три основних компоненти - засоби розробки на Java, набір Java-бібліотек і базових класів і Java 2 Runtime Environment.
Засоби розробки на Java b>
До складу JDK 1.2 входить велика кількість утиліт, які можна поділити на кілька категорій:
Базові утиліти
RMI-утиліти
Засоби для локалізації додатків
Засоби для захисту додатків
IDL-утиліти
Базові утиліти b>
програми Програми, що відносяться до цієї категорії, є основою 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-утиліти b>
програми Програми, що відносяться до цієї категорії, використовуються для створення додатків, що взаємодіють між собою по Internet або інших типах мереж. До таких утилітам відносяться:
rmic
Утиліта для створення заглушок і скелетів для віддалених об'єктів
rmiregistry
Утиліта для реєстрації віддалених об'єктів
rmid
Засіб системної активації RMI
serialver
Повертає serialVersionUID.для даного класу
Засоби для локалізації додатків b>
До засобів для локалізації додатків відноситься утиліта native2ascii, що виконує перетворення тексту в Unicode Latin-1.
Засоби для захисту додатків b>
програми Програми, що відносяться до цієї категорії, використовуються для завдання рівнів захисту і створення додатків, що працюють на віддалених вузлах. До таких утилітам відносяться:
keytool
Засіб для керування сертифікатами
jarsigner
Утиліта для генерації і перевірки цифрових підписів в JAR-файлах
policytool
Графічне засіб для керування файлами доступу
IDL-утиліти b>
програми Програми, що відносяться до цієї категорії, що використовуються при створенні додатків, що використовують CORBA для доступу до баз даних. До таких утилітам відносяться:
tnameserv
Забезпечує доступ до сервісів імен (naming service)
Idltojava
Створює java-файли для інтерфейсів OMG IDL та дозволяє програмам, що написані на мові Java, використовувати функціональність CORBA
Набір Java-бібліотек і базових класів b>
Ядром 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 b> дозволяє створювати програми з графічними інтерфейсами, незалежними від конкретної платформи. Більш того, програмний інтерфейс 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 відіграють важливу роль при створенні графічних інтерфейсів програм. У наступній таблиці наведені короткі описи цих компонентів.
Компонент b>
Опис b>
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 b> можна розробляти графічні додатки. Цей програмний інтерфейс забезпечує підтримку двовимірної графіки, обробку графічних зображень, рендеринг, управління кольорами і роботу з пристроями друку. Інтерфейс Java 2D складається з моделі, яка підтримує отрисовку ліній, графічних зображень, перетворення кольорів, складання графіки. Модель є апаратно-незалежною. Інтерфейс Java 2D реалізований у пакетах java.awt і java.awt.8314_.
Drag and Drop b>
У Java 2 введена підтримка операцій Drag and Drop, за допомогою яких можна перетягувати різні об'єкти. Інтерфейс Drag and Drop в JDK 1.2 забезпечує платформо-незалежну підтримку цих операцій для Java-додатків, причому можна здійснювати перетягування об'єктів як між Java-программаміЮ так і між Java-програмами і програмами, "рідними" для конкретної платформи. Інтерфейс Drag and Drop реалізований в пакеті java.awt.dnd та підтримується класами та інтерфейсами інших пакетів JFC.
Accessibility b>
Для користувачів з різними фізичними вадами в JDK 1.2 введено ряд інтерфейсів, що полегшують створення сотоветствующіх програмних засобів. Інтерфейс Accessibility в JDK 1.2 реалізований в пакеті java.awt.accessibility.
Аплети b>
При огляді платформи Java не можна не згадати аплети - міні-програми, програми для завантаження з мережі і виконуються в Web-браузері. Оскільки аплети завантажуються з мережі, вони зазвичай містять "неперевірений" код, що накладає опрделенние вимоги до перевірки їх надійності. Аплети відіграли велику роль в популяризації платформи Java і практично не змінилися з часів Java 1.0. У Java 2 з'явився Swing-клас JApplet і нова, більш гнучка модель захисту.
Базовий клас Applet і Swing-клас JApplet є GUI-контейнерами, які можуть містити інші GUI-компоненти й контейнери. Але не ці властивості визначають основні характеристики аплетів. Найбільш важливими тут є можливість роботи в мережі, динамічне завантаження та виконання і розвинені засоби захисту.
JavaBeans b>
Компоненти JavaBeans. вперше з'явилися в Java 1.1. У Java 2 реалізовані деякі розширення компонентної моделі JavaBeans. Компонент JavaBeans - це Java-об'єкт, інтерфейс якого підтримує деякі угоди. Так, компонентами можна керувати із засобів розробки, з скриптових мов і т.п. У деяких випадках цілі програми можуть бути динамічно зібрані з групи незалежних, але взаємодіючих між собою компонентів. Компоненти JavaBeans часто, але необов'язково, є GUI-компонентами. Всі GUI-компоненти платформи Java слідують угодами компонентів JavaBeans і можуть використовуватися в контексті JavaBeans. Такими компонентами можуть бути і проста кнопка, і складний повнофункціональний текстовий процесор.
У Java 2 з'явилося поняття контексту компонента, - контейнера, що може містити в собі компоненти та інші контейнери. Такий контейнер може забезпечувати набір сервісівв, наприклад, можливість роботи з пристроєм друку, для всіх вкладених компонентів. Фактично, контекст контейнера є розширенням моделі аплетів - в платформі Java 2 реалізована підтримка створення об'єктів, які можуть виступати і як компоненти, і як аплети.
Java Media Framework b>
Java Media Framework (JMF) - це стандартне розширення платформи Java 2. JMF задає бібліотеку класів для роботи зі звуком та відео. На додаток до можливостей відтворення аудіоданих і відображення відео даних, закодованих в різних форматах, JMF включає засоби для обробки, контролю і синхронізації потоків мультимедійних даних. Java Media Framework може працювати як з файлами, збереженими на локальних дисках, так і упакованими потоковими даними, що передаються в реальному часі через мережу.
Java Media Framework реалізовано повністю на мові Java і може працювати на будь-якій платформі, яка підтримує мову Java. На додаток до цього, існують платформо-залежні розширення в коді для тієї або іншої платформи, за допомогою яких можна суттєво підвищити продуктивність створюваних додатків і забезпечити підтримку специфічних для даної платформи форматів даних.
У наступних версіях JMF будуть реалізовані засоби запису мультимедійних даних і підтримки конференцій.
Підтримка звуку b>
У перших двох версіях Java (1.0 і 1.1) були лише рудиментарні функції для підтримки звуку - можна було відтворювати тільки звук, закодований у форматі AU фірми Sun. Відповідні інтерфейси були доступні тільки для аплетів. Платформа Java 2 містить нове ядро для відтворення звукових файлів в найбільш популярних форматах, а програмні інтерфейси можуть використовуватися в будь-якому Java-коді, не тільки в аплетах, як це було раніше.
Для підтримки звуку на Java 2 включений інтерфейс Java Sound, що забезпечує повний контроль над звуком.
Розробка корпоративних додатків b>
Більшість новинок у платформі 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
Сервлети
Доступ до баз даних b>
Інтерфейс b> 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-програми.
Підтримка розподілених об'єктів b>
Розподілені об'єкти забезпечують потужну модель для створення об'єктно-орієнтованих мережевих додатків, інтерес до яких в останні роки неухильно зростає. У даній моделі клієнтська частина повинна мати можливість викликати методи об'єктів, розташованих на віддалених серверах так, як якби ці об'єкти були розташовані локально. Дана модель може бути реалізована декількома способами. Одним b> з них є Java Remote Method Invocation (RMI). Відповідні програмні інтерфейси реалізовані в пакеті java.rmi, який вперше з'явився в Java 1.1 і був розширений в Java 2.
Розподілені об'єкти та CORBA b>
Java Remote Method Invocation b> - це рішення для створення розподілених систем, яке працює для клієнтських і серверних додатків, написаних на мові 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-коду.
Сервіси імен та каталогів b>
Інтерфейси b> Java Naming and Directory Interface (JNDI) представляють собою незалежні від протоколів інтерфейси до мережевих сервісів імен і каталогів. Ці інтерфейси реалізовані в пакеті javax.jndi, який є стандартним розширенням платформи Java 2.
Інтерфейси JNDI не є специфічними для якихось протоколів підтримки сервісів імен і каталогів. Замість цього вони являють собою базові інтерфейси, здатні работатть з будь-якими серверами. Для підтримки якогось конкретного протоколу потрібна наявність спеціального провайдера. Для більшості провайдерів таких сервісів - LDAP, DNS чи NIS реалізовані відповідні програмні засоби.
Електронна пошта b>
Інтерфейс b> JavaMail являє собою незалежний від протоколів інтерфейс до сервісів електронної пошти. Він підтримує можливість відсилання та отримання електронної пошти, а також такі функції, як пошук. Інтерфейс JavaMail реалізований в пакеті javax.mail і подпакетах і є стандартним розширенням платформи Java 2.
Як і JNDI, JavaMail не пов'язаний з якимось конкретним протоколом для отримання та відсилання електронної пошти. JavaMail - це набір базових функцій, здатних працювати з будь-яким протоколом. Реалізація конкретного протоколу - SMTP, IMAP або POP3 - вимагає наявності відповідного провайдера, який входить в комплект поставки.
Enterprise JavaBeans b>
Enterprise JavaBeans - це серверний аналог JavaBeans. Enterprise JavaBeans (EJB) являє собою компонентну модель для реалізації бізнес логіки і бізнес даних. Програмна модель з "тонким" клієнтом припускає винесення бізнес-логіки з клієнтської частини на сервер або проміжний рівень (middle tier) і дозволяє створювати більш гнучкі корпоративні додатки. Але при цьому, реалізація бізнес логіки пов'язана з необхідністю підтримки коду, який би обробляв транзакції, взаємодіяв б з мережею і забезпечував би засоби захисту інформації.
Модель EJB відділяє бізнес-логіку від низькорівневих функцій, дозволяючи розробникам не піклуватися про те, як у тому чи іншому випадку будуть реалізовані стандартні функції, наприклад, для передачі даних або обробки транзакцій.
Пакети javax.ejb і javax.ejb.deployment є стандартними розширеннями платформи Java 2 і містять класи, необхідні для створення і впровадження EJB. Архітектура EJB також взаємодіє з інтерфейсами JNDI та іншим стандартним розширенням - Java Transaction Services (JTS).
Сервлети b>
Сервлет - b> це b> 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, включаючи обробку запитів від декількох клієнтів в рамках однієї клієнтської сесії.
Це ще не все b>
Як ми побачили вище, платформа Java 2 надає в розпорядження розробників великий набір різноманітних програмних інтерфейсів, за допомогою яких можливо реалізувати практично будь-які додатки. Крім цього, фірма Sun працює над різними розширеннями і доповненнями до платформи Java 2, які з часом можуть стати стандартними розширеннями цієї платформи. У наступній таблиці перераховані найбільш важливі розширення, робота над якими ще ведеться.
Інтерфейс b>
Опис b>
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-додатками і середовищами
Додаток b>
Інтерфейси Java 2 API b>
Пакет b>
Опис b>
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.8314_
Реалізує класи для створення і модифікації графічних зображень
java.awt.8314_.
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 b> та підкласи для створення 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 b>, який може використовуватися як повнофункціональний брокер - Object Request Broker (ORB).
org.omg.CORBA.
DynAnyPackage
підтримки винятко?? ітельние ситуації, що використовуються інтерфейсом DynAny b> ( InvalidValue b>, Invalid b>, InvalidSeq b>, і TypeMismatch b >).
org.omg.CORBA.
ORBPackage
підтримки виключення InvalidName b> для методу ORB.resolve_initial_references b> і виключення InconsistentTypeCode b>,.
org.omg.CORBA.
portable
Забезпечує рівень переносимості - набір інтерфейсів ORB, які роблять можливим виконання коду для одного брокера під керуванням іншого
org.omg.CORBA.
TypeCodePackage
підтримки виключення BadKind b> і Bounds b>
org.omg.
CosNaming
Реалізує сервіси імен для Java IDL.
org.omg.CosNamongContextPackage
підтримки виключення для пакету org.omg.CosNaming (AlreadyBound, CannotProceed, InvalidName, NotEmpty b> і NotFound b>) і класи Helper b> і Holder b> для цих виключень