Главная страница

вкр. Диплом. Фаткуллин А. А


Скачать 1.1 Mb.
НазваниеФаткуллин А. А
Дата01.05.2023
Размер1.1 Mb.
Формат файлаdocx
Имя файлаДиплом.docx
ТипДиплом
#1100407
страница3 из 6
1   2   3   4   5   6

Описание предметной области


Знакомство с разработкой в области приложений под операционную систему Android, предоставляет отличную возможность по написанию программ для мобильных устройств. Android это набор программ с открытым исходным кодом, который включает операционную систему, подпрограммное обеспечение и ключевые мобильные приложения вместе с библиотеками API, предназначенными для написания новых программ, определяющих визуальное представление и функционал мобильных устройств. Самые разнообразные мобильные устройства со временем снабжались такими мощными инструментами, как камера, медиа-плеер, навигатор, сенсорный дисплей. С внедрением новых технологий мобильный телефон превратился в нечто большее, чем просто устройство для звонков. При этом программная платформа и среда разработки отставали от бешеного темпа развития технологий. До недавнего времени мобильные телефоны работали под управлением закрытых платформ, построенных на основе запатентованных операционных систем, для чего требовались запатентованные инструменты разработки. Сами же телефоны функционировали с оригинальным программным обеспечением гораздо лучше, чем со сторонним. Это создавало искусственные препятствия для программистов, которые рассчитывали на использование более мощного аппаратного обеспечения мобильных устройств.

В случае с Android встроенное ПО написано на том же самом API, что и программы сторонних разработчиков, при этом время для исполнения и тех, и других одинаково. Данное API позволяет получить доступ к сенсорному управлению, навигационным сервисам, фоновым и картографическим процессам, реляционным базам данных, двухмерной и трехмерной графике, к функциям видеозаписи, межпрограммного взаимодействия. В распоряжении разработчика приложений для Android достаточно мощное API и качественная справочная документация. Он может стать членом огромного сообщества, ему не нужно тратиться на программное обеспечение или рекламу своего продукта. С ростом популярности мобильных устройств открываются великолепные перспективы разрабатывать инновационные мобильные приложения, причем с любым опытом программирования. Android — одна из операционных систем нового поколения, созданных для работы с аппаратным обеспечением современных мобильных устройств. На сегодняшний день Windows Mobile и Apple iPhone предлагают достаточно мощные и более простые в использовании среды разработки мобильных приложений. Однако в отличие от Android это запатентованные операционные системы, в которых в определенных случаях приоритет отдается встроенному ПО, а не приложениям сторонних программистов. Кроме того, эти операционные системы ограничивают возможности взаимодействия приложений с данными телефона, а также ограничивают или контролируют процесс распространения сторонних приложений, созданных для данных платформ. Android дает новые возможности для мобильных приложений, предлагая открытую среду разработки, построенную на открытом ядре Linux. У всех приложений есть доступ к аппаратным средствам устройства, для чего используются специальные серии API-библиотек.

Кроме того, здесь включена полная и контролируемая поддержка взаимодействия приложений. На платформе Android все программы имеют одинаковый статус. Сторонние приложения написаны на том же API, что и встроенное ПО, при этом во всех программах одинаковое время исполнения. Пользователи могут удалять или заменять встроенные ПО на альтернативные сторонние разработки, например, игровое приложение или рабочий стол. История Android началась в далеком 2002 году, когда корпорация Google заинтересовались наработками Энди Рубина и решила сделать из этого большой проект. И в 2007 году Google решил организовать большой альянс разработчиков мобильных устройств с целью продвигать Android, как 7 операционную систему для телефонов. Как мы видим на сегодняшний день это у них отлично получилось. Android — операционная система для смартфонов, планшетов, электронных книг, цифровых проигрывателей, наручных часов, игровых приставок, нетбуков, смартбуков и других устройств. Основана на ядре Linux и собственной реализации виртуальной машины Java от Google. Архитектуру Android принято делить на четыре уровня: уровень ядра; уровень библиотек и среды выполнения; уровень каркаса приложений; уровень приложений. На конференции для разработчиков в мае 2017 года Google объявила, что за всю историю Android было активировано более 2 млрд Android-устройств. Прогнозы относительно данной платформы положительные. Немаловажными аспектами роста динамики явились такие характеристики как, открытость системы, возможность вносить изменения в основные приложения, возможность быстрой и легкой разработки. Поэтому выбор разработки приложения для Android является очень актуальным. Разработчику, работающему с платформой Android дается возможность писать код на Java абстрагируясь от ядра.

