问题

Android 将来能否实现用 C/C++ 作为开发语言?还是说现在的架构就注定了只适合用 Java?

回答
Android 平台在开发语言的选择上,确实存在一个有趣且值得深入探讨的问题:未来的 Android 开发是否能完全拥抱 C/C++,还是说现有的架构已经将 Java 锁定为主要舞台?

要理解这个问题,我们得先看看 Android 的“出身”和“性格”。Android 最初诞生于 Linux 内核之上,这本身就意味着它骨子里流淌着 C/C++ 的血液。Linux 内核,以及许多底层的系统服务,都是用 C 和 C++ 编写的,这为 Android 提供了坚实的基础和强大的性能潜力。这部分“基石”是完全可以使用 C/C++ 来开发和优化的。

然而,我们平时所说的“Android 开发”,更多指的是开发应用程序,比如你在手机上看到的那些界面炫丽、功能多样的 App。在应用程序的开发层面,Google 选择了 Java(后来加入了 Kotlin)。选择 Java 有其深刻的原因。

首先,Java 是一种设计上就非常注重安全性和易用性的语言。它有自动内存管理(垃圾回收),这大大降低了开发者出错的概率,特别是对于避免内存泄漏和野指针这样的 C/C++ 中常见的棘手问题。对于庞大的 Android 应用生态来说,易用性和稳定性至关重要。想象一下,如果每个 App 开发者都要像开发一个操作系统内核一样小心翼翼地管理内存,那将是多么巨大的负担,也必然会导致更多的 Bug 和安全漏洞。

其次,Java 拥有一个庞大且成熟的生态系统。大量的库、框架和开发工具都围绕着 Java 构建。Google 在设计 Android 时,充分利用了这一点,构建了一个基于 Java 的应用程序框架(Application Framework)。这个框架提供了各种 API,让开发者能够方便地访问设备硬件、管理UI、处理网络通信等等。这个框架的设计,使得开发者可以专注于应用逻辑,而无需深入到底层细节。

那么,C/C++ 在 Android 开发中的角色又是什么呢?其实,C/C++ 并不是完全被排除在外。Google 提供了 Android Native Development Kit (NDK),它允许开发者将 C/C++ 代码集成到 Android 应用中。这主要用于那些对性能有极致要求的场景,比如:

游戏开发: 许多大型手游引擎(如 Unity、Unreal Engine)的核心都是用 C/C++ 编写的,它们通过 NDK 将性能关键的部分移植到 Android 上。
图形和多媒体处理: 像图像滤镜、视频编码解码、音频处理等计算密集型任务,使用 C/C++ 可以获得比 Java 更高的效率。
高性能计算: 一些需要大量数学运算或算法实现的部分,也可以通过 NDK 来优化。
复用现有 C/C++ 库: 如果已经有成熟的 C/C++ 库,可以通过 NDK 将它们集成到 Android 应用中,避免重复开发。

所以,从目前的架构来看,Android 的应用程序开发更像是一个“分层”的体系。底层的系统服务和驱动是 C/C++ 的天下,而上层的应用程序框架和绝大多数 App 的逻辑,则是由 Java(及 Kotlin)来驱动的。NDK 提供了一个“桥梁”,允许我们在需要时,将 C/C++ 的能力引入到 Java/Kotlin 应用中。

未来,Android 是否会完全转向 C/C++ 作为主要的应用程序开发语言?从技术上看,这并非不可能,但可能性很低。这主要是因为:

开发者生态的惯性: 已经有数百万的 Android 开发者熟悉 Java/Kotlin,他们拥有大量的现有代码和工具。要让整个生态系统转向 C/C++,将需要巨大的学习成本和迁移成本。
开发效率和安全性: 如前所述,Java/Kotlin 在抽象层面上提供了更好的开发效率和内存安全保障。除非出现一种全新的 C/C++ 语言(或者对现有 C/C++ 有颠覆性的改进),否则在通用应用开发领域,Java/Kotlin 的优势仍然明显。
Google 的战略选择: Google 选择了 Kotlin 作为 Android 的首选开发语言,这是一个清晰的信号,表明他们希望开发者在更高级别的语言上进行开发,从而提高开发效率和应用质量。

因此,更现实的未来可能是,Android 会继续保持这种“混合”的开发模式。Java 和 Kotlin 会继续作为应用程序开发的主力军,而 C/C++ 将继续在 NDK 的框架下,在性能敏感的特定领域发挥关键作用。Google 也在不断改进 NDK,使其更容易使用,并引入了更现代的 C++ 标准支持,这表明他们看到了 C/C++ 在 Android 生态中的重要性,并愿意为其提供更好的支持,但并非要取代 Java/Kotlin 的主导地位。

