Pull to refresh

Mono приносит C# на iPhone и Wii

Reading time 2 min
Views 2.5K
Original author: Ryan Paul, http://arstechnica.com/authors/ryan-paul/
Mono, open-source реализация платформы .NET была использована для разработки игр для iPhone и Wii. Посмотрим, как статическая компиляция сделала возможным, чтобы приложения на Mono удовлетворили требованиям Apple к приложениям, размещаемым в App Store.

Mono — открытая реализация платформы .NET привнесла технологии разработки от Microsoft на несколько неожиданные платформы — iPhone, Android и Wii.

По словам ведущего разработчика Mono из Novell Мигеля де Иказа, ряд приложений в Apple App Store разработан с применением Mono. Это будет сюрпризом для тех, кто знаком с ограничениями политики Apple на включение приложений в AppStore, так как компания Apple жестко ограничивает разработчиков в использовании интерпретируемых языков и сред выполнения сторонних разработчиков — и эти ограничения исключают использование таких платформ, как .NET и Java.

Статическая компиляция — это «финт ушами» который позволяет запустить Mono на iPhone. Mono позволяет разработчикам использовать прекомпиляцию (ahead-of-time, AOT), которая преобразует код на промежуточном языке .NET (CIL) напрямую в native-код во время компиляции. Это означает, что приложение не использует компиляцию на лету (Just-in-time, JIT) чтобы генерировать native-код в процессе выполнения.

Также, есть еще ряд трюков и фишек Mono которые позволят разработчикам уменьшить размер приложений и сборок Mono для развертывания на мобильных устройствах. Вы можете использовать Mono linker чтобы уменьшить размер библиотек, можете опустить JIT и движок генерации кода из исполняемых приложений и вы можете вырезать CIL команды из сборок.

Статическая компиляция делает возможным создавать одобряемые Apple приложения для iPhone с применением Mono, но накладывает определенные ограничения. Обобщения (generics) и динамически генерируемый код не поддерживаются, когда применяется AOT-компиляция.

Есть еще множество сложностей, чтобы прямо сейчас включить в Mono возможность кросс-компиляции под iPhone, но по словам Мигеля де Иказы разработчики, которые хотят начать прямо сейчас могут использовать Unity — сторонний комерческий фреймворк для разработки 3D игр, который построен на Mono. Unity поддерживает разные платформы, включая iPhone и Wii и поставляется с собственной встроенной средой Mono с поддержкой кросс-компиляции для различных платформ.

В своем блоге-посте, Иказа указывает почти на 40 приложений (большинство из которых — игры) в Apple's App Store которые построены на Unity и Mono. Он так же пишет о My Animal Center, немецкой игре для Wii, которая так же была создана с помощью Mono и Unity.

Однако, не iPhone'ом единым жив человек. Разработчики в порядке эксперимента портировали среду выполнения Mono на Android устройство T-Mobile G1. Хотя этот порт — всего лишь экспериментальное подтверждение идеи и не может использоваться для развертывания рельных приложений на платформе в ближайшее время, он обладает потенциалом и выглядит неплохо по сравнению с Google's Dalvik в некоторых предварительных тестах.

Большие возможности по портируемости Mono и расширенная поддержка некоторых особенностей, таких как статическая компиляция, позволяют разработчикам использовать платформу в некоторых совершенно новых направлениях, применение в которых реализации Microsoft .NET невозможно. Это показывает значимость и гибкость, присущую открытым реализациям.

Tags:
Hubs:
+46
Comments 55
Comments Comments 55

Articles