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

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

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

Абузова Е.А. 1
1Балаковский инженерно-технологический институт Национального исследовательского ядерного университета МИФИ
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF
ВВЕДЕНИЕ

К моменту появления понятия «веб-сервисов» в мире уже существовали технологии, позволяющие приложениям взаимодействовать на расстоянии, где одна программа могла вызвать какой-нибудь метод в другой программе, которая при этом могла быть запущена на компьютере, расположенном в другом городе или даже стране. Все этого сокращенно называется RPC (Remote Procedure Calling – удаленный вызов процедур) [1].

В качестве примеров можно привести технологии CORBA, а для Java – RMI (Remote Method Invoking – удаленный вызов методов). И все вроде в них хорошо, особенно в CORBA, так как с ней можно работать на любом языке программирования, но чего-то все же не хватало. Вероятней всего, минусом CORBA является то, что она работает через какие-то свои сетевые протоколы вместо простого HTTP, который пролезет через любой firewall [1].

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

  • SOAP. Прежде чем вызвать удаленную процедуру, нужно этот вызов описать в XML файле формата SOAP. SOAP – это просто одна из многочисленных XML разметок, которая используется в веб-сервисах. Все, что мы хотим куда-то отправить через HTTP, сначала превращается в XML описание SOAP, потом засовывается в HTTP пакет и посылается на другой компьютер в сети по TCP/IP [1].

  • WSDL. Есть веб-сервис, то есть программа, методы которой можно удаленно вызывать. Но стандарт требует, чтобы к этой программе прилагалось описание, в котором сказано, что «да, вы не ошиблись - это действительно веб-сервис и можно у него вызвать такие-то такие - то методы». Такое описание представляется еще одним файлом XML, который имеет другой формат, а именно WSDL. То есть, WSDL – это просто XML файл описания веб-сервиса и больше ничего [1].

Так вот, в Java появился такой API, как JAX-RPC. Это означает, что есть пакет с набором классов, которые инкапсулируют рассматриваемую технологию. JAX-RPC долго развивался от версии к версии и в конечном итоге превратился в JAX-WS. WS, очевидно, означает WebService. Далее появился еще JAX-RS для RESTful веб-сервисов.

1. Web - сервис

Веб-служба - это программа, к которой могут обращаться другие программы через Интернет (http). Например, есть функция, которая предоставляет текст в формате HTML. Цель приложения - это веб-браузер, который отображает результаты, и человек сможет легко прочитать этот текст на странице [2].

С другой стороны, целевой аудиторией веб-сервиса являются другие программы или другие веб-службы, которые потребляют данные, обслуживаемые веб-службой. Обычно вывод осуществляется на стандартном языке, который может быть понят другим программам. Из приведенного выше примера, если веб-служба выводит текст в формате XML, тогда другие веб-службы, которые могут читать или понимать XML, могут использовать этот вывод.

Основным преимуществом веб-службы является то, что приложения могут быть написаны на любом языке, но они могут обмениваться данными и обмениваться данными друг с другом через веб-службу. Программные приложения, написанные на разных языках программирования и работающие на различных платформах, могут использовать веб-службы для обмена данными через Интернет (HTTP). Это взаимодействие (например, между Java и Python, или приложениями Windows и Linux) связано с использованием открытых стандартов (XML, SOAP, HTTP) [2].

  • SOAP (простой протокол доступа к объектам);

  • UDDI (универсальное описание, обнаружение и интеграция);

  • WSDL (язык описания веб-сервисов).

Рассмотрим виды веб-служб, в первую очередь, существуют два типа веб-служб, простой протокол доступа к объектам (SOAP) и репрезентативный перенос состояний (REST).

  • Веб-служба SOAP принимает запрос в формате XML и генерирует вывод в формате XML.

  • Веб-служба REST более универсальна и может принимать XML, а также JSON в качестве запроса и генерирует вывод в XML, а также в JSON или даже HTML [2].

2. Java Standard Edition

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

java.lang.annotation - в этом пакете определен интерфейс Annotation, а также перечисления ElementType и RetentionPolicy.

java.lang.instrument - пакет определяет средства, которые могут быть использованы для добавления инструментария для разных аспектов выполнения программ. Он определяет интерфейсы Instrumentation и ClassFileTransformer, а также класс ClassDefinition.

java.lang.management - пакет предоставляет поддержку управления виртуальной Машиной Java и исполняющим окружением. Используя средства пакета, вы можете просматривать и управлять различными аспектами выполнения программы.

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

java.lang.reflect - пакет java.lang.reflect обеспечивает механизм отражения — способность программного обеспечения к самоанализу (то есть получению информации об имеющихся в системе классах, их методах, полях и связях). Отражение — важная возможность, необходимая при использовании компонентов, называемых Java Beans [3].

