Диплом: Разработка среды для модульного программного обеспечения с поддержкой удаленного управления

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
2
ОГЛАВЛЕНИЕ
ОГЛАВЛЕНИЕ .................................................................................................... 2
ВВЕДЕНИЕ .......................................................................................................... 3
ГЛАВА 1. ЯЗЫК ПРОГРАММИРОВАНИЯ JAVA И МОДУЛЬНОСТЬ ПО
............................................................................................................................... 6
1.1. Язык программирования Java – возможности и основные
характеристики ................................................................................................. 6
1.2. Модульность ПО – основные понятия, концепции и преимущества 16
ГЛАВА 2. СУЩЕСТВУЮЩИЕ ТЕХНОЛОГИИ ДЛЯ СОЗДАНИЯ
МОДУЛЬНОГО ПО НА ЯЗЫКЕ JAVA .......................................................... 26
2.1. Технология OSGi (Open Services Gateway Initiative) ........................... 26
2.2. Технология JPMS (Java Platform Module System) ................................ 39
ГЛАВА 3. РЕАЛИЗАЦИЯ СРЕДЫ ДЛЯ МОДУЛЬНОГО ПО НА ЯЗЫКЕ
JAVA ................................................................................................................... 45
3.1. Постановка задачи и принципы разработки......................................... 46
3.2. Среда выполнения приложений Alpha ................................................. 52
ЗАКЛЮЧЕНИЕ ................................................................................................. 65
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ ......................................... 70
3
ВВЕДЕНИЕ
Модульный подход к разработке программного обеспечения (ПО),
при котором программы и библиотеки разделяются на некоторое
множество модулей, является одним из основных современных подходов
разработки. Популярность данного подхода объясняется тем, что
модульное ПО обладает более высокими показателями практически по
всем основным характеристикам качества: производительности,
совместимости, удобству использования, надежности, безопасности,
поддерживаемости и переносимости.
Можно выделить четыре этапа развития применения модулей для
ПО, реализованного на языке программирования Java. Первый этап
начинается в 1996 году с момента выхода Java 1.0. На данном этапе
программы и библиотеки состояли из модулей (.jar файлов), но
виртуальная машина Java (JVM) работала с содержимым модулей как с
одним целым. Второй этап начинается в 2000 году с релиза 1 (R1)
спецификации инициативы шлюза открытых сервисов (англ. Open Service
Gateway initiative (OSGi)). Технология OSGi позволила управлять
модулями во время выполнения программы, контролировать доступ к
содержимому каждого модуля и создавать межмодульные сервисы. Третий
этап берет начало в 2008 году и связан с возникновением и развитием
среды Apache Karaf, которая, работая поверх OSGi, предоставила
разработчикам и пользователям удобный интерфейс для работы с
модулями и добавила большое количество часто используемой
функциональности. Четвертый этап начинается 21 сентября 2017 году с
выходом Java 9, которая включает в себя модульную систему для
платформы Java (англ. Java Platform Module System (JPMS)).
Технология OSGi и технология JPMS являются системами
управления модулями и основные задачи данных технологий совпадают,
4
хотя и существуют некоторые отличия. Вследствие того, что JPMS
является неотъемлемой частью Java 9 и последующих версий, можно
утверждать, что с выхода Java 9 использование технологии OSGi и среды
Apache Karaf будет в значительной мере сокращено. Это объясняется тем,
что одновременное использование двух модульных систем негативно
сказывается как на модульном ПО, так и на процессе разработки.
Актуальность разработки среды для модульного программного
обеспечения с поддержкой удаленного управления, работающей поверх
JPMS, определяется двумя факторами. Во-первых, такая среда
предоставляет широкий спектр преимуществ – она содержит общую для
большинства модульных приложений функциональность (которую не
нужно дублировать для каждого проекта), в том числе удаленного
управления средой, позволяет повысить качество всего модульного ПО и
сократить время и стоимость разработки ПО. Во-вторых, для технологии
JPMS такой среды не существует.
Объект исследования работы – модульное программное обеспечение.
Предмет исследования работы – разработка среды для модульного
программного обеспечения с поддержкой удаленного управления.
Цель работы заключается в снижение стоимости и времени
разработки модульного ПО и оптимизации его сопровождения.
Для достижения поставленной цели были определены следующие
задачи:
1. Провести обзор основных характеристик и возможностей языка Java.
2. Изучить модульность ПО – основные понятия, концепции и
преимущества.
3. Рассмотреть технологию OSGi.
4. Рассмотреть технологию JPMS.
5
5. Поставить задачу по разработке среды для модульного ПО с
поддержкой удаленного управления и сформулировать основные
принципы разработки.
6. Спроектировать и реализовать среду выполнения приложений Alpha,
рассмотреть ее реализацию и привести основные сведения по ее
использованию.
Практическая значимость данной работы заключается в следующем:
1. В результате выполнения работы была создана среда, использование
которой позволит снизить стоимость и время разработки модульного
ПО и оптимизировать его сопровождения.
2. Наработан практический опыт использования новой технологии JPMS.
3. Среда была разработана с использованием бесплатных библиотек с
открытым исходным кодом. В результате, эти библиотеки были
изучены и опробованы, что позволяет использовать их в будущем в
качестве замены платного ПО.
При написании работы в большом количестве использовались
англоязычные источники (около 90% всех источников). Причина этого
заключается в том, что официальный язык мира информационных
технологий – английский. Все самые популярные книги и статьи всегда
доступны на английском язык, в то время как на другие языки переводятся
только некоторые из них.
Среди основных литературных источников можно указать книги Г.
Шилдт – «Java. Полное руководство» [18], Б. Мейер – «Основы объектно-
ориентированного программирования» [1] и Альвес Александра де Кастро
– «OSGi в деталях» [2] и ряд электронных ресурсов – официальные сайты
OpenJDK, OSGi, Apache Felix, Apache Karaf и Интернет-энциклопедию
Википедия.
6
ГЛАВА 1. ЯЗЫК ПРОГРАММИРОВАНИЯ JAVA И
МОДУЛЬНОСТЬ ПО
1.1. Язык программирования Java – возможности и основные
характеристики
Язык программирования Java предоставляет широкий спектр
возможностей, вследствие чего он пользуется огромной популярностью,
как среди профессиональных разработчиков, так и среди любителей, а
программы, написанные на Java, используются практически во всех
отраслях экономики. Для того, чтобы раскрыть эти возможности и
объяснить такой успех, необходимо рассмотреть роль и место Java в
современных языках на основе сравнительного анализа.
При проведении анализа будут учитываться следующие
характеристики языков: способ выполнения (компилируемые или
транслируемые), поддерживаемые парадигмы программирования,
типизация (сильная и слабая), круг решаемых задач
(многофункциональные и специального назначения), встроенная
поддержка многопоточности, производительность, платформенность
(поддерживаемые процессоры и операционные системы).
В силу того, что сегодня на рынке программного обеспечения
представлены сотни языков программирования, сравнительный анализ
будет проведен с ближайшими по популярности к Java языками,
определенных с использованием рейтинга компании TIOBE [45].
Рейтингом популярности языков компании TIOBE рассчитывается на
основе количества подготовленных инженеров по всему миру, количеству
курсов и сторонних вендоров. Для расчета рейтинга компания использует
поисковые системы, такие как Google, Bing, Yahoo!, Wikipedia, Amazon,
YouTube и Baidu [56]. Рейтинг десяти самых популярных на момент
написания данной работы языков программирования представлен в
7
таблице 1. Как видно, самым популярным языком является Java. За ним
следуют языки Си и С++.
Апрель 2017
Апрель 2016
Язык программирования
Рейтинги
Изменения
1
1
Java
15.568%
-5.28%
2
2
C
6.966%
-6.94%
3
3
C++
4.554%
-1.36%
4
4
C#
3.579%
-0.22%
5
5
Python
3.457%
+0.13%
6
6
PHP
3.376%
+0.38%
7
10
Visual Basic .NET
3.251%
+0.98%
8
7
JavaScript
2.851%
+0.28%
9
11
Delphi/Object Pascal
2.816%
+0.60%
10
8
Perl
2.413%
-0.11%
Таблица 1. Рейтинг популярности языков программирования [56].
Java была придумана Джеймсом Гослингом, Патриком Наутоном,
Крисом Варфингом, Эдом Фрэнком и Майком Шериданом в компании Sun
Microsystens в 1991. Первоначально язык имел название «Oak», но в 1995
был переименован в «Java». Первоначальной целью было создание
платформо – независимого языка, который мог быть использован для
создания ПО для встроенных систем в различных потребительских
электронных устройствах – тостерах, микроволновых печах и т.п. В таких
устройствах использовались многие различные виды процессоров.
Проблема была в том, что большинство компьютерных языков (того
времени) были разработаны для компиляции на конкретной платформе.
Например, язык С++. Хотя существовала возможность скомпилировать
программу на С++ почти для каждого процессора, необходимо было
наличие полноценного С++ компилятора для такого процессора.
Сложность же в том, что создание компилятора это дорогой и долгий
процесс. К качестве обходного пути была предпринята попытка найти
лучшее решение – создать портируемый, кроссплатформенный язык,
8
который мог работать на различных процессорах и в различных средах.
Результаты этих усилий привели к созданию языка Java [17, c. 3].
Ключевые решения, которые позволяет программе, разработанной на
языке Java работать без каких-либо изменений на различных платформах и
операционных системах – использование виртуальной машины Java (JVM)
и байт-код.
При компиляции исходных кодов на языке Java компилятор создает
не машинный код, как обычно, а байт-код – высоко оптимизированный
набор инструкций, для выполнения виртуальной машиной. Виртуальная
машина является, по сути, интерпретатором байт-кода. Это может
показаться немного странным, так как многие современные языки
разработаны таким образом, чтобы быть скомпилированными в
выполняемый код для повышения производительности. Перевод Java
программы в байт-код значительно упрощает выполнение программы на
различных платформах и операционных системах, так как необходимо
только реализовать одну виртуальную машину для каждой платформы.
Крайне важно отметить, что хотя детали каждой виртуальной машины
будут отличаться от платформы к платформе, они все будут понимать один
и тот же байт-код. Если бы Java программа компилировалась в машинный
код, тогда различные версии одной и той же программы должны были бы
существовать для каждого вида процессора. Таким образом, выполнение
байт-кода виртуальной машины является самым простым способом
создание по-настоящему портируемых программ [18, c. 9].
Java описывают как простой, объектно-ориентируемый,
портируемый, надежный, многопоточный, архитектуро-нейтральный,
интерпретируемый, высокопроизводительный, распределенный и
динамический язык программирования с сильной типизацией [18, с. 10-11].
9
Данный язык часто применяется для разработки финансовых,
информационных, логистических программ и веб-приложений.
Важно отметить, что несмотря на свои отличительные
характеристики Java соответствует духу Си и C++. Например,
программисту, знающему Си и С++, будет легче освоить Java [13, с. 7].
Проведем обзор языков Си и С++, чтобы определить отличия этих
языков от Java.
Язык программирования Cи был разработан Денисом Ритчи в
компании AT&T Bell Laboratories в начале 1970-х годов. Язык не выходил
за пределы компании до конца 1970-х годов, но потом стал быстро
распространяться и приобретать популярность. Это объясняется тем, что
до того времени компиляторы Си не были готовы для коммерческого
использования за пределами компании. Первоначально рост популярности
Си был также стимулирован ростом популярности операционной системы
Unix. Эта операционная система, которая также была разработана в Bell
Laboratories, включала Си как свой «стандартный» язык
программирования. Фактически, более 90% операционной системы было
написано на Си.
По мере того, как язык Си становился более популярным, различные
операционные системы и различные вендоры (число которых росло)
начали продвигать свои собственные компиляторы для языка Си. В начале
1980-х годов появилась необходимость стандартизации языка. В 1983 года
был создан комитет ANSI C для стандартизации и в 1990 году первый
официальный ANSI стандарт языка был опубликован [12, c.1].
Язык Си это многофункциональный, компилируемый язык с
поддержкой императивного, структурного и процедурного
программирования со слабой типизацией. Кроме того, начиная с версии
С11, язык поддерживает многопоточность. Отдельно необходимо отметить
крайне высокую производительность данного языка.
Язык Си является языком высокого уровня. В тоже время, он
обеспечивает возможности, которые позволяют пользователю работать с
аппаратными устройствами и компьютером на более низком уровне. Это
объясняется тем, что хотя Си и является структурным языком общего
назначения, он был первоначально разработан с ориентиром на разработку
системного программного обеспечения. Следовательно, он предоставляет
пользователю большие возможности и гибкость [12, c.1]. Даже в наши дни,
язык Си является одним из самых популярных языков и особенно для
разработки программ для Unix/Linux [9]. Необходимо также отметить, что
по сравнению с такими языками как Java и С++ язык Си легче для
изучения [15, c. 5].
В 1979 году Бьерн Страуструп создал язык программирования С++.
Данный язык задумывался как улучшенная версия языка Си, поэтому он
назвал его «Си с классами». Однако, в 1983 году название было изменено
на С++ (произносится как Си плюс плюс).
С++ это компилируемый, чувствительный к регистру, многоцелевой
язык программирования со статической проверкой типов (проверка типов
осуществляется во время компиляции). Данный язык поддерживает общее,
процедурное и объектно-ориентированное программирование (ООП) [11].
На С++ можно программировать или согласно ООП концепции или
согласно Си стилю. В некоторых случаях, можно применять одновременно
оба подхода. Это только подтверждает, что С++ является гибридным
языком [14].
С++ используется в самых разных видах программ: в системных и
прикладных программах, клиент-серверных программах, в драйверах и
микропрограммном обеспечении (firmware) встроенных систем [19].
В силу того, что язык Си не поддерживает ООП парадигму
программирования, отметим основные различия между Java и С++. Java
является кроссплатформенным языком, а С++ нет. Java поддерживает
только одну парадигму программирования – ООП, а С++ несколько.
Доступ к оборудованию у Java очень ограничен, так как это противоречит
кроссплатформенности, а С++ позволяет работать с аппаратным
обеспечением на любом уровне. Java поддерживает многопоточность с
первых версий, а С++ только начиная с версии C++11 [29]. Время
разработки и отладки программы на языке Java сравнительно ниже чем на
С++. Таким образом, несмотря на то, что круг решаемых Java задач уже
чем у языка С++, эти задачи Java позволяет решить лучше и эффективнее с
экономической точки зрения.
Рассмотрим редакции, версии и основные элементы языка Java.
Существуют три редакции Java: Java Standard Edition (Java SE)
стандартная редакция Java, Java Enterprise Edition (Java EE) – редакция Java
для приложений уровня предприятия, Java Micro Edition (Java ME)
редакция Java для устройств с ограниченными ресурсами.
Java SE содержит большое количество API общего назначения,
спецификацию языка Java и спецификацию виртуальной машины Java. В
качестве примера API можно перечислить следующие пакеты Java SE как
общего, так и специального назначения: java.lang, java.io, java.math,
java.net, java.text, java.util, java.security, java.sql, java.rmi, javax.xml [39].
Java EE это набор спецификаций, который может рассматриваться
как расширение Java SE, цель которого разработка распределенных,
надежных, эффективных и высоко доступных приложений. Подобно тому,
как Java SE обеспечивает API для работы с коллекциями, Java EE
обеспечивает набор инструментов для работы с транзакциями, используя
Java Transaction API (JTA), работу с сообщениями, используя Java Message

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)
Value-based education: ценности в системе образования и способы их реализации на уроке английского языка. Опыт Европейских стран