У данной операционной системы имеются такие плюсы как: фреймворк, имеющий широкий набор API для созданий разнообразных видов приложений и дающий возможность повторного использования и замены компонентов, предлагаемые платформой и другими приложениями. А также наличие виртуальной машины Dalvik, обеспечивающий запуск приложений. Кроме того инструментами Android являются база данных SQLite, 2D и 3D графика, Media Player, коммуникации, протоколы обмена и различные библиотеки. Компоненты приложения являются кирпичиками, из которых состоит приложение для Android. Каждый компонент представляет собой отдельную точку, через которую система может войти в приложение. Не все компоненты являются точками входа для пользователя, а некоторые из них зависят друг от друга. При этом каждый компонент является самостоятельной структурной единицей и играет определенную роль — каждый из них представляет собой уникальный элемент структуры, который определяет работу приложения в целом. Компоненты приложения можно отнести к одному из четырех типов. Компоненты каждого типа предназначены для определенной цели, они имеют собственный жизненный цикл, который определяет способ создания и прекращения существования компонента.

Четыре типа компонентов: Activity представляет собой один экран с пользовательским интерфейсом. Например, в приложении для работы с электронной почтой одна операция может служить для отображения списка новых сообщений, другая – для составления сообщения и третья операция – для чтения сообщений. Несмотря на то что операции совместно формируют связное взаимодействие пользователя с приложением по работе с электронной почтой, каждая из них не зависит от других операций. Любые из этих операций могут быть запущены другим приложением (если это позволяет приложение по работе с электронной почтой). Например, приложение для камеры может запустить операцию в приложении по работе с электронной почтой, которая составляет новое сообщение, чтобы пользователь мог отослать фотографию; Service представляет собой компонент, который работает в фоновом режиме и выполняет длительные операции, связанные с работой удаленных процессов. Служба не имеет пользовательского интерфейса. Например, она может воспроизводить музыку в фоновом режиме, пока пользователь работает в другом приложении, или же она может получать данные по сети, не блокируя взаимодействие пользователя с операцией. Служба может быть запущена другим компонентом, который затем будут взаимодействовать с ней, – например операцией; Content provider управляет общим набором данных приложения. Данные можно хранить в файловой системе, базе данных SQLite, в Интернете или любом другом постоянном месте хранения, к которому у вашего приложения имеется доступ. Посредством поставщика контента другие приложения могут запрашивать или даже изменять данные (если поставщик контента позволяет делать это). Например, в системе Android есть поставщик контента, который управляет информацией контактов пользователя. Любое приложение, получившее соответствующие разрешения, может запросить часть этого поставщика контента (например ContactsContract.Data), для чтения и записи сведений об определенном человеке; Broadcast receiver представляет собой компонент, который реагирует на объявления распространяемые по всей системе. Многие из этих объявлений рассылает система — например объявление о том, что экран выключился, аккумулятор разряжен или был сделан фотоснимок. Объявления также могут рассылаться приложениями, — например, чтобы сообщить другим приложениям о том, что какие-то данные были загружены на устройство и теперь готовы для использования. Несмотря на то, что приемники широковещательных сообщений не имеют пользовательского интерфейса, они могут создавать уведомления в строке состояния, чтобы предупредить пользователя о событии "рассылка объявления". Однако чаще всего они являются просто "шлюзом" для других компонентов и предназначены для выполнения минимального объема работы. Например, они могут инициировать выполнение службой определенных действий при возникновении события. Уникальной особенностью системы Android является то, что любое приложение может запустить компонент другого приложения. Например, предоставить пользователю возможность фотографировать, используя камеру устройства, то, поскольку наверняка имеется другое приложение, которое может выполнить это действие, вместо того чтобы разработать операцию фотографирования в своем приложении, вы можете вызвать такое приложение. Вам не нужно внедрять код из приложения для камеры или даже устанавливать на него ссылку. Вместо этого вы можете просто запустить операцию фотографирования из приложения для камеры. По завершении этой операции фотография будет возвращена в ваше приложение, и ее можно будет использовать. Для пользователя это будет выглядеть как одно приложение. Когда система запускает компонент, она запускает процесс для этого приложения (если он еще не был запущен) и создает экземпляры классов, которые требуются этому компоненту. Например, если ваше приложение запустит операцию фотографирования в приложении для камеры, эта операция будет выполняться в процессе, который относится к этому стороннему приложению, а не в процессе вашего приложения. Поэтому, в отличие от приложений для большинства других систем, в приложениях для Android отсутствует единая точка входа (например, в них нет функции main()). Поскольку система выполняет каждое приложение в отдельном процессе с такими правами доступа к файлам, которые ограничивают доступ в другие приложения, ваше приложение не может напрямую вызвать компонент из другого приложения. Это может сделать сама система Android. Поэтому, чтобы вызвать компонент в другом приложении, необходимо сообщить системе о своем намерении (Intent) запустить определенный компонент. После этого система активирует для вас этот компонент.
Компоненты трех из четырех возможных типов — операции, службы и приемники широковещательных сообщений — активируются асинхронным сообщением, которое называется Intent (намерение). Объекты Intent связывают друг с другом отдельные компоненты во время выполнения, будь то это компоненты вашего или стороннего приложения (эти объекты Intent можно представить себе в виде мессенджеров, которые посылают другим компонентам запрос на выполнение действий). Объект Intent создается с помощью объекта Intent, который описывает запрос на активацию либо конкретного компонента, либо компонента конкретного типа — соответственно, намерение Intent может быть явным или неявным. Для операций и служб Объект Intent определяет действие, которое требуется выполнить (например, просмотреть (view) или отправить (send) что-то), а также может указывать URI (Uniform Resource Identifier – унифицированный идентификатор ресурса) данных, с которыми это действие нужно выполнить (помимо прочих сведений, которые нужно знать запускаемому компоненту). Например, объект Intent может передавать запрос на выполнение операции "показать изображение" или "открыть вебстраницу". В некоторых ситуациях операцию можно запустить, чтобы получить результат. В этом случае операция возвращает результат также в виде объекта Intent (например, можно отправить сообщение Intent, чтобы дать пользователю возможность выбрать контакт и вернуть его вам — в ответном сообщении Intent будет содержаться URI, указывающий на выбранный контакт). Для приемников широковещательных сообщений Intent просто определяет передаваемое объявление (например, широковещательное сообщение о низком уровне заряда аккумулятора содержит только строку "аккумулятор разряжен").

