安卓究竟是不是Linux

有人说安卓就是 Linux,也有人说安卓是安卓、Linux 是 Linux,二者没什么关系,还有人说安卓用的是 Linux 的内核,那么它们之间究竟是什么关系呢。要想获得这个问题的答案,咱们要先弄清楚几个概念。html

 

Linux 与 Linux 内核

 

Linux 与 Linux 内核实际上是不同的,关于这个问题,我在以前的一篇文章中讲过(《Linux,Unix,GNU 到底有什么样的渊源?》)。Linux 的内核是由 Linus Torvalds 在1991年首次编写。它是操做系统的核心,包括设备驱动、文件系统、进程管理、网络通讯等。可是操做系统光有内核,用户是没有办法操做的,因此不少厂商和 Linux 社区就在内核之上开发了不少工具,好比咱们经常使用的 GNome桌面,FireFox浏览器、GIMP 图片编辑器等等。Linux 内核和这些应用一块儿打包后就被称做 Linux 发行版本。Linux 有不少的发行版本,我在以前的文章中(《这么多Linux版本,你究竟该怎么选择?》),对不一样的版本作过比较。shell

因此咱们常说的 Linux 有两个含义:浏览器

1) Linux 内核,这个严格来讲应该叫 GNU/Linux,由于它是 GNU 计划的一部分网络

2) Linux 发行版本,好比 Debian、Ubuntu、Mint、RedHat等等架构

 

那么安卓和 Linux 内核或者 Linux 发行版本有什么关系吗?框架

 

安卓与 Linux 的关系

 

安卓实际上用到的是 Linux 的内核。由于 Linux 自己是开源的,因此谷歌的工程师们选择了在 Linux 内核基础之上作裁剪定制,这样他们就不须要从头开始来开发一个全新的系统。BTW,这在大厂当中也是一种比较经常使用的作法,好比 Playstation 的操做系统用的是 FreeBSD的内核,XBox 用的是 Windows NT 的内核。在安卓的手机上,在系统信息中你能够看到 Linux 内核的版本。编辑器

既然安卓用的是 Linux 的内核,那是否是能够说它就是 Linux的一个发行版本呢?先看一下安卓和其余 Linux 发行版本开发架构上有何不一样。工具

 

你们都知道 Linux 内核是用 C语言开发的,安卓在 Linux 的内核之上用 C/C++ 开发了Dalvik ,后来改叫 Android Run Time,其实自己就是安卓的 Java 虚拟机。咱们作的安卓应用都要用 Java开发,运行在 ART 上面。Linux 其余发行版本也能够用 Java 开发应用,只要运行在 Linux 的 Java 虚拟机上就能够了。除此以外咱们也能够在 Linux 内核之上使用其余框架开发,好比 GTK 框架的 Gnome、QT 框架的 LXQT,这些跟 ART 都是一个层次的东西。因此我以为安卓和其余 Linux 发行版本本质上没有太大区别,只不过安卓对 Linux 的内核作了一些裁减,而且在上面跑了一个 Dalvik / ART,而其余 Linux 发行版本跑了不少个 “Dalvik / ART”而已。spa

 

解释清楚了安卓与 Linux 内核的关系以及与 Linux 其余发行版本的区别后,咱们再来看下小伙伴们常常问到的两个问题:操作系统

 

1) 能够在安卓上运行 Linux 的桌面应用吗?

由于安卓有不少标准的 GNU 库没有安装,也没有安装图形 X server,因此答案是不能。不过有一些应用尝试让咱们在安卓环境中使用 Shell,安卓终端模拟器还有busybox,感兴趣的同窗能够去了解一下。

 

2) 能够在Linux 桌面上运行安卓的应用吗?

由于其余 Linux 发行版本也没有 Dalvik / ART,因此安卓的应用在 Linux 桌面上不能直接运行。不过咱们只须要将 Dalvik / ART 移植到 Linux 桌面环境就能够了。正是基于这个原理,市场上有不少安卓手机模拟器,不只能够用在 Linux 桌面,还能够用在 Windows 以及 Mac 上。

 

总结

 

安卓的操做系统核心是在 Linux 内核上作了一些裁减和定制,而且在内核之上运行了一个 Dalvik / ART 虚拟机,全部的应用必须运行在这个虚拟机上,因此安卓的应用都是用 Java 来开发的。在 Linux 的发行版本中,咱们可使用 Java 虚拟机,也可使用其余框架,好比 GTK, QT等等,它们编译出来的二进制代码能够直接运行在 Linux 内核上,它们和 Dalvik / ART 是一个层次上的东西,因此安卓和 Linux 的发行版本本质上是同样的。

 

 

 

 

推荐阅读:

《在 Linux 系统中如何管理 systemd 服务》

《Linux的运行级别与目标》

《软连接 vs. 硬连接》

《Linux 目录详解》

《虚拟机安装 Linux 最完整攻略》

《Xshell 与 Xftp 的安装与使用》

 

 

 

 

- The End -