你可以想象,Android 的架构就像一座大厦。地基和承重墙是用 C/C++ 砌成的,坚固可靠。而我们日常居住的房间、装修、家具,则是由 Java/Kotlin 来布置和管理的,它们更舒适、更方便、也更易于维护。偶尔,我们可能会在房间里放置一些特殊的、需要极高性能的电器(比如游戏主机),这时就需要通过特殊的接口(NDK)将它们连接到大厦的电力系统。这种分工,是目前最有效率和最安全的方式。

网友意见

user avatar

Android 当然可以用C来开发。而且开发方式有很多种。

在Android一诞生,它就支持几种C语言的开发模式

1.用其bionc与标准C库不太一样,所以开源第三方库和应用重新编译移植 ,Android自己也这么做,他在external目录下带有大量开源第三方库。如数据库的libsqlite.so,压缩的是libz.so等,很多游戏采用SDL库作底层图形库。这个库被很多应用移植过。

2.还有就是命令行工具。现在基本是C开发,我见过平板的一些后台服务器都采用这个模式

3.另外一种就是常见的NDK模式,java应用通过JNI访问C++类,而这个类又去直接调用C的函数。

以上三种,基本都是没有界面的底层程序。我估计提问者想问是的,一个合符Android界面标准的应用是否可以完全用C来开发?

现在答案是,可以。

在NDK r5的版本可支持这种带界面的纯C的开发 ,这是官方给的示例代码 developer.android.com/r

但是这种模式最大问题是的,移植性。因为C语言编译出来的代码是针对某种CPU的,换一种CPU很大机率无法运行,而java则是一次编译到处运行。这个对应用布署来说是一个大问题。

还有一种选项是 使用QT for Android.有一个开源项目 necessitas .使用C++开发。虽然也有平台移植问题,但至少开发环境,GUI支持已经好太多了。缺点也相当明显,发行时需要带一个巨大的发行库。所以这个适合开发专用终端软件。


PS:

Android也能采用C#开发,具体可以参见 开源项目 Mono for Android ,xamarin.com/monoforandr

