Java: архітектура і інтерфейси
Багатьом, напевно, вже відомо, що мова Java був розроблений фірмою Sun, як платформо-незалежний, переносимо, об'єктно-орієнтована мова програмування для Internet і Intranet. Я не бачу особливого сенсу перераховувати переваги мови, його відмінності від C + + - це вже описано в десятках книг і сотнях публікацій, як за кордоном, так і в нашій країні. Тут ми зупинимося на тому, що являє собою платформа Java сьогодні, з яких компонентів вона складається і які кошти, доступні для розробників. Таким чином, після закінчення даного циклу ви повинні будете отримати достатньо чітке уявлення про те, що пропонує фірма Sun, якими засобами розробки можна користуватися, які існують компоненти та засоби для їхнього створення і як за допомогою Java можна створювати корпоративні рішення.
Технологія Java
Технологія Java забезпечує розробників основою для створення рішень, при розробці яких не потрібно замислюватися про операційну систему і апаратній платформі, на яких ці рішення будуть функціонувати. Часто використовується вираз "Написано один раз - працює скрізь" найкращим чином характеризує основне призначення цієї технології. Незалежність від платформи досягається за рахунок того, що унікальні характеристики кожної з Java 2 платформ, реалізовані у вигляді оболонки, що називається Java Runtime Environment (JRE). Під час створення програми розробник пише код на мові Java так, як якщо б у світі була б лише одна програмно/апаратна платформа. Компілятор мови Java перетворить код в послідовність байт-кодів, яка буде виконуватися на одній з платформ в рамках JRE.
Java Runtime Environment містить спеціальні засоби перевірки коду, що забезпечують надійність і захищеність програм, завантажувач класів, який динамічно завантажує класи в процесі виконання та віртуальну машину Java (Java VM), яка виконує послідовність байт-кодів, взаємодію з конкретною операційною системою. Такий подходт звільняє розробника від необхідності зважати на специфіку якоїсь конкретної операційної системи і дозволяє впроваджувати Java-додатки на більш ніж одній платформі. Компоненти JavaRuntime Environment показані на наступній діаграмі.
Те, що мова Java за короткий час став одним з найпопулярніших комерційних об'єктно-орієнтованих мов програмування, допомагає поширенню технології Java і підтверджується тим, що в даний час ця мова використовує близько 1 млн. розробників (80% з них створює крос-платформні додатки ), продукти для Java випускають сотні фірм, а число копій JDK, завантажених з сайту фірми Sun, перевищила 2.5 млн.
Платформа Java 2
Платформа Java 2 (Java Development Kit 1.2), оголошена фірмою Sun в грудні 1998 року, являє собою фізичну реалізацію технології Java. Власне кажучи, вона укладена в невеликій за обсягом фото і складається з наступних основних компонентів:
* Засоби розробки на Java - редактор, компілятор, відладчик і засіб для документації Java API
* Багатий набір Java-бібліотек і базових класів (foundation classes), які використовуються для створення графічних інтерфейсів, доступу до баз даних, реалізації мережевих функцій, розробки додатків, що працюють з кількома мовами і т.п.
* Java 2 Runtime Environment - засіб для динамічного завантаження Java-класів, їх перевірки і виконання Java-байт-коду.
Архітектура платформи Java 2 показана на наступній діаграмі.
Спочатку, Sun випустила Java 2 Runtime Environment для наступних платформ: Solaris, Windows NT Server 4.0 і Windows 95/98. У найближчі місяці постачальники інших платформ випустять відповідні JRE. Таким чином, Java 2 буде реалізована на наступних платформах:
AIX Digital UNIX HP-UX
IRIX Linux Mac OS
NetWare OpenServer OpenVMS
OS/2 OS/390 RISC-OS
Solaris Windows 95 Windows 98
Windows NT Windows NT-Alpha (DEC) UnixWare
Java 2 в деталях
Давайте розглянемо на Java 2 більш докладно. Я виділив три основних компоненти - засоби розробки на Java, набір Java-бібліотек і базових класів і Java 2 Runtime Environment.
Засоби розробки на Java
До складу JDK 1.2 входить велика кількість утиліт, які можна поділити на кілька категорій:
* Базові утиліти
* RMI-утиліти
* Засоби для локалізації додатків
* Засоби для захисту додатків
* IDL-утиліти
Базові утиліти
Програми Програми, що відносяться до цієї категорії, є основою Java Development Kit. Вони використовуються для компіляції та відлагодження створюваних Java-додатків. До базових утилітам відносяться:
javac компілятор мови Java
java Завантажувач Java-додатків. Використовується і у стадії розробки, і в стадії впровадження програм
javadoc Генератор документації для API
appletviewer Утиліта для запуску та налагодження програм без використання web-браузера
jar Утиліта для керування Java Archive (JAR)-файлами
jdb Відладчик Java-додатків.
javah Генератор заголовків файлів і заголушек для мови C
javap дизассемблер Java-класів
extcheck Утиліта для виявлення конфліктами між JAR-файлами
RMI-утиліти
Програми Програми, що відносяться до цієї категорії, використовуються для створення додатків, що взаємодіють між собою по Internet або інших типах мереж. До таких утилітам відносяться:
rmic Утиліта для створення заглушок і скелетів для віддалених об'єктів
rmiregistry Утиліта для реєстрації віддалених об'єктів
rmid Засіб системної активації RMI
serialver Повертає serialVersionUID.для даного класу
Засоби для локалізації додатків
До засобів для локалізації додатків відноситься утиліта native2ascii, що виконує перетворення тексту в Unicode Latin-1.
Засоби для захисту додатків
Програми Програми, що відносяться до цієї категорії, використовуються для завдання рівнів захисту і створення додатків, що працюють на віддалених вузлах. До таких утилітам відносяться:
keytool Засіб для керування сертифікатами
jarsigner Утиліта для генерації і перевірки цифрових підписів в JAR-файлах
policytool Графічне засіб для керування файлами доступу
IDL-утиліти
Програми Програми, що відносяться до цієї категорії, що використовуються при створенні додатків, що використовують CORBA для доступу до баз даних. До таких утилітам відносяться:
tnameserv Забезпечує доступ до сервісів імен (naming service)
Idltojava Створює java-файли для інтерфейсів OMG IDL та дозволяє програмам, що написані на мові Java, використовувати функціональність CORBA
Набір Java-бібліотек і базових класів
Ядром Java 2 є бібліотека класів Java Foundation Classes (JFC) версії 1.1, призначена для створення графічних інтерфейсів Java-додатків. До її складу входять власне бібліотека JFC версії 1.1 (яка була доступна для JDK 1.1 з лютого минулого року) і наступні інтерфейси:
* Abstract Windowing Toolkit (AWT)
* Swing
* Java 2D
* Drag and Drop
* Accessibility
Архітектура Java Foundation Classes показана на наступній діаграмі.
Abstract Windowing Toolkit дозволяє створювати програми з графічними інтерфейсами, незалежними від конкретної платформи. Більш того, програмний інтерфейс AWT набагато простіше і зрозуміліше програмних інтерфейсів Windows, Motif або OS/2. В JDK 1.2 було додано багато нових класів і інтерфейсів, включаючи підтримку функцій малювання, виведення на принтер, обробки зображень та підтримки Drag and Drop і Java 2D.
Багато хто з цих нових компонентів можна знайти в галереї за адресою: http://java.sun.com/products/jfc/swingdoc-current/comp_gal.html. Також, можна подивитися програму SwingSet, щоб побачити компоненти Swing в дії.
Компоненти Swing є 100% Java-компонентами. Це означає, що вони не залежать від конкретних реалізацій інтерфейсних елементів на тій чи іншій платформі. Це також означає, що ці компоненти доступні на всіх платформах, де є підтримка Java 2. Компоненти Swing реалізовані як розширення AWT, але не використовують компонентів AWT. Насправді, багато традиційних компоненти AWT - кнопки, списки, діалогові панелі, були перетворені на компоненти Swing Завдяки цьому, компоненти AWT стали більш доступними на різних платформах і тепер надають додаткові можливості, відсутні в деяких графічних середовищах. На наступній діаграмі показано взаємодію Swing та AWT.
Одне з найбільш цікавих властивостей бібліотеки Swing - це можливість зміни зовнішнього вигляду компонентів і інтерфейсів - Pluggable Look and Feel (PL & F). Архітектура PL & F дозволяє настроювати зовнішній вигляд і поведінку як одного компонента, так і групи компонентів. Також до складу Swing входить ряд зумовлених настройок - Metal L & F, Motif L & F, Windows L & F. Існують стандартні параметри для Macintosh і інших платформ.
Як я відзначив вище, компоненти Swing відіграють важливу роль при створенні графічних інтерфейсів програм. У наступній таблиці наведені короткі описи цих компонентів.
Компонент Опис
Box Контейнер загального призначення для організації вкладених компонентів використовуючи модель BoxLayout.
Japplet Підклас класу Applet містить JRootPane для того, щоб додати до додатка різні інтерфейсні елементи типу меню
Jbutton Кнопка, яка може містити або текст, або графічне зображення, або і те й інше
JcheckBox кнопка з незалежною фіксацією
JcheckBoxMenuItem кнопка з незалежною фіксацією для використання в меню
JcolorChooser Компонент для вибору кольору в одній з колірних схем. Використовується спільно з javax.swing.colorchooser
JcomboBox Комбінований список - рядок введення і список, що випадає. Користувач може вводити текст або вибирати елемент зі списку.
Jcomponent Кореневий елемент ієрархії бібліотеки компонентів Swing. Додає специфічні властивості типу підказок і підтримки подвійний буферизації
JdesktopPane Контейнер для компонентів JInternalFrame що імітує роботу desktop в одному вікні. Підтримує багатовіконний інтерфейс (MDI)
Jdialog Контейнер для відображення діалогових панелей
JeditorPane Текстовий редактор з багатими возможностяім, управління властивостями якого можливо через об'єкт EditorKit. За замовчуванням може відібрати і редагувати текст у форматі HTML і RTF
JfileChooser Компонент для вибору файла або каталогу. Підтримується фільтрація та можливість попереднього перегляду вмісту файлу. Використовується спільно з javax.swing.filechooser
Jframe Контейнер для вікон верхнього рівня
JinternalFrame Контейнер для вкладених вікон. Схожий з JFrame і відображає заголовок вікна. У той же час не є незалежним вікном і відображається всередині батьківського контейнера. Часто використовується разом з JDesktopPane.
Jlabel Компонент для відображення тексту, графічного зображення або того й іншого
JlayeredPane Контейнер, що дозволяє дочірнім об'єктах перекривати один одного. Керує порядком накладення дочірніх об'єктів двуг на одного
Jlist Компонент для відображення списку з можливістю вибору. Елементами списку можуть бути рядки, графічні зображення чи інші об'єкти
Jmenu Випадне меню в JMenuBar або підменю всередині іншого меню
JmenuBar Компонент, що відображає набір що випадають меню.
JmenuItem Один елемент меню
JoptionPane Компонент, що використовується для відображення простих діалогових панелей усередині контейнера JDialog. Визначає набір статичних методів для стандартних діалогових панелей
Jpanel Контейнер для групування компонентів у відповідному LayoutManager.
JpasswordField Поле введення даних, в якому вводиться текст не відображається
JpopupMenu Вікно, в якому відображається спливаюче меню. Використовується JMenu або для створення окремих спливаючих меню
JprogressBar Компонент, який показує процес виконання тривалої операції
JradioButton кнопка з залежною фіксацією
JradioButtonMenuItem кнопка з залежною фіксацією для використання в меню
JrootPane Комплексний контейнер, який використовується JApplet, JDialog, JFrame і JInternalFrame.
JScrollBar Горизонтальна або вертикальна смуга прокручування
JScrollPane Контейнер, що дозволяє дочірнім компонентів прокручуватися вертикально або горизонтально. Забезпечує підтримку фіксованих областей.
Jseparator Компонент для відображення горизонтальних і вертикальних роздільників.
Jslider Компонент для наочного введення цифрових значень
JSplitPane Контейнер, у якому відображаються два дочірніх об'єкта, розмір яких можна змінювати
JtabbedPane Контейнер, що реалізує панель із закладками
Jtable Компонент для відображення таблиць з можливістю редагування їх вмісту. Може відображати як рядкові дані, так і будь-який інший тип даних. Звичайно використовується спільно з javax.swing.table
JtextArea Компонент для відображення і редагування багаторядкового тексту. Заснований на компоненті JTextComponent.
JtextComponent Компонент для реалізації компонентів для відображення і редагування тексту. Є частиною javax.swing.text
JtextField Компонент для відображення, введення і редагування одного рядка тексту. Заснований на компоненті JTextComponent.
JtextPane Підклас JEditorPane для відображення і редагування відформатованого тексту, який не є текстом у форматі HTML або RTF
JtoggleButton Батьківський компонент для JCheckBox і JRadioButton.
JtoolBar Компонент для відображення панелі інструментів
JtoolTip Вікно для відображення підказок чи іншої пояснювальній інфомація
Jtree Компонент для відображення древрвідной структури даних. Крім рядкових даних може відображати будь-які інші. Використовується спільно з javax.swing.tree
Jviewport Контейнер для відображення будь-ліюбо частині дочірнього об'єкта. Звичайно використовується спільно з JScrollPane.
Jwindow Вікно, але без заголовка, смуг прокрутки та інших елементів.
За допомогою Java 2D можна розробляти графічні додатки. Цей програмний інтерфейс забезпечує підтримку двовимірної графіки, обробку графічних зображень, рендеринг, управління кольорами і роботу з пристроями друку. Інтерфейс Java 2D складається з моделі, яка підтримує отрисовку ліній, графічних зображень, перетворення кольорів, складання графіки. Модель є апаратно-незалежною. Інтерфейс Java 2D реалізований у пакетах java.awt і java.awt.image.
Drag and Drop
У Java 2 введена підтримка операцій Drag and Drop, за допомогою яких можна перетягувати різні об'єкти. Інтерфейс Drag and Drop в JDK 1.2 забезпечує платформо-незалежну підтримку цих операцій для Java-додатків, причому можна здійснювати перетягування об'єктів як між Java-программаміЮ так і між Java-програмами і програмами, "рідними" для конкретної платформи. Інтерфейс Drag and Drop реалізований в пакеті java.awt.dnd та підтримується класами та інтерфейсами інших пакетів JFC.
Accessibility
Для користувачів з різними фізичними вадами в JDK 1.2 введено ряд інтерфейсів, що полегшують створення сотоветствующіх програмних засобів. Інтерфейс Accessibility в JDK 1.2 реалізований в пакеті java.awt.accessibility.
Аплети
При огляді платформи Java не можна не згадати аплети - міні-програми, програми для завантаження з мережі і виконуються в Web-браузері. Оскільки аплети завантажуються з мережі, вони зазвичай містять "неперевірений" код, що накладає опрделенние вимоги до перевірки їх надійності. Аплети відіграли велику роль в популяризації платформи Java і практично не змінилися з часів Java 1.0. У Java 2 з'явився Swing-клас JApplet і нова, більш гнучка модель захисту.
Базовий клас Applet і Swing-клас JApplet є GUI-контейнерами, які можуть містити інші GUI-компоненти й контейнери. Але не ці властивості визначають основні характеристики аплетів. Найбільш важливими тут є можливість роботи в мережі, динамічне завантаження та виконання і розвинені засоби захисту.
JavaBeans
Компоненти JavaBeans. вперше з'явилися в Java 1.1. У Java 2 реалізовані деякі розширення компонентної моделі JavaBeans. Компонент JavaBeans - це Java-об'єкт, інтерфейс якого підтримує деякі угоди. Так, компонентами можна керувати із засобів розробки, з скриптових мов і т.п. У деяких випадках цілі програми можуть бути динамічно зібрані з групи незалежних, але взаємодіючих між собою компонентів. Компоненти JavaBeans часто, але необов'язково, є GUI-компонентами. Всі GUI-компоненти платформи Java слідують угодами компонентів JavaBeans і можуть використовуватися в контексті JavaBeans. Такими компонентами можуть бути і проста кнопка, і складний повнофункціональний текстовий процесор.
У Java 2 з'явилося поняття контексту компонента, - контейнера, що може містити в собі компоненти та інші контейнери. Такий контейнер може забезпечувати набір сервісів, наприклад, можливість роботи з пристроєм друку, для всіх вкладених компонентів. Фактично, контекст контейнера є розширенням моделі аплетів - в платформі Java 2 реалізована підтримка створення об'єктів, які можуть виступати і як компоненти, і як аплети.
Java Media Framework
Java Media Framework (JMF) - це стандартне розширення платформи Java 2. JMF задає бібліотеку класів для роботи зі звуком та відео. На додаток до можливостей відтворення аудіоданих і відображення відео даних, закодованих в різних форматах, JMF включає засоби для об?? аботкі, контролю і синхронізації потоків мультимедійних даних. Java Media Framework може працювати як з файлами, збереженими на локальних дисках, так і упакованими потоковими даними, що передаються в реальному часі через мережу.
Java Media Framework реалізовано повністю на мові Java і може працювати на будь-якій платформі, яка підтримує мову Java. На додаток до цього, існують платформо-залежні розширення в коді для тієї або іншої платформи, за допомогою яких можна суттєво підвищити продуктивність створюваних додатків і забезпечити підтримку специфічних для даної платформи форматів даних.
У наступних версіях JMF будуть реалізовані засоби запису мультимедійних даних і підтримки конференцій.
Підтримка звуку
У перших двох версіях Java (1.0 і 1.1) були лише рудиментарні функції для підтримки звуку - можна було відтворювати тільки звук, закодований у форматі AU фірми Sun. Відповідні інтерфейси були доступні тільки для аплетів. Платформа Java 2 містить нове ядро для відтворення звукових файлів в найбільш популярних форматах, а програмні інтерфейси можуть використовуватися в будь-якому Java-коді, не тільки в аплетах, як це було раніше.
Для підтримки звуку на Java 2 включений інтерфейс Java Sound, що забезпечує повний контроль над звуком.
Розробка корпоративних додатків
Більшість новинок у платформі Java 2 - це новинки в графічних інтерфейсах і підтримки графічних функцій. Але найбільш важливими, зі стратегічної точки зору, поза сумнівом, є програмні інтерфейси Java Enterprise. Ці інтерфейси дозволяють використовувати Java для створення корпоративних додатків, які мають засоби масштабування, можуть працювати в мережевих середовищах і володіють підтримкою роботи з уже існуючими додатками.
Деякі з цих інтерфейсів існували в Java 1.1, частина з них є новими для Java 2. Ряд інтерфейсів є базовим для платформи Java 2, решта - це доповнення і розширення. Проте саме платформа Java 2.является перше, де повністю реалізовані інтерфейси Java Enterprise, і яка служить в якості основи для створення корпоративних додатків.
Нижче ми коротко розглянемо основні інтерфейси Java Enterprise (більш докладно ми поговоримо про ці інтерфейсах в одній з наступних статей даного циклу). До них відносяться:
* JDBC - доступ до баз даних
* RMI - підтримка розподілених об'єктів
* Розподілені об'єкти і CORBA
* JNDI - Сервіси імен та каталогів
* JavaMail - електронна пошта
* Enterprise JavaBeans
* Сервлети
Доступ до баз даних
Інтерфейс Java Database Connectivity (JDBC) дозволяє Java-програмам посилати SQL-запити й оновлювати дані на серверах баз даних, а також обробляти отримані з сервера результати. JDBC також дозволяє отримувати метаінформації про базу даних та її таблицях з сервера баз даних. Архітектура JDBC грунтується на класі Driver, який "приховує" всі деталі спілкування з конкретним сервером баз даних. Кожен конкретний сервер вимагає наявності відповідного класу Driver, з яким взаємодіють Java-програми. Більшість виробників баз даних постачають JDBC-драйвери зі своїми продуктами. Крім цього, існують спеціальні драйвери для взаємодії з базами через відповідні ODBC-драйвери. На наступній діаграмі показані два можливих варіанти створення JDBC-додатків - з використанням тільки JDBC-драйверів і з використанням JDBC/ODBC-драйверів.
Інтерфейс JDBC реалізований в пакеті java.sql, який вперше з'явився в Java 1.1. У платформі Java 2 з'явився ряд нових класів, що реалізують додаткову функціональність. Також в Java 2 включений пакет javax.sql, що дозволяє, наприклад, розглядати результати запиту до баз даних як JavaBeans, виконувати пулінг зв'язків з базами та отримувати інформацію про зв'язки з базами через сервіси імен.
Інтерфейс JDBC є простим і добре продуманим. Програмісти, знайомі з SQL і основами програмного взаємодії з базами даних, зможуть легко скористатися функціями JDBC в Java-програми.
Підтримка розподілених об'єктів
Розподілені об'єкти забезпечують потужну модель для створення об'єктно-орієнтованих мережевих додатків, інтерес до яких в останні роки неухильно зростає. У даній моделі клієнтська частина повинна мати можливість викликати методи об'єктів, розташованих на віддалених серверах так, як якби ці об'єкти були розташовані локально. Дана модель може бути реалізована декількома способами. Одним з них є Java Remote Method Invocation (RMI). Відповідні програмні інтерфейси реалізовані в пакеті java.rmi, який вперше з'явився в Java 1.1 і був розширений в Java 2.
Розподілені об'єкти і CORBA
Java Remote Method Invocation - це рішення для створення розподілених систем, яке працює для клієнтських і серверних додатків, написаних на мові Java. Але воно не підходить для гетерогенних середовищ, де клієнти та сервери написані на різних мовах. Для таких середовищ у платформі Java 2 реалізована підтримка CORBA.
CORBA (Common Object Request Broker Architecture) - це стандарт, створений Object Management Group (OMG). Даний стандарт реалізований як базова складова платформи Java 2 в пакеті org.omg.CORBA та інших подпакетах. Реалізація включає Object Request Broker (ORB), який Java-додатки можуть використовувати для спілкування з іншими брокерами та іншими CORBA-об'єктами.
Інтерфейси до віддалених CORBA-об'єктів є незалежними від мови і платформи і описуються на мові опису інтерфейсів - Interface Description Language (IDL). До складу Java Development Kit входить компілятор IDL, який перетворює інтерфейси, описані мовою Interface Description Language у спеціальні Java-класи, необхідні для реалізації IDL-інтерфейсів на Java або для зв'язку з віддаленими реалізаціями інтерфейсів з Java-коду.
Сервіси імен та каталогів
Інтерфейси Java Naming and Directory Interface (JNDI) представляють собою незалежні від протоколів інтерфейси до мережевих сервісів імен і каталогів. Ці інтерфейси реалізовані в пакеті javax.jndi, який є стандартним розширенням платформи Java 2.
Інтерфейси JNDI не є специфічними для якихось протоколів підтримки сервісів імен і каталогів. Замість цього вони являють собою базові інтерфейси, здатні работатть з будь-якими серверами. Для підтримки якогось конкретного протоколу потрібна наявність спеціального провайдера. Для більшості провайдерів таких сервісів - LDAP, DNS чи NIS реалізовані відповідні програмні засоби.
Електронна пошта
Інтерфейс JavaMail являє собою незалежний від протоколів інтерфейс до сервісів електронної пошти. Він підтримує можливість відсилання та отримання електронної пошти, а також такі функції, як пошук. Інтерфейс JavaMail реалізований в пакеті javax.mail і подпакетах і є стандартним розширенням платформи Java 2.
Як і JNDI, JavaMail не пов'язаний з якимось конкретним протоколом для отримання та відсилання електронної пошти. JavaMail - це набір базових функцій, здатних працювати з будь-яким протоколом. Реалізація конкретного протоколу - SMTP, IMAP або POP3 - вимагає наявності відповідного провайдера, який входить в комплект поставки.
Enterprise JavaBeans
Enterprise JavaBeans - це серверний аналог JavaBeans. Enterprise JavaBeans (EJB) являє собою компонентну модель для реалізації бізнес логіки і бізнес даних. Програмна модель з "тонким" клієнтом припускає винесення бізнес-логіки з клієнтської частини на сервер або проміжний рівень (middle tier) і дозволяє створювати більш гнучкі корпоративні додатки. Але при цьому, реалізація бізнес логіки пов'язана з необхідністю підтримки коду, який би обробляв транзакції, взаємодіяв б з мережею і забезпечував би засоби захисту інформації.
Модель EJB відділяє бізнес-логіку від низькорівневих функцій, дозволяючи розробникам не піклуватися про те, як у тому чи іншому випадку будуть реалізовані стандартні функції, наприклад, для передачі даних або обробки транзакцій.
Пакети javax.ejb і javax.ejb.deployment є стандартними розширеннями платформи Java 2 і містять класи, необхідні для створення і впровадження EJB. Архітектура EJB також взаємодіє з інтерфейсами JNDI та іншим стандартним розширенням - Java Transaction Services (JTS).
Сервлети
Сервлет - це Java-код, що виконується на сервері, і що забезпечує якісь сервіси для клієнта. Назва "сервлет" схоже з назвою "аплет" - сервлет є серверним аплетом. Інтерфейс Java Servlet надає базовий механізм для розширення функціональності будь-якого сервлети, що використовує запити та відповіді на базі будь-якого протоколу.
В даний час сервлети використовуються, в основному на Web-серверах. Таким чином сервлети можна назвати Java-аналогом CGI-програм. Сервлети цілком конкурентно-спрособни з такими технологіями, як Active Server Pages фірми Microsoft або Cold Fusion фірми Allaire. Перевагою використання сервлетів є те, що вони є незалежними від платформи і зберігаються в пам'яті після завантаження (на відміну від CGI-програм). Крім цього сервлети мають повний доступ до платформи Java і можуть виконувати такі функції, як зв'язок з базами даних.
Сервлети є стандартним розширенням платформи Java 2 і реалізовані у пакетах javax.servlet і javax.servlet.http. Пакет javax.servlet задає класи для обробки клієнтських запитів і серверних відповідей. Пакет javax.servlet.http забезпечує підтримку протоколу HTTP, включаючи обробку запитів від декількох клієнтів в рамках однієї клієнтської сесії.
Це ще не все
Як ми побачили вище, платформа Java 2 надає в розпорядження розробників великий набір різноманітних програмних інтерфейсів, за допомогою яких можливо реалізувати практично будь-які додатки. Крім цього, фірма Sun працює над різними розширеннями і доповненнями до платформи Java 2, які з часом можуть стати стандартними розширеннями цієї платформи. У наступній таблиці перераховані найбільш важливі розширення, робота над якими ще ведеться.
Інтерфейс Опис
Advanced Imaging API Забезпечує високопродуктивні засоби для обробки зображень, включаючи підтримку роботи із зображеннями великого розміру, фрагментарно збереженими на дисках
Java Speech Забезпечує підтримку синтезу мови й розпізнавання голосу.
Java Telephony Являє собою інтерфейс для створення комп'ютерних програм для роботи з телефонією.
Project X Кодова назва розширень для підтримки мови XML
Java Communications API Дозволяє Java-додаткам використовувати послідовні і паралельні порти комп'ютера
Jini Набір пакетів для забезпечення мережних функцій "plug-and-play" для комп'ютерів, периферійних пристроїв і різних електронних пристроїв
Java Message Service Являє собою інтерфейс для асинхронного обміну повідомленнями.
Java Transaction Service/Java Transaction API Ці програмні інтерфейси задають засоби управління транзакціями і їх обробки. Реалізують стандарти X/Open XA і OMG OTS для управління транзакціями
Java Electronic Commerce Framework Являє собою набір класів для створення додатків електронної комерції, використовуючи метафору "гаманця" на клієнтському комп'ютері
Java Management API Визначає набір інтерфейсів для централізованого управління динамічними розподіленими Java-додатками і середовищами
Додаток
Інтерфейси Java 2 API
Пакет Опис
java.applet Містить класи, необхідні для створення аплетів і класи, якими користуються аплети для взаємодії з контекстом
java.awt Містить всі класи для створення користувацьких інтерфейсів, відтворення графіки та ізобрженій
java.awt.color Містить класи для уветових схем
java.awt. datatransfer Надає інтерфейси і класи для передачі даних між додатками або всередині однієї програми
java.awt.dnd Забезпечує інтерфейси і класи для підтримки операцій Drag-and-Drop
java.awt.event Містить інтерфейси і класи для обробки різних подій, що виникають у AWT-компонентах
java.awt.font Містить класи і шрифти для роботи з шрифтами
java.awt.geom Надає класи Java 2D для виконання операцій над об'єктами, що реалізують 2-мірну геометрію
java.awt.im Містить класи та інтерфейси для реалізації вводу (input method framework)
java.awt.image Реалізує класи для створення і модифікації графічних зображень
java.awt.image. renderable Містить класи та інтерфейси для обробки графічних зображень
java.awt.print Надає класи та інтерфейси для підтримки роботи з принтером
java.beans Містить класи, що відносяться до розробки Java Beans
java.beans. beancontext Реалізує класи та інтерфейси для реалізації контексту Java Beans
java.io Містить засоби для роботи з введенням і виведенням через потоки даних, сериализации і файлову систему
java.lang Забезпечує класи, що реалізують основу мови Java
java.lang.ref Містить посилальні класи, які підтримують зв'язок зі складальником "сміття"
java.lang. reflect Містить класи та інтерфейси для отримання інформації про класи та об'єктах
java.math Забезпечує класи для виконання арифметичних дій
java.net Містить класи для виконання мережевих функцій
java.rmi Являє собою RMI-методи
java.rmi. activation Забезпечує підтримку RMI Object Activation.
java.rmi.dgc Містить класи та інтерфейси для розподіленої збірки "сміття" на основі RMI - Distributed Garbage-Collection (DGC).
java.rmi. registry Містить клас та два інтерфейсу для реєстрації RMI
java.rmi.server Містить класи та інтерфейси для підтримки серверних RMI.
java.security Містить класи та інтерфейси для захисту (security framework)
java.security. acl Реалізує класи та інтерфейси, які в Java 2 реалізовані в пакеті java.security
java.security. cert Забезпечує класи та інтерфейси для обробки сертифікатів
java.security. interfaces Містить інтерфейси для генерації RSA-ключів та DSA-ключів у відповідності зі стандартами
java.security. spec Забезпечує інтерфейси для різних специфікацій захисту
java.sql Інтерфейс до JDBC
java.text Надає класи та інтерфейси для обробки тексту, дат, чисел і повідомлень, незалежно від мови
java.util Містить інтерфейси для роботи з колекціями (collections framework), подієву модель, функції для дати і часу, функції локалізації та різні додаткові класи
java.util.jar Забезпечує класи для читання і запису файлів у форматі JAR (Java ARchive), що базується на стандарті ZIP з необов'язковими доповненнями
java.util.zip Містить класи для читання і запису файлів у форматі ZIP і GZIP
javax. accessibility Реалізує функції Accessibility
javax.swing Надає набір легковагих компонентів для реалізації користувацьких інтерфейсів
javax.swing. border Містить класи та інтерфейси для відображення спеціальних рамок навколо компонентів Swing.
javax.swing. colorchooser Містить класи та інтерфейси, що використовуються компонентом JColorChooser
javax.swing. event Використовується для підтримки подій для компонентів Swing
javax.swing. filechooser Містить класи та інтерфейси, що використовуються компонентом JFileChooser
javax.swing. plaf Містить один інтерфейс і декілька абстрактних класів, що використовуються Swing для реалізації перемикаються налаштувань (pluggable look-and-feel)
javax.swing. plaf.basic Містить інтерфейсні об'єкти для базової установки (Basic look-and-feel)
javax.swing. plaf.metal Містить інтерфейсні об'єкти для налаштування `` metal''
javax.swing. plaf.multi Дозволяє поєднувати різні інтерфейсні налаштування
javax.swing. table Містить класи та інтерфейси, що використовуються java.awt.swing.JTable
javax.swing. text Забезпечує класи та інтерфейси для редагованих і нередактіруемих текстових компонентів
javax.swing. text.html Містить клас HTMLEditorKit та підкласи для створення HTML-редакторів
javax.swing.text.html.parser Містить парсер мови HTML
javax.swing.text.rtf Містить клас RTFEditorKit для створення RTF-редакторів
javax.swing.tree Містить класи та інтерфейси для java.awt.swing.JTree
javax.swing.undo Забезпечує підтримку скасування/повтору операцій в додатках.
org.omg.CORBA Реалізує інтерфейси OMG CORBA на мові Java, включаючи клас ORB, який може використовуватися як повнофункціональний брокер - Object Request Broker (ORB).
org.omg.CORBA. DynAnyPackage підтримки виняткові ситуації, що використовуються інтерфейсом DynAny (InvalidValue, Invalid, InvalidSeq, і TypeMismatch).
org.omg.CORBA. ORBPackage підтримки виключення InvalidName для методу ORB.resolve_initial_references і виключення InconsistentTypeCode,.
org.omg.CORBA. portable Забезпечує рівень переносимості - набір інтерфейсів ORB, які роблять можливим виконання коду для одного брокера під керуванням іншого
org.omg.CORBA. TypeCodePackage підтримки виключення BadKind і Bounds
org.omg. CosNaming Реалізує сервіси імен для Java IDL.
org.omg.CosNamongContextPackage підтримки виключення для пакету org.omg.CosNaming (AlreadyBound, CannotProceed, InvalidName, NotEmpty і NotFound) і класи Helper і Holder для цих виключень