Доступ к БД на стороне клиента через Апплеты
1) Понятие апплетов
Апплет – это фрагмент кода, наследующий свое поведение от Java-класса Applet (java.applet.Applet), который расширяется новыми функциями. Апплет – это часть HTML-документа и не имеет доступа к компьютеру Web-сервера.
Технология разработки HTML-документа позволяет написать произвольное количество дополнительных Java-программ, откомпилировать их в мобильные р-коды и поставить ссылки на соответствующие коды в теле HTML-документа. Получив доступ к документу, содержащему ссылки на апплеты, браузер запрашивает у Web-сервера все мобильные коды. Если не используется технология распределенных приложений CORBA, то клиентские приложения получаются относительно сложными – толстый клиент, поскольку для взаимодействия Java-апплетов с внешним сервером БД приходится использовать протокол JDBC, драйверы которого необходимо установить на клиенте.
2) Синтаксис объявления апплетов
<APPLET
CODE=”имя апплет-файла”
WIDTH=m
HEIGNT=n
[HTML-text]
</APPLET>
<HTML><HEAD><TITLE>Документ со встроенной ссылкой на applet.</TITLE></HEAD>
<BODY bgcolor=#FFFFFF>
<CENTER>
<B1>Документ со встроенным апплетом hello Java</B1>
<HR>
<APPLET CODE=hello width=200 height=100>
Applet будет отображаться в этом месте, если Ваш браузер интерпретирует Java
</APPLET>
<HR>
</BODY></HTML>
3) Взаимодействие в Web-браузером
Апплет не является законченным приложением. В действительности это компонент, выполняющийся внутри Web-браузера. Web-браузер предоставляет три полезные службы для работы апплетов:
• Полностью управляет жизненным циклом апплета. Для этого предусмотрено несколько методов. Браузер вызывает метод init для первоначальной загрузки апплета. Метод stop вызывается всякий раз, когда пользователь переходит на другую страницу. Метод start вызывается всякий раз, когда пользователь активизирует страницу. Наконец, браузер вызывает метод destroy, прежде чем он закрывается нормальным образом.
Метод | Действие |
init() | Вызывается автоматически при первом запуске апплета, для проведения инициализации и размещения компонентов на форме. |
start() | Вызывается каждый раз при перемещении апплета в видимую зону. Вызывается также после метода init(). |
stop() | Вызывается каждый раз, когда Апплет покидает видимую зону. |
destroy() | Вызывается, когда Апплет выгружается со страницы, для того, чтобы он смог провести освобождение своих ресурсов. |
• Снабжает Апплет атрибутивными данными из тега APPLET. Основная роль апплета Java состоит в создании активного содержимого Web-страниц. Первоначально используется HTML-тэг APPLET для размещения апплета на Web-страницу и описания его атрибутов и окружения. Тэг сообщает браузеру, где найти Апплет для загрузки и предоставляет данные для соединения браузера с апплетом. Тэг APPLET включает обязательные атрибуты CODE, WIFDTH, HEIGHT и ряд других. С помощью атрибута PARAM можно определять параметры, которые можно передать через HTML. Доступ к параметрам Апплет получает, вызывая метод getParameter.
• Служит порождающим процессом, в котором выполняется Апплет.
4) Сценарий взаимодействия с БД
• Апплет в составе Web-документа загружается (виде байт-кода) на машину клиента.
• Виртуальная машина Java на клиенте стартует Апплет.
• Апплет запрашивает менеджер драйверов JDBC (при этом необходимый JDBC-драйвер должен находиться на клиенте).
• Апплет получает доступ к серверу БД по протоколу Интернет (TCP).
Первый вариант схемы соединения Апплета к БД:
Второй вариант схемы соединения Апплета к БД:
• Далее сценарий зависит от конкретной архитектуры реализации драйвера:
a) Клиентская часть сервера БД присутствует на клиенте. В этом случае JDBC-драйвер реализуется в виде набора Java-классов, описывающих интерфейсы java.sql.* через платформенно-зависимый код (Native-вызовы).
b) Клиентская часть сервера БД присутствует на Web-сервере (или другом сервере, доступном в сети). В этом случае JDBC-драйвер обычно называют JDBC-Net. Он полностью написан на Java и обращается к серверу баз данных по TCP/IP, формируя дейтаграммы в формате, понятном серверу.
5) Плюсы апплетов
• Кроссплатформенность.
• Апплет может работать на «всех» установленных к этому времени версиях Java, а не только с последней версией. Однако, если Апплет требует последнюю версию JRE, то клиент будет вынужден ждать боле длительной загрузки.
• Апплет поддерживается большинством браузеров.
• Он кэшируется в большинстве браузеров, а потому будет быстро загружаться при возвращении на веб-страницу; но Апплет может сохраняться в КЭШе и создавать проблемы после выхода новых версий.
• Он может иметь полный доступ к машине, на которой выполняется, если пользователь согласен на это.
• Апплет может улучшить использование: после первого запуска апплета, когда JVM уже выполняется и быстро запускается, преимущественно у постоянных пользователей Java, однако JVM придется перезапускать каждый раз, когда запускается новый браузер.
• Он может запуститься с сопоставимой (но обычно медленнее) скоростью на других компилируемых языках, таких как С++, но во много раз быстрее, чем JavaScript.
• Он может перенести работу с сервера к клиенту, делая Интернет-решение с большим числом пользователей/клиентов.
6) Минусы апплетов
• Апплет требует установки Java-расширения (plug-in), которое не во всех браузерах доступно по умолчанию.
• Он не может запуститься до тех пор, пока не запустится виртуальная Java-машина, и это может занять значительное время при первом запуске.
• Апплет небезопасен по своей природе, загружаясь на клиентскую машину извне, он не имеет права обращаться к локальным ресурсам.
• Создание и дизайн хорошего пользовательского интерфейса с использованием апплетов считается более сложной задачей, чем с помощью технологии, основанной на HTML.
• Апплет добавляет новые проблемы, связанные с идентификацией и аутентификацией пользователей, а также проверкой доступа к БД.
• Для повышения безопасности апплета, ограничивается доступ к пользовательской системе: в частности, он не имеет прямого доступа к диску клиента или буферу обмена.
• Некоторые организации допускают только программное обеспечение, установленное администраторами. В результате многие пользователи не могут видеть апплеты по умолчанию.
• Апплеты могут потребовать использования определенного JRE.
7) Безопасные апплеты
Безопасные апплеты включают криптографический ключ и могут, как и приложения, обращаться к локальным ресурсам через виртуальную машину. В этом случае используется трехзвенная архитектура, подразумевающая вызов из апплетов или приложений не сервера БД, а сервера приложений, который в свою очередь осуществляет взаимодействие с сервером БД.