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 ()
Ответ на: комментарий от namezys

> Порог вхождения кодеров на маке больше, чем на других платформах. Качество у них выше

и чуть чуть программирую


теперь понял, что чушь сказал?

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

>>где?

Ты только что испачкался, теперь не двигайся.

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

> Раньше С# выглядело на маке как инородное дерьмо, сейчас же напрямую используется кокоа, что дает крутые профиты.

Раньше С# выглядело на маке как инородное дерьмо, сейчас же выглядит как родное, с глянцем, гламуром и дырками от M$, что дает мигелю его 30 сребренников.

fixed

smolnij
()

а шапка, шапка шапка monomac'а ожидается например ?

Popil_Bablosov
()

Объясните мне кто-нибудь, как дружба двух проприетарщин связана с ресурсом linux.org.ru?

Divius ★★
()

Фигня всё это. Если порт на Линупс ещё был как-то объясним, то уж свою макакоОсь стивожлобс не отдаст никогда! Портируйте что хотите, но когда настанет время реальной угрозы, Жлобс выпустит (как с иПадом) соглашение, по которому нельзя ничего продавать, что не написано на Обжективе-Си.

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

>> Количество не подразумевает качество. Да, и если бы больше народу кодило, например, на лиспе, хаскеле, ерланге, луа и других не столь популярных языках было бы гораздо лучше. А от C# толку на линуксе - ноль.

Ви таки думаете что на лиспе нельзя писать говнокод ?

qwerky
()
Ответ на: комментарий от matumba

Этого не случится по одной простой причине: в iPhone/iPod/iPad в качестве легального источника ПО может выступать только AppStore, который полностью контролируется яблоком.

А с большой системой таких ограничений нет — уж извините, яблоко тут (пока) бессильно. Вот если сделают какой-нибудь OSXMarket и закроют доступ к другим источникам программ, тогда да.

env ★★☆
()

Нифига себе, они того и гляди скоро Qt догонят! голактеко опасносте...

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

>бггг :) чушь полнейшая - под мак ос совсем небольшой выбор хорошего софта

и практически весь опенсорс с никсов (особенно, если не влом поставить X11)

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

> Портируйте что хотите, но когда настанет время реальной угрозы, Жлобс выпустит (как с иПадом) соглашение, по которому нельзя ничего продавать, что не написано на Обжективе-Си.

Вот зачем это надо на настольной системе? Для мобильных платформ оно понятно - далее так и будет. А вот для полноценного компа нет

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

> Вот если сделают какой-нибудь OSXMarket и закроют доступ к другим источникам программ, тогда да.

Быстрее развитие iPad станет покрывать 90% задач пользователей

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

> и практически весь опенсорс с никсов (особенно, если не влом поставить X11)

и ви это называете хорошим?

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

> а, у вас хорошим считается только с .ехе. понятно

Нет. Есть папочик, оканчивающие на *.app

Я много раз говорил - софт на маке хорош именно интеграций. Костыль в виде Х - это хорошо и приятно. Но не дотягивает

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

> и практически весь опенсорс с никсов (особенно, если не влом поставить X11)

macPorts и т.п. - убожество, где часть портов не собираются, а часть работают и выглядят костыльно

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

>Приличные люди ГнОМосеками не являются.

А как насчет КеДЕрастов?

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

Портируйте что хотите, но когда настанет время реальной угрозы, Жлобс выпустит (как с иПадом) соглашение, по которому нельзя ничего продавать, что не написано на Обжективе-Си.

полностью согласен, о чем и писал выше

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

>А Джобс удобрил?

Ага, удобрил, ибо срал он на mono)))

petrosyan ★★★★★
()

Так а когда гнум окончательно перепишут на mono, а то уже проскакивала новость что в гноме теперь настоящий реестр!?

Freiheits-Sender ★★
()

mono - открытая платформа, c# - тоже язык программирования (enterpriseовый)
Не вижу никаких проблем.

m
()

Предложи мне хотя бы пяток хороших программ на C# под венду

Консоль MMC не предлагать

Karapuz ★★★★★
()

Xvid4PSP тоже не предлагать, она размер не умеет изменять

Karapuz ★★★★★
()
Ответ на: комментарий от Freiheits-Sender

> Так а когда гнум окончательно перепишут на mono

Смотри: сначала переписывание начнут, потом какое-то время, чтобы переписать программы, потом еще чуть-чуть, и еще, а потом всё, закончат.

Jayrome ★★★★★
()
Ответ на: комментарий от no-dashi

>Последняя версия Mono... Значит, следующих уже не будет?

ПОСЛЕ'ДНИЙ, яя, ее.
[...]
3. Предыдущий, предшествующий. Это было на последнем нашем заседании.
[...]
5. Самый новый, свежий, только что появившийся. В своей одежде он всегда наблюдал самую последнюю моду. Пушкин. Последнее техническое усовершенствование.
[...]

// К.О.

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

> а почему CUPS и WebKit не всчет?

CUPS она купила, WebKit - всего лишь форк.

они же их финансируют


Для кого они это делают? Для себя и только.

Deleted
()
Ответ на: комментарий от annulen

> прально, закидать ссаными тряпками за то, что накормила опенсорс-программистов

Это не их разработка, очнись. И потом, если бы CUPS был, скажем, под BSD-лицензией, то далеко не факт, что после покупки его не закрыли.

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

> Mozilla Foundation, Linux Foundation, FSF, OSI

и что, все они преследую цели «не за бабло?» а что ж они кушают тогда? или программисты кодят только по ночам, а днем мешки тягают?

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