В первую очередь при сравнении технологий разработки приложений для различных операционных систем, следует выяснить, на каких платформах они разрабатываются, какие языки используются. Это важно потому, что используемые парадигмы программирования могут оказаться различными, а как следствие – сравнение будет не всегда объективным. При этом стоит отметить, что в случаях разработки на Windows Phone и Windows Mobile основной язык программирования – C#. При этом, для разработки на Windows Mobile можно было использовать «родной» код С++, однако в разработке для Windows Phone от этого отказались. Рассмотрим чуть более подробно особенности языка C# и его отличия от C и C++.
C – процедурный язык программирования. Достаточно старый язык (появился в 70–х годах), однако до сих пор достаточно популярный. Его синтаксис переняли С++ и C#. Так же на нем разрабатывают ПО для различных устройств, помимо персональных компьютеров. Он применяется в основном для программирования на низком уровне, написания драйверов.
С++ – объектный язык программирования. Такие понятия, как класс, наследование, полиморфизм, инкапсуляция появились в C++. Позволяет оперировать с системой на низком уровне (прямой доступ к памяти, регистрам процессора, устройствам ввода/вывода). C++, пожалуй, самый мощный из представленных языков, большинство крупных проектов написано на нём. Однако, он во многих случаях сложен в использовании, в частности, в работе с указателями (по сравнению с C#).
C# – один из языков .Net Framework платформы. От С++, в частности, отличается автоматическим контролем выделенной памяти, а так же сборкой мусора (высвобождением более неиспользуемой памяти). В нем нельзя обращаться к устройствам напрямую, что повышает стабильность операционной системы, в которой будут исполняться пользовательские программы.
По сравнению с другими языками, С# несколько проще в изучении, практичный и современный, а также обладает мощным набором стандартных классов. Кроме этого, не совсем верно будет сказать, что это «чистое» продолжение вышеобозначенных языков – С# вобрал в себя лучшие черты ряда других языков – Java, Delphi.
Microsoft .NET Framework — программная технология от компании Microsoft, предназначенная для создания обычных программ и веб–приложений. Существуют различные среды разработки .NET–приложений, например, Microsoft Visual Studio, включающая в себя C#, Visual Basic .NET, Managed C++.
C# – основной язык разработки приложений для платформы Microsoft .NET. Переняв многое от своих предшественников — языков C++, Java, Delphi, Модула и Smalltalk — С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем.
Одной из основных идей Microsoft .NET является совместимость различных служб, написанных на разных языках. Например, служба, написанная на C++ для Microsoft .NET, может обратиться к методу класса из библиотеки, написанной на Delphi; на C# можно написать класс, наследованный от класса, написанного на Visual Basic .NET, а исключение, созданное методом, написанным на C#, может быть перехвачено и обработано в Delphi. Каждая библиотека (сборка) в .NET имеет сведения о своей версии, что позволяет устранить возможные конфликты между разными версиями сборок.
Среда разработки .NET Framework создаёт CLR байт–код, предназначенный для исполнения виртуальной машиной. Входной язык этой машины в .NET называется MSIL (Microsoft Intermediate Language) или просто IL. Применение байт–кода позволяет получить кроссплатформенность на уровне скомпилированного проекта, а не только на уровне исходного текста, как, например, в С. Перед запуском сборки в среде исполнения CLR байт–код преобразуется встроенным в среду JIT–компилятором (just in time, компиляция на лету) в машинные коды целевого процессора. [8]
Microsoft .NET Compact Framework (.NET CF) — это версия .NET Framework, которая разработана для запуска приложений на устройствах, основанных на платформе Windows CE, таких как КПК, мобильные телефоны, коммуникаторы и других. .NET Compact Framework использует библиотеки, подобные полной версии .NET Framework, вместе с тем имеются специальные наборы библиотек для мобильных устройств, например, Windows CE InputPanel. [8]
Разработка приложений, использующих возможности .NET Compact Framework может производится в Visual Studio .NET 2003, в Visual Studio 2005/2008/2010 на языке C# или Visual Basic .NET. Результатом разработки являются специальные приложения для мобильных устройств, обладающие высокой производительностью (исполняются при помощи JIT компилятора).
Для запуска приложений .NET Compact Framework, платформа должна иметь поддержку окружения Microsoft .NET Compact Framework. Некоторые операционные системы, в которых включён .NET CF могут выполнять приложения Windows CE 4.1, Microsoft Pocket PC, Microsoft Pocket PC 2002 и Smartphone 2003. Приложения .NET Compact Framework могут выполняться и на настольных компьютерах с полным .NET Framework, если приложение использует общий функционал для обоих Framework, хотя их пользовательский интерфейс невозможно сделать подобным приложениям ПК.
Для разработки приложений с использованием .NET Compact Framework необходим так называемый инструментарий Windows Mobile SDK (для Windows Mobile) или Windows Phone Developer Resources (для Windows Phone).
Для разработки приложений под Windows Mobile необходим инструментарий разработчика Windows Mobile SDK. В 2008 году компания Microsoft выпустила обновленную версию инструментария Windows Mobile 6 SDK Refresh, который предназначен для разработки и развертывания программного обеспечения, запускаемого на устройствах Windows Mobile 6. Инструментарий поставляется в двух редакциях: Windows Mobile 6 Standard SDK и Windows Mobile 6 Professional SDK. Professional–версия инструментария разработчиков, позволяет создавать приложения для устройств Windows Mobile 6 Classic и Windows Mobile 6 Professional, включая модели, оснащенные сенсорными экранами. Для разработки приложения в курсовой работе использовался Windows Mobile 6 Professional SDK.
Вместе с инструментарием устанавливается экранный эмулятор телефона. По сравнению с эмулятором Windows Phone, он достаточно медленный и ограничен в своей изначальной функциональности. Так, например, чтобы получить доступ к интернету с эмулятора, необходимо нетривиальным образом конфигурировать его настройки. На Windows Phone подобные проблемы решены заранее, что позволяет разработчику не отвлекаться и работать сразу с настроенными параметрами.
Windows Phone
Все программы для Windows Phone создаются с использованием управляемого кода .NET. В настоящее время C# – единственный поддерживаемый язык программирования. Основным средством для разработки служит свободно доступный для загрузки Microsoft Visual Studio 2010 Express для Windows Phone, который включает XNA Game Studio 4.0 и экранный эмулятор телефона, а также интегрируется с Visual Studio 2010. Визуальные элементы и анимация для приложений Silverlight могут создаваться в Microsoft Expression Blend.
Microsoft Expression Blend —программа от Microsoft, предназначенная для разработки дизайна web интерфейсов и графических настольных приложений, совмещает в себе особенности этих двух типов приложений. Это интерактивный редактор для дизайна интерфейсов, основанных на XAML приложениях и приложениях Silverlight. [4]
В отличии от Windows Mobile, Windows Phone поддерживает две платформы разработки – Silverlight и XNA. Рассмотрим, что из себя представляет каждая из платформ, и чем они отличаются.
Microsoft Silverlight — это программная платформа, включающая в себя плагин для браузера, который позволяет запускать приложения, содержащие анимацию, векторную графику, аудио–видео ролики, а также поддерживает интерактивность в одной программной платформе. Версия 2.0 добавила поддержку для языков .NET [6].
Важно отметить, что все Silverlight приложения на Windows Phone хранятся на клиентском устройстве и не выполняются внутри браузера. Весь функционал Silverlight, который основан на размещении в браузере — не доступен.
Silverlight для Windows Phone обеспечивает возможность использования элементов темы Metro при разработке пользовательского интерфейса.
Приложения Silverlight могут быть написаны на любом языке программирования .NET. Как таковые, все инструменты разработки, которые могут быть использованы для разработки на .NET, также могут работать c Silverlight. Также, в Silverlight есть возможность разрабатывать пользовательский интерфейс, используя язык разметки XAML.
XAML (англ. eXtensible Application Markup Language — расширяемый язык разметки приложений; произносится [зэмл] или [замл]) — основанный на XML язык разметки для программирования приложений, разработанный Microsoft. Все созданное или реализованное в XAML может быть выражено при помощи более традиционных .NET языков, таких как: C# или Visual Basic.NET. Однако, ключевым аспектом технологии является уменьшение сложности используемых для обработки XAML инструментов, так как XAML основан на XML. [7]
Silverlight как платформа для Windows Phone уже обеспечил Веб–разработчиков беспрецедентными возможностями разработки сложных пользовательских интерфейсов, предоставляя традиционные элементы управления, высококачественный текст, векторную графику, мультимедиа, анимацию и привязку данных, которые могут выполняться во множестве браузеров и на разных платформах. Windows Phone расширяет использование Silverlight на мобильные устройства. [2]
XNA — набор инструментов со средой с управляемым кодом (.NET), облегчающий разработку и управление компьютерными играми [5]. Действие игры, включающее перемещение графических объектов по экрану и запрос пользовательского ввода, обрабатывается встроенным игровым циклом XNA.
Инструментарий XNA изначально разрабатывался с целью максимально облегчить процесс разработки игр для консоли Xbox и компьютеров, работающих под управлением операционной системы Windows.
XNA Game Studio — непосредственно среда разработки (IDE) для разработки игр на основе фреймворка XNA, начиная с 4 версии которой можно разрабатывать приложения и для Windows Phone.
Подводя итог, можно выделить ключевые характеристики Silverlight и XNA и сравнить эти платформы в контексте разработки приложений для Windows Phone.
Как правило, Silverlight используется для программ, которые можно классифицировать как приложения или утилиты. Описание компоновки элементов управления и панелей пользовательского интерфейса в этих программах выполняется с помощью расширяемого языка разметки приложений XAML. [2]
Главное назначение XNA – создание высокопроизводительных игр. XNA стремится освободить разработку игр от написания «повторяющегося шаблонного кода» и объединить различные аспекты разработки игр в одной системе.
Конечно, можно разрабатывать игры и на Silverlight, но это чаще нетребовательные к графике и производительности небольшие игры, которые, однако, достаточно быстро разрабатываются. Важным является то, что в Silverlight большинство объекты векторные, а в XNA все объекты растровые (даже, например, текст на экране преобразуется в растр).
При этом платформы Silverlight и XNA для Windows Phone имеют ряд общих библиотек, т.е. некоторые библиотеки XNA могут использоваться в Silverlight и наоборот. Но нельзя создавать программу, сочетающую в себе визуальные элементы обеих платформ.
Выделив главное, можно сравнить вышеописанные платформы применительно к разработке приложений и игр для Windows Phone, рассмотрев Таблицу 2.
Таблица 2. Сравнение платформ для разработки приложений для Windows Phone
Silverlight |
XNA |
· Описываемый с помощью XAML пользовательский интерфейс · Быстрое создание приложений · Использование элементов темы Metro при разработке пользовательского интерфейса
|
· Разработка только на C# · Высокая производительность, · Быстрое создание графики · Кроссплатформенность:
|