【问题标题】:what does native language mean for a specific os?母语对特定操作系统意味着什么?
【发布时间】:2018-10-10 06:36:00
【问题描述】:

例如 java(或 kotlin)是 android 开发的本地语言是什么意思?
本地人在这里是什么意思? 这个概念是否也适用于其他操作系统?例如,我们是否也有适用于 Windows 和/或 linux 的母语?

编辑:
我不确定使用“母语”这个短语有多常见。
我正在寻找的主要内容是使语言更友好且更频繁地用于特殊操作系统的原因是什么。

例如,操作系统的 api 是否更容易从一种或几种特定语言调用? (如果是,为什么?)
是否存在编译器来编译为中间指令集(如 java 字节码)和多个硬件的一组指令?

作为另一个例子,我们有一些语言可以编译成 java 字节码,为什么它们没有广泛用于 android 开发?

【问题讨论】:

  • 这些只是开发语言。现在Kotlin 是 Google 用于 Android 应用程序开发的官方语言。
  • 意味着您可以从本机语言访问或完全控制操作系统和硬件。所以从 java 和 kotlin 你可以这样做,因为 android 有一个 dex 编译器,并且只能从 dex 编译器运行本机语言。
  • 对于 SO 来说有点宽泛,即使我们只考虑 Android。例如:quora.com/…
  • @RishabhRawat,感谢您注意到 dex,我对此一无所知,这让我对此进行了调查

标签: java android operating-system programming-languages native


【解决方案1】:

例如 java(或 kotlin)是 android 开发的原生语言是什么意思?

从技术角度来看,它没有任何意义。

这里的原生是什么意思?

这取决于您所说的“这里”是什么意思。您声称以这种方式使用“本地”,但您没有提供任何明确的示例/参考。

如果我们有一些您所谈论内容的示例,我们可能会弄清楚作者想说什么。但这并不一定使作者对“本地”一词的使用正确或被广泛接受。

这个概念是否也适用于其他操作系统?例如,我们是否也有适用于 Windows 和/或 Linux 的本地语言?

没有。

而且我也不相信它存在于 Android 中!当然,我不会接受将 Java 或 Kotlin 称为 Android 平台的“原生语言”的正常用法。


现在,对于 Android、Linux、Windows 和其他操作系统平台,Java 中的“本机”一词已被接受。 “本机库”是一种库(或 dll),它以某种(未指定!)编程语言实现并编译为运行 JVM 的平台的硬件指令集。它由“本机代码”指令组成……而不是字节码。本机库的源语言通常是 C 或 C++,但理论上它可以是任何可以编译为本机代码的语言,并且提供与(例如)兼容的调用序列JNI。 (注意,JNI 代表Java Native Interface ...)

【讨论】:

  • 可能是因为我的 Cordova 背景,我看到这个短语更多,但它似乎并不常用,所以我将在我的问题结束时写一个编辑说明,我会如果你也表达你的想法,我们将不胜感激。
【解决方案2】:

低级编程

与 PHP 等解释型语言或 Java 等字节码语言和部分 c# 相比,低级编程意味着对处理器指令(如汇编程序和机器代码)进行非常接近的编程。

原生 Android 应用

与 Android 应用相比,原生 Android 应用包含非常接近设备硬件的代码。原生 Andoid 应用程序通常不仅仅包含 Java 字节码。他们使用接近设备硬件的库或应用程序。

决定一个 Android 应用是否必须是原生的有两个标准:

  1. 必须直接控制硬件
  2. 应用程序的性能很重要(因为可以优化直接控制器指令并且没有解释开销)。

【讨论】:

    【解决方案3】:

    长话短说了解一般概念 -

    原生意味着它是一种特定平台的语言。

    也就是说,为 android 或 IOS(苹果的操作系统)开发,每个都有自己的本地语言。(C 是 android 的本地语言 [Kotlin 基于 Java,Java 基于 C],Objective-C 用于IOS)

    另一方面,有些语言不是本地语言。例如,React native 正在为 android 和 IOS 平台开发。 在这些情况下,视图不是原生元素,而是更多的 Web 表单元素(JS、CSS 等)。

    本地语言在大多数情况下将具有更好的功能和性能。

    结论 - 原生意味着特定平台的语言(您可以说的官方平台语言)。

    【讨论】:

    • ...Java/kotlin for android... 这是多么错误! Android 的原生语言是 C/C++(对于所有 UNIX 平台)。事实上,NDK(本机开发工具包)允许您使用 C/C++ 进行编程。
    • Tbh,您的正确 java 是 kotlin 的原生,而 C 是 Android 的原生。我会修正我的答案。谢谢。
    • 从来没有说过是.. 但是 kotlin 是基于 java 的,因此 java 是 kotlin 的原生
    • ... kotlin is based on java... 正确。 ... hence java is native for kotlin ... opinionable:断言一种语言对于另一种语言是“原生”的是否正确?还是说一种语言是操作系统的本机语言更正确?
    • @KlingKlang 当然比调用它基于而不是原生 for.. :)
    【解决方案4】:

    在最严格的意义上,本机语言只是编译语言的另一个术语,即产品在运行时不需要解释的语言。例如。 C、C++。我认为它的起源与native code这个词密切相关。

    现在进入 Android,它的顶层 API 是用 Java 编写的。作为编写操作系统组件的语言,Java 通常被称为 native。
    但是,我不会说它是正确的用法。此外,在 Android 中,用于 Java 开发的工具集称为“软件开发工具包”,用于 C/C++ 开发的工具集称为“原生开发工具包”。

    【讨论】:

      猜你喜欢
      • 2021-12-11
      • 1970-01-01
      • 2015-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-28
      • 2020-10-12
      相关资源
      最近更新 更多