Компоненты четвертого типа – поставщики контента – сообщениями Intent не активируются. Они активируются по запросу от ContentResolver. Процедура определения контента (content resolver) обрабатывает все прямые транзакции с поставщиком контента, с тем, чтобы этого не пришлось делать компоненту, который выполняет транзакции с поставщиком. Вместо этого он вызывает методы для объекта ContentResolver. Это формирует слой, абстрагирующий (в целях безопасности) поставщика контента от компонента, запрашивающего информацию. Для запуска компонента приложения системе Android необходимо знать, что компонент существует. Для этого она читает файл AndroidManifest.xml приложения (файл манифеста). В этом файле, который должен находиться в корневой папке приложения, должны быть объявлены все компоненты приложения. Помимо объявления компонентов приложения, манифест служит и для других целей, среди которых: указание всех полномочий пользователя, которые требуются приложению, например разрешения на доступ в Интернет или на чтение контактов пользователя; объявление минимального уровня API, требуемого приложению, с учетом того, какие API-интерфейсы оно использует; объявление аппаратных и программных функций, которые нужны приложению или используются им, например камеры, службы Bluetooth или сенсорного экрана; указание библиотек API, с которыми необходимо связать приложение (отличные от API-интерфейсов платформы Android), например библиотеки Google Maps. Основная задача манифеста – это информировать систему о компонентах приложения. Существует огромное количество устройств, работающих под управлением Android, и не все они имеют одинаковые функциональные возможности. Чтобы ваше приложение не могло быть установлено на устройствах, в которых отсутствуют функции, необходимые приложению, важно четко определить профиль для типов устройств, поддерживаемых вашим приложением, указав требования к аппаратному и программному обеспечению в файле манифеста.

Эти объявления по большей части носят информационный характер, система их не читает. Однако их читают внешние службы, например Google Play, с целью обеспечения фильтрации для пользователей, которые ищут приложения для своих устройств. Java Development Kit –это кроссплатформенный интерактивный пакет созданный для разработчиков, работающих на языке Java. Комплект состоит из нескольких компонентов, таких как компилятор java, стандартные библиотеки, примеры и шаблоны, также утилиты необходимые для работы. Система Android предоставляет разностороннюю платформу приложений, на основе которой можно создавать инновационные приложения и игры для мобильных устройств в среде языка Java. Наибольшей популярностью пользуются приложения для Android, разработанные на программной платформе Java. Использование этого языка дает следующие преимущества: богатый функционал; кроссплатформенность; простое обновление программного обеспечения; создание гибридных приложений. Java — полностью объектно-ориентированный язык, отвечая потребностям возникшей интерактивной среды, Java предоставляет средства, упрощающие создание прикладных программ с распределенной архитектурой. Первоначально он назывался Oak, но в 1995 году, когда за его продвижение на рынке взялись маркетологи, он был переименован в Java. Как это ни удивительно, на первых порах сами разработчики языка не ставили перед собой задач разработки интернет - приложений. Их целью было создание платформенно - независимого языка, на котором можно было бы писать встраиваемое программное обеспечение для различной бытовой аппаратуры с микропроцессорным управлением, в том числе тостеров, микроволновых печей и пультов дистанционного управления. На сегодняшний день создание программного обеспечения представляет собой чрезвычайно тяжелое занятие. Трудности связаны с разнообразием архитектур машин, операционных систем и графических оболочек. Кроме того, приложения должны работать в распределенных системах.

