ИСПОЛЬЗОВАНИЕ WEB-СЕРВИСОВ В JAVA STANDARD EDITION 6 - Студенческий научный форум

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

ИСПОЛЬЗОВАНИЕ WEB-СЕРВИСОВ В JAVA STANDARD EDITION 6

Абросимов С.В. 1
1Балаковский инженерно-технологический институт – филиал федерального государственного автономного образовательного учреждения высшего образования «Национальный исследовательский ядерный университет (МИФИ)»
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF
Для чего создавалась концепция веб-сервисов. К моменту появления этого понятия в мире уже существовали технологии, позволяющие приложениям взаимодействовать на расстоянии, где одна программа могла вызвать какой-нибудь метод в другой программе, которая при этом могла быть запущена на компьютере, расположенном в другом городе или даже стране. Все этого сокращенно называется RPC (Remote Procedure Calling – удаленный вызов процедур). В качестве примеров можно привести технологии CORBA, а для Java – RMI (Remote Method Invoking – удаленный вызов методов). И все вроде в них хорошо, особенно в CORBA, т.к. с ней можно работать на любом языке программирования, но чего-то все же не хватало. Полагаю, что минусом CORBA является то, что она работает через какие-то свои сетевые протоколы вместо простого HTTP, который пролезет через любой firewall.

Идея веб-сервиса заключалась в создании такого RPC, который будет засовываться в HTTP пакеты. Так началась разработка стандарта.

  1. ЧТО ТАКОЕ WEB-СЕРВИС

Web-сервис — это программное обеспечение, которое предоставляет платформенно-независимый доступ к своим данным другим программным продуктам через Интернет, с использованием XML и таких стандартов, как SOAP, WSDL и UDDI.

Для чего могут использоваться Web-сервисы на практике? Представьте фондовую биржу, серверы которой имеют полную информацию о текущих котировках всех ценных бумаг, оборачиваемых на данной бирже. Это очень важная информация, онлайн-доступ к которой может быть очень ценным и полезным для удаленных программных систем. Или другой более близкий простому человеку пример: сервер метеобюро может содержать информацию о погодных условиях в некотором регионе или на всей планете. Эта информация также может быть использована сторонними приложениями [2,3].

Многим часто приходилось видеть информеры погодных сайтов, однако это не самый удобный метод получения реальной информации для корпоративных приложений, так как он ограничивает возможцости оперирования получаемой информацией. С таким информером можно сделать только две вещи: «повесить» у себя на сайте или убрать его с сайта, если он там уже размещен. Но как быть с приложениями, которым необходимо получать исходные данные f сервера метеобюро и обрабатывать их для выполнения каких-либо сложных операций (например, для графического моделирования карт с нанесением соответствующей температуры на регионы)?

Для решения таких проблем сервер фондовой биржи или метеобюро может стать провайдером (поставщиком) Web-сервисов, а приложения, которые получают от них данные через Интернет - потребителями этих данных. Таким образом формируется архитектура клиент-сервер, где поставщик данных является сервером, а потребитель - клиентом, при этом программное обеспечение сервера и клиента не обязательно должно быть совместимым, главное условие - поддержка Web-сервисов.

Обмен между сервером и клиентом производится по стандартным протоколам Интернет, таким, например, как HTTP. Web-сервис сам описывает себя и определяет API взаимодействия с ним. при этом элементы данного API автоматически преобразуются в языковые конструкции для того языка программирования, который использует клиентское приложение. Описание Web-сервисов происходит по спецификации WSDL (Web Services Description Language - язык описания Web-сервисов). Передача самих данных от сервера к клиенту производится в формате SOAP (Simple Object Access Protocol - простой протокол доступа к объектам).

Другими словами, клиентское приложение обращается к файлу WSDL по его URL, то есть обычным GET-методом. При этом оно получает описание методов Web-сервиса и далее может использовать их как свои (то есть без написания дополнитель­ного кода на стороне клиента - Web-сервис становится как бы удаленным продолжением клиентской программы) [2,3].

  1. JAVA STANDARD EDITION

Java Platform, Standard Edition, сокращенно Java SE (ранее Java 2 Standard Edition или J2SE) - стандартная версия платформы Java 2, предназначенная для создания и исполнения апплетов и приложений, рассчитанных на индивидуальное пользование или на использование в масштабах малого предприятия. Не включает в себя многие возможности, предоставляемые более мощной и расширенной платформой Java 2 Enterprise Edition (J2EE), рассчитанной на создание коммерческих приложений масштаба крупных и средних предприятий [2].

