Как стать автором
Обновить

Комментарии 145

Apple то к своим api не особо даёт доступа, даже DHH писал про iPad в своём твиттере.
Очень глупо. Еще один минус, который меня отдалил от продукции Apple, и разработку под него.
как вы точно подметили, Apple — хозяин-барин, и отсутствие решений Microsoft на их рынке — только им в плюс. хоть я и не рад такому повороту событий, но этого стоило ожидать. вся история apple строится на политике противопоставления себя остальному миру IT, так было, и имхо, так будет.
хочу заметить, что MonoTouch — это не решение Microsoft. Это платформа основанная на свободной открытой реализации стандартов С#/CLI от Novell.
да, извиняюсь за неточность. ну в любом случае это не самое главное. опять же, как Вы уже сказали, данная платформа позволяет разрабатывать приложения не только для продуктов Apple, но и под Zune, Windows [7 Phone], XBox. а для них это не выгодно. так что шаг вроде вполне логичный, хоть и неприятный для разработчиков.
А в чем заключается невыгодность? Если приложение более ли менее востребованное, то его все равно будут точить под разные платформы, только теперь, благодаря стараниям Apple накладные расходы возрастут, раньше один C# специалист, теперь еще и Objective-C человека надо. Что, конечно скажется на стоимости.

Да и вообще в чем плюсы такого подхода, они продают свои средства разработки? Вроде нет.
Под айфон вроде только на маке можно писать… Или я ошибаюсь?
Есть (была?) возможность писать и компилировать на Windows (toolchain)
Похоже, что единственной лазейкой остается Hackintosh (MacOS установленный не на Apple-ском железе)
А давайте еще и JS забаним — тоже позволяет разрабатывать под iPhone, Zune, Windows [7 Phone], XBox.
А разве js кому то принадлежит?
и попрошу заметить, что C# имеет весьма приятный синтаксис в отличии от вырвиглазного Obj-C. Да и игровых движков нет нормальных на «нативных» языках.

p.s.
так вроде бы этот пункт там уже давно, и все путем.
ранее пункт был такой:

«3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs.»

и все. Теперь (полностью):

«3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. 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).»

Эмм unity3d серьезно теперь вне закона выходит? О_о
Я надеюсь, что это всего лишь недоразумение, которое счастливо разрешится
не приятно будет переписывать все и поддерживать 2 абсолютно разные версии продукта.
НЛО прилетело и опубликовало эту надпись здесь
Добавьте в пост.
www.tuaw.com/2010/04/08/iphone-os-4-0-dev-agreement-blocks-using-flash-or-unity-as-ides/
^^
UPDATE: We've heard directly from Unity Technologies themselves, and the company's CEO,

David Helgason, has been in contact with Apple over the matter. Helgason says that so far Unity has «no indication from Apple that things are going to change.» This is consistent with John Gruber's viewpoint on the new iPhone OS 4.0 dev agreement. Gruber originally thought that Unity3D would be a prime candidate for banning under the new rules, but given that Unity3D is, in Gruber's words, «a pre-processor than a cross-compiler,» it's nowhere near as certain that Unity will fall on what Gruber calls «the wrong side of the line» per the new dev agreement. Gruber's opinion on the fate of Flash CS5's iPhone compiler under the new rules is… we'll say, «somewhat less rosy,» and given the already strained relationship between Apple and Adobe, he's very likely correct.
Судя по всему…
Сегодня получил: Unity iPhone 1.7 is ready for your iPad games. Я думаю все путем…
А кстати да… «игровых движков нет нормальных на «нативных» языках.»

А что будет со всеми уже написанными играми/приложениями?
Cocos2d — неплохой движок для 2d игр, написан на нативном objective-c
использование бесплатное
в том же MonoTouch есть CocosNet — Cocos2d реализация под .NET

а насчет «вырвиглазного» синтаксиса objective-c, то тут больше «на вкус и цвет...»

лично я не понимаю нападок на синтаксис и внешний вид бедняги obj-c
хочешь ооп — классы, наследование, категории, протоколы, полиморфизм туда же
стандартный ANSI C, C++
полный набор фреймворков на все случаи жизни и т.п.
в общем, язык как язык, со всеми положенными возможностями и хорошей средой разработки, но все это никого не волнует, потому что «как-то не так выглядит код, глаза болят...» :)
это все равно что сказать «у вашего молотка ручка красная, не хочу им гвозди забивать» )

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

Вот это и вызывает… недоумение, мягко говоря.
ну это уже другой вопрос, тут уже obj-c не виноват ни в чем, на его месте мог оказаться любой другой язык

я жду окончательного выхода Phone 7, а еще больше жду когда появятся тулзы чтобы писать приложения под Phone 7 на чем-то другом, ну например, на злосчастном obj-c :)
или, что более реально, на flash, java

хочется посмотреть как себя поведет MS в этом случае

