Андроид написан на: Почему разработка под Android ведется на Java, если сам Linux написан на С? — Хабр Q&A

Android – это Linux. Или нет? — android.mobile-review.com

19 июля 2017

Константин Иванов

По материалам androidauthority.com

Android – это Linux? Казалось бы, это тот вопрос, на который должен существовать прямой ответ – да или нет. Но вместо этого сообщества пользователей Android и Linux годами обсуждают, как обстоят дела на самом деле, и не могут прийти к согласию.

Есть два фактора, которые делают особенно сложным поиск четкого ответа на вопрос, являются ли Android и Linux одним и тем же.

  1. Люди часто используют слово Linux для обозначения определенного числа связанных между собой, но однозначно разных вещей.
  2. Нет четкого, однозначного и повсеместно принятого определения, что позволяет считать то или иное ПО Linux.

Задача этого материала – прояснить, почему возникает путаница вокруг различных типов ПО, которое люди могут иметь в виду, используя слово Linux, а затем обговорить все аргументы, которые неизбежно приводятся в любом споре на тему «Android – это Linux или нет».

Так что же такое Linux?

Когда кто-то говорит «Linux», это может относиться к следующим вещам:

  • Ядро Linux. Это малая, но ключевая часть операционной системы. Ядро выполняет функцию взаимодействия с аппаратной частью устройства, обеспечивая сервисами остальную часть системы и формулируя задачи, такие как управление процессором или памятью устройства. Ядро Linux, как и любое другое ядро, может работать исключительно в качестве части операционной системы в более широком смысле. Существование ОС, которая состоит исключительно из ядра Linux, попросту невозможно. Поскольку Android – полноценная операционная система, мы совершенно спокойно можем исключить определение Android как ядра Linux.
  • Дистрибутив Linux. Это операционная система, которая содержит ядро Linux и дополнительное ПО, такое как утилиты, библиотеки, графический интерфейс, а также предустановленные приложения, такие как веб-браузеры, текстовые редакторы, музыкальные проигрыватели и др. Это дополнительное ПО было разработано специально для того, чтобы работать на ядре Linux, но оно не является частью самого ядра Linux. Если в разговоре речь заходит об операционных системах, которые используют ядро Linux, термины «дистрибутив» и «операционная система» взаимозаменяемы. Поскольку кто угодно может взять ядро Linux и свое собственное ПО и создать свою операционную систему, в настоящее время существует бесчисленное количество доступных дистрибутивов Linux.
  • GNU/Linux. Большая часть дистрибутивов Linux – это комбинация ядра Linux и программного обеспечения GNU, что заставляет некоторых людей утверждать, что дистрибутивы Linux – то же самое, что GNU/Linux. Это предмет для отдельной дискуссии, поэтому для того, чтобы несколько упростить объяснения, далее на протяжении материала будет использоваться термин «дистрибутив Linux» — просто отметим, что между ядром Linux и программным обеспечением GNU существует прочная связь.

В свою очередь, вокруг термина Android нет такой путаницы. Есть, тем не менее, два вида ОС Android.

Первый – это Android Open Source Project (AOSP), проект, в рамках которого Google предоставляет доступ к исходному коду Android. Этот код можно использовать для того, чтобы создать рабочую операционную систему, которую можно установить на смартфон или планшет, но в итоге ей будет не хватать функциональности, которую большая часть пользователей ожидают получить от своего опыта взаимодействия с Android, наиболее характерный пример – это мобильные сервисы Google. Это набор приложений и API от Google, которые для большого числа пользователей являются основной частью опыта работы с Android, аналогично тому, как iTunes и App Store являются основной частью опыта на macOS. AOSP имеет открытый исходный код, но не обеспечивает тех возможностей, которых ожидает типичный конечный пользователь устройства, работающего на ОС Android.

Второй вариант – это ОС Android, на которой работает ваше типичное устройство, будь то смартфон или планшет, по сути, она основана на AOSP, возможно, имеет ряд модификаций, привнесенных производителем устройства, а также в нее добавлено значительное количество проприетарного кода.

Большая часть аргументов за и против того, чтобы расценивать Android как Linux, относится к обоим вариантам Android, но есть ряд пунктов, в которых ответ будет различаться. И это будет зависеть от того, определяем ли мы Android как AOSP или как операционную систему, на которой работает ваш обычный смартфон или планшет.

Почему Android – Linux?

Существует всего лишь один реальный аргумент в пользу того, чтобы расценивать Android как Linux, но это серьезный аргумент. Каждый смартфон или планшет на Android содержит ядро Linux. Вы даже можете увидеть, какая версия ядра установлена на вашем устройстве. Для этого надо зайти в Настройки – Об устройстве – Версия ядра.

Тем не менее, Android – это не только ядро Linux. Это полнофункциональная операционная система, в которой имеются множество дополнительных библиотек, графический интерфейс, приложения и многое другое. Поэтому когда мы задаем вопрос «Android – это Linux?», мы на самом деле спрашиваем «Является ли Android дистрибутивом Linux?»

Поскольку даже оценить реальное количество дистрибутивов Linux не представляется возможным, тем более сложно написать список правил, позволяющих определить, что делает операционную систему дистрибутивом Linux.

Помимо обязательного условия наличия ядра Linux, определение дистрибутива Linux допускает достаточно свободную интерпретацию. Поэтому оставшаяся часть материала будет посвящена аргументам, которые люди чаще всего приводят против того, чтобы расценивать Android как дистрибутив Linux.

Почему Android – не Linux?

Он не использует стандартное ядро Linux

Для того, чтобы создать операционную систему, которая отвечает уникальным потребностям мобильных устройств, команда разработчиков Android внесла в ядро Linux рад изменений, включая добавление специализированных библиотек, API и инструментов, которые по большей частью взяты из BSD или написаны с нуля специально для Android.

Поскольку основной аргумент в пользу того, чтобы расценивать Android как дистрибутив Linux, базируется на том факте, что Android использует ядро Linux, может показаться, что тут и всяким спорам конец, все и так вполне очевидно. Однако для дистрибутива Linux не является обычным делом внесение изменений в ядро.

Ядро Linux подпадает под действие Универсальной общественной лицензии GNU, каждый волен как хочет изменять его исходный код, что и делается во многих дистрибутивах Linux. Если говорить о том, насколько значительным изменениям подвергла команда разработчиков Android ядро Linux, в Embedded Linux wiki приходят к заключению, что количество изменений, внесенных командой Android, «не особенно велико и не выходит за рамки того, что обычно делают с ядром Linux разработчики ОС на его базе».

Android не включает в себя ПО GNU и библиотеки

Если вы согласны с тем, что наличие ПО GNU является определяющей характеристикой для дистрибутива Linux вплоть до того, что мы должны расценивать дистрибутивы Linux как GNU/Linux, тогда Android ни в коем случае не может быть дистрибутивом Linux. Android включает в себя лишь некоторые системные библиотеки GNU. Из самого заметного – команда разработчиков Android разработала кастомизированную C-библиотеку под названием Bionic вместо того, чтобы использовать C-библиотеку GNU.

И даже если вы не согласны с тем, что дистрибутив Linux должен включать в себя ПО GNU, трудно отрицать, что отсутствие GNU делает Android очень отличным от большей части представителей сообщества дистрибутивов Linux.

Вы не можете запускать приложения Linux на Android – и наоборот

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

Верно и обратное утверждение. Приложения для Android требуют специальных библиотек Android, среды выполнения и ряда других программ, которые есть только в ОС Android, так что по умолчанию вы не можете запускать приложения для Android на какой-то другой платформе, кроме Android.

Android – это продукт Google

Google может сделать основной исходный код Android общедоступным через AOSP, но следующий релиз AOSP готовить в закрытую. На самом деле, на сайте AOSP ясно утверждается, что «Google оставляет за собой ответственность за стратегическое направление развития Android как платформы и как продукта».

Вдобавок к этому, не задействованные в Google разработчики могут участвовать в AOSP на различных ролях, но сайт AOSP совершенно четко говорит, что руководят проектом обычно сотрудники Google. И еще один маленький факт: Google принадлежат права на имя и логотип Android, так что если вы создаете операционную систему, основанную на коде AOSP, вам потребуется связаться с Google, если вы хотите выпустить свою работу под именем Android.

Несмотря на то, что некоторые дистрибутивы Linux тесно связаны с конкретными компаниями (на ум тут же приходят Canonical и Ubuntu), для дистрибутивов Linux нехарактерно разрабатываться в закрытую и полностью одной организацией.

«Открытый» статус Android под вопросом

Несмотря на рекомендацию Фонда свободного программного обеспечения, предписывающую разработчикам убрать все проприетарное программное обеспечение из их дистрибутивов Linux, нет строгого правила, которое бы запрещало дистрибутивам Linux содержать проприетарное ПО. В реальности многие дистрибутивы включают в себя скомпилированные бинарные драйверы, известные также как блобы. Поэтому на самом деле вопрос стоит так: насколько открыт Android в сравнении с вашим типичным дистрибутивом Linux?

Несмотря на то, что многие энтузиасты ПО с открытым кодом единодушны в том, что AOSP далек от идеального open source проекта, его код бесплатно доступен для изменения и распространения другими людьми.

Тем не менее, к моменту, когда AOSP доходит до пользователя Android, к нему добавляется большое количество проприетарного кода, и, в сущности, нет большой разницы между тем, что вы расцениваете как «чистый Android» на устройствах вроде Nexus или Pixel, и тем, что претерпело модификации, сделанные производителем.

Это не обязательно означает, что Android невозможно расценивать как дистрибутив Linux, но нельзя не отметить, что большая часть кода, который пользователи могут видеть и с которым могут взаимодействовать, является проприетарной, таковы мобильные сервисы Google и модификации производителя, как, например, TouchWiz от Samsung.

Несмотря на то, что многие дистрибутивы Linux включают в себя проприетарный код, для многих людей термин Linux четко ассоциируется с программным обеспечением с открытым кодом. И этот проприетарный пользовательский код вызывает ощущение, что Android гораздо более закрыт, чем типичный дистрибутив Linux.

Вы не можете кастомизировать ОС Android – по умолчанию

Если дистрибутив Linux как правило достаточно просто модифицировать на уровне операционной системы, пользователи Android по умолчанию не могут получить доступ к базовой ОС на своем смартфоне или планшете. Чувствительные разделы надежно защищены от их вмешательства. Но эта оговорка «по умолчанию» имеет значение, поскольку вы можете получить доступ к разделам, обычно закрытым на вашем устройстве, используя дыры в безопасности Android – это процесс получения рут-прав.

Итак, несмотря на то, что Android значительно меньше подвержен кастомизации, чем типичный дистрибутив Linux, существуют возможности получить доступ к базовой операционной системе.

Заключение

Итак, возвращаемся к исходному вопросу: является ли Android дистрибутивом Linux? В целом, все сводится к тому, что вы подразумеваете под дистрибутивом Linux. Если вы согласны с тем, что мы должны относить к дистрибутивам Linux GNU/Linux, а не Linux, тогда ответ отрицательный, поскольку Android включает в себя очень малую часть ПО GNU.

Если вы определяете дистрибутив Linux как операционную систему, которая включает в себя ядро Linux и соответствует одному или более дополнительным условиям, тогда ответ вероятнее всего также будет отрицательным. Несмотря на то, что каждый Android-смартфон или планшет включает в себя ядро Linux, Android полностью не соответствует ни одной другой характеристике из тех, что обычно ассоциируются с дистрибутивами Linux. К примеру, Android совершенно очевидно является продуктом одной компании, он несовместим с обычными приложениями для Linux, и даже несмотря на то, что AOSP имеет открытый исходный код, та версия Android, с которой мы имеем дело на коммерческих устройствах, кажется гораздо более закрытой, чем можно было бы ожидать от дистрибутива Linux, благодаря проприетарному пользовательскому коду.

Однако если вы определяете дистрибутив Linux как операционную систему, которая основана на ядре Linux, тогда Android является дистрибутивом Linux. Возможно, это необычный, высокоспециализированный дистрибутив, но это такой же дистрибутив, как Ubuntu, Fedora, Debian и любая другая операционная система, основанная на ядре Linux.

А каково ваше мнение? Является ли Android дистрибутивом Linux просто по причине наличия в нем ядра Linux? Или операционная система должна соответствовать ряду дополнительных критериев, чтобы можно было считать ее дистрибутивом Linux?

Что такое Android? — AndroidInsider.ru

Когда речь заходит об Android, многие не совсем понимают, что имеет ввиду человек. Android — это смартфон или операционная система? Что вообще такое «операционная система»? Многим может показаться этот вопрос слишком простым, но не все до конца понимают это. Операционная система — это то, благодаря чему работает смартфон. Одно дело — железка, но без установленной программы она никому не нужна. И задача операционной системы — сделать из устройства полезную вещь. В данном материале мы ответим на вопрос «Что такое Android?», окунем читателя в историю системы и познакомим с операционными системами нового поколения, которые станут заменой Android.

Что такое Android?

Содержание

  • 1 Что такое Android?
  • 2 Когда была создана ОС Android?
  • 3 Когда Android стал популярным?
  • 4 Android работает на ядре Linux
  • 5 Что такое ядро в операционной системе?
  • 6 Список всех версий Android
  • 7 Операционная система Fuchsia
  • 8 Harmony OS — операционная система от Huawei

Что такое Android?

Android — что это?

Это операционная система. Она была создана Энди Рубином. Он стал источником идеи. Более того, Android мог называться совсем иначе, ведь Энди решил использовать данное название, потому что у него уже был куплен когда-то домен android.com. В 2005 году у Энди кончались деньги, он обращался ко многим компаниям, и тогда на проект обратили внимание ребята из Google. Они купили компанию, и разработчики Android, включая Энди Рубина, стали работать над системой уже под крылом Google.

Когда была создана ОС Android?

Энди Рубин — создатель Android

В 2005 году Google купила компанию Android, сумма сделки составила 130 миллионов долларов. Спустя два года Google запустила альянс OHA и анонсировала открытую платформу Android. С 2007 года разработчикам предоставили доступ к SDK и эмулятору Android. 23 сентября 2008 года вышла первая версия системы. С этого момента и началась эпоха Android-телефонов.

История Android. Часть 1
История Android. Часть 2
История Android. Часть 3
История Android. Часть 4
Скандалы, доля рынка

Когда Android стал популярным?

Motorola Droid

В 2007 году балом правил iPhone. Лишь с выходом Droid от Motorola, который технически был мощнее и функциональнее iPhone, Google удалось немного изменить ситуацию. Примерно с 2009 года люди стали всерьез относиться к Android — в ней начали видеть главного конкурента смартфонам Apple. И если бы не политика распространения системы, как открытой OS, вряд ли сегодня она бы занимала 80% рынка.

Android работает на ядре Linux

Что такое ядро Linux?

Android работает на ядре Linux, создателем которого является Линус Торвальдз. Работу над ядром он начал еще в 1991 году. Код ядра Linux написан на языках Си и ассемблер. Ядро Linux в настоящее время используется не только в Android-телефонах, но еще и в операционных системах семейства Linux (Ubuntu, Fedora, Debian, Red Hat и так далее).

Что такое ядро в операционной системе?

Ядро — это главный компонент операционной системы. Ядро отвечает за взаимодействие операционной системы с процессором, памятью. Оно предоставляет файловые и сетевые сервисы. Ядро — это самый низкий уровень операционной системы в вопросе взаимодействия с аппаратным обеспечением.

Список всех версий Android

  • Android 1 «Apple Pie»
  • Android 2.3 Gingerbread (дата выхода 2010 год)
  • Android 4. 0 Ice Cream Sandwich (дата выхода 2011 год)
  • Android 4.1 Jelly Bean (дата выхода 2012 год)
  • Android 4.2 (дата выхода 2012 год)
  • Android 4.3 (дата выхода 2013 год)
  • Android 4.4 KitKat (дата выхода 2013 год)
  • Android 5.0 Lollipop (дата выхода 2014 год)
  • Android 5.1 (дата выхода 2015 год)
  • Android 6.0 Marshmallow (дата выхода 2016 год)
  • Android 7.0 Nougat (дата выхода 2016 год)
  • Android 7.1 (дата выхода 2016 год)
  • Android 8.0 Oreo (дата выхода 2017 год)
  • Android 8.1 (дата выхода 2017 год)
  • Android 9.0 Pie (дата выхода 2018 год)
  • Android 10 (дата выхода 2019 год, список телефонов, которые получили Android 10, что нового в Android 10)
  • Android 11 (дата выхода 2020 год, Android 11 — список нововведений)

Можно заметить, что в последнее время Google выпускает не так много обновлений. Вероятно, причина в том, что Android уже доведен до ума. Скорее всего, в последние 3 года компания усердно работает над новой операционной системой Fushia. И именно поэтому Android сейчас находится в стадии не очень активных обновлений.

Читайте также: Мелочи, за которые я люблю iOS больше, чем Android

Операционная система Fuchsia

Fushia — операционная система нового поколения

Это новая система от Google, которая должна стать заменой Android. Наступает век систем на микроядре с модульной архитектурой, это позволит разработчикам использовать систему как в умных лампочках и автомобилях, так и в смартфонах и компьютерах. В настоящее время подобную систему разрабатывает компания Huawei.

Harmony OS — операционная система от Huawei

Harmony OS — операционная система от Huawei

Это первая операционная система нового поколения на микроядре и с модульной архитектурой для смартфонов. Китайцы создали её в качестве конкурента Android. Вместе с Harmony OS Huawei будет предлагать потребителям сервисы Huawei Mobile Services с собственным магазином приложений AppGallery.

В данном материале мы рассмотрели что же такое Android, изучили историю, версии а также рассмотрели главного конкурента от Huawei. Остались вопросы? Задайте их в нашем Телеграм-чате, можете подписаться на наши новости в Яндекс Дзен.

Теги
  • Apple против Android
  • Новичкам в Android
  • Операционная система Android

Лонгриды для вас

Как подключить смартфон к компьютеру. Обзор приложения Связь с Windows

Когда я в 2012 году переходил с Windows на Мак, даже не подозревал, что через десять лет вернусь обратно. И вот жизнь повернулась так, что в срочном порядке пришлось приобрести ноутбук на операционной системе Windows 11. С учетом того, что долгие годы работы на iMac и использования с ним в связке iPhone и iPad я был избалован идеальной синхронизацией, то пришлось задаться вопросом, каким образом можно связать мой основной смартфон на Андроид с компьютером, чтобы получить доступ ко всем фотографиям, сообщениям и звонкам в одно касание.

Читать далее

Противоударный смартфон с тепловизором и мощной батареей. Какой лучше купить

Защищенные смартфоны постепенно перестают быть нишевыми — такие телефоны все чаще встречаются у людей, которым просто важна надежность и, возможно, хочется чего-то новенького. Если раньше все противоударные смартфоны были похожи друг на друга, то теперь дизайн стал меняться. Например, Doogee S89 — защищенный смартфон, в котором еще и досконально проработали дизайн смартфона и также не забыли о хорошем железе. Сегодня расскажем вам, сколько стоит новый противоударный телефон, чем он отличается от других смартфонов своего класса и что в нем привлекает больше всего.

Читать далее

Сколько памяти нужно смартфону в 2022 году

С чего покупатели обычно начинают подбор нового смартфона? Естественно, с выбора производителя. Дальше необходимо определиться с процессором и камерой. Но самым сложным моментом для многих пользователей становится решение об объеме встроенной памяти. Причем неважно, оперативной или для хранения приложений и пользовательских данных. Все больше производителей смартфонов на операционной системе Андроид отказываются от использования карт памяти. Поэтому решение, которое вы примите в момент покупки, станет определяющим на несколько лет вперед.

Читать далее

2 комментария

Новый комментарий

Новости партнеров

  • Apple выпустит новый MacBook Air с сюрпризом. Здесь все подробности

  • Прикольные товары с Алиэкспресс, которые вы бы не нашли сами

  • Сколько зарядки тратит Always On Display в iPhone 14 Pro и iPhone 14 Pro Max

  • Прикольные товары с Алиэкспресс, которые вы бы не нашли сами

Почему приложения, написанные на Java, работают только на Android, даже если Java не зависит от платформы

спросил

Изменено
1 год, 4 месяца назад

Просмотрено
902 раза

Много лет назад я изучал ядро ​​Java и прочитал, что одной из особенностей Java является то, что он не зависит от платформы.
Ссылка: https://www.javatpoint.com/features-of-java

Сейчас я работаю над разработкой для Android, приложения для Android разрабатываются с использованием ядра Java. Тогда почему эти приложения не поддерживаются в Windowsphone или ios?

  • ява
  • андроид

5

В Java код сначала компилируется в байтовый код. Этот байт-код не зависит от платформы. Этот код выполняется в JVM. JVM является частью JRE. JRE отличается для каждой платформы. Вам необходимо загрузить и установить JRE в соответствии с вашей платформой, Windows или Linux.

Android не использует JVM. Скомпилированный байт-код преобразуется в байт-код Dex, который работает на DVM. На данный момент DVM существует только для Android. Поэтому код, написанный для Android, не может работать на других платформах.

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

Когда вы компилируете код, написанный для приложения Android, он преобразуется в байтовый код, который подходит для виртуальной машины Android (Dalvik), но не для собственной JVM Java.

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

Поскольку они разные,

Android API не является Java API, а просто копирует большинство его функций, пожалуйста, ознакомьтесь с подробностями по следующим ссылкам:

https://en.wikipedia.org/wiki/Comparison_of_Java_and_Android_API

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя адрес электронной почты и пароль

Опубликовать как гость

Электронная почта

Требуется, но никогда не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

java.

Почему приложение для Android не должно быть написано на C/C++, потому что вы «просто предпочитаете программировать на C/C++»?

Закрыто . Этот вопрос основан на мнении. В настоящее время ответы не принимаются.


Хотите улучшить этот вопрос? Обновите вопрос, чтобы на него можно было ответить фактами и цитатами, отредактировав этот пост.

Закрыта 4 года назад.

Улучшить этот вопрос

Обновлено (для ясности и во избежание двусмысленности):

Я собираюсь начать возиться с приложениями для Android. Я планировал написать на C++ с помощью NDK (поскольку у меня больше опыта работы с C++ и я предпочитаю его Java), но на странице Android NDK наткнулся на следующее:

, вы должны использовать NDK только в том случае, если это необходимо для вашего
app — никогда, потому что вы просто предпочитаете программировать на C/C++.

У меня сложилось впечатление, что вы должны использовать язык, который предпочитаете, если он подходит для работы. Может ли кто-нибудь объяснить, почему так настоятельно рекомендуется не использовать C/C++ для разработки Android?


Оригинал:

Я собираюсь начать возиться с мобильными приложениями, в частности с Android, который является ОС моего текущего телефона, и мне было интересно написать приложение на C++ (или, по крайней мере, ядро, тогда обертывание в Java) было приемлемым вариантом.

Некоторая предыстория. Я специалист по информатике, прослушал 3 курса C++ (вводный, средний, ООП, весной прохожу курс STL) и только 1 курс Java (средний). Из-за этого мне больше нравится C++, и я предпочитаю его Java. На странице Android NDK я наткнулся на следующее:

Использование нативного кода на Android обычно не приводит к заметному
повышение производительности, но это всегда увеличивает сложность вашего приложения.
Как правило, вы должны использовать NDK только в том случае, если это необходимо для вашего
app — никогда, потому что вы просто предпочитаете программировать на C/C++.

  • У меня сложилось впечатление, что вы должны использовать язык, который подходит
    работу, а также ту, с которой вы знакомы
  • Я могу перенести приложение на другую мобильную платформу, например
    как iOS, который поддерживает C++, но не java
  • Несмотря на то, что Java является языком высокого уровня, разработка
    быстрее, я чувствую, что разработка будет медленнее, потому что я бы
    переучить почти все (поскольку я прошел только один урок по
    язык)

Будем признательны за любые советы.

ps: многие ответы на эту тему даны много лет назад, и очень мало дополнительных ответов, в которых упоминается NDK, позволяющий разрабатывать полноценные нативные приложения для Android 2.3 и новее.

  • Java
  • Android
  • С++

8

Подумай об этом так. У вас есть возможность использовать Java SDK для создания полноценного рабочего приложения, использующего все преимущества API, доступных разработчикам. С NDK вы ничего не можете сделать, чего нельзя сделать с SDK (с точки зрения API), NDK просто обеспечивает более высокую производительность.

Теперь посмотрите на это наоборот. Если вы решите написать приложение на 100 % в NDK, вы все равно сможете написать полнофункциональное приложение, но вы ограничены в количестве API-интерфейсов платформы, к которым вы можете получить доступ. Не вся платформа Android доступна на собственном уровне; большинство API — только Java. Это не означает, что все API ВАМ , возможно, нужно, недоступны в NDK, но нигде рядом ВСЕ API не доступны.

Помимо этого, NDK представляет код для конкретной платформы, который увеличивает размер вашего дистрибутива. Для каждой архитектуры устройства, которую вы собираетесь поддерживать, ваш собственный код должен быть встроен в файлы . so (по одному для armv5, armv7 и x86), упакованные в один и тот же APK. Это дублирование исполняемого кода увеличивает размер вашего приложения в 3 раза (то есть «толстый двоичный файл»), если только вы не возьмете на себя задачу создания отдельных APK для каждой архитектуры при распространении приложения. Таким образом, процесс развертывания становится немного более трудоемким, если вы не хотите, чтобы ваш APK значительно увеличивался в размере.

Опять же, хотя ничто из этого не запрещает вам делать то, что вы выберете, это указывает, почему Google описывает Java как «предпочтительный» метод для большей части вашего кода и путь наименьшего сопротивления. Я надеюсь, что это проливает свет на то, почему документация сформулирована именно так.

7

Если вы собираетесь разработать только одно приложение в своей жизни, используйте NDK.

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

1

Программисты King используют C++ для своей игровой логики. И судя по обороту у них все хорошо.

По моему опыту, C++ предназначен для решения проблем, а Java — для тех, кто их избегает. Я люблю оба языка, но C++ весьма полезен, когда вы пишете хороший код. Тем не менее, может потребоваться несколько мгновений волшебства, чтобы добраться туда.

Вы также можете порекомендовать C++ для специалистов по данным, которые обычно выполняют свою работу, скажем, на Python или R. C++ может делать то же самое с такой же хорошей или не лучшей производительностью, но для этого нужно быть гением в этом языке. . Вот почему я никогда не , а не рекомендуют С++ тому, кто хочет это сделать — я бы просто предупредил, что их ждет удовольствие.

1

Я нашел эту интересную статью от:
http://betanews.com/2014/07/22/why-c-is-the-perfect-choice-for-modern-app-development/

C++ был создан специально для независимости от платформы, поэтому его можно найти на каждом единственная существующая операционная система. Ваш типичный мобильный пользователь может знать, что приложения для Android написаны на Java, а приложения для iOS написаны на Objective-C, но многие не знают, что в памяти ваших устройств больше кода C/C++, чем где-либо еще. C/C++ управляет большей частью технологии небольших устройств (таких как ядро, которое взаимодействует с оборудованием, а также типичные библиотеки времени выполнения) и телекоммуникационными сетями, обеспечивающими работу этих устройств. Что еще более важно для команды разработчиков, так это наличие интерфейсов и библиотек C/C++ для всего, что вам нужно сделать на любом устройстве и платформе. Набор инструментов Android NDK — отличный пример полной поддержки C/C++, который изначально был добавлен для команд разработчиков игр, чтобы позволить им получить максимально возможную производительность от устройства, избегая Java и среды выполнения Android Java Dalvik, виртуальной машины, на которой Java-код Android выполняется на. Он регулярно совершенствуется, чтобы включить все службы Android.

Я бы сказал использовать Java для основного приложения. Но если у вас есть какой-то код на С++, который нужно портировать, или нужная вам библиотека, эффективно реализованная на С++, используйте ndk для этих битов

1

Я не вижу причин не использовать C++ для обычной разработки Android. Если у вас есть большой опыт работы на C++ и со сложными ОС, такими как Windows или любые другие, то вы можете быстро понять Android и не так сложно как и другие ОС. изучая Java или работая без обучения, это было бы более разочаровывающим и сложным!

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

Общая цель как для Java, так и для Android заключается в том, что вы пишете большую часть, если не все свое приложение на Java, и используете родные вещи только тогда, когда нет другого выбора.

This entry was posted in Популярное