Пакеты Java Standard Edition:

Пакет java.lang - содержит фундаментальные классы и интерфейсы, близко привязанные к языку и системе во время выполнения. Сюда входят корневые классы, которые формируют иерархию классов, типы, привязанные к определению языка, основные исключения, математические функции, классы поддержки многопоточности, функции безопасности, а также классы, позволяющие получить информацию относительно операционной системы, на которой выполняется программа.

Основные классы в java.lang:

  • Object - этот класс является корнем иерархии классов в Java;

  • Enum - базовый класс для перечислимого типа (с версии J2SE 5.0);

  • Class - класс является основным в подсистеме интроспекции Java;

  • ClassLoader - абстрактный класс, определяет, как загружаются классы. Ваше приложение может создавать подклассы, расширяющие ClassLoader, реализуя его методы. Это позволяет загружать классы другими способами, нежели тот, которым выполняется обычная загрузка в системе времени выполнения Java. Однако обычно вы не должны этого делать;

  • Throwable - класс является базовым для иерархии классов исключений;

  • Error, Exception, Runtime Exception - базовые классы для каждого подтипа исключений;

  • Thread - класс, содержащий операции над потоками исполнения;

  • String - класс для представления строк и их значений;

  • StringBuffer, Stringbuilder - классы для работы со строками (StringBuilder с версии J2SE 5.0);

  • Comparable - интерфейс для поддержки обобщённого сравнения и упорядочения объектов (с версии J2SE 1.2);

  • Iterable - интерфейс для поддержки улучшенного цикла for с версии J2SE 5.0);

  • Process, Runtime, SecurityManager, System - выполняют «системные операции». Управляют динамической загрузкой классов, созданием внешних процессов, получением информации об окружающей среде (например, времени суток), и следят за выполнением политик безопасности;

  • Math, ScriptMath - содержат основные математические функции, такие, как вычисление синуса, косинуса и квадратного корня (ScriptMath с версии J2SE 1.3);

  • Классы-обёртки над примитивными типами, которые превращают их в объекты;

  • Классы исключений для основных исключительных ситуаций языка и среды исполнения.

Все классы из пакета java.lang автоматически подключаются в каждый исходный файл программы. Явное подключение не требуется.

Java.lang.annotation - в этом пакете определен интерфейс Annotation, а также перечисления ElementType и RetentionPolicy. Java.lang.instrument - пакет определяет средства, которые могут быть использованы для добавления инструментария для разных аспектов выполнения программ. Он определяет интерфейсы Instrumentation и ClassFileTransformer, а также класс ClassDefinition. Java.lang.management - пакет предоставляет поддержку управления виртуальной Машиной Java и исполняющим окружением. Используя средства пакета, вы можете просматривать и управлять различными аспектами выполнения программы. Java.lang.ref - предоставляет возможность взаимодействия со сборщиком мусора, благодаря чему программа может быть предупреждена об изменении числа ссылок на объект или о действиях, производимых сборщиком мусора над объектом [2]. Java.lang.reflect - пакет java.lang.reflect обеспечивает механизм отражения - способность программного обеспечения к самоанализу (то есть получению информации об имеющихся в системе классах, их методах, полях и связях). Отражение - важная возможность, необходимая при использовании компонентов, называемых Java Beans. Java.io - содержит классы для обеспечения файлового ввода-вывода информации, несколько классов абстракции ввода-вывода, а также набор классов для обработки вводимой информации: выделения токенов и так далее. Java.net - cодержит классы, позволяющие приложению работать с сетью, предоставляя абстракции для сетевых адресов, соединений, реализацию сокетов и так далее. Javax.swing - содержит набор графических компонентов, позволяющих создавать графические интерфейсы, работающие по возможности одинаково на всех платформах [2].
  1. JAVA STANDARD EDITION 6

Платформа Java Standard Edition 6 – новая версия платформы Java SE. Любой из семи основных моментов, представленных здесь, мог бы стать достаточной причиной для перехода на новую версию с используемой в настоящее время. Независимо от того, какие области для вас важнее всего, выпуск Java SE 6 – самое время, чтобы бросить новый взгляд на платформу. Давайте рассмотрим основные новшества версии SE 6 [1].

  1.  
    1. Web-сервисы

