【问题标题】:Why Android support java but not other languages? [closed]为什么Android支持java而不支持其他语言? [关闭]
【发布时间】:2016-10-23 09:21:17
【问题描述】:

我在 Google 上以一种或另一种形式看到以下声明

大部分 Android 开发都是基于 Java 的,因为 Android 支持 大量的Java库

我来自基于 Java 的 Web 应用程序背景。我从未听说过“Windows 支持一种特定语言但 Linux 不支持”的说法。那么为什么在移动操作系统的上下文中我们说android支持Java。任何操作系统的作用都是执行命令,而不是支持特定的语言,对吧?

我知道我在这里缺少一些基本的东西,但那是什么?

【问题讨论】:

  • 更像android和java是近亲,android是基于java的。
  • 操作系统不完全独立执行任何语言程序。它需要编译器/解释器/链接器。尝试在 Android 操作系统中添加 C# 编译器!
  • 顺便说一句,您可以在 C++ 中使用 NDK 和代码,或者在 C# 中使用 Xamarin 和代码。
  • @MarcB 我的问题也是一样的。 Android 是 os,而 java 是编程语言。所以我们不是在这里比较苹果和橙子吗?我的问题是为什么 noid android 支持像所有语言 C、C++ 像 windows、linux 一样?
  • android 不仅仅是 java。 android-the-os 实际上使用的是 linux 内核。所以你可以为linux内核编译的任何东西理论上都可以在android中“运行”。并且您可以使用其他语言为 android 构建。有本机 C++ 应用程序等等。使用“java”更容易。

标签: java android operating-system


【解决方案1】:

那为什么在移动操作系统的上下文中我们说 android 支持 java。

我不知道“我们”是谁。有经验的计算机程序员不会这么说,甚至你编造的报价也不会这么说。

任何操作系统的作用都是执行不支持特定语言的命令对吗?

正确。而且,给定一个根植的 Android 设备,欢迎您尝试将您喜欢的任何语言移植到 Android,并且在自定义 ROM 模块中,欢迎您安排允许用户以任何支持的语言运行他们想要的任何程序。

但是,大多数人没有 root 的 Android 设备。 在普通的 Android 设备上,Android 框架对您可以轻松用于编程的内容设置了一些限制。

例如,您可以将支持 Java 的服务器分为两大类:

  • 你可以完全控制服务器的那些,这大致相当于运行一个root的Android设备

  • 您所能做的就是上传 WAR 和相关文件(例如静态资产),这些文件在由其他人管理的 Java 驱动的服务器上运行

在后一种情况下,您将无法完全灵活地进行编程。据推测,您可以集成基于 JVM 的脚本语言,但您可能难以使用 C++。这不是操作系统的问题——服务器本身可能完全能够运行 C++ 程序。这是你的代码运行的框架的问题(现在人们用什么来做 WAR,因为我已经很久没有从事服务器端 Java 开发工作了)。

Android 开发的主要框架基于 Java。感谢WebView,这也为混合开发(HTML/CSS/JS)打开了钩子。 NativeActivity 使得用 C/C++ 编写完整的 Android 应用程序成为可能。各种工具链允许您使用其他语言(例如 Kotlin)编写,这些语言可以编译为适用于 Android 框架的东西,并且您可以嵌入脚本语言。但是您仍然需要坚持框架,这对您可以做什么以及如何做设置了一些限制。这不是 Android 操作系统的错,而是框架的错。

【讨论】:

  • 当你说That is not an issue with the OS — the server itself is probably perfectly capable of running a C++ program. It is an issue of the framework in which your code is running 时,我相信这里的框架意味着 java 的 jvm,其中 jvm 指令可以被 android、windows、Linux 等操作系统很好地解释。但同样存在 C++ 环境,其指令不能被普通的 android 设备正确解释(尽管可以被 root 的 android 解释)。你是说这里吗?
  • @emilly:“我相信这里的框架意味着 java 的 jvm”——不。在这种情况下,我指的是您的 WAR 容器(Tomcat?Jetty?现在人们使用的任何东西)。
  • 好的,那么你的意思是应用程序/战争容器(如 tomcat)指令可以被 android、windows、Linux 等操作系统很好地解释。但同样存在 C++ 环境,其指令不能被普通的 android 设备正确解释(尽管可以被 root 的 android 解释)。你是说这里吗?
  • @emilly:不。我的意思是 WAR 不能用任意编程语言编写。它必须是框架(WAR 容器)支持的东西。 WAR 容器不是操作系统。同样,Android 应用程序框架不是操作系统,您将被限制在可以与应用程序框架一起使用的编程语言,以便部署到传统的 Android 设备。
【解决方案2】:

是的,Android 是基于 Java 的。但是最近Delphi大佬收购了fire Monkey,应该是把Delphi代码转成原生Android代码。这样它就可以像原生应用程序一样运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-08
    • 2021-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多