3. Java Standard Edition 8

Выпуск релиза версии Java 8 состоялся в марте 2014 года. По сравнению с версией Java SE 7 вышедшей в 2011 году, в Java 8 добавлены новые возможности — полная поддержка специального синтаксиса - лямбда выражений, stream — потоки, ключевое слово default, новое API, JavaScript - движок и другие обновления [5].

Список нововведений:

  • Интеграция поддержки Lisp-подобных лямбда-выражений ("замыкания"), развиваемых в рамках проекта Lambda. Расширений стандартных библиотек средствами для параллельного выполнения операций над потоками данных, нацеленных на упрощение написания кода для многоядерных процессоров;

  • Поддержка компактных профилей для развёртывания на оборудовании с ограниченными ресурсами приложений, которым не требуются все компоненты платформы;

  • Новая система сборки на основе Autoconf;

  • Интеграция Nashorn, легковесного и высокопроизводительного движка JavaScript, работающий поверх виртуальной машины Java (JVM);

  • Новый API для работы с датами и временем. Новые Calendar и Locale API;

  • Повторяющиеся аннотации (Repeating Annotations), позволяющие применить один и тот же тип аннотации более одного раза в одном объявлении или применении типа;

  • Тип аннотаций, предоставляющий возможность применения аннотаций везде, где используются типы, а не только при объявлении;

  • Новый пакет с классами java.util.stream, предоставляющий Stream API с поддержкой операций в стиле функционального программирования над потоками элементов;

  • Увеличение производительности HashMaps в условиях возникновения коллизий;

  • Улучшение средств шифрования: Включение по умолчанию TLS 1.2 на стороне клиента. Усиление алгоритмов для шифрования с использованием паролей. Поддержка SNI (Server Name Indication) в JSSE Server для обеспечения доступа через шифрованное соединение к виртуальным хостам на одном IP. Поддержка хэширования SHA-224 и блочного шифра AEAD (Authenticated Encryption with Associated Data). Новый класс java.security.cert.PKIXRevocationChecker для настройки проверки отзыва сертификатов X.509. Поддержка аппаратного ускорения шифрования AES на процессорах Intel;

  • Многочисленные улучшения в JavaFX, включая новые элементы управления DatePicker и TreeTableView, класс SwingNode для встраивания контента Swing, новая тема оформления Modena, пакет javafx.print с API для вывода на печать, класс WebView, класс ScheduledService, поддержка архитектуры ARM, существенное расширение средств для работы с 3D-графикой (3D-формы, камера, освещение, субсцены, материалы, сглаживание);

  • Включение в состав Java DB 10.10;

  • В пакеты java.lang и java.util добавлены средства для параллельной сортировки массивов и функции кодирования/декодирования Base64 [5].

Oracle выпустила JDK 8, готовой к использованию реализации Java SE 8 Platform Specification. Эта версия включает самое крупное обновление модели программирования Java со времени выхода платформы в 1996 году. Пакет JDK 8 разрабатывался при активном участии сообщества OpenJDK Community.

Корпорация Oracle также анонсировала выход комплекса продуктов Oracle Java SE Embedded 8, использующих новые функции Java SE 8 и оптимизированных для встраиваемых систем категории от среднего до высшего класса. Новые версии Java SE 8 и Java ME 8 находятся на прямом пути сближения друг с другом.

Используя единую платформу Java 8 для встраиваемых устройств, настольных систем, серверов центра обработки данных и инфраструктуры облачных вычислений, клиенты смогут разворачивать приложения быстрее, обрабатывать и анализировать данные «на лету» и максимально оперативно реагировать на события [5].

Реализации Oracle Java Embedded, использующие преимущества кросс-платформенности Java, призваны повысить гибкость аппаратных средств, расширить выбор платформ, облегчить переносимость (портируемость) приложений и продлить жизненный цикл продуктов.

Версия Java SE 8 является результатом совместной разработки инженеров Oracle и членов мирового сообщества разработчиков Java через OpenJDK Community и JCP.

Java SE 8 позволяет повысить эффективность труда разработчиков и значительно улучшить производительность приложений за счет уменьшения повторяющихся типовых частей программного кода (boilerplate code), улучшения функций коллекций и аннотаций, упрощения моделей параллельного программирования и оптимизации использования возможностей современных многоядерных процессоров [5].

Главными новинками комплекта средств разработки JDK 8 являются: поддержка лямбда - выражений, развиваемых в рамках проекта Project Lambda (JSR 335); механизм Nashorn JavaScript Engine; набор «компактных профилей» Compact Profiles; а также удаление области памяти "permanent generation" из виртуальной машины HotSpot JVM. А полный список новых функций и возможностей JDK 8 весьма широк.

