LINUX.ORG.RU

Встречайте - MonoMac!

 , , , ,


0

0

Буквально на днях Мигель де Икаса объявил о выпуске нового направления в развитии платформы Mono под MacOS X - MonoMac, что позволяет создавать приложения на основе Cocoa с использованием Mono. MonoMac - это результат многолетних экспериментов со смешиванием .NET и Objective-C, а также некоторых принципов разработки, которые использовались в MonoTouch.

Несколько лет назад Джефф Нортон (Geoff Norton) создал CocoaSharp - первый набор языковых привязок .NET для Cocoa API. Первое время CocoaSharp отлично подходил для изучения принципов создания привязок для Objective-C на .NET. Со временем были созданы другие инструменты разработки для интеграции Objective-C с C# и другими языками .NET. У всех были свои достоинства и недостатки, и теперь сделана попытка объединить преимущества всех существующих решений в MonoMac.

Проектом выдвинуты следующие технические требования:

  • использование Cocoa API в виде C# API;
  • наследование от классов Objective-C;
  • механизм для вызова библиотек Objective-C;
  • сделать повседневные задачи Objective-C лёгкими, а сложные - возможными;
  • представление свойств Objective-C в виде свойств C#;
  • представление строго типизированных API, например вместо представления обычного контейнера NSArray или индивидуальных объектов NSObjects;
  • использование перечислений int и uint как параметров в виде перечислений C# или перечислений C# с атрибутами [Flags];
  • представление основных типов в виде «родных» типов C#;
  • события и уведомления, которые предоставляют пользователю возможность выбора между подходом Objective-C и системой событий C#;
  • лицензировать библиотеки классов под MIT X11, как и остальные библиотеки классов Mono;
  • представление делегатов C# (лямбды, анонимные методы и System.Delegate) для Objective-C API в виде «блоков»;
  • не создавать привязок для тех API, которые почти не используются на практике.

Cocoa состоит из двух API: одна часть - объектно-ориентированные C-callable API, а другая часть - API на базе Objective-C. API на основе C обрабатываются с использованием традиционного подхода P/Invoke, где эти API «оборачиваются» в классы C#. Это включает в себя такие API, как: AudioToolbx, CoreGraphics, CoreFoundation и CoreText. API на основе Objective-C, где используются такие ресурсоёмкие вещи, как пользовательский интерфейс и высокоуровневая логика (Foundation и AppKit), обрабатываются новым «движком» привязок MonoMac.ObjCRuntime и генератором привязок btouch.

В отличие от MonoTouch, MonoMac на данный момент не предоставляет привязок для всех Cocoa API. Основным направлением разработки была возможность создавать приложения вообще и подготовить кодовую базу к изменениям сторонних разработчиков.

На данный момент MonoMac предоставляет привязки для следующих API:

  • CoreFoundation (некоторые части ещё не реализованы полностью);
  • CoreText;
  • CoreGraphics;
  • Foundation (некоторые части ещё не реализованы, как и вспомогательные инструменты);
  • AppKit (осталось реализовать порядка 30%).

Разработчики MonoMac заинтересованы в улучшении проекта и его дальнейшем развитии, поэтому приглашают всех желающих принять активное участие в разработке.

А теперь ещё немного о приятном. MonoMac является всего лишь библиотекой, которая предоставляет разработчикам C# доступ к нижележащему слою API в OSX, и не включает в себя средства для создания установочных пакетов (application bundle). Но есть планы по включению нового инструмента «Mono bundler» в версию Mono 2.8. Этот инструмент исследует .NET приложение и генерирует установочный пакет, который содержит как код самого приложения, так и код тех зависимостей из Mono, которые необходимы для запуска. Такую же технологию сейчас использует Banshee на OSX. Это позволит распространять приложения, написанные на Mono под OSX без установки Mono на компьютере конечного пользователя.

Внимание! Для установки MonoMac вам потребуются два модуля: сам MonoMac и MacCore. Также нужна последняя версия Mono.

Сейчас самое время для тестирования уже написанной части проекта и, если есть желание - подключения к команде разработчиков. Со списком того, где требуется помощь, можно ознакомиться по ссылке ниже. Поэтому, если у вас есть время - то можете помочь в развитии платформы Mono на MacOS X и упростить другим написание новых приложений.

>>> Объявление Мигеля де Икасы

★★★★

Проверено: maxcom ()
Ответ на: комментарий от m

Магазины или производители? Если производители, то они хотя бы сами шьют, а не только нашивают наклейки (как это делает Apple), а если магазины продают одежду по цене в два раза дороже, чем та же одежда тех же производителей при одинаковом уровне сервиса — то значит они тоже, можно сказать, торгуют воздухом.

И, как я уже говорил, ф*пание на логотипы Армани, Версаче и Д-Г — удел таких же, как сами Армани, Версаче, Дольче и Габана.

Ttt ☆☆☆☆☆
()
Ответ на: комментарий от MuZHiK-2

Э-э-э... пруфлинк не дадите?

Пока я вижу: «Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited)».

То есть запрещён не только Mono, но даже языки, компилирующиеся в C. Разрешён только код, руками написанный на C, C++ или Objective C.

sabbakka ★★
()
Ответ на: комментарий от sabbakka

Я уже устал объяснять, что это сделано для ограничения на флэш. На остальное им пофиг - больше хороших приложений. Тем более, они не докажут, что на моно написано было.

MuZHiK-2 ★★★★
() автор топика
Ответ на: комментарий от MuZHiK-2

Вы наверное с политикой Apple знакомы лучше Стива Джобса. Я это уважаю.

sabbakka ★★
()
Ответ на: комментарий от MuZHiK-2

>Тем более, они не докажут, что на моно написано было.

А есть возможность перевести код с C# на C с г-фоновским API без потери читабельности?

Ttt ☆☆☆☆☆
()
Ответ на: комментарий от Ttt

>>А есть возможность перевести код с C# на C с г-фоновским API без потери читабельности?

Вообще-то MonoTouch транслирует C# в нативный Obj-C код.

MuZHiK-2 ★★★★
() автор топика
Ответ на: комментарий от MuZHiK-2

>MonoTouch транслирует C# в нативный Obj-C код.

И его эппловцы не отличат от писанного человеком?

Ttt ☆☆☆☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.