Что означает родной язык для конкретной ОС?
Что это означает, что, например, Java (или Kotlin) является родным языком для разработки Android?
Что значит родной здесь? Существует ли эта концепция и для других операционных систем? например, у нас есть родной язык для Windows и / или Linux?
РЕДАКТИРОВАТЬ:
Я не уверен, насколько часто употребляется фраза "родной язык".
Главное, что я ищу, - это причины, по которым язык становится более дружественным и чаще используется для специальной ОС.
Например, проще ли вызывать API операционной системы на одном или нескольких конкретных языках? (если да, почему?)
Существует ли компилятор для компиляции с промежуточным набором инструкций (например, байтовыми кодами Java) и с набором инструкций из нескольких аппаратных средств?
В качестве другого примера у нас есть некоторые языки, которые компилируются в байт-коды Java, почему они не используются широко для разработки Android?
3 ответа
Что это означает, что, например, Java (или Kotlin) является родным языком для разработки Android?
С технической точки зрения это ничего не значит.
Что значит родной здесь?
Это зависит от того, что вы подразумеваете под "здесь". Вы утверждаете, что "родной" используется таким образом, но вы не предлагаете никаких четких примеров / ссылок.
Если бы у нас было несколько примеров того, о чем вы говорите, мы могли бы, вероятно, выяснить, что пытался сказать автор. Но это не обязательно делает использование слова "родной" автором правильным или общепринятым.
Существует ли эта концепция и для других операционных систем? Например, есть ли у нас родной язык для Windows и / или Linux?
Нет.
И я не уверен, что он существует и в Android! Конечно, я бы не согласился с тем, что обычным явлением называют Java или Kotlin "родным языком" для платформы Android.
В настоящее время принято использовать слово "родной" в Java для Android, Linux, Windows и других платформ ОС. "Собственная библиотека" - это библиотека (или dll), которая реализована на некотором (неуказанном!) Языке программирования и скомпилирована в набор аппаратных инструкций платформы, на которой работает JVM. Он состоит из инструкций "родного кода"... а не байт-кодов. Исходным языком для нативной библиотеки обычно является C или C++, но теоретически это может быть любой язык, который может быть скомпилирован в нативный код и который предлагает вызывающую последовательность, которая совместима (например, с JNI). (Обратите внимание, что JNI означает собственный интерфейс Java...)
Низкоуровневое программирование
В отличие от интерпретируемых языков, таких как PHP, или языков байт-кода, таких как Java, и частей C#, низкоуровневое программирование означает компиляцию для очень близкого программирования для инструкций процессора, таких как ассемблер и машинный код.
Родные приложения для Android
В отличие от Android-приложений, нативное Android-приложение содержит код, очень близкий к оборудованию устройства. Нативные приложения для Android обычно не содержат только байт-код Java. Они используют библиотеки или приложения, близкие к оборудованию устройства.
Есть два критерия для решения, должно ли приложение Android быть нативным:
- Аппаратное обеспечение должно контролироваться напрямую
- Производительность приложения важна (потому что прямые инструкции контроллера могут быть оптимизированы и не требуют дополнительной интерпретации).
Короче говоря, для понимания общей концепции -
Родной означает, что это язык для конкретной платформы.
Тем не менее, разработка для Android или для IOS (Apple's OS), в частности, каждый имеет свои собственные родные языки (C является родным языком для Android [Kotlin основан на Java и Java основан на C] и Objective-C для IOS)
С другой стороны, есть языки, которые не являются родными. Например, React native разрабатывается для платформ Android и IOS. В этих случаях представления являются не нативными элементами, а скорее элементами веб-формы (JS, CSS и т. Д.).
Родные языки в большинстве случаев будут иметь лучшие возможности и производительность.
Выводы - родной означает язык для конкретной платформы (официальный язык платформы, который вы можете сказать).
В самом строгом смысле " родной" язык - это просто еще один термин для компилируемого языка, то есть языков, которые продукт не должен интерпретировать во время выполнения. Например, C, C++. Я думаю, что его происхождение тесно связано со словом " родной код".
Теперь, когда речь идет о Android, его API верхнего уровня написан на Java. Как язык, на котором написаны компоненты ОС, Java часто называют родным.
Однако я бы не сказал, что это правильное использование. Кроме того, в Android набор инструментов для разработки на Java называется "Комплект для разработки программного обеспечения", а набор инструментов для разработки на C/C++ - "Комплект для собственной разработки".