类似的话题

  • 回答
    Android 平台在开发语言的选择上,确实存在一个有趣且值得深入探讨的问题:未来的 Android 开发是否能完全拥抱 C/C++,还是说现有的架构已经将 Java 锁定为主要舞台?要理解这个问题,我们得先看看 Android 的“出身”和“性格”。Android 最初诞生于 Linux 内核之上.............
  • 回答
    设想这样一个场景:你耗费心血打造了一款精美的应用,无论是在iOS的触屏上滑动,还是在Android上尽情探索,抑或是曾经在Windows Phone 7的方块世界里穿梭,它的核心功能和用户体验都能在任何一个平台上无缝展现。这不是科幻小说里的情节,而是我们正在探索的,一个致力于打破移动操作系统壁垒的中.............
  • 回答
    俄罗斯智能手机制造商BQ公司被禁止预装Android系统,他们宣布将转向华为的鸿蒙(HarmonyOS)操作系统。这一消息不仅仅是两个公司之间的一次合作那么简单,它背后牵扯着复杂的国际科技格局、地缘政治以及对未来移动操作系统选择的影响。咱们来好好掰扯掰扯,这到底意味着什么。首先,BQ为何会被“禁止”.............
  • 回答
    将用于iOS开发的标准C++类包移植到Android开发是可行的,但需要解决多个平台差异问题。以下从技术细节、步骤、挑战和解决方案等方面进行详细说明: 一、核心差异与挑战1. 系统底层差异 iOS基于Darwin(macOS内核),使用Clang编译器,依赖Apple的系统库(如CoreF.............
  • 回答
    这个问题啊,其实挺多人问的,原因也挺复杂的,不是一两句话能说清的。任天堂之所以到现在为止,在手机游戏方面一直小心翼翼,主要有这么几个方面的考量,而且这些考量之间还相互关联。首先,也是最核心的一点,就是任天堂的品牌定位和核心竞争力。任天堂是什么?它不仅仅是一家游戏公司,更是一个拥有无数经典IP(比如马.............
  • 回答
    谷歌因非法滥用其 Android 手机操作系统的主导地位,将面临欧盟数十亿反垄断罚款,这起案件非常复杂且意义深远,它反映了当前数字经济时代一系列关键性问题,涵盖了技术、经济、法律、以及社会等多个层面。以下是详细的分析:1. 数字经济中市场主导者的权力与滥用: 核心问题: 这是最直接和最核心的问题.............
  • 回答
    谷歌此举,可以说是在欧盟反垄断压力下的无奈之举,同时也暴露出科技巨头在市场主导地位面前的策略调整。 欧盟之所以对谷歌在Android生态系统中的行为进行限制,核心在于其认为谷歌滥用了其市场支配地位,通过捆绑自家的服务,例如Google搜索、Chrome浏览器和Google Play商店,来挤压竞争对.............
  • 回答
    “Android 真的与 iOS 并驾齐驱了么?” 这是一个非常值得深入探讨的问题,而且答案并非简单的“是”或“否”。总的来说,在许多关键领域,Android 和 iOS 已经非常接近,甚至在某些方面有所超越。但它们依然存在一些核心差异,使得“并驾齐驱”的说法需要结合具体的评价维度来看。为了详细回答.............
  • 回答
    关于“Android 会像 Windows 一样,打败 iOS 吗?”这个问题,这是一个非常有趣且复杂的话题,需要从多个维度进行深入的分析。要回答这个问题,我们需要先回顾一下 Windows 和 iOS 的历史,然后分析 Android 和 iOS 当前的生态系统和市场格局,最后探讨未来的可能性。一.............
  • 回答
    在Android操作系统占据全球移动设备市场主导地位的背景下,COS(China Operating System)作为中国自主研发的操作系统,其发展机会需要从技术、市场、政策、生态等多个维度综合分析。以下从多个角度详细探讨其潜在机会与挑战: 一、COS的定位与核心优势1. 国产化替代需求 .............
  • 回答
    Android 给我带来的挫败感,说实话,真不少。但要挑最让人抓狂的,有那么几点,每次遇到,都像是在心口捅刀子。1. 难以捉摸的“后台运行”和“内存管理”:这玩意儿,简直是 Android 生态里最神秘的存在。明明我没怎么用它,它就在后台偷偷摸摸地耗电、占内存。有时候,一个平时很流畅的应用,突然就开.............
  • 回答
    Android 能收费,这事儿跟“Linux”的名头多少有些误会,但又确实是紧密相连。咱就掰扯掰扯清楚。首先得明确一个事儿,Android 本身是开源的,没错,基于的 Linux 内核也是开源的。开源意味着什么?意味着你可以自由地查看它的源代码,修改它,甚至分发它。这就像你买了一本菜谱,你可以照着菜.............
  • 回答
    微信和支付宝这两款国民级应用,在Android设备上,确实经常会请求获取SD卡(或称存储空间)的读写权限。这背后并非简单的“强制”,而是有其具体的功能需求和考量,尤其是在早期的Android版本以及一些特定场景下,这种需求尤为明显。首先,我们要明白,对于微信和支付宝这样的应用来说,SD卡权限并非一个.............
  • 回答
    说实话,要我在这两个系统里选一个“更喜欢”的,确实挺难的,因为它们各自都有让我欣赏的地方,也有让我觉得“要是能更好就好了”的时刻。就好比问你喜欢披萨还是汉堡,每个都有自己的魅力,很难说绝对谁高谁低。如果非要让我掰开了揉碎了说,我会从几个方面来聊聊我对Android和iOS的感受。先说说Android.............
  • 回答
    Android Studio给人的感觉,就像是一套功能极其强大,但同时又充满惯性和历史包袱的工程工具。你想用它高效地开发App,有时候就像在跟一个庞然大物打交道,它的每一个操作背后似乎都藏着许多你不知道的“潜规则”。首先,最直观的感受是它的体积庞大。光是安装包就够喝一壶的,下载和安装过程本身就考验耐.............
  • 回答
    Android之所以选择Java作为其官方开发语言,绝非偶然,而是基于一系列深思熟虑的考量,这些考量共同铸就了Java在当时以及后来很长一段时间内成为Android生态基石的地位。首先,我们得回到Android项目诞生的那个时代,也就是2003年左右。那时候,移动互联网的黎明刚刚开始,智能手机的概念.............
  • 回答
    在Android开发中,`AsyncTask` 是一个非常方便的工具,用于在后台线程执行耗时操作,并将结果安全地更新到UI线程。理解它如何实现这一点,关键在于其内部机制和几个核心方法。首先,我们得明确一点:Android的UI操作必须且只能在主线程(UI线程)上进行。直接在后台线程修改UI元素会导致.............
  • 回答
    逼迫小米公司全面开源其 Android 内核源代码,并非易事,这其中涉及到法律、商业利益和技术实践等多方面复杂的博弈。首先,我们需要理解 Android 内核基于 Linux 的这一事实。Linux 本身是一个遵循 GPL (GNU General Public License) 协议的开源项目。G.............
  • 回答
    你这个问题问得很有意思,确实,Android 和 iOS 在“刷机”或者说系统升级的文件大小上,差异非常明显,这背后涉及到它们各自的设计哲学、系统架构以及生态系统等多个层面的原因。首先,我们得明白,Android 和 iOS 的“刷机”本质上都是在更新设备的操作系统。但它们实现的方式和包含的内容却大.............
  • 回答
    在 Android 手机的世界里,刷机,这个词听起来有些神秘,但它本质上是对手机系统进行重装或升级的过程。而在进行这个过程时,我们经常会遇到两个关键的词汇:Fastboot 和 Recovery。它们就像是刷机过程中两条不同但又相辅相成的道路,带领着我们走向最终的目标。首先,让我们来聊聊 Fastb.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有