Возможно, самое большое добавление к набору - появление API Web-сервисов. Вы, скорее всего, знаете, что в Java Platform, Enterprise Edition (Java EE) уже некоторое время развивается направление Web-сервисов, но введение в Java SE 6 основных API из Java EE может быть весьма полезным во многих ситуациях. Мы все видели возникновение в Интернете ряда мощных Web-сервисов, например, предоставляемых eBay или Google, и можем ожидать, что найдутся разработчики, которые займутся созданием клиентов для этих Web-сервисов [1,4].

Если вы новичок в Web-сервисах, основной и единственный API, который вам потребуется - JAX-WS. Особенно хорошо то, что создавать Web-сервисы очень просто. Возьмем метод, добавляющий два числа:

( public class NumberAdderUpperer

{ public int addEmUp(int number1, int number2)

{return number1 + number2;}})

И превратим его в Web-сервис:

(import javax.jws.WebService

@WebService

public class NumberAdderUpperer

{ public int addEmUp(int number1, int number2)

{return number1 + number2;}})

Этот Web-сервис можно сделать доступным через Интернет, просто добавив аннотацию @WebService как часть технологии JAX-WS.

Пример Web-сервиса можно найти в каталоге /samples/Webservices. Он состоит из двух частей. Пример сервера определяет фиктивную версию API eBay. Вы можете запустить эту версию локально на собственной машине, и она будет ожидать запросов об информации по предметам, выставленным на аукцион. Подключиться к примеру сервера можно с помощью примера клиента Web-сервиса, GUI-приложения, использующего JAX-WS API, которое будет выводить предметы по их ID [1].

  1.  
    1. Скриптовые языки

Язык Java – лучший для создания высококачественного долгоживущего кода приложений, который легко поддерживать. Однако есть ситуации, когда разработчикам нужно быстро создавать прототипы частей приложения, или когда имеющееся приложение постоянно эволюционирует (Web-разработчики должны быть хорошо знакомы с такими ситуациями). Три возможности Java SE 6 делают эти сценарии выполнимыми:

  • API позволяет включать скриптовый код в Java-приложения.

  • Коллекцию скриптовых движков на scripting.dev.java.net можно использовать вместе с Java SE 6.

  • В состав Java SE 6 входит движок Rhino JavaScript.

Использовать API довольно просто, особенно при включении в приложение кода на JavaScript, поскольку движок уже включен в JDK. Нужно запомнить только имя класса javax.script.ScriptEngine.

Разработчики, желающие использовать в своих приложениях скриптовые языки, отличные от JavaScript, могут воспользоваться коллекцией скриптовых движков, работающих с Java SE 6, на scripting.dev.java.net. Если это интересует вас, скачайте движок и настройте JDK на работу с ним. На момент создания этой статьи были доступны 22 движка, в том числе для таких популярных языков как as Ruby, Python и Groovy [1,4].

  1.  
    1. Работа с базами данных

Sun JDK впервые включает полностью написанную на Java РСУБД, технологически основанную на Java Database Connectivity (JDBC). Возможно, она покажется вам знакомой, так как основана на СУБД Apache Derby. Любой разработчик, сражавшийся с конфигурированием БД перед использованием, или нуждавшийся в реляционной СУБД, которую можно использовать в процессе разработки приложения (с переходом на промышленную СУБД при развертывании), оценит это нововведение [1].

  1.  
    1. Мониторинг и управление

Когда вы устранили все ошибки в поведении вашего приложения (особенно в случае больших или долгоживущих приложений), могут проявиться более тонкие скрытые проблемы в вашем коде. Эти проблемы могут включать большое или постоянно растущее потребление памяти, или нечасто встречающееся, но потенциально разрушительное зависание многопоточного приложения.

Java Virtual Machine (JVM) обычно изолирует вас от таких эзотерических проблем, но иногда приходится засучить рукава, достать инструменты и залезть под капот. Инструменты, предоставляемые JDK (в каталоге /bin), приведены в таблице 2.