flash будет поддерживаться на WP7 в браузере, между прочим, наж этим Adobe и Microsoft работают вместе, так заявлял сотрудник Adobe.
Да никак особенно не поведет. Под .NET Framework уже можно писать на десятке языков. Если желающие делают свой язык — пожалуйста, MS это не запрещает.

Собственно, знаете, это ведь и есть суть программирования — развивать, придумывать новое. А не сидеть убого в коробке, предписанной высшим указом, и клепать приложения по схеме.

Впрочем, не уверен что Джобс это понимает. Судя по книге «Икона — Стив Джобс» для него существует только одно правильное мнение. По любому вопросу.
я и не пытался оправдать политику apple или его основателя

я попытался защитить исключительно бедный obj-c
то что он является единственным языком для разработки (хотя это не совсем правда, с++ можно и нужно исползовать), это не делает этот язык плохим

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


а есть какая-то схема?
где-то сказано что obj-c в совокупности с с++ позволяет писать приложения только по определенной «схеме» и «в соответствии с указом»?

нехорошо вот так категорично заявлять
хотите MVC и другие паттерны (delegate, facade, chain of responsibility, да что угодно...)? пожалуйста! придумывайте, имплементируйте, создавайте

нужны треды? и они тут есть
или их более высокоуровневый аналог message queues, который рекомендуют использовать и который скрывает от разработчика всю работу по созданию и удалению тредов

хотите в рантайме узнать класс объекта, узнать поддерживает ли он вызов определенного метода? и это пожалуйста ))

и так далее

не стоит утверждать что развивать и придумывать новое можно только в рамках C# + .NET, а использование нативных средств это тупое следование каким-то «схемам»
это совсем не так

другое дело что многим хотелось бы творить на других языках и они этого не могут
что конечно расстраивает
Цитирую из комментария выше:

Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs

Так что таки да, есть указ. По крайней мере, составитель лицензии считает, что таковой указ есть.
хотел пройти мимо, но не могу не придраться к слову )
эппл никого не «заставляет», не приходит к людям домой и не принуждает разрабатывать что либо под iPhone OS

также точно как гугл никого не заставляет девелопить под андроид
ну и далее по списку

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

тем не менее множество девелоперов идут в чужой монастырь со своим уставом
и при этом еще недоумевают, как же так )
Передргиваете. Эппл хочет, чтобы люди разрабатывали. Если бы они не разрабатывали, эппл имел бы бледный вид. Но при этом он считает себя вправе диктовать условия — пиши на том-то или не пущу. Люди, которые вынуждены программировать на этом, вправе возмущаться.

Почему «вынуждены», спросите вы? Дескать, у нас сводобная страна и все такое! Начальство заставляет, вот они и вынуждены. Я знаю много таких, которые не хотят, но им приходится.

А хотели бы они писать, например, на MonoTouch. Пусть и за деньги. И тут эппл р-раз, и запрещает. Этому есть техническое объяснение? Нет. Это просто жлобство. Когда человек видит жлоба, он начинает возмущаться. Все просто.

В целом же, комментарии в стиле «не нравится — не ешь» конструктивными вряд ли являются.
>Этому есть техническое объяснение? Нет. Это просто жлобство.

При всем уважении к Вам, но это лишь Ваше личное мнение, которое, далеко не факт, что является истинной. Как по мне, достаточно правдоподобно звучит такое объяснение.

ну вот опять же, старый мотив, бедняги вынуждены писать на этом кривом и ужасном obj-c, использовать этот никудышный next step framework? в таком контексте тут используется «вынуждены»?

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

если человек может писать на c#, то с и с++ ему не в новинку
значит ооп ему знакомо
если он смог разобраться с документацией .net, то и с next step, поверьте, совладает
array, map, set, string, все это есть в наличии и все это используется похожим образом, разве что пишется другим синтаксисом

более менее опытныму программисту хватит двух недель чтобы освоится и чувствовать себя уверенно в компании с квадратными скобками, ключевыми словами id, self, SEL, понятием selector и принципами его работы, не такой уж и длинных список

конечно же, Вы непременно вспомните garbage collector, точнее, его отсутствие в нативной среде
да неудобно, многим не нравится за собой подчищать, но для грамотного разработчика такая задача вполне по силам, к тому же достаточно прочно усвоить 3-4 простых правила и забыть об утечках памяти
и всегда есть Object Allocation и Leaks — удобные тулзы в составе SDK, которые максимально упрощают поиск утечек

все, никаких больше лишений девелопер не испытывает
сколько уже можно приравнивать нативные средства к какому-то низкоуровнему ассемблеру, на котором нормальный человек может разрабатывать только вынуждено, под дулом пистолета?
ну правда?

не хотят, но им приходится

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

собственно в этом и есть суть программирования, узнавать и изучать новое и применять это на практике, а не чураться всего что плохо выглядит с первого взгляда и не цепляться за имеющийся багаж знаний, как я считаю
Если не пробовали, рекомендую написать что-нибудь на c#. Получите удовольствие. И поймете, почему люди, которые хотели бы что-нибудь написать под iPhone на MonoTouch нервничают.
И, конечно, повелся я отвечать Вам на этот комментарий, хотя опять была сделана подмена понтий.