Стремительный рост технологий, связанных с Интернетом и "электронной коммерцией", дополнительно усложняют эту задачу. Модный ныне объектно-ориентированный подход сам по себе не решает этих проблем, более того, часто привносит новые. Именно система программирования на основе языка Java(TM) обладает следующими характеристиками: язык программирования объектно-ориентирован, в то же время довольно прост для освоения -цикл разработки приложений сокращен за счет того, что система построена на основе интерпретатора -приложение получается автоматически переносимым между множеством платформ и операционных систем за счет встроенной системы сборки мусора программист освобождается от необходимости явного управления памятью -в интерактивном графическом приложении удается достичь высокой производительности (быстрого отклика на ввод пользователя) за счет встроенной в систему многопоточности-приложение легко сопровождается и модифицируется, т.к. модули могут быть загружены с сети -в приложения встроена система безопасности, не допускающая незаконного доступа и проникновения вирусов. Система Java создана на основе «простого» языка программирования, техника, использования которого близка к общепринятой, и обучение которому не требует значительных усилий. Java как язык программирования является объектно-ориентированной с момента основания. Кроме того программист с самого начала обеспечивается набором «стандартных» библиотек, обеспечивающих функциональность от стандартного ввода/вывода и сетевых протоколов до графических пользовательских интерфейсов. Эти библиотеки легко могут быть расширены. Несмотря на то, что язык С++ был отвергнут, синтаксис языка Java максимально приближен к синтаксису С++. Это делает язык знакомым широкому кругу программистов. В то же время из языка были удалены многие свойства, которые делают С++ излишне сложным для пользования, не являясь абсолютно необходимыми. В результате язык Java получился более простым и органичным, чем С++.

Надежность и безопасность Java существенно облегчает создание надежного программного обеспечения. Кроме исчерпывающей проверки на этапе компиляции, система предусматривается анализ на этапе выполнения. Сам язык спроектирован так, чтобы вырабатывать у программиста привычку писать "правильно". Модель работы с памятью, в которой исключено использование указателей, делает невозможными целый класс ошибок, характерных для С и С++. В силу того, что Java предназначена для работы в распределенной среде, безопасность становится чрезвычайно важной проблемой. Требования безопасности определяют многие черты как языка, так и реализации всей системы. Независимость от архитектуры и переносимость. Компилятор Java производит байт-коды, т.е. модули приложения имеют архитектурно-независимый формат, который может быть проинтерпретирован на множестве разнообразных платформ. Это уже не исходные тексты, но еще не платформно-зависимые машинные коды. Следующий шаг - "замораживание" стандарта на формат основных встроенных типов данных. Программа, созданная на одной платформе, работает на всех остальных. Этот стандарт фиксирован в документе, описывающем Java Virtual Machine. Стандарт может быть реализован на любой аппаратно-программной платформе, поддерживающей многопоточность. Производительность Схема работы системы и набор байт-кодов виртуальной машины Java таковы, что позволяют достичь высокой производительности на этапе выполнения программы: анализ кодов на соблюдение правил безопасности производится один раз до запуска кодов на выполнение, в момент выполнения таких проверок уже не нужно, и коды выполняются максимально эффективно; работа с базовыми типами максимально эффективна, для операций с ними зарезервированы специальные байт-коды методы в классах не обязательно связываются динамически автоматический сборщик мусора работает отдельным фоновым потоком, не замедляя основную работу программы, но в то же время, обеспечивая своевременный возврат свободной памяти в систему; стандарт предусматривает возможность написания критических по производительности участков программы в машинных кодах.

Интерпретируемая природа языка позволяет сделать фазу линкования простой, инкрементальной и, следовательно, быстрой. Это резко сокращает цикл разработки и тестирования программных фрагментов. Многопотоковость позволяет выполнять в рамках одного приложения несколько задач одновременно. Это становится особенно актуально в современных распределенных приложениях, когда процессы сетевого обмена могут идти одновременно и асинхронно. При этом программа продолжает реагировать на ввод информации пользователем без неприятных задержек.

