Android NDK. Хорошо или плохо?
Полагаю, что интересующиеся темой Google Android уже в курсе, что недавно вышел Android NDK (Native Development Kit). Этот пакет позволяет разрабатывать "нативные" приложения для платформы Android, в обход стандартного SDK, основанного на специальной редакции Java (Dalvik). Новость на самом деле весьма неоднозначная. Вчера в комментариях в одном блоге я отчасти высказал свое мнение по этому вопросу, но напишу еще здесь подробней.
Операционная система для мобильных устройств должна быть изначально спроектирована с расчетом именно на мобильное использование. Здесь должен быть специальный подход к интерфейсу, хранению данных, интеграции приложений, уведомлениям, использованию памяти и т.д. И именно эту задачу решает Dalvik, который с этой точки зрения разработан очень грамотно. Использование Java как основы видится мне также безусловным плюсом из-за достаточно низкого порога вхождения и наличия огромного количества "готовых" программистов. Очень важно разрабатывать программы, сохраняя этот единый подход, предлагаемый API системы. Мне кажется, это очевидно.
При наличии же средств нативной разработки получается интересная вещь. Теперь, теоретически, можно просто брать готовые приложения из Linux и просто портировать их на Android. А вот это очень опасно по следующим причинам:
- Простые пользователи, которые и так относятся к Linux настороженно из-за мифа "Linux - это сложно", будут пугаться наличия разномастных десктопных Linux-приложений. Особенно когда эти приложения не адаптированы к маленьким экранам, да и просто не обладают единым подходом к юзабилити.
- Потенциальные проблемы с совместимостью на разных устройствах.
- Распыление усилий разработчиков. Указывать энтузиастам, что им следует делать, а что нет, несколько неуместно. Но наличие, к примеру, KDE и OpenOffice на коммуникаторе по настоящему интересно только этим самым энтузиастам.
Собственно, эти проблемы уже давно известны на примере уже умерших Linux-платформ, таких как Sharp Zaurus, OpenMoko, Greenphone. Особенно показателен пример Zaurus. Вместо того, чтобы разрабатывать приложения для оболочки Qtopia (установленной по умолчанию), масса разработчиков кинулась портировать Linux-софт и создавать прошивки на базе X-сервера. Это все очень круто, но интересно только кучке гиков. О практичности такого подхода для простых пользователей и говорить не приходится. Как результат - коммерческий провал платформы и ее медленное отмирание.
Радует то, что, судя по всему, в Google прекрасно понимают эту проблему. И именно поэтому NDK выпустили только сейчас, когда прошло больше года после выпуска "базового" SDK, и после запуска Android Market.
Сам же Android NDK, безусловно, нужен. Но его использование должно быть очень и очень аккуратным. Его стоит использовать при создании особо критичных к быстродействию вещей. Например, движков игр или других операций, требующих серьезных процессорных мощностей. Здесь нативный код вполне будет к месту. Собственно, об этом написали даже в Android Developers Blog. Очень хочется надеяться, что разработчики будут соблюдать эти вполне простые "правила".
Комментарии
Re: Android NDK. Хорошо или плохо?
имхо заурус убило не это. а просто неправильный маркетинг )
для палмов вон только на сях и писали. и умерли они не из-за этого вовсе. для покетов до сих пор только на сях и пишут. не умирают. и если и умрут, то не из-за sdk.
писать будут на том, что проще. вот и всё. сейчас для покетов развелось куча прог на c#. потому, что проще писать на .net, чем использовать winapi. от этого огромное количество тормозящих кривых поделок. я лично за то, чтобы писали именно нативные приложения. ибо как показывает практика не нативные томозить будут. может на 400мгц проце и не будет, но сделают дешёвый коммуник с процем 100мгц - и будет тормозить. я сильно прочуствовал разницу при переходе с 400мгц на 200мгц. пришлось выкинуть весь софт, который был написан на .нет.
b.r.,diamon.
Re: Android NDK. Хорошо или плохо?
Дело не в языке разработки, не в сях. Дело в использовании или не использовании API системы. В палмах и покетах альтернативы просто нет, там по любому приходится использовать базовое API, вопрос лишь в уровне абстракции, предлагаемых разными средствами разработки. В андроиде можно писать либо используя Dalvik API, либо не используя (NDK). Теперь с NDK можно нагородить зоопарк из X, GTK, Qt, что угодно из "настольного" Linux. И сама эта возможность спровоцирует фанатов напортировать кучу ненужного барахла. Заурус убило именно это. Под Qtopia софта было - раз-два и обчелся. А кривых поделок типа pdaXrom, GPE/Opie, Angstrom - немерено. Т.е. нормального софта для простых пользователей не было, а гиковских игрушек полно.
Re: Android NDK. Хорошо или плохо?
Саш, я всё-таки немного позащищаю pdaXrom :) Эта прошивка помогала иметь нормальный свежий софт и свежие библиотеки. И встречный вопрос. А на какой Qt версии была основана Qtopia у Zaurus'ов в те времена? Вроде бы на 2-й, хотя давно уже была 3-я. Программисты (и я в том числе) не хотели писать под старую версию API.
Re: Android NDK. Хорошо или плохо?
Ну софт то был свежий, но десктопный. Для мобильного устройства это не есть хорошо. Гикам да, интересно и даже можно было настроить это все достаточно удобно.
Насчет кутопии полностью согласен. Я ниже писал, что шарп тоже не развивала систему. Именно это и имел в виду...
Re: Android NDK. Хорошо или плохо?
По поводу плохого маркетинга у зауруса - да, своя правда в этом тоже есть. Уж очень ненавязчиво шарп продвигал кутопию, и принципиально не развивал ее. Свою роль это тоже сыграло.
Re: Android NDK. Хорошо или плохо?
Весьма дальновидный шаг - выпустить NDK именно сейчас. В числе прочего это создаст конкуренцию и выбор между приложениями.
Re: Android NDK. Хорошо или плохо?
Угу. С одной стороны сейчас это уже не создает проблему с чужеродными программами с "большого" линукса (база dalvik-программ уже достаточно большая), а с другой - позволяет писать программы, которые требуют очень серьезных мощностей.
Re: Android NDK. Хорошо или плохо?
Проблема высосана из пальца.
Windows Mobile платформа как-то особо не пострадала от возможности программировать на C++ и C#
И опять же наличие портированного emacs'a не привело к массовому отказу пользователей от WimMobile.
Re: Android NDK. Хорошо или плохо?
Каментом выше я ответил, что проблема не в языке разработки как таковом. И да, когда уже есть минимальная база приложений для Dalvik, то появление даже портов уже не будет большой проблемой. Очень хорошо, что NDK был выпущен не сразу, а только сейчас.
Re: Android NDK. Хорошо или плохо?
Прочитал всё обсуждение - порадовался, что оно состоялось. Узнал много интересного, пересмотрел свои позиции в отношении мобильных линуксов. Увидел огрехи разработчиков, понял некоторые провалы и успехи. Спасибо всем, что не остались в стороне от обсуждения, очень познавательно :)
Re: Android NDK. Хорошо или плохо?
Спасибо. Пойду много думать и читать про Java :)
Re: Android NDK. Хорошо или плохо?
Можно даже не столько про "классическую" java, сколько уже сразу про Android API. :-) Заодно можно проникнуться красотой реализации архитектуры. :-) Могу подкинуть хорошую книгу. Если интересно, то обратись мне в электропочту или гуглтолк.
Re: Android NDK. Хорошо или плохо?
а название книги ?
Re: Android NDK. Хорошо или плохо?
Professional Android 2 Application Development.
Re: Android NDK. Хорошо или плохо?
thanks
PS: а вот то, что у анонимов показывается gravatar - security eak :-)
Re: Android NDK. Хорошо или плохо?
Ну вообще, так и задумано. Граватар же привязан к емылу. Если он введен, граватар показывается.
Re: Android NDK. Хорошо или плохо?
В данном случае, мыло введено только для сервера, чтобы он посылал ответы :-)
Для Гостя показывать мыло, пусть и косвенно, как-то нехорошо.
Re: Android NDK. Хорошо или плохо?
Ну полностью портировать линуксовый софт не удастся. Графическую оболочку придется переписывать как минимум.
Да и архитектура приложений у андройд иная.
А вот писать и портировать нативные библиотеки это очень удобно во многих случаях, чем народ активно занимался задолго до оффициального выпуска NDK.
Re: Android NDK. Хорошо или плохо?
Ну я чуток утрировал, конечно. Хотя не вижу принципиальных проблем портировать тот же xorg со всеми вытекающими. Как это было сделано с тем же заурусом. Здесь даже проще, исходники все есть.
Re: Android NDK. Хорошо или плохо?
Портировать то можно, только это уже не андройд будет. Совместить нативные андройдовские приложения с нативными, запущенными через иксы теоретически конечно можно, но у нас система с ограниченными ресурсами, тормозить оно будет просто аццки. Я не говорю про целесообразность в плане энергопотребления такой конструкции.
Re: Android NDK. Хорошо или плохо?
Ага, точно. О чем я и говорил. ;-)
На самом деле это уже делают. Вот здесь можно почитать. Пока совсем криво, отображают X-сессию через VNC. Но, блин, начало положено...
Я именно и хочу сказать, что это нафиг не нужно, но возможно. И опасно с точки зрения отпугивания от платформы обычных пользователей. Хотя, конечно, сейчас это уже не так страшно, потому что платформа уже зарекомендовала себя готовой для конечного пользователя. И база программ уже есть.
А насчет тормозов... Я лично когда-то видел Debian на заурусе. С установленным KDE (!). Тормозило аццки, да. Целесообразность этого дела нулевая. Но для фанатов, которые портировали, типа круто.
Re: Android NDK. Хорошо или плохо?
То-то я думаю, что же "убило" Palm? А это, оказывается, то, что на него портировали Linux с Qtopia! И народ ломанулся! ;-)
Re: Android NDK. Хорошо или плохо?
По-моему, использовать мощные средства не по назначению вообще характерно для гиков. :)
Re: Android NDK. Хорошо или плохо?
По мне так NDK - не есть хорошо и ни есть плохо.
Намного приятней вести разработк с использованием SDK, но иногда NDK просто необходим. Например у меня сейчас задача достучаться до USB порта девайса, чтобы использовать Android девайс для небольшой автоматизации, так вот я не нашёл как это средствами SDK, а с NDK - есть надежда!
Кстате, друзья, если кто то кодил USB на андроиде, стукните мне в мыло!
Спасибо!
Отправить комментарий