Большое улучшение в Java SE 6 состоит в том, что все инструменты теперь подключаются по требованию. Это значит, что вам больше не нужно перезапускать анализируемое проблемное приложение с различными параметрами командной строки для того, чтобы проанализировать состояние JVM. Эта возможность – хорошее подспорье для диагностики проблем на месте [1,4].

  1.  
    1. Доступ к компилятору

Новые API компилятора обеспечивают программный доступ к компилятору; наиболее важный новый класс – javax.tools.JavaCompilerTool. Этот API выполняет два типа задач.

In-process компиляция исходного кода. Это задача общего назначения, рассчитанная на опытных разработчиков, создающих очень динамичные виды приложений. Хорошим примером приложений такого рода является движок JavaServer Pages (JSP) на платформе Java EE. Когда браузер запрашивает некую JSP-страницу, движок, разбирая JSP, пишет сервлет, затем компилирует код, создает экземпляр сервлета, вызывает его и передает результат работы сервлета обратно браузеру. Возможность выполнять компиляцию программно, а не в отдельном процессе, дает движку JSP больший контроль над процессом и сулит значительное снижение времени компиляции.

Детальный анализ исходного кода внутри приложения. В не зависимости от того, собираетесь вы использовать эту возможность или нет, с сообщениями компилятора об ошибках вы наверняка хорошо знакомы. Кто не встречал чего-то наподобие "try without 'catch' or 'final'" или "Cannot find symbol: myUndeclaredInstanceVariable"? Появление Java Compiler API позволяет опытным разработчикам передать исходный код компилятору, проанализировать его и получить детализированный диагноз всех синтаксических и ссылочных проблем в коде, отображаемом в командной строке. Теперь вы знаете, как NetBeans выводят всплывающие сообщения об ошибках в редакторе кода [1,4].

  1.  
    1. Встраиваемые аннотации

Java-аннотации появились в Java SE 5 как способ подключения метаданных к частям Java-кода. Как можно заметить, другие API в Java SE использовали этот механизм, чтобы упростить программирование приложений. В Java SE 6 мы добавили механизм общего назначения, позволяющий Java-разработчику создавать собственные аннотации и писать маленькие компоненты, названный процессорами аннотаций, к которым компилятор обращается при компиляции, передавая соответствующие части исходного текста, помеченного аннотацией [1].

  1.  
    1. Безопасность

Рассмотрим некоторые важные улучшения механизмов безопасности в Java SE 6. В новой версии появилось несколько совершенно новых API безопасности. Новые Java XML Dsig API предназначены для создания и манипуляций цифровыми подписями согласно стандарту W3C. Они пригодятся в основном разработчикам приложений Web-сервисов. Новые API (из нового пакета new javax.xml.smartcardio) для получения и управления информацией, хранящейся на смарткартах, не являются официальным стандартом для платформы, но имеются в JDK от Sun [1].

ЗАКЛЮЧЕНИЕ

В Java появился такой API, как JAX-RPC. Иначе говоря, есть пакет с набором классов, которые инкапсулируют рассматриваемую технологию. JAX-RPC долго развивался от версии к версии и в конечном итоге превратился в JAX-WS. WS, очевидно, означает Web-Service и можно подумать, что это простое переименование RPC в популярное нынче слово.

Но это не так, так как теперь веб-сервисы отошли от первоначальной задумки и позволяют не просто вызывать удаленные методы, но и просто посылать сообщения-документы в формате SOAP.

Использовать API довольно просто, особенно при включении в приложение кода на JavaScript, поскольку движок уже включен в JDK. Нужно запомнить только имя класса.

Теперь разработчики могут поэкспериментировать с технологией Web-сервисов перед размещением приложений на сервере приложений. Java SE 6 - замечательная платформа для этого. Низкоуровневые элементы в стеке также означают, что разработчики, использующие XML непосредственно в своих приложениях, теперь могут использовать в работе действительно богатый набор API.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1. Технология Клиент-Сервес [Электронный ресурс]. – www.k-press.ru. – (дата обращения 10.12.2016)

  2. Википедия – Свободная энциклопедия [Электронный ресурс]. - ru.wikipedia.org. – (дата обращения 27.11.2016)

  3. NAUCHEBE.NET [Электронный ресурс]. – nauchebe.net. – (дата обращения 10.12.2016)

  4. Записки Искателей, Java 6 Web-service [Электронный ресурс]. – voituk.kiev.ua. – (дата обращения 10.12.2016)

13

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