В связи с ростом услуг и пользователей в интернете, создание мультиплатформенных программных обеспечении ставится на передовые места. Одни из которых Java-технологии. В данной статье описаны виды Java-технологии в Интернете и некоторые отличия от JavaScript-а.
При слове Java-технология в интернете многим пользователям приходит на ум в первую очередь это, JavaScript. Конечно, из за созвучности их названия, спутать их гораздо легко.
Но, JavaScript — прототипно-ориентированный сценарный язык программирования.
Является реализацией языка ECMAScript (стандарт ECMA-262).
JavaScript обычно используется как встраиваемый язык для программного доступа к объектам приложений. Наиболее широкое применение находит в браузерах как язык сценариев для придания интерактивности веб-страницам. Кроме созвучного названия, к продуктам компании SunMycrosystemsничего общего нет.
Перейдем непосредственно к самим Java-технологиям. В Java-технологиях в интернете используются следующие инструменты: Javaапплет, Javaсервлет и портлет.
А теперь каждому по порядку. Апплет.
Аппле́т (англ. applet от application — приложение и -let — уменьшительный суффикс)— это не самостоятельный компонент программного обеспечения, работающий в контексте другого, полновесного приложения, предназначенный для одной узкой задачи и не имеющий ценности в отрыве от базового приложения.
Наиболее часто термин используется в следующих значениях:
- Java-апплет — программный компонент в двоичном коде виртуальной машины Java, исполняется в окне браузера Web-страниц, в целях безопасности обособлен от основной системы в т. н. «песочнице» (англ. sandbox).
- Элемент модульных диалоговых сред X WindowSystem (GNOME, KDE, Xfce), MicrosoftWindows, AppleMac OS. Является приложением в машинном коде для соответствующей ОС, взаимодействует с основным приложением (менеджером окон) посредством стандартного API. Хотя обычно под аплетом подразумевают элемент, который может быть отдельно установлен, удалён или настроен пользователем, типичные примеры аплетов — часы-календарь и Языковая панель Windows, Панель управления и различные оснастки консоли MMC.
Мы рассматриваем непосредственно Java-апплетов.
Java-апплет — прикладная программа, чаще всего написанная на языке программирования Java в форме байт-кода. Java-апплеты выполняются в веб-обозревателе с использованием виртуальной Java машины (JVM), или в Sun'sAppletViewer, автономном средстве для испытания апплетов. Java-апплеты были внедрены в первой версии языка Java в 1995 году. Java-апплеты обычно пишутся на языке программирования Java, но могут быть написаны и на других языках, которые компилируются в байт‐код Java, таких, как Jython.
Апплеты используются для предоставления интерактивных возможностей вебприложений, которые не могут быть предоставлены HTML. Так как байт-код Javaплатформо-независим, то Java-апплеты могут выполняться с помощью плагинов браузерами многих платформ, включая MicrosoftWindows, UNIX, AppleMac OS и GNU/Linux. Такие программы с открытым исходным кодом, как «applet2app», могут быть использованы для преобразования апплета в самостоятельные программы на Java или исполняемые файлы Linux и Windows.
Преимущества Java-апплетов. Преимущества использования Java-апплетов
- кроссплатформенность
- апплет может работать на «всех» установленных к этому времени версиях Java, а не только с последней версией; однако, если апплет требует последнюю версию JRE, то клиент будет вынужден ждать более длительной загрузки;
- апплет поддерживается большинством браузеров;
- он кэшируется в большинстве браузеров, а потому будет быстро загружаться при возвращении на веб-страницу; но апплет может сохраняться в кэше и создавать проблемы после выхода новых версий;
- он может иметь полный доступ к машине, на которой выполняется, если пользователь согласен на это;
- апплет может улучшить использование: после первого запуска апплета, когда JVM уже выполняется и быстро запускается, преимущественно у постоянных пользователей Java, однако JVM придется перезапускать каждый раз, когда запускается новый браузер.
- он может запуститься с сопоставимой (но обычно медленнее) скоростью на других компилируемых языках, таких как C++, но во много раз быстрее, чем JavaScript
- он может перенести работу с сервера к клиенту, делая Интернет-решение с, большим числом пользователей / клиентов.
Несмотря на это Java-апплеты имеют следующие недостатки. Java-апплет обладает следующими недостатками:
- он требует установки Java-расширения (plug-in), которое не во всех браузерах доступно по умолчанию;
- он не может запуститься до тех пор, пока не запустится виртуальная Java-машина, и это может занять значительное время при первом запуске;
- создание и дизайн хорошего пользовательского интерфейса с использованием апплетов считается более сложной задачей, чем с помощью технологии, основанной на HTML;
- некоторые организации допускают только программное обеспечение, установленное администраторами. В результате многие пользователи не могут видеть апплеты по умолчанию.
- апплеты могут потребовать использования определенного JRE. Сервлет
Следующим членом семейства Java-технологии в Интернете, является – Java-сервлет.
Java-сервлет иногда неофициально сравнивают с серверным апплетом, но он отличается своим языком, функциями и каждой из описанных здесь характеристик апплетов. Сервлет является интерфейсом Java, реализация которого расширяет функциональные возможности сервера. Сервлет взаимодействует с клиентами посредством принципа запрос- ответ.
Хотя сервлеты могут обслуживать любые запросы, они обычно используются для расширения веб-серверов. Для таких приложений технология JavaServlet определяет HTTPспецифичные сервлет классы.
Пакеты javax.servlet и javax.servlet.http обеспечивают интерфейсы и классы для создания сервлетов.
Первая спецификация сервлетов была создана в SunMicrosystems (версия 1.0 была закончена в июне 1997). Начиная с версии 2.3, спецификация сервлетов разрабатывалась под руководством JavaCommunityProcess. Стандарт JSR 53 определял как Servlet 2.3, так и спецификацию JavaServerPage 1.2. JSR 154 включает в себя спецификации Servlet 2.4 и 2.5. Текущая спецификация на 13 июня 2013 года — Servlet 3.1 (описана в JSR-340).
Жизненный цикл Сервлета
Жизненный цикл сервлета состоит из следующих шагов:
- В случае отсутствия сервлета в контейнере.
- Класс сервлета загружается контейнером.
- Контейнер создает экземпляр класса сервлета.
- Контейнер вызывает метод init(). Этот метод инициализирует сервлет и вызывается в первую очередь, до того, как сервлет сможет обслуживать запросы. За весь жизненный цикл метод init() вызывается только один раз.
- Обслуживание клиентского запроса. Каждый запрос обрабатывается в своем отдельном потоке. Контейнер вызывает метод service() для каждого запроса. Этот метод определяет тип пришедшего запроса и распределяет его в соответствующий этому типу метод для обработки запроса. Разработчик сервлета должен предоставить реализацию для этих методов. Если поступил запрос, метод для которого не реализован, вызывается метод родительского класса и обычно завершается возвращением ошибки инициатору запроса.
- В случае если контейнеру необходимо удалить сервлет, он вызывает метод destroy(), который снимает сервлет из эксплуатации. Подобно методу init(), этот метод тоже вызывается единожды за весь цикл сервлета.
Контейнер сервлетов — программа, представляющая собой сервер, который занимается системной поддержкой сервлетов и обеспечивает их жизненный цикл в соответствии с правилами, определёнными в спецификациях. Может работать как полноценный самостоятельный веб-сервер, быть поставщиком страниц для другого вебсервера, например Apache, или интегрироваться в Java EE сервер приложений. Обеспечивает обмен данными между сервлетом и клиентами, берёт на себя выполнение таких функций, как создание программной среды для функционирующего сервлета, идентификацию и авторизацию клиентов, организацию сессии для каждого из них.
JSP (JavaServerPages) — технология, позволяющая веб-разработчикам создавать содержимое, которое имеет как статические, так и динамические компоненты. Страница JSP содержит текст двух типов: статические исходные данные, которые могут быть оформлены в одном из текстовых форматов HTML, SVG, WML, или XML, и JSPэлементы, которые конструируют динамическое содержимое. Кроме этого могут использоваться библиотеки JSP-тегов, а также EL (ExpressionLanguage), для внедрения Java-кода в статичное содержимое JSP-страниц.
Код JSP-страницы транслируется в Java-код сервлета с помощью компилятора JSPстраниц Jasper, и затем компилируется в байт-код виртуальной машины java (JVM). Контейнеры сервлетов, способные исполнять JSP-страницы, написаны на платформонезависимом языке Java. JSP-страницы загружаются на сервере и управляются из структуры специального Javaserverpacket, который называется Java EE WebApplication. Обычно страницы упакованы в файловые архивы .war и .ear.
JSP является платформонезависимой, переносимой и легко расширяемой технологией для разработки веб-приложений.
Портлет
Портлет — подключаемый, сменный компонент пользовательского интерфейса вебпортала (элемент веб-страницы).
Портлет выдаёт фрагменты разметки, которые встраиваются в страницу портала. Чаще всего страница портала представляется в виде набора не перекрывающих друг друга портлетных окон, каждое из которых отображает портлет. Таким образом, портлет (или совокупность портлетов) представляется в виде единого веб-приложения, размещённого на портале. Примеры портлетов: email, сообщения о погоде, последние новости.
Благодаря существующим стандартам разработчики могут создавать портлеты, встраиваемые в любой портал, следующий этим стандартам.
Существует протокол WSRP, обеспечивающий стандарт веб-сервисов, который позволяет автоматически встраивать запущенные удалённо портлеты из разных источников.
Спецификации Java-портлетов JSR 168 (1.0) и JSR 286 (2.0) дают возможность взаимодействовать между собой портлетам из разных веб-порталов. Эта спецификация определяет множество API для взаимодействия контейнеров портлетов и даёт адреса областей персонализации, представления и безопасности.
ApachePluto — эталонная реализация обеих спецификаций. Существует множество поставщиков коммерческих реализаций контейнеров портлетов. Лидируют в этой области IBM, Oracle, Vignette. Реализации от этих поставщиков имеют дополнительные расширения, не утверждённые стандартами. Кроме того, есть порталы с открытым исходным кодом, поддерживающие JSR168, такие как корпоративный портал Apache Jetspeed-2 или eXoPortal.
Спецификация Java-портлетов (англ. JavaPortletSpecification) описывает модель взаимодействия между портлетом и портлетным контейнером. Эта спецификация очень похожа на спецификацию Java-сервлетов (англ. JavaServletSpecification) и, фактически, разработана на основе JavaServletSpecification версии 2.3 и JavaServerPages версии 1.2.
Список использованной литературы:
- Information about writing applets from Sun Microsystems
- Applet section of Wikibook’s Java book
- Demonstration applets from Sun Microsystems (JDK 1.4 — include source code)
- Latest version of Sun Microsystems Java Virtual Machine (includes browser plug-ins for running Java applets in most web browsers).
- Examples of interactive Java Applets from physics, biology and social systems
- Examples for Java Applets with sourcecode
- Апплеты и сервлетыJava как средства расширения возможностей браузера и Webсервера
- JavaServletTechnology (англ.) — Официальная домашняя страница
- Нововведения в стандарте Servlet API 5
- What’s new in Servlet 3.1 (англ.)
- JSR-168, Java Portlet API
- JSR-286, Java Portlet API 0
- Проект Apache Pluto
- JSR 168: Portlet Specification
- JSR 286: Portlet Specification
- Проект Apache Pluto
- Официальная домашняя страница JSP (англ.)
- ТехнологияJavaServer Pages (рус.)
- Введение в JSP (рус.)
- Перевод руководства по JavaServerPagesJSP2 (рус.)
- A Tutorial on Java Servlets and Java Server Pages (англ.)
- JavaServer Pages (JSP) v1.2 Syntax Reference, [1], v2.0 (англ.)
- JAVASERVER PAGESª (JSPª) SYNTAX version 1.2, version 2.0 (англ.)
- Подборкастатейпо JSP