Многопотоковость поддерживается на уровне языка - часть примитивов синхронизации встроена в систему реального времени, а библиотека содержит базовый класс Thread. К тому же системные библиотеки написаны thread-safe, т.е. все они могут быть использованы в многопотоковых приложениях. Система обеспечивает динамическую сборку программы. Классы подгружаются по мере необходимости, причем загружены они могут быть с любой точки сети, что позволяет сделать внесение изменений в приложения прозрачным для пользователя. Пользователь может быть уверен, что всегда работает со свежей версией приложения. Полная система Java включает в себя готовый набор библиотек, который можно разбить на следующие пакеты: java.lang - базовый набор типов, отраженных в самом языке. Этот пакет обязательно входит в состав любого приложения. Содержит описания классов Object и Class, а также поддержку многопотоковости, исключительных ситуаций, оболочку для базовых типов, а также некоторые фундаментальные классы. java.io - потоки и файлы произвольного доступа. Аналог библиотеки стандартного ввода-вывода системы UNIX. Поддержка сетевого доступа (sockets, telnet, URL) содержится в пакете java.net. -java.util - классы-контейнеры (Dictionary, HashTable, Stack) и некоторые другие утилиты. Кодирование и декодирование.

Классы Date и Time. java.awt - Abstract Windowing Toolkit, архитектурно-независимый оконный интерфейс, позволяющий запускать интерактивные оконные Java приложения на любой платформе. Содержит базовые компоненты интерфейса, такие как события, цвета, фонты, а также основные оконные элементы - кнопки, scrollbars и т.д. Каждая из перечисленных характеристик по отдельности может быть найдена в уже существующих программных пакетах. Новым является соединение их в стройную непротиворечивую систему, которая должна стать всеобщим стандартом. Основные свойства языка программирования Java Встроенные (примитивные) типы данных. В языке Java существует набор встроенных типов данных, которые не являются объектами. Набор их сходен с набором базовых типов С++ за некоторыми исключениями. Отличаются от С++ как синтаксисом, так и представлением. Тип character есть 16-разрядное число без знака (диапазон 0-65,535). Кодировка соответствует стандарту Unicode. В силу того, что эта кодировка в идеале должна охватывать все существующие в мире языки, это представление должно облегчить локализацию приложений. Boolean этот тип данных не выделен в С++, однако неявно присутствует практически во всех программах. В Java тип boolean, может принимать значения true и false и не может (в отличие от С++) быть преобразован в другой тип. Добавлен новый оператор логического сдвига вправо (т.к. нет беззнаковых целых чисел). Встроенная операция слияния строк (оператор +). В отличие от С++ массивы в Java являются полноценными объектами с определенным runtime представлением Система Java создавалась объектно-ориентированной с самого начала. Объектно-ориентированная парадигма наиболее удобна при создании программного обеспечения типа клиент-сервер, а также для организации распределенных вычислений. Одна из черт, присущих объектам, заключается в том, что объекты обычно переживают процедуру, их создающую. Они затем могут перемещаться по сети и храниться в базах данных.

Основные требования к объектно-ориентированной системе -инкапсуляция - сокрытие реализации за абстрактным интерфейсом -полиморфизм - одно и то же сообщение, посланное различным объектам, приводит к выполнению разных операций -наследование - новые классы могут наследовать данные и функциональность уже существующих классов -динамическое связывание - новые классы могут появляться в системе откуда угодно, в том числе и из сети. Необходимо иметь возможность динамически включать их в систему. Классы Класс есть языковая конструкция, определяющая поля данных объектов данного класса (instance variables) и их поведение (methods). Практически класс в Java сам по себе не является объектом. Это лишь шаблон, который определяет, из каких частей будет состоять объект, созданный с помощью этого класса, и как он будет себя вести. Освещены следующие стороны Java как объектно-ориентированного языка программирования. Классы определяют шаблон, по которому создаются конкретные объекты. Поля данных объекта определяют состояние объекта. Объекты обмениваются сообщениями между собой. Получение сообщения приводит к вызову одного из методов. Методы определяют поведение объекта данного класса. Методы для разных классов могут иметь одно и то же имя, но различное содержание. Система Java предназначена для создания программного обеспечения, которое должно быть интеллектуальным, предельно надежным и безопасным по множеству параметров. Особое внимание уделяется как ранней диагностике возможных проблем, так и поздней, во время выполнения кодов. Система Java достаточно безопасна, чтобы жить в сетевом окружении. Нейтральность к архитектуре и переносимость делают ее достаточно привлекательной для создания распределенных по сети приложений.

    1. 1   2   3   4   5   6


написать администратору сайта