А претензии были не к Obj-С, а к тому, что Apple запрещает разработчикам пользоваться другими языками.
>ну вот опять же, старый мотив, бедняги вынуждены писать на этом кривом и ужасном obj-c, использовать этот никудышный next step framework? в таком контексте тут используется «вынуждены»?
Представьте на секунду, что Internet Explorer станет показывает только сайты, созданные при помощи FrontPage. Крик бы стоял неописуемый…
стоял бы, согласен
но как вообще можно пытаться сравнить браузер IE с мобильными устройствами iPhone/iPad?
ума не приложу как подобная аналогия применима к этому обсуждению.
>ума не приложу как подобная аналогия применима к этому обсуждению.
Очень просто: браузер во многом подобен операционной системе. В нём работают сторонние программы и открываются сторонние документы.
Есть оговоренный формат документов/программ, которые операционная система/браузер может отобразить/запустить. Для браузера это HTML и Javascript, для iPhone OS — некоторый native формат исполняемых файлов.
Ввведение искусственных ограничений на то каким инструментом был создан исполняемый файл (правильного формата) для iPhone OS равносильно введению ограничений на то, при помощи какого инструмента была создана HTML страница (правильного формата), предназначенная для браузера.
Ну я имел ввиду 3d игры. Таких как unity3d нет.
Я пытался осилить Obj-C раз пять, в результате знаю питон, руби и теперь вот уже разибираюсь в c#. Я однажды поинтерисовался как в этом Obj-C с CocoaTouch отправить xml'ку POST запросом. Меня кол-во [ ] напугало, да и сам код не читается легко если не знать языка.

Из движков под айфон я знаю Shiva3d (таже юнити но win only), sio2 — вырвиглазная барада, но довольно таки мощная (тут меня сильно блендер оттолкнул под маком он как-то не так работает), но однажны в эмуляторе приложение работало, а на айфоне не запустилось. torque3d(как-то так пишется, не уверен точно), но на него весьма эпичные цены, еще есть один опенсорсный с малым кол-вом документации и он очень сложный.

Каким бы фаном apple я не был и каким бы MSоненавистинком я не был — C# мне нравиться больше чем Obj-C, хотя так или иначе надо будет его изучить

p.s.
Кстати в Obj-C разве можно использовать C++ код? Книжка от Apple говорит, что нельзя.
похоже я эту книжку от эппл не читал )
но вот iPhone OS Reference Library говорит что можно, даже больше, рассказывает как это делать

OpenFeint, например, написан с обильным использованием с++, что заметно по большому количеству .mm файлов

есть некоторые ограничения: нельзя наследовать с++ клас от obj-c класса и наоборот, и какие-то еще
но, в общем и целом, плюсы можно использовать на полную катушку

часть кода будет на obj-c в любом случае, но ее можно минимизировать, если obj-c доставляет проблемы
хмм, значит я не так понял, что «с код является валидным obj-c, в то время как с++ — нет». А как лучше делать все на obj-c писать или смешивать код? Как я понял посылка сообщения имеет большой оверхед и критические куски надо на сях писать — правильно?
определенный оверхед есть
если какой-то сложный рендеринг 3d сцен, использование плюсовых вызовов предопочтительней чем посылка сообщений

>Кстати в Obj-C разве можно использовать C++ код? Книжка от Apple говорит, что нельзя.

какая именно книжка? Во всех их книгах как минимум упоминается про Objective-C++
не помню название, я ее недочитал до конца так как скобочки вынесли мне мозг, может сейчас когда я в ООП начал разбираться получиться его(Obj-C) освоить. И я уже сказал, что скорее всего не так понял фразу из книжки.

>Objective-C++
Ну как бы тут(Terms of Use) ничего не сказано про Obj-C++.
жалко, мигель не любит андроид
но теперь, видимо, придется

думаю, эппл себе этим шагов навредит
в конце кноцов выиграет та платформа, которую будут больше любить разработчики
Мигель официально заявил еще пару месяцев назад, что они готовят Моно для android, Wii, PS3 и Xbox. И рассматривают Palm и Blackberry.
выиграет та, которую будут любить пользователи :)
НЛО прилетело и опубликовало эту надпись здесь
Разработчики больше пишут под те платформы, за которые им платят пользователи. ;)
А в чем разница между PhoneGap и Titanium? Я сходу не заметил
Принципиально нету :)
Только у последнего расширенный API доступ.
Ну вот и достаточная причина для «С Titanium пока до конца не ясно.» :) (imho)

Интересно что будет с PhoneGap если они тоже добавят/разширят API?
PhoneGap сообщил, что их пустили. Скорее всего и Titanium пропустят.
Да это прямо Империя против Республики. Помоги нам Оби-Ван Кеноби. :)
в данном случае, Мигель Де Иказа :-)
Apple запрещает Flash и другие альтернативные средства потому, что оно уже не сможет контролировать количество приложений и, соответственно грести деньги с разработчиков/потребителей программ.
Единственное, через что можно публиковать программы — это Apple Store. Подумайте сами, если любую программу и игру можно будет запустить в браузере на любом сайте! Это же убьёт всю идею Apple в выкачивании денег изо всего, из чего можно :)

Поэтому рассчитывать на то, что Apple что-то пропустит, наивно — как минимум.
у вас неправильное представление о проблеме: речь не идет о запуске плагинов в браузере. Речь идет о том, что Apple запрещает писать ПО для AppStore на альтернативных фреймворках.

Я всё это понимаю. По-большому счёту, разницы нет, что плагины, что отдельные приложения.
Кто разрабатывает IDE flash? Adobe? А кто разрабатывает IDE MonoTouch? Тоже не Apple.
Сколько они хотят за SDK iPhone/iPad? 100 долларов, насколько я помню?
Сколько потенциальных покупателей SDK они при этом потеряют?

Качество приложений это уже вопрос десятый.
Даже за private API они приложения блокируют.
То есть, можно делать только то, что сказал Стив и больше ничего. В ObjectiveC можно тоже такого накосячить, что качеством там пахнуть и не будет.

Моё мнение — эти запреты придуманы не на пустом месте. И в первую очередь причина банальна — деньги. Всё остальное вторично.

Если бы Apple не пытался зарабатывать на всём подряд, то у iPad'а сейчас был бы нормальный USB-разъём и программы можно было бы устанавливать при помощи копирования на флэш-карту по USB. А реалии таковы, что их необходимо покупать в Apple Store.

Этой политики не видят только те, кто не хочет её видеть. Я никого не осуждаю, но своё личное мнение высказываю.
дык, понятно, что за любым подобным решением стоит собственная прибыль и деньги
просто тенденция плохая, на разработчиках обычно не пытаются _так_ упорно нажиться. наживаются на продажах.
даже если у вас есть monotouch или flash5 вы свои 100баксов в аппл отнесете, без этого в аппстор не попасть
Хм, а разве для использования iphone SDK не нужен мак? Если да — то это не 100$, а минимум на порядок больше.
для использования iphone SDK нужен не мак, а мак ось.
да, в идеальном мире эппл, мак оси стоят только на маках,
но если хочется и очень сильно, то есть hackintosh (мак ось установленная не на яблочном железе)
вот тут можно узнать много интересного и полезного на этот счет

конечно же там есть свои подводные камни и тонкости, читай геморрой, но зато бесплатно :)
Ну вас же не удивляет ситуация что для того чтобы писать на VisualStudio нужен компьютер с windows, почему тут должно быть по другому.
А мак может быть и так, у меня знакомый на нем рисует. И совершенно не пытается на него xcode поставить.
да, но это может быть и PC и Maс, в отличие от…
Э не, не подменяйте понятия. IDE это не SDK, я могу вместо VS взять тот же эклипс, или вообще, написать все в блокноте. Я согласен — чтобы потом все это проверить — надо комп с виндой. В данном случае, например, у меня есть только iphone (аналогия компа с виндой — т.е конечный девайс), и я хочу сделать нужное мне приложение — так ведь нет, купи мак сначала, а потом уж делай, и никак иначе. А это нехорошо.
вот ничто не запрещает писать софт под айфон в блокноте и потом компилировать его встроенным компилятором.

> и я хочу сделать нужное мне приложение — так ведь нет, купи мак сначала, а потом уж делай, и никак иначе. А это нехорошо.

А я хочу софт под WinMo 7 написать, мне надо винду купить сначала. Так же я хотел сервелат поковырять, отгадайте что мне надо купить перед этим?

p.s.
с каких пор IDE XCode стал iPhones SDK?
iPhone sdk распространяется бесплатно, 100$ платится за участие в девелоперской программе, а здесь уже без разницы начем будет написанна программа, если программист хочет, чтобы она была в AppStore, то он отдаст денежку Apple. Кстати в стоимость того же MonoTouch эта программа уже входит, то есть при покупке MonoTouch, Apple получает свои деньги.
лицензия от apple выдается на год
через год нужно снова проплатить 99$ чтобы иметь возмоность дальше выкладывать в апстор и тестировать на девайсе

как это дело работает в случае с MonoTouch, они же не будут за меня платить 99 баксов через год? :)

да и вообще, оплата лицензии происходит через мой личный аккаунт в ADC
как ребята из моно тач заплатят от моего имени?

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

или я упустил что-то?
нет, насколько я понял, то при покупке MonoTouch создается аккаунт в ADC предоплаченный на год. При этом отказаться и купить отдельно MonoTouch даже если у тебя есть аккаунт вроде бы нельзя)
ясно

еще меня удивило вот это
Do I need a Mac to use MonoTouch?

MonoTouch requires a Mac and Apple's iPhone SDK to test on the emulator and deploy on the device. And you will need to be an Apple iPhone developer to deploy on the device.


а я, наивный, всегда думал что моно тач кроссплатформенный и может работать на винде… преувеличил я его возможности по ходу :)

короче, то же самое ежегодное рабство, что и в случае с «чистым» SDK
только приходится платить еще больше за возможность писать на C# с использованием .NET

Не количество приложений, ведь они все равно проходят через App Store, а качество.
Вот выпустило apple новую фишку, а теперь еще надо уговаривать всякие adobe и novell, чтобы они их реализовали в своих SDK. Такой вариант они и хотят пресечь.
чушь. никого не надо уговаривать. Apple никак не зависила и не зависит от Adobe и Novell.
Вы не поняли. Даже если у вас есть свой SDK, а над ним надстроен чужой ненативный фреймворк, типа Mono, и им пользуется большАя часть разработчиков, то чтобы эта часть разработчиков использовала вашу новую фишку в вашем нативном SDK, надо, чтобы чужой фреймворк ее тоже поддерживал.
это понятно, но Apple не требуется никого «уговаривать»
Если Microsoft выпустит фишку для WinAPI то ему не надо уговаривать сотню фреймворков включить ее в свои SDK. Проходит время и фишка постепенно оказывается всюду.

Проблема «уговоров» — надуманная, я это хочу сказать. Такой причины нет. И кстати, MonoTouch поддерживал iPad через 24 часа после официального анонса. Без уговоров.
Надуманная, не надуманная, но другой причины не видно. Потому как может сложиться ситуация, когда надстройка захватит умы большей половины разработчиков и начнет прямо или косвенно (например, своим бездействием) диктовать свои условия.
сложно представить ситуацию, когда нативный инструмент на iPhone получит меньшее распространение, чем альтернатива. может быть тогда с нативным что-то не так? и тут не запрещать надо, а улучшать свое или перенимать у других?
ADC требуется в любом случае, без него никак не опубликовать приложение. Это просто популяризация Obj-C.
идея выкачивать деньги из всего, из чего можно вовсе не идея Apple
можно подумать все остальные гиганты IT индустрии сплошные альтруисты и про подобную идею ни слухом ни духом :)

да, капитализм он такой, все хотят заработать на всем )
Будет интересно посмотреть как изменится стратегия Apple, когда Android будет наступать на пятки.
я трогал новые устройства на Андроид и смеюсь над вашим комментарием!
А чуть конкретнее?
У него еще есть комментарии
Чтото мне кажется он не расстроен :)
В общем Мигель дал понять, что волноваться не стоит. Всё будет :)
По-крайней мере у C# девелоперов.
Хотелось бы уточнить. Вот Вы пишите «код C# компилировался в полностью нативный код для iPhone». То есть на выходе компилятора на самом деле нативный код или имелось в виду что, как обычно, вначале в MSIL, а уже при запуске приложения MSIL — > Naive?

Что же до Apple, то можно понять их заботу о юзерах — быстрые нативные приложения, не требующие громоздких Frameworks и тем самым сберегающие драгоценные ресурсы iPhone. Но абсолютно расстраивает их подход. То приложения надо ставить только из AppStore, куда попало только то, что решило Apple. То вот писать только на Сях, как решило Apple. Пользователь сам должен решать что ему ставить на СВОЙ законной купленный девайс, и возможность сделать это у него должна быть максимально простой. И если будет несколько приложений сходной функциональности, написанных на разных языках или программных платформах, то рынок должен решить кому жить, а кому умереть.

ЗЫ. Кстати, как мне ответили тут habrahabr.ru/blogs/mobiledev/65317/#comment_1828334 — Google тоже хочет, чтобы под Android проги писались на Java и только критические участки на Сях.
MSIL там нет, насколько я помню описание Мигеля. C# компилируется сразу в код для iPhone. Виртуальные машины запрещены на iPhone изначально, потому IL там вне закона с самого начала.
Как человек, который немного успел поработать с MonoTouch и даже успел написать несколько статей по этому поводу, не могу понять политику Apple. Больше приложений -> больший профит. И качество тут не при чем — оно и сейчас оставляет желать лучшего.
Абсолютно не понимаю этот шаг. Запрет на виртуальные машины или на все, что дает возможность испольнять произвольный код на iphone — это логично, ибо закрывает бэкдоры, несанкционированное ПО, jailbrake и так далее — но придераться к трансляторам (MSIL -> Obj-C) это вверх какого-то маразма — никаких бэкдоров это не создает, вообще никаких проблем ни для пользователей, ни для apple. Зачем этот шаг? Кроме как железобетонной популиризации Obj-C я не могу назвать.
В связи с этим, представьте себе, что завтра Microsoft запретит писать под Windows на Java? Или объявит вне закона Air? Абсурдная ситуация? Точно.

Насколько я знаю, под Windows Phone 7 нельзя будет писать ни на Objective C, ни на Java. Только C#! Абсурдная ситуация? НЕТ!

В целом, это платформа была крайне удачной и теперь — вне закона.

Эта платформа с самого начала вне закона.

Давайте попробую привести пример из жизни. Вы приезжаете в чужую страну и хотите начать там свой бизнес, открывая компанию юридической консультации. НО! Все документы, подготавливаемые Вашей компанией для клиентов пишутся изначально на русском, а потом программно переводятся на конечный язык. Вам отказывают в ведении такого бизнеса. Абсурдная ситуация? НЕТ! Потому что у конечной страны нет ни уверенности в вашем программном переводчике, ни потребности его изучать.
>> Насколько я знаю, под Windows Phone 7 нельзя будет писать ни на Objective C, ни на Java. Только C#! Абсурдная ситуация? НЕТ!

можно будет писать на чем угодно, лишь бы компилировался .net-код. сделаете как Novell реализацию objective-c под .net — будет можно писать.
Под WP7 можно будет писать на VB.Net, F#, IronPython, IronRuby, Boo + еще куча MSIL языков.
> В связи с этим, представьте себе, что завтра Microsoft запретит писать под Windows на Java? Или объявит вне закона Air?

На MacOS X есть и Java и Air, и все остальное. Мобильная платформа — немного другое. Если Mono-приложение будет валиться, то никто не скажет: «Это Mono глючит», пользователь будет считать что телефон глючный и будет отчасти прав. Тем более, пользователю неизвестно на чем написано приложение.

Objective-C в связке с Xcode и прочими инструментами (которые, кстати, можно скачать бесплатно) — достаточно мощная платформа. А тот же MonoTouch, по сути, взращивает девелоперов, не знающих ObjC, так что мне как пользователю все равно если Мигель не сможет обернуть все что движется в C#, главное чтобы приложения в App Store были стабильными
слабый аргумент, больше года ничего не валилось, приложения принимали в аппстор :-)

код на выходе — нативный, качества кода от того на чем его напишут — не зависит. Или на objective-C уже нельзя написать код который будет «валиться»?

почему на C++ можно писать, а на C# — нет?
На Obj-C можно так же лихо писать падающие приложения, что и под MonoTouch — так в чем же дело?
И зачем же знать пользователю, на чем написано приложение?
Пользователю и не нужно этого знать. Потому как пользователю мне почти все равно что там. Хотя как пользователю, который знает что такое Monotouch, мне стремно, т.к. причины, заставляющие людей оборачивать ObjC в реверсно инженереный C# мне непонятны. Это все равно что C# в бейсик оборачивать, хотя многие так и делают.
а вот мне стремно запускать все, что написано на obj-c непонятно кем и как — замкнутый круг.
смысл в том, что производитель не должен ограничивать разработчиков в выборе инструментов, доступных на платформе — есть Obj-C, есть конвертер MonoTouch — чем он не угодил Стиву? отсутствие java и flash я могу понять — но придираться к intermediate решениям — это то, чего я не понимаю.
Скоро опять будут кричать Developers Developers
можно посмотреть на эту проблему чисто с технической стороны, в свете появления в четвертой версии iPhone OS такой фичи как suspend, который почему-то многие называют многозадачностью.

Имеем два факта:
а) на айфоне нет свопа, при suspend'е программа остается в памяти и продолжает занимать некую область.
б) как известно, любая managed система из вышеперечисленных в подавляющем числе случаев заведомо требует бОльшего количества памяти для работы, чем приложения, написанные с использованием нативного SDK. Причин тут две — сборка мусора и необходимость грузить в память отдельный фреймворк/рантайм.

так же вспомним аксиому — глючные программы пишут криворукие программисты, а ругают за них производителя OS, в данном случае это эппл.

вывод отсюда можно сделать один — бан на сторонние фреймворки имеет под собой вполне разумное техническое обоснование. Для эппла забота об экспириенсе конечного пользователя стоит в списке приоритетов явно на порядок выше заботы об удобстве разработчиков, так что бан — шаг вполне ожидаемый для тех, кто хотя бы немного понимает, как iPhoneOS работает внутри, по крайней мере в плане подсистемы управления памятью.
нет никакого рантайма, JIT, виртуальной машины или managed-системы. Apple запретила это еще в самом начале.
все ПО от MonoTouch исполняется в нативном коде
хотя вру, наверное, рантайм-таки есть. но это не те виртуальные машины которые отъедают кучу памяти
рантайм в данном случае — все дерево стандартных классов + некислая система рендеринга (в случае с флешем). То, что программа скомилирована в нативный код никак не отменяет наличие этих компонентов, просто вызов методов идет не через виртуальную машину а напрямую.
Собственно говоря, размер приложений сделанных на CS5 уже о многом позволяет задуматься…
я не в курсе, а что Flash to iPhone тянет за собой свою систему рендеринга?
насколько я знаю — да. Собственно говоря, а как еще по-другому? По-сути, там флеш-плеер почти целиком в виде библиотеки, за вычетом виртуальной машины.
«грузить в память отдельный фреймворк/рантайм» — давайте сделаем бан на использование сторонних lib, пусть используют только то, что есть на iphone OS и не больше.

