суббота, 2 марта 2019 г.

8 Что такое библиотека JAVA API и как её использовать

   Вместе с Java поставляются сотни готовых классов, которые содержатся в библиотеке Java API.



   API (application programming interface) - программный интерфейс приложения, интерфейс прикладного программирования - описание способов (набор классов, процедур, функций, структур или констант), которыми одна компьютерная программа может взаимодействовать с другой программой.
   Обычно API входит в описание какого-либо интернет-протокола, программного каркаса (фреймворка) или стандарта вызовов функций операционной системы.
   Часто реализуется отдельной программной библиотекой или сервисом операционной системы.
   Используется программистами при написании приложений.
 
   Число API для платформы Java огромно.
   Есть три типа Java API:
1) официальный основной Java API, содержащийся в JDK или JRE, в одном из вариантов Java. Три варианта платформы Java: Java ME (Micro edition), Java SE (Standard edition) и Java EE (Enterprise edition).
2) дополнительные официальные API, которые можно загрузить отдельно. Спецификации этих API определяются в соответствии с Java Specification Request (JSR), а иногда и некоторые из этих API позднее включаются в основные API платформы (наиболее ярким примером такого рода является Swing).
3) неофициальный API, разработанный третьими сторонами, но не связанный с JSR.
   Третьи стороны могут свободно реализовать любые спецификации JSR для официального API (даже для основного API языка), при условии, что они соответствуют Technology Compatibility Kit (TCK) для данного JSR (TCK представляет собой набор тестов для проверки соответствия реализаций для JSR). Результатом этой свободы является то, что у многих официальных API больше реализаций, чем эталонных реализаций от Sun

   Документацию по Java, в т.ч. API можно посмотреть здесь:
https://docs.oracle.com/en/java/index.html
https://www.oracle.com/technetwork/java/api-141528.html


   Пример использования API:

   Для того, чтобы увидеть в браузере строчку «Hello, world!», достаточно создать HTML-документ с минимальным заголовком и простейшим телом, содержащим данную строку.
   Когда браузер откроет этот документ, программа-браузер передаст имя файла (или уже открытый дескриптор файла) библиотеке, обрабатывающей HTML-документы.
   Та, в свою очередь, при помощи API операционной системы прочитает этот файл и разберётся в его устройстве, затем последовательно вызовет через API библиотеки стандартных графических примитивов операции типа «очистить окошко», «написать „Hello, world!“ выбранным шрифтом».
   Во время выполнения этих операций библиотека графических примитивов обратится к библиотеке оконного интерфейса с соответствующими запросами, и уже эта библиотека обратится к API операционной системы, чтобы записать данные в буфер видеокарты.


   Стандартная библиотека Java представляет собой большой набор классов, которые можно использовать при создании приложений.
   В библиотеке Java API классы сгруппированы в пакеты.

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

   *Пакеты, названия которых начинается с javax изначально появились в Java как расширения, а потом повысили свой статус. 

   Чтобы использовать класс из библиотеки API нужно знать, в каком пакете он находится.
   Примеры пакетов из библиотеки Java API:

   а) Пакет  java.lang
      Этот пакет библиотеки всегда импортируется в любое Java-приложение, поскольку содержит базу, без которой в принципе не возможно программировать
      Содержит классы System (System.out.println), String, Double, Enum, Math (Math.random()) и т. д.

   б) Пакет java.util
      Этот пакет библиотеки содержит набор классов-утилит и интерфейсов, реализующих широко используемые структуры данных - коллекции.
      Название этого пакета библиотеки - Java collections framework.
      Это коллекция стандартных структур данных, таких как списки, карты, очереди, стеки.
      Несмотря на то, что это framework, он не имеет явных критических участков кода и работает как библиотека.
      Содержит, к примеру, класс ArrayList.

   в) Пакеты для создания графического интерфейса
      - java.awt (от Abstract Window Toolkit)
      - javax.swing
      Служит для работы с GUI , содержит классы пользовательского графического интерфейса (GUI)
      Пакет javax.swing, в прошлом являлся  расширением пакета java.awt.
      ПО сравнению с более ранним пакетом библиотеки AWT, Swing предоставляет более гибкие интерфейсные компоненты. В отличие от AWT, компоненты Swing разработаны для кросс-платформенной работы, в то время как компоненты AWT повторяют интерфейс исполняемой платформы без изменений.
      AWT использует только стандартные элементы операционной системы для отображения, т.е. для каждого элемента создается отдельный объект ОС (окно), в связи с чем, AWT не позволяет создавать элементы произвольной формы (возможно использовать только прямоугольные компоненты).
      Элементы управления на основе AWT всегда отображаются поверх Swing-элементов, т.к. все Swing компоненты отображаются на поверхности контейнера.

г) Пакеты для работы с аудиофайлами
   - javax.sound.midi
   - javax.sound.midi.spi
   - javax.sound.sampled
   - javax.sound.sampled.spi

д) Набор пакетов для обеспечения безопасных Интернет-коммуникаций
    Этот набор называется Java Secure Socket Extension, JSSE  - Расширение Java для безопасных сокетов.
   Он предназначен для реализации безопасных сетевых соединений. В JSSE реализованы протоколы SSL и TLS. Библиотека включает функциональность по шифрованию данных, аутентификации сервера и клиента, проверки целостности сообщений.
   - javax.net
   - javax.net.ssl
   - java.security.cert

е) Набор пакетов для контроля (мониторинга) и управления приложениями, системными объектами, устройствами (например, принтерами) и сервис-ориентированными (компьютерными) сетями.
   Данные ресурсы представляются MBean-объектами (от англ. Managed Bean - управляемый Java Bean).
   Этот набор пакетов называется Java Management Extensions, JMX - Управленческие расширения Java.
   Для разработки приложений, использующих данную технологию, может применяться Java Dynamic Management Kit. Предоставляемый интерфейс позволяет динамически управлять классами.

   - javax.management
   - javax.management.loading
   - javax.management.modelmbean
   - javax.management.monitor
   - javax.management.openmbean
   - javax.management.relation
   - javax.management.remote
   - javax.management.remote.rmi
   - javax.management.timer

ж) Пакет java.io
   Применяется для чтения файлов, работающих потоками, объектами класса Pipe и т.д.

з) Пакет java.nio
   Является альтернативой java.io. Эта библиотека отвечает за неблокирующий ввод-вывод, позволяя интенсивно использовать операции ввода-вывода.


   Использовать библиотечные классы в своей программе можно двумя способами:
      1) Набирать полное имя класса из библиотеки Java каждый раз при его использовании.
          К примеру, для класса ArrayList из пакета java.util полное имя выглядит так:
java.util.ArrayList

          Чтобы упростить себе жизнь, используют второй способ:

      2) Предварительно импортировать этот класс, поместив оператор import в начале своего исходного файла:

import java.util.ArrayList;
public class MyClass {...}

   *Исключение – пакет java.lang, который как будто импортируется по умолчанию


   Основными проблемами существующих многоуровневых систем API являются:

      - Сложность портирования программного кода с одной системы API на другую (например, при смене ОС)
      - Потеря функциональности при переходе с более низкого уровня на более высокий: каждое новое усовершенствование и дополнение API создаётся для облегчения выполнения некоторого стандартного набора операций, но при этом может затрудняться, либо становиться принципиально невозможным выполнение некоторых других операций, которые предоставляет более низкий уровень API

Комментариев нет:

Отправить комментарий

Наследование в Java

   «родительское/дочернее»     Наследование (inheritance) - свойство системы, позволяющее описать (создать) новый класс на основе уже су...