При каком подходе для разработки приложений используются высокоуровневые чаще всего web языки
На современном этапе развития информационно-коммуникационных технологий отмечается повышений требований к качеству веб-приложений. В отличие от веб-сайтов, которые используются, в основном, для предоставления информации, веб-приложения являются более интерактивными и позволяют пользователю принимать активное участие в работе [3]. Возможности современных веб-приложений сравнимы с возможностями классических приложений, однако доступ к ним мы можем получить в любой момент времени при наличии доступа в Интернет.
Логика веб-приложения распределена между сервером и клиентом, хранение данных осуществляется, преимущественно, на сервере, обмен информацией происходит по сети.
Работа над веб-приложением включает несколько этапов, которые соответствует этапам жизненного цикла [1]:
- определение требований к приложению;
Рассмотрим данные этапы более подробно.
Целью нашего проекта является разработка приложения, позволяющего планировать маршрут по достопримечательностям в любом городе мира. Данное приложение может использоваться как гидом при составлении экскурсионного маршрута по достопримечательностям для туристов, так и непосредственно самими туристами.
Для разработки данного приложения нам потребуется [3, 5]:
- интегрированная среда разработки или редактор-кода;
- язык гипертекстовой разметки HTML5;
- каскадные таблицы стилей CSS3;
- сценарный язык программирования JavaScript;
- набор библиотек и компонентов для упрощения разработки фреймворк.
При разработке выбираем «легкий» редактор-кода, а не интегрированную среду разработки [3]. Подавляющая часть ИСР – платные, потребляют много ресурсов ПК, чрезмерный функционал, для использования требуют достаточно времени в обучение.
Сравним редакторы кода, которые мы можем использовать для разработки приложения по следующим критериям (см. табл. 1) [6, 9, 10]:
- наличие русифицированной версии;
Сравнительная характеристика редакторов кода, которые могут использоваться для разработки приложения
Visual Studio Code
Бесплатный текстовый редактор с открытым исходным кодом
Бесплатный кроссплатформенный редактор исходного кода
Microsoft Windows, macOS и Linux
OSX, Windows, Linux, FreeBSD
Linux x86_64, OS X 10.9 или новее, Windows 7 или новее
Скорость работы (быстродействие)
Использует много памяти
Недостаточно, требуются дополнительные расширения
Недостаточно, требуются дополнительные расширения
Достаточно близко к IDE( интегрированная среда разработки)
Таким образом, для разработки нашего приложения был выбран редактор кода Visual Studio Code. Это кроссплатформенный редактор исходного кода, поддерживающий базовые возможности интегрированной среды разработки, созданный в Microsoft. Позиционируется как «легкий» редактор кода для кроссплатформенной разработки веб- и облачных приложений. Visual Studio Code распространяется бесплатно, разрабатывается как программное обеспечение с открытым исходным кодом, и доступен в версиях для платформ Windows, Linux и OS X. В редакторе присутствуют встроенный отладчик, инструменты для работы с Git и средства рефакторинга, навигации по коду, автодополнения типовых конструкций и контекстной подсказки. Выбор редактора-кода, во основном индивидуален и зачастую зависит от проекта и разработчика в целом.
Кроме того, процесс разработки включает веб-дизайн, вёрстку страниц, программирование на стороне клиента и сервера, а также конфигурирование веб-сервера.
В приложение реализованы с помощью библиотек и вспомогательных инструментов следующие функции [4, 5, 7, 8]:
- работа с картой – Google Maps API Стандартный;
- подсказки мест Google Places API Web Service Стандартный;
- Drag-and-drop – jquery ui;
- маркер на карте – Google Places API Стандартный;
- построение маршрута – Google Directions API Стандартный.
Рис. 1. Функция построения маршрута
Работу веб-приложения для планирования маршрута по достопримечательностям можно продемонстрировать на основе объектно-ориентированного подхода, языка UML. Моделирование с помощью UML предполагает построение диаграммы, которая позволяет продемонстрировать возможности приложения (см. рис. 1) [2].
Рис. 2. Диаграмма деятельности, иллюстрирующая работу планировщика маршрута по достопримечательностям
Пользователь выбирает город и количество дней из предложенного списка. Далее приложение отображает достопримечательности данного города в списке и на карте, а также дни (см. рис 2). Пользователь добавляет («перетаскивает») достопримечательности из списка для каждого дня своей поездки. Далее он выбирает день и видит примерный маршрут (см. рис 3).
Рис. 3. Отображение достопримечательностей
Рис. 4. Построение маршрутных линий
В процессе тестирования были выявлены недостатки, например, что маршрут можно построить как по прямой, так и по ломаным линиям с указанием длины расстояния. Кроме того, возможно реализовать сортировку по типу достопримечательности, рейтинг, стоимости и другим критериям. Данные требования могут быть рассмотрены, в дальнейшем, в качестве показателей для повышения функциональности приложения.
Как отметил Александр Ложечкин, директор департамента стратегических технологий Microsoft в России, – "Веб уже давно прочно вошел в жизнь каждого из нас. Сегодня веб-приложения и сервисы доступны не только через ПК, но и мобильное устройство. Компании самого разного объема бизнеса все активней используют Веб для повышения эффективности, начиная с корпоративных порталов и порталов совместной работы и заканчивая облачной инфраструктурой. Веб является социально-значимым: он объединяет огромное сообщество и предоставляет самые широкие возможности, чтобы начать свой бизнес". [2]
Содержание
Работа содержит 1 файл
Языки разработки веб-приложений.doc
В настоящее время Интернет стал неотъемлемой частью жизни в большинстве развитых и развивающихся стран. За период в пять лет аудитория всемирной паутины перевалила за 50 миллионов пользователей и продолжает неуклонно возрастать [1].
Как отметил Александр Ложечкин, директор департамента стратегических технологий Microsoft в России, – "Веб уже давно прочно вошел в жизнь каждого из нас. Сегодня веб-приложения и сервисы доступны не только через ПК, но и мобильное устройство. Компании самого разного объема бизнеса все активней используют Веб для повышения эффективности, начиная с корпоративных порталов и порталов совместной работы и заканчивая облачной инфраструктурой. Веб является социально-значимым: он объединяет огромное сообщество и предоставляет самые широкие возможности, чтобы начать свой бизнес". [2]
Вследствие удешевления программного и аппаратного обеспечения для создания и поддержки сайтов, их число в сети возрастает лавинообразно. Можно сказать, что веб-сайты – это любые программные комплексы, имеющие Интернет-интерфейс, в полном соответствии с названием: "web site" – место в паутине. Все меньше становится программных комплексов, которые не имеют (или в ближайшие годы не будут иметь) этот самый Интернет-интерфейс. Поэтому локальные программы консолидируются с вебсайтами, а грань между веб-программированием и собственно прикладным программированием становятся все тоньше.
В данном реферате будут описаны основные технологии и языки, используемые в настоящее время при создании веб-приложений.
Обычно Веб-приложения создаются как приложения в архитектуре "клиент-сервер", однако серверная часть при этом может иметь различные архитектурные решения [3].
Схематически такая архитектура представлена на рис.1.
Рисунок 1 – Архитектура веб-приложений
Изначально World Wide Web (WWW) представлялась ее создателям как "пространство для обмена информацией, в котором люди и компьютеры могут общаться между собой" [4]. Поэтому первые Веб-приложения базировались на простой файл-серверной архитектуре, т.е. просто возвращали по запросу пользователей статические HTML-страницы. Таким образом, Веб начиналась как простая документо-ориентированная среда.
Появление Internet Server API (ISAPI) [4, 7] позволило не только решить проблемы производительности, связанные с использованием CGI-приложений, но и предоставить в распоряжение разработчиков расширенный программный интерфейс. ISAPI DLL могли уже ассоциироваться с расширениями имен файлов через специальную мета-базу. Именно эти два механизма (CGI и ISAPI) и послужили основой для создания первого типа Веб-приложений, в которых, в зависимости от каких-либо клиентских действий, выполнялся серверный код. Это дало возможность динамически генерировать содержимое Веб-страниц, благодаря чему Веб-контент перестал быть чисто статическим.
Интерфейс ISAPI является особенностью Microsoft Internet Information Server. ISAPI-приложения представляют собой динамические загружаемые библиотеки (DLL), которые исполняются в адресном пространстве Веб-сервера. Через некоторое время на Веб-серверах других разработчиков также была реализована возможность выполнения приложений с помощью динамических библиотек. Для веб-серверов Netscape этот программный интерфейс назывался NSAPI (Netscape Server API). У наиболее популярного Веб-сервера Apache также имеется возможность выполнять Веб-приложения при помощи механизма Apache DSO (Dynamic Shared Objects).
Поскольку при использовании как CGI-, так и ISAPI-приложений разработчики в основном решали одни и те же задачи, то следующим естественным шагом стало появление нового, высокоуровневого интерфейса, благодаря которому упростилась генерация HTML-кода, появилась возможность обращения к компонентам и базам данных. Таким интерфейсом стала объектная модель Active Server Pages (ASP) [8], построенная на основе ISAPI-фильтра.
Основной идеей ASP с точки зрения создания интерфейса приложения заключается в том, что на Веб-странице присутствуют фрагменты кода, интерпретируемые Веб-сервером, а пользователь получает уже конечный результат выполнения этих фрагментов кода.
Вслед за ASP были созданы и другие технологии, реализующие идею размещения внутри Веб-страницы кода, выполняемого Веб-сервером. Наиболее известной из них на сегодняшний день является технология JSP (Java Server Pages). Основная идея данной технологии заключается в однократной компиляция Java-кода (т.н. сервлета) при первом обращении к нему, выполнение методов этого сервлета и помещение результатов выполнения этих методов в набор данных, отправляемых в браузер.
В наше время клиентом Веб-сервера может быть уже не только персональный компьютер, оснащенный обычным Веб-браузером. Одновременно с широким распространением мобильных устройств появилась и задача предоставления Веб-серверами данных, которые могут быть интерпретированы этими устройствами. Поскольку характеристики мобильных устройств скромнее в сравнении с характеристиками ПК (ограниченный размер экрана, меньший объем памяти, для старых моделей – возможность работы только в текстовом режиме), то для них существуют и другие протоколы передачи данных (WAP – Wireless Access Protocol) и соответствующие языки разметки (WML – Wireless Markup Language, СHTML – Compact HTML и т.п. [10]). При этом передача данных на мобильное устройство производится или в соответствующем формате (путем создания специальных версий сайтов), либо, что более удобно, происходит опознание типа устройства в момент его обращения к серверу и преобразование исходного документа (например, в формате XML) в формат, требующийся данному мобильному устройству (например, с помощью XSLT-преобразования).
Другим направлением развития клиентских частей Веб-приложений стало размещение некоторой части логики приложения (такой как проверка корректности вводимых данных) в самом Веб-браузере. В частности, современные Веб-браузеры способны интерпретировать скриптовые языки (VBScript, JavaScript), код на которых, как и ASP-код, внедряется в Веб-страницу, но интерпретируется не Веб-сервером, а браузером и соответственно выполняется на клиентском устройстве. Кроме того, современные браузеры способны отображать и выполнять Java-аплеты – специальные Java-приложения, которые пользователь получает в составе Веб-страницы, а некоторые из браузеров могут также служить контейнерами для элементов управления ActiveX, которые выполняются в адресном пространстве браузера специальных COM-серверов, также получаемых в составе Веб-страницы. Посредством Java-аплетов и элементов управления ActiveX можно реализовать практически любую функциональность.
Рисунок 2 – Трехзвенная архитектура веб-приложений
Стоит отметить, что с ростом объема используемых данных и числа посетителей Веб-сайтов возрастают и требования к надежности, производительности и масштабируемости Веб-приложений. Следующим этапом эволюции подобных приложений стало отделение бизнес-логики, реализованной в Веб-приложении, а нередко и сервисов обработки данных и реализации транзакций от его интерфейса. В этом случае в самом Веб-приложении обычно остается так называемая презентационная часть, а бизнес-логика, обработка данных и реализация транзакций переносятся в сервер приложений в виде бизнес-объектов. В зависимости от типа сервера приложений такие бизнес-объекты могут быть выполняющимися самостоятельно COM-серверами, CORBA-серверами, а также объектами COM+, выполняющимися с помощью служб компонентов MS Windows, или объектами EJB (Enterprise Java Beans), исполняемыми сервером приложений, поддерживающим спецификацию J2EE (Java 2 Enterprise Edition). В качестве механизма доступа к данным подобные объекты обычно используют OLE DB, ODBC, JDBC (в зависимости от архитектурной реализации самого бизнес-объекта).
Следует сказать, что являясь составной частью подобного решения, Веб-сервер должен уметь не только выполнять приложения и взаимодействовать с сервером приложений, но также использовать сервисы интеграции, сервисы управления приложениями и данными, а также сервисы для разработчиков.
Следующим шагом эволюции Веб-приложений, помимо доступа к корпоративным данным и данным партнеров, стало получение доступа к корпоративным приложениям. Для решения этой задачи интеграции Веб-приложений с внутренними информационными системами предприятий и с приложениями, обеспечивающими взаимодействие с клиентами и партнерами, используются специальные решения, называемые корпоративными порталами.
Хронология развития веб-технологий отражена на рис.3.
Рисунок 3 – Хронология развития веб-технологий
Обобщая вышесказанное можно выделить основные особенности веб-архитектуры [11]:
- отсутствие необходимости использовать дополнительное ПО на стороне клие нта, что позволяет реализовать кросс-платформенную клиентскую часть;
- возможность подключения практически неогр аниченного количества клиентов;
- объем хранимых и обрабатываемых данных ограничивается лишь пропускной способностью каналов связи и мощностью веб -серверов;
- благодаря единственному месту хранения данных и наличия системы управления базами данных обеспечиваются простота администрирования;
- доступность зависит от работоспособности сервера и каналов передачи данных;
- более низкая скорость отклика Веб-сервера и каналов передачи данных (сравнительно с локальной сетью);
Таким образом, веб-программирование (веб-разработка) – наиболее бурно развивающийся в настоящее время раздел программирования, ориентированный на создание динамических Интернет-приложений [12].
Языки, используемые для веб-программирования, можно разделить на две группы: клиентские и серверные.
2.1. Клиентские языки
Приложения, написанные с использованием данной технологии, обрабатываются на стороне пользователя (в основном браузером).
Кроме того, обработка скрипта полностью зависит от настроек и типа используемого интернет-обозревателя. Браузеры старых версий могут не поддерживать те или иные возможности, заложенные в новых версиях языков, на которые опирался разработчик. Также пользователь может вообще отключить поддержку выполнения скриптов.
HTML
HyperText Markup Language ("язык разметки гипертекста") – стандартный язык разметки документов во Всемирной паутине [13]. Большинство веб-страниц создаются при помощи HTML. Хотя HTML интерпретируется браузером и отображается в виде документа, в удобной для человека форме, он не является языком программирования в стандартном понимании этого слова. HTML (как и его продолжения xHTML/DHTML, XML) является приложением SGML (стандартного обобщенного языка разметки) и соответствует международному стандарту ISO 8879.
HTML создавался как язык для обмена научной и технической документацией, пригодный для использования людьми, не являющимися специалистами в области верстки. HTML успешно справлялся с проблемой сложности SGML путем определения небольшого набора структурных и семантических элементов – дескрипторов. Дескрипторы также называют "тегами". С помощью HTML можно легко создать относительно простой, но красиво оформленный документ. Помимо упрощения структуры документа, в HTML внесена поддержка гипертекста. Позднее были добавлены мультимедийные возможности. Изначально язык HTML был задуман и создан как средство структурирования и форматирования документов без их привязки к средствам воспроизведения (отображения).
Высокоуровневые языки программирования отличаются большей направленностью на человека, чем на машину, для которой их конструкции будут слишком сложными и ресурсоемкими. Не стоит полагать, что данный тип, исходя из названия, чем-то лучше других, так как и у низкоуровневых, и высокоуровневых свои задачи, преимущества и недостатки.
Понимание возможностей и особенностей данных языков позволит начинающим программистам определиться с направлением развития своих навыков. В нашей статье мы расскажем, что такое высокоуровневые языки программирования, как они появились, рассмотрим их возможности и разновидности.
Понятие высокоуровневого языка программирования
Высокоуровневый язык программирования – средство записи компьютерных программ, обеспечивающее высокую скорость и удобство работы. Его отличительной чертой является абстракция. Другими словами, высокоуровневый язык программирования обеспечивает возможность введения смысловых конструкций, способных коротко описать форматы данных и операции с ними в тех случаях, когда описания на низкоуровневом языке (например, на машинном коде) будут сложными для восприятия и очень длинными.
Понятие высокоуровневого языка программирования
Первые высокоуровневые языки программирования создавались с целью предотвращения зависимости сути алгоритмов от платформы. В этом случае платформенная независимость обеспечивается перекладыванием связей на инструментальные программы, которые осуществляют перевод текстов с высокоуровневых языков на машинный код. Инструментальные программы выступают своего рода трансляторами.
Они создаются отдельно для каждой платформы, под конкретный высокоуровневый язык программирования. К примеру, программа транслятор может переводить текс с языка Delphi в машинный код микропроцессора серии x86.Таким образом, высокоуровневые языки программирования облегчают выполнение сложных задач программирования и упрощают адаптацию ПО. Применение инструментальных трансляторов позволяет связать программы, написанные с использованием высокоуровневых языков и ОС устройств и оборудования. В идеальном случае при использовании интерпретаторов не требуется модификация первоначального текста на языке программирования высокого уровня для всех видов платформ.
История появления высокоуровневых языков программирования
Попытка создать первый высокоуровневый язык программирования была предпринята еще во время Второй Мировой Войны. Его разработал немецкий инженер, дав ему имя Plankalkül. В 50-е годы эволюция компьютеров привела к началу новой эры программирования. Тогда был создан первый язык программирования, позволяющий писать код независимо от типа процессора, Fortran.
Ваш Путь в IT начинается здесь
ПодробнееПоявление парадигмы структурного программирования стало революционным шагом в развитии программирования. Это позволило писать код большего объема с меньшими усилиями. А логичная структура программы облегчала тестирование и позволяла избежать множества ошибок. Задачу по созданию языка программирования в свое время пытались решить и военные США. В результате этих разработок в начале восьмидесятых годов прошлого столетия появился язык Ada.
Он еще являлся достаточно упрощенным, но, при этом, для своего времени был достаточно функциональным. Язык Ada применялся для программирования военной аппаратуры.
История появления высокоуровневых языков программирования
Так появились высокоуровневые языки программирования, к которым также относятся Java, JavaScript, PHP, Python. Это языки с высоким уровнем абстракции, когда программист не задумывается о том, на какой машине он пишет код. Сейчас высокоуровневые языки программирования широко используются во всех сферах IT от веб-браузеров до разработки беспилотных автомобилей.Плюсы и минусы высокоуровневых языков программирования
Основным достоинством машинно-независимых языков программирования являются их простота и универсальность. Как следствие, значительно сокращается продолжительность написания кода и отладки. Одна и та же программа может быть выполнена на компьютерах разной архитектуры.
С развитием и усложнением мобильных приложений стали появляться различные среды разработки и языки программирования, специально предназначенные для создания мобильного ПО. В итоге инструментов для разработки мобильных прикладных программ стало так много, что сейчас не только новичку, но и матерому программисту сложно вникнуть в это изобилие.
У меня новая книжка!
В издательстве «СОЛОН-Пресс» вышло второе, переработанное и дополненное издание моей книги о разработке двумерных игр для настольных и мобильных платформ с помощью мультиплатформенного движка Torque 2D. Материал книги значительно обновлен по сравнению с первым изданием, даны ответы на самые частые вопросы, которые я получил от читателей на свое мыло. Как всегда, подробную инфу о моих книгах ты можешь найти на моем сайте, там же ты можешь скачать дополнительный контент и почитать статьи про GameDev.
Ассортимент средств мобильного кодинга
Все многообразие тулз для мобильного кодинга можно поделить на три категории:
- Silo.
- Black box.
- Cross-platform.
При black box подходе для разработки приложений используются высокоуровневые (чаще всего web) языки: HTML, CSS3 — для интерфейса, JavaScript — для программной логики. Код с этих языков проходит конвертацию специальными плагинами. После чего его становится возможным выполнять на определенной мобильной платформе. Плюсы black box: в разработку мобильных приложений могут включиться веб-разработчики (предварительно изучив доступный инструментарий, конечно). Минусы технологии заключаются в том, что код по факту работает медленнее нативного, так как приложение «черного ящика» выполняется с помощью браузера, API с JavaScript может покрывать не все возможности конкретной платформы, у программиста нет возможности использовать стандартные элементы определенной ОС. В качестве примеров можно привести Apache Cordova, NativeScript.
Цели и методы их достижения
Из всего многообразия возможностей создания мобильных приложений (в этом разговоре я умышленно исключаю большое число кросс-платформенных игровых движков, о них, будем надеяться, поговорим в другой раз) нам надо выявить наиболее подходящую тулзу. Для отбора будем сравнивать как весьма точные значения (размер исполняемого файла, скорость работы, где это удастся точно измерить, реализация возможностей платформы, стоимость), так и интуитивные показатели: простоту освоения средств разработки, качество документации и поддержки, удобство и эффективность использования и прочее.
Android
Начнем наши эксперименты с нативных инструментов для разработки приложений под Android: Android Studio + Java SE + Android SDK. Переходим на сайт Android Studio и качаем из него студию. Не забудь предварительно установить JDK 1.8. Android SDK рекомендуется скачать и установить прямо из студии.
Обрати внимание: для стандартных эмуляторов Android используется виртуализация Intel HAXM. Последняя устанавливается вместе с Android SDK (при выборе соответствующего пункта). HAXM не может работать одновременно с родной Windows-виртуализацией Hyper-V, поэтому последнюю надо отключить. Для этого открой консоль PowerShell от имени администратора и выполни команду Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All . После этого надо перезагрузить компьютер.
Создадим простое миниатюрное приложение (оно будет содержать надпись и кнопку) при помощи разных средств разработки и сравним их между собой. New Project → HelloWorld. Phone and Tablet: Minimum SDK → API 19: Android 4.4 (KitKat) — все еще самая распространенная версия ОС в мире, в частности у меня есть устройства с ней на борту. Выберем Empty Activity. Далее названия по желанию и Finish. После создания проекта добавим на Activity указанные выше компоненты: надпись Hello World и кнопку, отображающую число нажатий: Click me: 0 . Идентификаторы объектов оставим по умолчанию. Открой XML-описание активности. В определение элемента кнопки добавь объявление события: android:onClick="onButtonClick" . Теперь в файле MainActivity.java внутри описания класса объявим две переменные: для кнопки и целочисленную переменную. В методе onCreate сохраним в первую переменную ссылку на кнопку на макете: but = (Button)findViewById(R.id.button); . Последним действием опишем метод — обработчик объявленного ранее события:
На этом разработка мини-приложения завершена. Переключи построение на вариант для выпуска: Build → Select Build Variant. В появившейся слева панели в столбце Build Variant из ниспадающего списка выбери release. При построении файла для выпуска тебе надо подписать его соответствующим сертификатом. Все это мелочи жизни, и мы не будем рассматривать их в данной статье.
Итоги. В итоге файл на выходе у меня получился 1256 Кбайт. Скорость работы в данном случае измерить нельзя, возможности платформы покрываются полностью, ибо тулзы от платформодержателя, но проверить их в этом мини-приложении мы не можем; тулзы для разработки бесплатны. Про удобство использования могу высказать разве что свое субъективное мнение: к этому инструментарию все уже давно привыкли, он не лучший, но весьма удобен, особенно после смены среды Eclipse на Android Studio. Документация от Google довольно подробная. Вдобавок освоить платформу помогут обучающие уроки, созданные энтузиастами.
Для разработки под iOS нам понадобится воспользоваться макинтошем. Запускаем Xcode. Предлагаю создать новое приложение на языке Swift: iOS → Single View Application. Выбираем нужный язык, вводим необходимые данные, задаем имя и место расположения проекта. В списке слева выбираем файл Main.Storyboard. На макет перетащим надпись (Label) и кнопку (Button) из находящейся справа снизу панели (Object Library). Для надписи задай свойство Text: Hello World (находится в инспекторе атрибутов — четвертая кнопка), для кнопки Click me: . Открой в дополнительном окне файл ViewController.swift, дважды щелкнув по нему в Project Navigator. Удерживая клавишу Ctrl, перетащи линию от кнопки в редактор кода для создания outlet с именем but, иными словами переменную — указатель на кнопку. После этого опять перетащи линию с кнопки в код, на этот раз в появившемся окне в качестве типа создаваемого объекта выбери IBAction, имя задай onClick, подходящее имя для метода — обработчика события нажатия кнопки. Ниже объявления переменной для кнопки @IBOutlet weak var but: UIButton! добавь объявление целочисленной переменной: var cl = 0. В только что созданное событие впиши две следующие строчки:
С помощью первой из них мы инкрементируем переменную, а во второй меняем надпись на кнопке, используя это значение. Для построения финальной версии выбери Product → Build For → Running. В результате в навигаторе проекта образуется папка Products, где будет находиться исполняемый iOS-файл. Папку, его содержащую, можно открыть, щелкнув по нему правой клавишей и выбрав из контекстного меню пункт Show in Finder. В итоге у меня исполняемый файл для iOS вместе со всеми либами весит 16,8 Мбайт. Сурово, но не оглядываемся на Android! Это другая вселенная, а мы сравниваем инструменты, не операционные системы.
Итоги. Непредвзято сравнить скорость также не получится, эмулятор работает очень медленно. Тузлы бесплатны и покрывают всю платформу, что логично. По удобству работы Xcode хорош для тех, кто вырос и живет с маками. Язык Swift интересен сам по себе, он удобнее, чем Obj-C. Документация от Apple очень подробная, доступна масса обучающей инфы.
Xcode с минимальным проектом
Windows 10 Mobile
Тут все просто. Используется Visual Studio. Создаем универсальное (Blank App) UWP-приложение, ровно как для настольной операционки. Чтобы запустить эмулятор VS и протестировать в нем приложение, понадобится включить виртуализацию Hyper-V. В PowerShell, запущенной под администратором, выполни команду Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All . После этого понадобится перезагрузка компа.
Размести на макете (MainPage.xaml) текстовую метку (TextBlock) и кнопку (Button), свойству Text первой присвой Hello World , а свойству Content второй, соответственно, Click me: . Создай событие щелчка на ней, в котором напиши:
Предварительно объяви глобальную переменную. По большому счету это все. Приложение для Windows 10 — это каталог AppX с исполняемыми файлами и другим контентом. Итак, размер минимального UWP-приложения (вместе с контентом) равен 6,57 Мбайт.
Итоги. Для Win-разработчиков это самый близкий способ создания мобильных приложений, используется тот же инструментарий, много подробнейшей документации и обучающих материалов, множество форумов по данной технологии и качественная поддержка.
Инсталляция RAD Studio
Кроме средств разработки от держателей платформ, для создания нативных приложений можно использовать инструменты третьих фирм. Одно из таких средств — RAD Studio от Embarcadero. Последняя версия RAD Studio 10.1 Berlin. Да-да, это наследница небезызвестной Delphi. Опустим слова ностальгии. И хотя RAD Studio (Delphi) утратила былую популярность, на данный момент это мощная система программирования, прекрасно подходящая для разработки мобильных приложений с помощью языков Delphi/C++.
Для создания мобильного проекта надо выбрать пункт Multi-Device Application. В этом случае приложение разрабатывается, как обычно, с использованием визуальных средств для создания макета и написанием кода на Delphi/C++ (в зависимости от выбора). При этом компиляцию можно выполнить под Windows 32/64, Android, macOS, iOS — последние два варианта только на маке. Для сборки Android-билда используется Android SDK, а iOS-билда, соответственно, Apple SDK; для тестирования — родные эмуляторы. Интерфейс можно создавать как для оконного приложения, так и на макете устройства по выбору.
RAD Studio с минимальным проектом
Жирный минус этого решения — оно не бесплатно. Лицензии разные по цене и составу. Если RAD Studio включает оба языка, то можно ограничиться чем-то одним: Delphi или C++ Builder, соответственно, и стоимость этих продуктов по отдельности будет ниже.
Black box
Apache Cordova
Начнем обсуждение «черной коробки» с одного из самых старых и известных инструментов этой категории — Cordova. Для начала установи Node.js и Git client. В составе первого установится утилита командной строки npm. Далее в терминале перед непосредственной установкой Cordova надо выполнить три следующие команды:
После этого можно ставить Cordova:
Если не выполнять предыдущие команды, то установка Cordova завершится с ошибками. На macOS устанавливать необходимо с правами администратора — sudo, иначе будут проблемы.
Теперь с помощью Cordova создадим приложение (зайдем внутрь каталога), добавим необходимые платформы, для которых Cordova будет создавать билды:
Платформа Windows — это UWP. Поддержку iOS в Windows добавлять бесполезно, так как Cordova использует установленные в системе SDK, а Windows, как мы знаем, не поддерживает iOS. Чтобы проверить, все ли зависимости в SDK удовлетворены, вводи команду cordova requirements и смотри ее вывод. Когда все будет исправно, можно собирать проекты и тестить в эмуляторе (для Android) или в среде ОС (для Windows):
В итоге имеем: размер Android-билда — 1,74 Мбайт, UWP-билда — 1,59 Мбайт.
Мне стало интересно: какой размер будет у аналогичного минимального iOS-приложения? Поэтому я проделал все описанные операции на маке. Кроме Xcode 8, который у меня установлен, мне понадобился PhoneGap и CocoaPods. Первый устанавливается и одновременно строится по команде sudo npm -g install ios-deploy --unsafe-perm=true . Второй — по команде sudo gem install cocoapods . Для установки нужен дефолтный Ruby. Снова проверяем наличие необходимых компонентов, после проделанных операций все должно быть в норме. Строим и запускаем проект для iOS:
И вот результат: размер iOS-билда — 1,9 Мбайт.
Итоги. Субъективное мнение о Cordova: я бы не стал ее использовать, потому что я не веб-программист и не пишу на JavaScript. Для кого-то это может быть, наоборот, плюсом. Cordova создает дополнительные файлы для открытия проектов в родных средах программирования: Visual Studio, Xcode и так далее. Как я уже говорил, у black box неполное покрытие возможностей платформы, несмотря на наличие специальных плагинов, расширяющих возможности инструментария. Документация не настолько всеобъемлющая, как хотелось бы. Однако в интернете много энтузиастов, использующих Cordova для разработки весьма серьезных приложений и делящихся знаниями.
Adobe Fuse
Сразу оговорюсь: не путаем Adobe Fuse с Adobe Fuse CC — инструментом трехмерного моделирования!
Довольно-таки новая тулза, поэтому находится в стадии beta. Fuse представляет собой набор инструментов для разработки приложений под Android и iOS. Adobe собирается открыть ее исходники. Для разработки внешнего вида приложений используется XML-подобный язык, с его помощью легко создаются гибкие и интерактивные интерфейсы, которые визуализируются как нативные для системы контролы или с помощью OpenGL. Этот язык без проблем портируется на обе платформы. Fuse написан на Uno, который компилируется в чистый C++ с поддержкой Java (для Android) и Obj-C (для iOS). Логика приложения пишется на JavaScript и выполняется в отдельном потоке. Пока поддержка UWP здесь отсутствует.
Fuse Dashboard
Во время инсталляции также устанавливается редактор Sublime Text 3 и Fuse-плагин для него. По большому счету Fuse устанавливается как утилита командной строки. И ее можно использовать подобно Cordova, но вдобавок Fuse предоставляет инструментальную панель, откуда можно выполнить все операции, например создать/открыть проект. На сайте есть большое количество примеров и документации, пригодной для изучения. Для создания нашего минимального приложения открой проект — файл MainView.ux и замени в нем весь код следующим:
Fuse имеет свой псевдо-Android-эмулятор, который выполняет отдельно скомпилированный код, но можно также использовать стандартный эмулятор. Первым можно воспользоваться из инструментальной панели, после выбора проекта кликнув по кнопке Preview и выбрав Local. Вторым — после инсталляции Android SDK, то есть ввода команды fuse install android . Когда установка будет завершена, выполни fuse preview -tandroid , но прежде надо руками запустить эмулятор или подключить устройство. После подключения устройства появится пункт Android в меню кнопки Preview. В итоге размер исполняемого файла минимального приложения для Android равен 8,4 Мбайт.
Все то же самое делается на маке. Там, к слову, Sublime Text надо устанавливать отдельно. В меню кнопки Preview при установленных инструментальных пакетах имеется три пункта: Local, Android, iOS. Нас интересует последний. Если выбрать его, запускается Xcode, куда передается наше приложение. То есть компиляцию надо проводить руками. Размер точно такого же приложения для iOS — 35,9 Мбайт.
Построение приложения во Fuse происходит следующим образом: XML-код для описания макета объединяется с JavaScript и нативным Uno-кодом, проходит компиляцию source-to-source, далее подхватывается соответствующий для платформы SDK: Android, Xcode.
Sublime Text 3
Итоги. Fuse — довольно интересная технология. Даже мне она понравилась, несмотря на весь этот JS. Выполнение вполне шустрое, но документации мало, хоть и список примеров обширный. Разработчики радостно отвечают на вопросы. Больше пока сказать нечего — оценим позже, когда будет готова версия для выпуска.
Промежуточное заключение
Из рассмотренных сегодня тулз я с большой натяжкой отдаю свой голос Cordova, благодаря покрытию ей всех мобильных платформ. Чисто по работе мне внезапно понравился Fuse, но он не поддерживает UWP. За это ему минус. Не был бы так дорог RAD Studio, смог бы занять лидирующее место на нашем пьедестале. Остальные Silo-средства не проходят отбор, так как мы стремимся к истинной кросс-платформенной разработке: одна тулза должна охватывать как можно больше платформ с минимальными изменениями или вообще без них.
В следующей статье мы продолжим рассматривать black box инструменты, а также перейдем к третьему и последнему виду тулз — cross-platform. И, уже владея всей картиной, сделаем окончательный вывод.
Юрий Язев
Широко известен под псевдонимом yurembo. Программист, разработчик видеоигр, независимый исследователь. Старый автор журнала «Хакер».
Читайте также: