Android/iOS, managed/native и cooperative/preemptive
От: c-smile Канада http://terrainformatica.com
Дата: 26.03.11 23:50
Оценка: 10 (2) -4
Оговорюсь сразу: некоторых деталей я глубоко не знаю поэтому что-то в моих посылках может быть неверно.

Принципиальная разница в архитектуре Android и iPhone состоит в том что
Android это фактически однозадачная система. Во всяком случае в плане UI.
Т.е. android девайс это один единственный процесс в котором крутится Dalvik (Java VM).
Приложение Android есть java .class[es] который грузится в эту самую VM и соответственно приложение попадает
в общий memory heap. Со всеми вытекающими. Выполнить GC в такой системе — сделать stop-the-world.
Существуют способы incremental GC но имхо для GUI особенно такого типа они не подходят.

iPhone OS это в общем-то полномасштабная multitasking OS. Приложение есть процесс со своей собственной таблицей страниц памяти и пр. handlers.

Т.е. фактически имеем противостояние Cooperative Multitasking и Preemptive multitasking.

Очевидно что iOS лучше масштабируется под бОльшие разрешения экрана (больше экран — бОльшие приложения — больше памяти им нужно)
Но Android OS более оптимальна для low-level devices. Хотя бы теоретически. Когда Google говорит про то что Android он не для tablets я так
понимаю имеется ввиду именно это.

Т.е. в Android имеем одно большое дерево объектов в памяти. В iOS — каждый процесс имеет свое дерево (меньшей высоты).
Соответсвенно memory management в iOS дешевле в принципе. И локален для каждого прцесса. В iOS гораздо меньше наблюдаетсе UI freeze эффектов.

Но в Android можно лучше сделать Activity stack — back button там в принципе лучше работает. Что естественно ибо Android OS это один большой Activity stack.

Windows Phone я так понимаю это в общем-то тот же Android (архитектурно) в котором вместо Dalvik работает .NET VM.
Я так понимаю что Windows Phone OS на tablets мы не увидим. Гораздо больше шансов увидеть W7 на tablets.
Хотя я бы лично развивал Windows Mobile — как OS она достаточно mature. Графику переработать только.

Еще про late binding как отдельный аспект. Понятно что OS и приложения должны как-то взаимодействовать —
т.е. нужен некий API механизм. В принципе Windows Mobile + COM как протокол предсталяется достаточно production level на настоящий момент.
Честно говоря я был несколько удивлен решением Windows Phone (как еще один Android). Мотивации оных разработчиков тайна мраком покрытая есмъ.
Для "недо-PC" наверное такой вариант (OS есть VM, приложения есть classes в общем memory heap) в принципе подходит.
Но как бы уже телефоны по вычислительной мощности являются девайсами на которых Windows XP (и вся ветка NT) начинала вполне себе комфортную работу.

Скорее всего нас ждет будущее в которм будет Chrome OS, W7 и iOS. Android и WP если будет то на low-end совсем.

Вот такое мое видение проблем и перспектив.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.