Платформа разработки Oracle JDK 8 уже продемонстрировала рекордную производительность для четырехсокетных систем на Intel-серверах NEC и двухсокетных систем на серверах Oracle SPARC T5, показав выигрыш в производительности от 12% до 41% по сравнению с JDK 7 на той же конфигурации Oracle (результаты теста NEC; результаты теста Oracle) [5].

Новые функции и усовершенствования клиента Java также доступны как часть новейшей версии JavaFX в составе JDK 8. Нововведения и улучшения в JavaFX включают: встраиваемый стек специализированной графики; новые элементы управления пользовательским интерфейсом; новую тему оформления Modena; функции, позволяющие разработчикам встраивать контент Swing в приложения JavaFX; новые функции 3D-графики; и дополнительную поддержку HTML 5 [5].

Обратная совместимость Java SE 8 с предыдущими версиями платформы позволяет сохранить наработанные приемы разработки программного обеспечения Java и защитить инвестиции в технологии Java [5].

4. Web - сервис в Java SE 8

XML (расширяемый язык разметки) — это мета - язык разметки, широко используемый в настоящее время. XML разработан консорциумом World Wide Web в комитете, возглавляемом Джоном Босаком (Jon Bosak). В настоящее время XML широко используется для передачи данных между программами [4].

Модель обработки XML описывает шаги-операции, которые должно выполнить приложение для обработки полной XML; приложения, которые реализуют такую модель, принято называть XML-парсерами. Можно достаточно просто интегрировать любой XML-парсер в любые Java-приложения с помощью Java API for XML Processing (JAXP). JAXP позволяет приложениям разбирать и преобразовывать XML-документы с помощью API, который не зависит от определенной реализации XML-процессора. Благодаря plug-in- подобному механизму разработчики могут менять реализацию XML-процессора (XML-парсер) на другую без необходимости изменять код самого приложения [4].

Спецификация API Java Standard Edition 8:

  • java.applet - обеспечивает классы, необходимые, чтобы создать апплет и классы, которые апплет использует, чтобы связаться с его контекстом апплета.

  • java.awt - содержит все классы для того, чтобы создать пользовательские интерфейсы и для рисования графики и изображений.

  • java.awt.color - обеспечивает классы для цветовых пространств.

  • java.awt.datatransfer - обеспечивает интерфейсы и классы для того, чтобы передать данные между и в пределах приложений.

  • java.awt.dnd - перетащите и Отбрасывание является жестом непосредственного управления, найденным во многих системах графического интерфейса пользователя, который обеспечивает механизм, чтобы передать информацию между двумя объектами, логически связанными с элементами представления в GUI.

  • java.awt.event - обеспечивает интерфейсы и классы для того, чтобы иметь дело с различными типами событий, запущенных компонентами AWT.

  • java.awt.font - обеспечивает классы и интерфейс, касающийся шрифтов.

  • java.awt.geom - обеспечивает Java 2-D классы для определения и выполнения операций на объектах, связанных с двумерной геометрией.

  • java.awt.im - обеспечивает классы и интерфейсы для входной платформы метода.

  • java.awt.im.spi - обеспечивает интерфейсы, которые включают разработке входных методов, которые могут использоваться с любой средой выполнения Java.

  • java.awt.image - обеспечивает классы для создания и изменения изображений. И другие.

ЗАКЛЮЧЕНИЕ

В версии Java SE 8 внедрены значительные усовершенствования, оказывающие влияние на технологии и прикладные программные интерфейсы API, образующие ядро платформы Java. Многие из прежних принципов и приемов программирования на Java больше не нужны, а такие новые средства, как лямбда – выражения, ссылки на методы, повторяемые аннотации, аннотации на типы данных и другие повышают производительность труда программистов.

СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ

1. info JavaRush [Электронный ресурс] Веб-сервисы. // URL: http://info.javarush.ru/eGarmin/2015/03/14/Веб-сервисы-Шаг-1-Что-такое-веб-сервис-и-как-с-ним-работать-.html(дата обращения 15.12.2017)

2. IMPRIUM [Электронный ресурс] Что такое веб - сервис ? // URL: https://imprium.ru/articles/web-service (дата обращения 15.12.2017)

3. WIKI [Электронный ресурс] Java Platform, Standard Edition// URL: https://www.wikiplanet.click/enciclopedia/RU/Java_Platform,_Standard_Edition (дата обращения 15.12.2017)

4. Java [Электронный ресурс] API Java™ для XML, Обрабатывающего (JAXP) // URL: http://spec-zone.ru/RU/Java/Docs/8/technotes/guides/xml/jaxp/index.html (дата обращения 15.12.2017)

5. ICTONLINE [Электронный ресурс] Новая версия Java SE 8 предлагает существенно обновленные модели программирования // URL: http://ict-online.ru/news/n103778// (дата обращения 15.12.2017)

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