Веб-приложение – клиент-серверное приложение, в котором клиентом выступает браузер, а сервером – веб-сервер. Логика веб-приложения распределена между сервером и клиентом, хранение данных осуществляется, преимущественно, на сервере, обмен информацией происходит по сети.
Компьютерная, или вычислительная сеть – система, обеспечивающая обмен данными между вычислительными устройствами. Для передачи информации могут быть использованы различные виды электрических и световых сигналов или электромагнитного излучения.
Сервлет является интерфейсом Java, реализация которого расширяет функциональные возможности программных компонентов вычислительной системы, выполняющих обслуживающие функции по запросу клиента, предоставляя ему доступ к определенным ресурсам и услугам. [1]
ZIP-файл – популярный формат архивации файлов и сжатия данных без потерь. Архив ZIP может содержать один или несколько файлов и каталогов, которые могут быть сжаты разными алгоритмами.
JAR-файл – это Java-архив, который представляет собой ZIP-архив, в котором содержится часть программы на объектно-ориентированном языке программирования Java.
Главное же преимущество WAR-файлов заключается в лёгкости разработки, тестирования и развертывания. Версию развёрнутого приложения, так же, легко идентифицировать, а все J2EE-контейнеры поддерживают WAR-файлы. [2]
1 ЯЗЫК JAVA
Java – строго типизированный язык, построенный на принципах объектно-ориентированного программирования, разработанный компанией Sun Microsystems, в последующем приобретенной Oracle. Приложения Java обычно выполняют трансляцию в специальное промежуточное представление, в которое может быть переведена компьютерная программа, байт-код. Поэтому они могут работать на любой компьютерной архитектуре, с помощью основной исполняющей части системы Java – виртуальной машины Java. Дата официального выпуска – 23 мая 1995 года.
1.1. Основные особенности языка
Как уже было сказано ранее, программы на Java транслируются в байт-код, выполняемый виртуальной машиной Java – программой, обрабатывающей байтовый код и передающий инструкции оборудованию как интерпретатор.
Достойнством подобного способа выполнения программ является полная независимость байт-кода от комплекса взаимосвязанных программ, предназначенных для управления ресурсами персонального компьютера и организации взаимодействия с пользователем, а так же аппаратной платформы компьютера. Это позволяет выполнять Java-приложения на любом устройстве, для которого существует соответствующая виртуальная машина.
Другой важной особенностью технологии Java является гибкая система безопасности, в рамках которой исполнение программы полностью контролируется виртуальной машиной. Любые операции, которые превышают установленные полномочия программы, вызывают немедленное прерывание.
Часто к недостаткам концепции виртуальной машины относят снижение производительности. Ряд усовершенствований несколько увеличил скорость выполнения программ на Java:
Применение технологии трансляции байт-кода в машинный код непосредственно во время работы программы с возможностью сохранения версий класса в машинном коде.
Широкое использование платформенно-ориентированного кода в стандартных библиотеках.
Аппаратные средства, обеспечивающие ускоренную обработку байт-кода.
По данным сайта shootout.alioth.debian.org, для семи разных задач время выполнения на Java составляет в среднем в полтора-два раза больше, чем для C/C++, в некоторых случаях Java быстрее, а в отдельных случаях в 7 раз медленнее. С другой стороны, для большинства из них потребление памяти Java-машиной было в 10 – 30 раз больше, чем программой на C/C++.
Также примечательно исследование, проведённое американской транснациональной публичной корпорацией Google Inc, согласно которому отмечается существенно более низкая производительность и большее потребление памяти в тестовых примерах на Java в сравнении с аналогичными программами на языке программирования общего назначения C++.
Идеи, заложенные в концепцию и различные реализации среды виртуальной машины Java, вдохновили множество энтузиастов на расширение перечня языков, которые могли бы быть использованы для создания программ, исполняемых на виртуальной машине. Эти идеи нашли также выражение в спецификации общеязыковой инфраструктуры CLI, заложенной в основу программной платформы .NET компанией Microsoft.
1.2. Классификация платформ
Внутри Java существует несколько основных семейств технологий:
Java SE – Java Standart Edition, основное издание Java, содержит компиляторы, API, Java Runtime Environment; подходит для создания пользовательских приложений, в первую очередь – для настольный систем.
Java EE – Java Enterprise Edition, представляет собой набор спецификаций для создания программного обеспечения уровня предприятия.
Java ME – Java Micro Edition, создана для использования в устройствах, ограниченных по вычислительной мощности, например, в мобильных телефонах, КПК, встроенных системах.
JavaFX – технология, являющаяся следующим шагом в эволюции Java как Rich Client Platform; предназначена для создания графических интерфейсов корпоративных приложений и бизнеса.
Java Card – технология предоставляет безопасную среду для приложений, работающих на смарт-картах и других устройствах с очень ограниченным объемом памяти и возможностями обработки.
1.3. Основные возможности
Автоматическое управление памятью, или сборка мусора – одна из форм автоматического управления памятью, который периодически освобождает память, удаляя объекты, которые уже не будут востребованы приложениями.
Расширенные возможности обработки исключительных ситуаций.
Богатый набор средств фильтрации ввода-вывода.
Набор стандартных коллекций: массив, список, стек и прочие.
Наличие простых средств создания сетевых приложений.
Наличие классов, позволяющих выполнять HTTP-запросы и обрабатывать ответы.
Встроенные в яз средства создания многопоточных приложений, которые потом были портированы на многие языки.
Унифицированный доступ к базам данных:
На уровне отдельных SQL-запросов – на основе JDBC, SQLJ.
На уровне концепции объектов, обладающих способностью к хранению в базе данных – на основе Java Data Object и Java Persistence API.
Поддержка обобщений.
Поддержка лямбд, замыканий, встроенные возможности функционального программирования.
Множество вариантов реализации многопоточных программ.
1.4. Java и Microsoft
Компанией Microsoft была разработана собственная реализация виртуальной машины Java, включавшаяся в состав различных операционных систем, начиная с Windows 98.
Microsoft Java Virtual Machine имела существенные отличия от Sun Java, во многом ломающие основопологающую концепцию переносимости программ между разными платформами:
Отсутствие поддержки программного интерфейса удаленного вызова процедур.
Отсутствие поддержки технологии стандартного механизма для запуска кода – Java Native Interface.
Наличие нестандартных расширений, таких, как средства интеграции Java и DCOM, расширения Component Object Model, работающих только на платформе Windows.
Тесная интеграция Java с DCOM и Win32 поставила под вопрос кроссплатформенную парадигму языка. Впоследствии это явилось поводом для судебных исков со стороны Sun Microsystems к Microsoft. Суд принял сторону компании Sun Microsystems. В конечном счёте между двумя компаниями была достигнута договоренность о возможности продления срока официальной поддержки пользователей нестандартной Microsoft JVM до конца 2007 года.
В 2005 году компанией Microsoft для платформы .NET был представлен Java-подобный язык J#, не соответствующий официальной спецификации языка Java и исключенный впоследствии из стандартного инструментария разработчика Microsoft Visual Studio, начиная с Visual Studio 2008.
1.5. Java и Android
Язык Java активно используется для создания мобильных приложений под операционную систему Android. При этом программы компилируются в нестандартный байт-код, для использования их регистровой виртуальной машины для выполнения программ, написанных на языке Java, Dalvik. Для такой компиляции используется дополнительный инструмент, а именно Android Software Development Kit, разработанный компанией Google.
Разработку приложений можно вести в среде Android Studio, NetBeans, в среде Eclipse, используя при этом плагин Android Development Tools, или IntelliJ IDEA. Версия JDK при этом должна быть 5.0 или выше.
8 декабря 2014 года Android Studio признана компанией Google официальной средой разработки под OC Android. [5]
2 ТЕХНИЧЕСКИЕ ОСОБЕННОСТИ ВЕБ-ПРИЛОЖЕНИЙ
Существенное преимущество построения веб-приложений для поддержки стандартных функций браузера заключается в том, что функции должны выполняться независимо от операционной системы данного клиента. Вместо того, чтобы писать разные версии для Microsoft Windows, Mac OS X, GNU/Linux и других операционных систем, приложение создаётся один раз для произвольно выбранной платформы и на ней разворачивается. Однако различная реализация языков разметки, описания внешнего вида и программных интерфейсов документов, а так же других спецификаций в браузерах может вызвать проблемы при разработке веб-приложений и последующей поддержке. Кроме того, возможность пользователя настраивать многие параметры браузера может препятствовать корректной работе приложения.
Менее универсальный подход заключается в использовании различных мультимедийных платформ для создания веб-приложений или мультимедийных презентаций, таких как Adobe Flash, Silverlight или Java-аплетов, для полной или частичной реализации пользовательского интерфейса. Поскольку большинство браузеров поддерживает эти технологии, Flash и Java-приложения могут выполняться без существенных проблем. Так как они предоставляют программисту больший контроль над интерфейсом, они способны обходить многие несовместимости в конфигурациях браузеров, хотя несовместимость между Java и Flash-реализациями на стороне клиента может привести к различного рода осложнениям.
На 2015 год технологию Adobe Flash не поддерживают Chrome, Safari и другие популярные браузеры. [3]
В связи с архитектурным сходством с традиционными клиент-серверными приложениями, в некотором роде «толстыми» клиентами, существуют споры относительно корректности отношения подобных систем к веб-приложениям. Альтернативный термин звучит как «Rich Internet Application», или «Насыщенное интернет-приложение – веб-приложение, загружаемое пользователем через Интернет, предназначенное для выполнения функций традиционных настольных приложений и работающее на устройстве пользователя.
Компьютерная программа – последовательность из набора кодов операции конкретного устройства или системы, которая обрабатывается и выполняется непосредственно центральным процессором или микропрограммами этой вычислительной машины. [4]
3 СТРУКТУРА WAR-АРХИВОВ
На рисунке 1 представлен пример структуры Web-Архива.
/index.html /guestbook.jsp /images/logo.png /WEB-INF/web.xml /WEB-INF/classes/org/wikipedia/Util.class /WEB-INF/classes/org/wikipedia/MainServlet.class /WEB-INF/lib/util.jar /META-INF/MANIFEST.MF |
Рисунок 1 – Пример структуры Web-Архива
Следует обратить внимание, что в каталоге «WEB-INF» находится так называемый дескриптор развёртывания с именем «web.xml», определяющий все сервлеты и другие свойства Web-приложения. Если приложение содержит только JSP-файлы, этот файл не строго обязателен.
Пример дескриптора развертывания web.xml изображен на рисунке 2:
HelloServlet mypackage.HelloServlet HelloServlet /HelloServlet Resource reference to a factory for javax.mail.Session instances that may be used for sending electronic mail messages, preconfigured to connect to the appropriate SMTP server. mail/Session javax.mail.Session Container |
Рисунок 2 – Пример дескриптора развертывания web.xml
Директория /WEB-INF/classes находится в classpath ClassLoader. Эти java-файлы с расширением .class будут загружены, когда веб-приложение загрузится и начнет выполняться. Любые файлы JAR, находящиеся в каталоге /WEB-INF/lib, также будут помещены в classpath.
Хотя сервлеты могут обслуживать любые запросы, они обычно используются для расширения веб-серверов. Для таких приложений технология Java Servlet определяет HTTP-специфичные сервлет классы.
Пакеты javax.servlet и javax.servlet.http обеспечивают интерфейсы и классы для создания сервлетов.
4 СОЗДАНИЕ WAR-АРХИВОВ
Создать WAR-архив можно следующими способами:
Паковщиком, входящим в состав J2EE SDK.
Выполнив в Apache Ant задачу «war».
Выполнив в Apache Maven команду «mvn clean install».
JAR-утилитой, входящей в J2SE. В этом случае, создавая архив WAR, вам следует проследить, чтобы структура каталогов вашего приложения соответствовала требуемой для формата WAR. Далее следует выполнить следующую команду в корневом каталоге вашего приложения: «jar cvf archiveName.rar».
Apache Ant – вспомогательная компьютерная программа для автоматизации процесса сборки программного продукта. Является платформонезависимым аналогом утилиты make, автоматизирующей процесс преобразования файлов из одной формы в другую и записывающей все команды в XML-формате.
Apache Maven – программное обеспечение для автоматизации сборки проектов на основе описания их структуры в файлах на языке POM, являющимся подмножеством XML.
5 ПРИМЕНЕНИЕ WAR-АРХИВОВ
Все J2EE-контейнеры поддерживают WAR-файлы.
Чтобы веб-сервер смог прочитать дескриптор развертывания и начал перенаправлять запросы на данное приложение, необходимо развернуть WAR-файл в контейнер. Одним из вариантов выполнения развёртывания является копирование WAR-файла в autodeploy-каталог веб-контейнера.
WAR может быть подписан реквизитом электронного документа, или электронной цифровой подписью, так же, как и JAR-файл, чтобы подтвердить аутентичность кода.
Электронная подпись предназначена для определения лица, подписавшего электронный документ, и является подобием собственноручной подписи в случаях, предусмотренных законом. Применяется при совершении гражданско-правовых сделок, оказании государственных и муниципальных услуг, исполнении государственных и муниципальных функций, при совершении иных юридически значимых действий.
ЗАКЛЮЧЕНИЕ
Web Archive или Web Application Archive – формат файла, описывающий, как полное веб-приложение упаковывается в соответствии со спецификацией Java-сервлетов в файл в формате JAR или ZIP. Такие файлы имеют расширение «.war» и поэтому называются ещё «WAR-файлами».
Формат файла, или формат данных – спецификация программной единицы, позволяющей хранить и обрабатывать множество однотипных и логически связанных данных записанных в компьютерном файле.
Преимущества WAR-файлов:
Легкость разработки, тестирования и развертывания.
Версию развернутого приложения легко идентифицировать.
Все J2EE-контейнеры поддерживают WAR-файлы. [5]
WAR имеет специфическую структуру каталогов. Верхним уровнем каталога WAR является корень документа приложения. В корень документа записываются страницы JSP, клиентские классы, архивы и статические Web-ресурсы.
Корень документа содержит подкаталог по имени WEB-INF, в котором находятся следующие файлы и каталоги:
web.xml – дескриптор развертывания Web-приложения.
Файлы дескрипторов библиотек тегов.
classes – каталог, который содержит серверные классы – сервлеты, служебные классы и компоненты JavaBeans.
lib – каталог, который содержит архивы библиотек JAR.
СПИСОК ЛИТЕРАТУРЫ
1. Coward, D. Java Servlet Specification [Текст] / D. Coward, Y. Yoshida. – Palo Alto: Sun Microsystems, 2003. – 267 с.
2. Беллиньясо, М. Разработка Web-приложений в среде ASP.NET 2.0 [Текст] / М. Беллиньясо. – Москва: «Диалектика», 2007. – 640 с.
3. Олищук, А.В. Разработка Web-приложений на PHP 5 [Текст] / А.В. Олищук. – Москва: «Вильямс», 2006. – 352 с.
4. Хелмс, Г. Компьютеры: справочное руководство [Текст] / Г. Хелмс. – Москва: «Мир», 1986. – 416 с.
5. Википедия – свободная энциклопедия [Электронный ресурс]. – http://wikipedia.org . – (дата обращения: 12.12.2016).