опять таки, я могу на obj-c слинковать кучу всякого говна, лижбы отрисовать кружочек — с точки зрения apple, если они пекутся о месте — следовало просто дать ограничение на размер программы, допустим, в 5 мегабайт. а то, что приложениям на managed среде нужно больше памяти — это если вы пишите их для контроллеров — microsoft поставляла свой .net compact прямо с его выходом на windows mobile кучу лет, и тогда это работало. сейчас процессорные мощности на телефонах превосходят те времена на порядок.
к слову приложения на .net cf ооочень долго загружались
Как мне кажется, у разработчиков, серьезно занимающихся мобильными приложениями, есть сейчас два варианта:

— Переходить на другие платформы
— писать в Федеральную Торговую Комиссию США, нанимать юристов для class action lawsuit.

Потому что я уверен — пацаны из Купертино на этом не остановятся.
FTC тут не поможет.
Откуда такая уверенность? По-моему вполне тянет на anti-competitive practice.
Согласен. Эта ситуация ничем не отличается от ситуации Opera vs. IE, например.
там была монополия, не?
Хороший ход со стороны Apple. Phone 7 наступает, почему бы не обрезать возможность легкого портирования…
ага и по пути потерять кучу разработчиков. Я почитал что на западных форумах пишут, что-то типа бойкотированная продукты Apple как платформу вообще.
Говорить много могут. AppStore приносит разработчикам деньги, и терять их они вряд ли намерены. Бойкот в данном случае = простой разработки = потеря денег… Кто на это пойдет? И из за чего? Потеря возможности дотнетить и сишарпить под iPhone/iPod/iPad? Велика беда.
если разработчикам надо будет переписывать полностью все приложение (допустим мы имеем игру), искать другой движек, адаптировать наработки и терять удобную IDE (такую как Unity3d). Я вот даже не знаю теперь планировали iPhone игру, а сейчас выходит, что ограничусь десктопом так как переписывание приложения и поддержку другой кодовой базы на другом языке параллельно с текущей я не потяну.
Однако в данном случае «проблемы индейцев шерифа не волнуют». Apple сделал свой ход, грязный, но сильный, кто бы что ни говорил. И направлен он именно на Windows Phone 7 — на анроид приложения итак с нуля пишут, либо на том же objective-c.
не совсем так. Приложения под андроид можно писать на любом языке который эмм работает в их VM. Недавно вот JRuby туда перенесли, если посмотреть Andorid Market и App Store можно заметить, что многие приложения есть и там и там. Такие хорошие вещи как unity3d скоро будут позволять деплоить игры сразу на много платформ. Раньше мне нравилась политика эппл — перенести продукт на их платформу просто, а отвязать практически не возможно :(
Вот человек уходит, хлопнув дверью:
www.mobileorchard.com/goodbye/

Насколько я понял, у него был довольно популярный подкаст про разработку для iPhone.
пожалуйста, уходите, байкотируйте на здоровье. Меньше разработчиков => меньше конкуренции для меня
я то не куда уходить не собираюсь, но рекакция людей меня пугает.
это скорее WP7 делает невозможным портирование, а не Apple — для WP7 нет возможности писать на c/c++
написание нативного кода для WP7 на С++ доступно OEM-партнерам и другим компаниям, например Adobe пишет поддержку Flash с доступом к нативному коду.
я-то знаю, но речь о «простых смертных»
как тут неоднакратно подмечалось — это прежде всего удар по тем, кто делал приложения кросплатформенно, или собирался делать, между windows (и desktop и mobile) и iphone — этим разработчикам, либо придется уйти/не разрабатывать для iphone (это, к сожалению, мой вариант), либо делать double effort и вести код на obj-c полностью повторяющегося функционала.
c/c++, не?
это прежде всего удар по тем, кто делал приложения кросплатформенн

я бы сказал это не какой-то нацеленный удар по конкретным средствам разработки, компаниям или девелоперам

этот шаг нацелен на извлечение выгоды для самой эппл: получить больше «нативных» разработчиков под их платформу iPhone OS, которая с выходом 4.0 все ближе и ближе приближается к Mac OS X (например, в 4.0 добавлен Grand Central Dispatch, которого раньше не было)
т.е. потенциально получить в будущем еще и Mac OS девелоперов

да, при этом «страдает» множество разработчиков, предпочитающих другие средства разработки
но это больше побочный эффект, чем основная цель эппл
тем не менее, во всех подобных обсуждениях звучит мнение «эппл целенаправленно борется с нами из-за своего жлобства и недальновидности!»
жлобство оно есть, без него на рынке не прожить :)
а вот про недальновидность не верно, скорее наоборот
вообще в свете последних событий с WP7, предоставление полного набора разработки бесплатно (или через тот же bizspark, что «почти» бесплатно), политика Apple напоминает политику эмперии зла:
— сначало кинули 3g покупателей (которые продолжают покупать недоафон, по мнению Apple, по сравнению с 3gs)
— теперь собираются кинуть разработчиков кроссплатформенных решений

