我应该选择哪种编程语言?(Java*C#C++ 或 HTML5)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我应该选择哪种编程语言?(Java*C#C++ 或 HTML5)相关的知识,希望对你有一定的参考价值。

您是否有关于 android* 应用的绝妙创意,而不知道如何通过可用的编程工具和语言来实现? 本文将为您介绍可用于 Android 开发的主要编程语言。

最常用的编程语言有 Java、C#、C++ 和 html5。 每种语言都有自己的发展历史、用途,和利弊。下面我们来一一介绍它们的工作原理、适用框架和 IDE。

Java

技术分享Java 作为互联网应用语言,于 1995 年首次亮相。 不过现在它应用于多个不同的开发领域,包括游戏、导航、企业解决方案和移动行业。

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 开发工具 (ADT),经将其集成至 Eclipse* IDE。

除 SDK 和 IDE 外,您还可以使用许多对开发人员有用的框架,比如 Box2D*、LibGDX* 和 Basic4Android*。

C#

技术分享C# 是 Microsoft 开发的一种面向对象、可替换 Java 的编程语言。 它与 .NET 框架相关,后者是一种 Windows* 组件,包含运行 C# 代码和类库所需的通用语言运行时 (CLR)。

在 Android 案例中,Mono* 在 Windows 中担任 .NET 的角色。 Mono 是一个开源项目,Xamarin 面向 C# 和 CLR 的 ECMA 标准为其提供支持。

Mono 由四部分组成: C# 编译器、Mono 运行时、Base Class Library 和 Mono Class Library(面向 Gtk+*、Zip* 文件、LDAP*、OpenGL*、Cairo*、POSIX* 等的类)。

技术分享Xamarin 也可为移动开发人员提供多种工具: Xamarin Platform:支持使用原生接口构建交叉平台 C# 应用,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++ 编码可能是最佳选择。 但最重要的是必须保持简单,而不要造成不必要的复杂性。

如果您百分百确定具有原生特性的开发可以提升性能,那么您将需要用到原生开发套件 (NDK).

但是,完全原生的 Android 应用少之又少。 它们通常有一部分采用其他语言编写而成。 因此,Java 提供Java 原生接口 (JNI),调用 Java 虚拟机的本机功能。

技术分享许多游戏引擎或其他框架的最终目的都是为了简化 C/C++ Android 开发。 其中包括: Unity*、Unreal Engine*、Project Anarchy*、Marmalade*、Cocos2D-X*。

英特尔可提供两种用于优化和提高 Android 原生应用性能的工具: 英特尔® 图形性能分析器(英特尔® GPA)和面向 Android 的 英特尔® VTune™ 放大器。 英特尔® GPA 由三部分组成: 系统分析器、平台分析器和帧分析器,可帮助您检测和解决 GPU 密集型应用中的难题。 此处是有关各分析器的详细信息。 如果是 CPU 密集型应用,英特尔 VTune 放大器在查找和修复热点和瓶颈方面将发挥不可替代的作用。 请参阅教程,了解更多信息。

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 应用,可尝试使用英特尔® XDK,该开发环境可为各开发阶段(从设计到分享至应用商店)提供所需的工具。 它包含一个直观地 GUI 布局编辑器(称为“App Designer”)和可加速开发流程的内置代码编辑器。 借助现场开发任务享受应用测试过程。 如需了解更多有关这些编辑器和其他英特尔 XDK 特性的信息,请阅读入门指南

英特尔® XDK 有一项面向 2D 游戏开发的特殊服务。 “游戏资产管理器”有助于轻松访问、管理和控制游戏资产。 它还包含许多框架支持以及 Apache Cordova 插件和 API。 如欲开始尝试英特尔 XDK 游戏开发,请查阅 HTML5 游戏开发入门

结论

本文简要介绍了使用最广泛的几种编程语言及其在 Android 领域的地位。 其中的要点是,在找到合适的编程语言之前,需要明确应用概念。 您需要问自己:它将成为一个什么样的应用? 如果是一个简单的计算器,您可以选择经典的 Java、C# 或现代 HTML5。 但如果您打算发布一款图形丰富的 3D 游戏产品,那么可以尝试发挥 C++ 或 C# 的原生功能。

参考资料

关于作者

Anna Belova 是英特尔公司软件和服务事业部的一名软件工程实习生。 她拥有商务信息学专业的学士学位,目前正在俄罗斯国立研究大学高等经济学院攻读应用数学与信息学硕士学位。 Anna 对移动和可穿戴技术很感兴趣。

  http://blog.ifeng.com/article/44923317.html

  http://blog.sina.com.cn/s/blog_7362e71e0102wh9a.html

  http://blog.sina.com.cn/s/blog_7362e71e0102wh9b.html

  http://blog.sina.com.cn/s/blog_7362e71e0102wh9c.html

  http://blog.sina.com.cn/s/blog_7362e71e0102wh9d.html

  http://blog.ifeng.com/article/44923586.html

  http://blog.sina.com.cn/s/blog_7362e71e0102wh9e.html

  http://blog.ifeng.com/article/44923694.html

  http://site.leshou.com/s/27164255.html

  http://site.leshou.com/s/27164386.html

  http://site.leshou.com/s/27164448.html

  http://site.leshou.com/s/27164509.html

  http://site.leshou.com/s/27164638.html

  http://site.leshou.com/s/27164721.html

  http://site.leshou.com/s/27164815.html

  http://site.leshou.com/s/27164880.html

  http://site.leshou.com/s/27164958.html

  http://site.leshou.com/s/27165049.html

  http://site.leshou.com/s/27165147.html

  http://site.leshou.com/s/27165236.html

  http://site.leshou.com/s/27165340.html

  http://site.leshou.com/s/27165377.html

  http://site.leshou.com/s/27165436.html

  http://site.leshou.com/s/27165484.html

  http://site.leshou.com/s/27165520.html

  http://site.leshou.com/s/27165602.html

  http://site.leshou.com/s/27165768.html

  http://site.leshou.com/s/27165808.html

  http://site.leshou.com/s/27165859.html

  http://site.leshou.com/s/27165920.html

  http://site.leshou.com/s/27165966.html

  http://site.leshou.com/s/27166010.html

  http://shiyou.huangye88.com/xinxi/81909588.html

  http://shiyou.huangye88.com/xinxi/81910448.html

  http://shiyou.huangye88.com/xinxi/81910742.html

  http://shiyou.huangye88.com/xinxi/81911246.html

  http://shiyou.huangye88.com/xinxi/81911602.html

  http://shiyou.huangye88.com/xinxi/81911602.html

  http://shiyou.huangye88.com/xinxi/81912242.html

  http://shiyou.huangye88.com/xinxi/81912555.html

  http://shiyou.huangye88.com/xinxi/81912906.html

  http://shiyou.huangye88.com/xinxi/81913241.html

  http://shiyou.huangye88.com/xinxi/81913523.html

  http://shiyou.huangye88.com/xinxi/81913780.html

  http://shiyou.huangye88.com/xinxi/81914093.html

  http://shiyou.huangye88.com/xinxi/81914461.html

  http://shiyou.huangye88.com/xinxi/81914739.html

  http://www.99inf.com/jinrong/qhqq/762445.html

  http://www.99inf.com/jinrong/yhbx/762439.html

  http://www.99inf.com/jinrong/qhqq/762436.html

  http://www.99inf.com/jinrong/qhqq/762429.html

  http://www.99inf.com/jinrong/qhqq/762426.html

  http://www.99inf.com/jinrong/qhqq/762423.html

  http://www.99inf.com/jinrong/qhqq/762418.html

  http://www.99inf.com/jinrong/gpzq/762415.html

  http://www.99inf.com/jinrong/gpzq/762407.html

  http://www.99inf.com/jinrong/yhbx/762405.html

  http://www.99inf.com/jinrong/gpzq/762403.html

  http://www.99inf.com/jinrong/qhqq/762400.html

  http://www.99inf.com/jinrong/qhqq/762391.html

  http://www.99inf.com/jinrong/yhbx/762381.html

  http://blog.ifeng.com/article/44925556.html

  http://blog.ifeng.com/article/44925767.html

  http://www.360yue.cn/news/show-83472.html

  http://www.360yue.cn/news/show-83473.html

  http://www.360yue.cn/news/show-83474.html

  http://www.360yue.cn/news/show-83475.html

  http://www.360yue.cn/news/show-83476.html

  http://www.360yue.cn/news/show-83477.html

  http://www.360yue.cn/news/show-83478.html

  http://www.360yue.cn/news/show-83480.html

  http://www.360yue.cn/news/show-83482.html

  http://www.cnblogs.com/biyinjishi/p/5553238.html

以上是关于我应该选择哪种编程语言?(Java*C#C++ 或 HTML5)的主要内容,如果未能解决你的问题,请参考以下文章

C语言有哪几种?我该学哪一种?

在 windows mobile 上使用 C# 和 C 或 C++ 之间的区别

Java vs Kotlin,Android开发人员应该选择哪种语言?

Java vs Kotlin,Android开发人员应该选择哪种语言?

我应该为我的高性能 Web 服务选择哪种编程语言? [关闭]

我想学编程,算是兴趣吧。先从C开始还是JAVA,需要用到啥软件,最好是能给网址、里面软件是现在还