ОБЗОР И ИСПОЛЬЗОВАНИЕ WAR АРХИВОВ - Студенческий научный форум

IX Международная студенческая научная конференция Студенческий научный форум - 2017

ОБЗОР И ИСПОЛЬЗОВАНИЕ WAR АРХИВОВ

Татаринцев Е.М. 1
1Балаковский инженерно-технологический институт – филиал федерального государственного автономного образовательного учреждения высшего образования «Национальный исследовательский ядерный университет (МИФИ)»
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF
Web Archive или Web Application Archive – спецификация структуры данных, записанных в компьютерном файле, описывающая, как полное веб-приложение упаковывается в соответствии со спецификацией Java-сервлетов в файл в формате JAR или ZIP. Такие файлы имеют расширение «.war» и поэтому называются ещё «WAR-файлами».

Веб-приложение – клиент-серверное приложение, в котором клиентом выступает браузер, а сервером – веб-сервер. Логика веб-приложения распределена между сервером и клиентом, хранение данных осуществляется, преимущественно, на сервере, обмен информацией происходит по сети.

Компьютерная, или вычислительная сеть – система, обеспечивающая обмен данными между вычислительными устройствами. Для передачи информации могут быть использованы различные виды электрических и световых сигналов или электромагнитного излучения.

Сервлет является интерфейсом 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:

  1. Применение технологии трансляции байт-кода в машинный код непосредственно во время работы программы с возможностью сохранения версий класса в машинном коде.

  2. Широкое использование платформенно-ориентированного кода в стандартных библиотеках.

  3. Аппаратные средства, обеспечивающие ускоренную обработку байт-кода.

По данным сайта 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 существует несколько основных семейств технологий:

  1. Java SE – Java Standart Edition, основное издание Java, содержит компиляторы, API, Java Runtime Environment; подходит для создания пользовательских приложений, в первую очередь – для настольный систем.

  2. Java EE – Java Enterprise Edition, представляет собой набор спецификаций для создания программного обеспечения уровня предприятия.

  3. Java ME – Java Micro Edition, создана для использования в устройствах, ограниченных по вычислительной мощности, например, в мобильных телефонах, КПК, встроенных системах.

  4. JavaFX – технология, являющаяся следующим шагом в эволюции Java как Rich Client Platform; предназначена для создания графических интерфейсов корпоративных приложений и бизнеса.

  5. Java Card – технология предоставляет безопасную среду для приложений, работающих на смарт-картах и других устройствах с очень ограниченным объемом памяти и возможностями обработки.

1.3. Основные возможности

  1. Автоматическое управление памятью, или сборка мусора – одна из форм автоматического управления памятью, который периодически освобождает память, удаляя объекты, которые уже не будут востребованы приложениями.

  2. Расширенные возможности обработки исключительных ситуаций.

  3. Богатый набор средств фильтрации ввода-вывода.

  4. Набор стандартных коллекций: массив, список, стек и прочие.

  5. Наличие простых средств создания сетевых приложений.

  6. Наличие классов, позволяющих выполнять HTTP-запросы и обрабатывать ответы.

  7. Встроенные в яз средства создания многопоточных приложений, которые потом были портированы на многие языки.

  8. Унифицированный доступ к базам данных:

    1. На уровне отдельных SQL-запросов – на основе JDBC, SQLJ.

    2. На уровне концепции объектов, обладающих способностью к хранению в базе данных – на основе Java Data Object и Java Persistence API.

  9. Поддержка обобщений.

  10. Поддержка лямбд, замыканий, встроенные возможности функционального программирования.

  11. Множество вариантов реализации многопоточных программ.

1.4. Java и Microsoft

Компанией Microsoft была разработана собственная реализация виртуальной машины Java, включавшаяся в состав различных операционных систем, начиная с Windows 98.

Microsoft Java Virtual Machine имела существенные отличия от Sun Java, во многом ломающие основопологающую концепцию переносимости программ между разными платформами:

  1. Отсутствие поддержки программного интерфейса удаленного вызова процедур.

  2. Отсутствие поддержки технологии стандартного механизма для запуска кода – Java Native Interface.

  3. Наличие нестандартных расширений, таких, как средства интеграции 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-архив можно следующими способами:

  1. Паковщиком, входящим в состав J2EE SDK.

  2. Выполнив в Apache Ant задачу «war».

  3. Выполнив в Apache Maven команду «mvn clean install».

  4. 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-файлов:

  1. Легкость разработки, тестирования и развертывания.

  2. Версию развернутого приложения легко идентифицировать.

  3. Все J2EE-контейнеры поддерживают WAR-файлы. [5]

WAR имеет специфическую структуру каталогов. Верхним уровнем каталога WAR является корень документа приложения. В корень документа записываются страницы JSP, клиентские классы, архивы и статические Web-ресурсы.

Корень документа содержит подкаталог по имени WEB-INF, в котором находятся следующие файлы и каталоги:

  1. web.xml – дескриптор развертывания Web-приложения.

  2. Файлы дескрипторов библиотек тегов.

  3. classes – каталог, который содержит серверные классы – сервлеты, служебные классы и компоненты JavaBeans.

  4. 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).

Просмотров работы: 885