65.9K
CodeProject 正在变化。 阅读更多。
Home

我应该使用哪种编程语言?(Java、C#、C++ 或 HTML5)

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.81/5 (11投票s)

2016 年 2 月 1 日

CPOL

7分钟阅读

viewsIcon

24908

本文概述了 Android 开发中使用的主要编程语言。

Intel® Developer Zone 提供跨平台应用程序开发工具和操作指南、平台和技术信息、代码示例以及同行专业知识,以帮助开发人员创新并取得成功。加入我们的社区,了解 Android物联网Intel® RealSense™ 技术Windows,下载工具、获取开发套件、与志同道合的开发人员交流想法,并参与黑客马拉松、竞赛、路演和本地活动。

你是否有一个绝妙的 Android* 应用创意,但不知道如何通过现有的编程工具和语言来实现?本文概述了 Android 开发中使用的主要编程语言。

Android 丰富而强大的功能让你拥有选择:开发什么以及如何开发。有越来越多的工具,包括编程语言、IDE 和框架,使得开发过程越来越灵活、简单和高效。这种多样性为程序员进入 Android 行业提供了较低的入门门槛,并吸引了新的资源。

最流行的语言是 Java、C#、C++ 和 HTML5。它们各自都有自己的历史、用途、优点和缺点。让我们来谈谈它们各自的特点、工作原理、适用的框架和 IDE。

Java

Java 于 1995 年首次作为一种用于 Internet 应用程序的语言出现。但如今,它已广泛应用于游戏、导航、商业解决方案等各种开发领域,当然也包括移动行业。

Java 是 Android 开发的经典语言。自然,Java 是一种解释型语言。这一特性使其具有跨平台性:要运行 Java 代码,需要一个 Java 虚拟机。对于 Android,ART 或 Dalvik*(在 KitKat* 及更早的 Android 版本中)扮演着虚拟机的角色。但 ART 采用一种非常不同的方法:它在应用安装阶段将 Java dex 字节码编译成目标设备的的可执行文件。 此处 详细介绍了 ART 的主要特性和与 Dalvik* 相比的编译原理。

Google 提供强大的 Java 基础架构:Android SDK 具有丰富的 Java API。你可以只下载 SDK 工具,或者下载 Android Studio — 基于 IntelliJ* IDEA 的官方 Android IDE,包含 Android SDK 工具、平台和模拟器。它可以安装在 Windows*、Mac OS X* 和 Linux* 上。SDK 6.0 Marshmallow 及其新功能和技术已经可用!

如果你喜欢使用一些常用且通用的工具,可以获取 Android Development Tools (ADT) 并将其集成到 Eclipse* IDE 中。

除了 SDK 和 IDE,还有许多框架可以帮助开发人员,例如 Box2D*、LibGDX* 和 Basic4Android*。

C#

C# 被认为是微软的一种面向对象的、Java 的替代语言。它与 .NET Framework 相关联,.NET Framework 是 Windows* 的一个组件,包括运行 C# 代码所需的通用语言运行时 (CLR) 和类库。

对于 Android,Mono* 在 Android 中扮演着 Windows 中 .NET 的角色。Mono 是一个开源项目,由 Xamarin 支持,基于 C# 和 CLR 的 ECMA 标准。

Mono 包括四个主要部分:C# 编译器、Mono 运行时、基类库和 Mono 类库(用于 Gtk+*、Zip* 文件、LDAP*、OpenGL*、Cairo*、POSIX* 等的类)。

Xamarin 还为移动开发人员提供了一系列工具:用于构建具有原生界面的跨平台 C# 应用的 Xamarin Platform、用于在真实设备上衡量有效性的 Xamarin Test Cloud(你没有的设备)、用于实时监控用户如何与你的应用交互的 Xamarin Insights,以及用于学习移动开发的 Xamarin University 在线和线下课程。Xamarin 框架可轻松与 Microsoft Visual Studio* 集成。

C# 编程可以使用以下框架:Unity*、Monocross* 和 Cocos2D-XNA*。

C++

C++ 是世界上最强大的语言之一。它能够编写的软件种类繁多:Adobe Photoshop*、Illustrator*、Windows OS* 以及其他 Microsoft 产品,如 Office*、Visual Studio 和 Internet Explorer*,还有 Mozilla Firefox* 和一些 OS X 组件。

C/C++ Android 开发传统上是构建原生应用的方式。原生意味着编译器将程序代码转换为硬件特定的二进制文件。因此,必须为每个特定设备构建原生代码。这相当困难,但这类应用被认为是最快的。此外,原生应用可以直接访问摄像头、GPS 或通讯录以及操作系统的其他功能和设备。

所述的原生应用程序开发有其优点和缺点。重要的是要理解你要创建的应用。它是一个 3D 游戏,还是一个简单的记事本,或是一个用于叫出租车的应用?如果应用需要密集的 CPU 或 GPU 计算,C++ 编码可能是一个不错的选择。但重要的是要保持简单,而不是在不必要时使事情复杂化。

如果你百分之百确定原生功能开发可以提高性能,那么你需要 Native Development Kit (NDK)。

然而,完全的原生 Android 应用很少见。通常它们的部分代码是用其他语言编写的。因此,Java 提供了 Java Native Interface (JNI),它可以在 Java 虚拟机中调用原生函数。

许多游戏引擎或其他框架旨在简化 C/C++ Android 开发。其中一些包括:Unity*、Unreal Engine*、Project Anarchy*、Marmalade*、Cocos2D-X*。

Intel 提供两种用于优化和提高 Android 原生应用性能的工具:Intel® Graphics Performance Analyzers (Intel® GPA) 和 Intel® VTune™ Amplifier for Android。Intel GPA 由三个部分组成:System Analyzer、Platform Analyzer 和 Frame Analyzer,它们有助于检测和解决 GPU 密集型应用程序中的困难。 此处 提供了每个部分的详细信息。对于 CPU 密集型应用程序,Intel VTune Amplifier 在查找和修复热点和瓶颈方面将不可替代。请参阅 教程 以获取更多信息。

HTML5

HTML5 是一种用于结构化和呈现 Web 内容的标记语言标准。通常,HTML5 标记与其他关键 Web 工具一起使用:JavaScript* 编程语言和 CSS3(层叠样式表)。这种组合可以让你创建非常复杂的 Web 应用程序。

但是,万维网并非 HTML5 使用的唯一场所。如今,它广泛用于移动开发以创建混合应用程序。因此,如果你是一名经验丰富的 Web 程序员并希望开发 Android 应用,则无需花费时间学习一门全新的语言。

“混合应用”是什么意思?有一种分类将所有应用分为三种类型:原生、Web 和混合,即结合了 Web 功能和原生 UI 元素。一方面,混合应用由 WebView 运行——这是 Android View 类的扩展,可让你在 Android 应用中插入网页。它使应用能够连接到所需的硬件功能。另一方面,你在视觉上无法看到混合应用和原生应用之间的区别!

许多引擎或 SDK 都专注于 HTML5 标准:Marmalade WebUnreal EngineCocos2D-JSCordova* 等。

为了经济高效地创建混合 Android 应用,可以尝试 Intel® XDK,这是一款开发环境,提供从设计到应用商店发布的每个开发阶段的工具。它包括一个直观的 GUI 布局编辑器,称为 App Designer,以及一个 内置代码编辑器,可加速开发过程。通过 Live Development Tasks 享受应用测试。有关这些和其他 Intel XDK 功能的更多信息,请阅读 入门教程

Intel® XDK 拥有一个用于 2D 游戏开发的特殊服务。Game Asset Manager 可帮助轻松访问、管理和操作游戏资产。许多框架支持 Apache Cordova 插件和 API 也已包含在内。要开始使用 Intel XDK 游戏开发,请参阅 HTML5 游戏开发入门

结论

本文概述了最流行的编程语言及其在 Android 行业中的地位。主要收获是,在找到合适的编程语言之前,你应该定义应用的概念。你应该问自己一个问题:这个应用将是什么?如果它是一个简单的计算器,你可以选择经典的 Java、C# 或现代的 HTML5。但如果你要发布一款具有丰富图形的 3D 游戏产品,尝试利用 C++ 或 C# 的原生强大功能。

参考文献

关于作者

Anna Belova 在 Intel 公司软件与服务集团担任软件工程实习生。她拥有商业信息学学士学位,并正在俄罗斯国立高等经济学院攻读应用数学与信息学硕士学位。Anna 对移动和可穿戴技术感兴趣。

© . All rights reserved.