p.s. а я уже вчера грустил, что заказал ipad и отменить заказ невозможно, я очень сильно расстроен, как разработчик (ну и как пользователь 3g, хотя я его уже променял на старенькую nokia 6500 slide, просто удобнее).
а что с iPad не так? а то мне он нравится, хотел бы приобрести
да просто противно как то, а так все с ipad отлично в свете грядущей многозадачности
Я вот не понимаю, зачем всё это делать. Ну тянет моно к примеру реализацию md5 свою если я её использую в коде. Так что теперь, сторонний библиотеки вообще нельзя вскоре будет использовать?

Немного непонятно, это же всё компилится в нули и единицы, какая разница как я их получил?
Хотя я и согласен что большие зависимости кода это плохо, но моно и не тянет за собой весь фреймворк. Даже обычный .net позволяет поставить минимальный пакет библиотек на 28мега и не надо весь фрейворк ставить.

Вообщем проблема наверно именно в этом, что программы тянут за собой большие библиотеки и весят очень много. Большой трафик для телефона. Вот почему некоторые приложения которые компилятся с javascript уже пропустили.

Во общем идиотизм, получается если есть наработанный код в библиотеке его использовать нельзя?
Уважая Mono, хочу обратить внимание на ошибку в вашей статье. Вы считаете, что компилирование в нативный код решает проблему производительности .Net. Но это не так, потому что любая развитая виртуальная машина компилирует байт-код в нативный перед выполнением, так называемая JIT-компиляция (даже V8 в Chrome и интерпретирует JS, а сначала компилирует его в машинный код, не говоря уже о .Net и Java ВМ). Проблема производительности Java и C# связана с их преимуществом — автоматической сборкой мусора и отсутствием прямой работы с памятью. В итоге хитрый программист не может так сильно оптимизировать код, плюс запуск и рассчёты сборщика мусора потребляют ресурсы.
>байт-код в нативный перед выполнением, так называемая JIT-компиляция

не совсем, это называется AOT(Ahead Of Time compilation). JIT это когда компилируется во время исполнения
Я вроде и имел в виду, что в V8 перед выполнением идёт сразу компиляция, а не заранее, как в MonoTouch (что собственно не влияет особо на производительность, только на время запуска).
простите, аргумент по поводу прямой работы с памятью — это прошлый век. на managed и unmanaged можно точно так же накосячить с памятью, а сборщик мусора запускается только в крайних случаях и все те же гейм движки managed достаточно оптимизированы чтобы не создавать лишних объектов при отрисовке (используют пул объектов).
Я тоже считаю ВМ Java и .Net очень оптимальными, что они управляют памятью как хороший разработчик, так что моё сообщение было больше посвящено тому, что байт-код не является проблемой, чем обвинению автоматической работы с памятью.
НЛО прилетело и опубликовало эту надпись здесь
Это попытка убить нерожденный виндовс фон 7… Ну, или грабель понаставлять.
> В связи с этим, представьте себе, что завтра Microsoft запретит писать под Windows на Java?

Windows Phone 7 позволяет писать приложения на Java?)

Apple имеет свой кусок пирога и не хочет делиться с другими платформами, заодно пересаживает разработчиков на маки — разумное решение по защите от конкурентов.

Ведь если и выходит что-то новое, то в первую очередь под iPhone, а дальше уже смотрят, делать ли под другие платформы, зачем Apple лишаться такого преимущества? Я не думаю, что Ovi+Android Marketpalce+Windows Marketplace смогут сравниться в ближайший год с AppStore по объемам.
>Windows Phone 7 позволяет писать приложения на Java?)
Насколько я понял, там вообще кроме Silverlight/.NET ничем нельзя пользоваться
Нельзя не потому, что запрещено, а потому, что производитель не предоставил таких средств разработки.
Silverlight и .NET — это не языки.
Так что да, на Java можно… а также на IronPython, IronRuby и сотнях других .Net языков.
Думаю, что в WinPhone 7 НЕ встроен JVM. Но есть IKVM, например — транслятор из явовской ВМ в дотнетовскую. Может быть даже что-то получится.

При этом, если вы встроите JVM в свое приложение, то Микрософт вам не будет запрещать его использовать.
Возможно ли применение какого либо обфускатора на Obj-C уровне чтобы затруднить reverse-engineering ???? Если кто то знает — поделитесь пожалуйста с остальными!

Или второй вариант — можно ли MONO код транслировать в Obj-C код, который затем компилировать родными аппловскими средствами? (Примерно так же как в самом начале си++ транслировался в обычный си)
трансляция тоже запрещена :(
Я правильно все понимаю — написанное на Monotouch ждет реджект?
уже год прошёл, а монотач процветает.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории