Android: Java, C или C ++?

Я написал несколько простых приложений на Android с помощью Java.
Но позже я нашел это:

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

Как это связано с этим:

Приложения Android написаны на языке программирования Java. ( Источник )

Возможны ли все три языка?
Извините за немой вопрос.

Solutions Collecting From Web of "Android: Java, C или C ++?"

В статье, на которую вы ссылаетесь, есть хорошая информация. Он также ссылается на http://developer.android.com/sdk/ndk/overview.html, который гласит:

NDK не будет полезен большинству приложений. Как разработчик, вам нужно сбалансировать свои преимущества с его недостатками; В частности, использование собственного кода не приводит к автоматическому увеличению производительности, но всегда увеличивает сложность приложения. В общем, вы должны использовать только собственный код, если это важно для вашего приложения, а не только потому, что вы предпочитаете программировать на C / C ++.

Типичными хорошими кандидатами для NDK являются автономные, интенсивные работы с ЦП, которые не выделяют много памяти, таких как обработка сигналов, физическое моделирование и т. Д. Простое повторное кодирование метода для запуска на C обычно не приводит к большому увеличению производительности. Изучая вопрос о том, следует ли вам разрабатывать собственный код, подумайте о своих требованиях и посмотрите, предоставляют ли интерфейсные API-интерфейсы Android необходимые вам функции. Однако NDK может быть эффективным способом повторного использования большого корпуса существующего кода C / C ++.

Android – под Linux, поэтому вы можете запускать на нем любой язык. Я запустил сценарии Perl на Android-телефоне для удовольствия. С практической точки зрения разработки приложений реализация Google Java на Dalvik будет типичным маршрутом.

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

Я не верю, что вы можете кодировать все приложение для Android в C / C ++, но, по крайней мере, у вас должна быть оболочка Java.

Это хороший вопрос, AFAIK, c или c ++ вступает в картину, когда вы действительно хотите запрограммировать что-то основное средство dalvik, чем использовать API Android, как указано вам, что-то вроде сенсорных функций или оборудования.

Если вы хотите создавать приложение с использованием API, оно будет в основном в Java / XML.

Повторная запись одной из этих «автономных, интенсивно работающих с ЦП операций, которые не выделяют много памяти» на C, может улучшить производительность / время работы от батареи в 17 раз по этому исследованию . В этой статье показано, что запуск CCTOOLS Fortran еще быстрее. Поэтому альтернативные языки заслуживают внимания.