转载

支持安卓应用开发的那些顶级编程语言

【51CTO.com快译】引言:本文通过向您介绍有关Android应用编程语言的优缺点,以帮助您选择出一种适合于自己应用的语言进行入门学习。

支持安卓应用开发的那些顶级编程语言

开始学习一种复杂的编程语言往往会让人望而生畏,因为在大多数情况下,您会不知道从何处开始学习,而且在开始之前,您可能已经对该语言满腹怀疑了。因此,事先了解不同类型的语言,会让您清楚地知道在面对不同需求环境和不同类型的应用时,应当如何做出明智的选择。

众所周知,Java是Android的官方编程语言,但是其实我们完全可以用其他的语言,来构建Android应用。由于各种Android编程语言之间可能存在着复杂或细微的差别,因此我们在做选择之前,先来了解一下各自的优缺点吧。

以下是目前常用的Android开发编程语言:

  • Java - Java是Android开发的官方语言,Android Studio能够支持它。然而,它学习曲线却比较“陡峭”。
  • Kotlin - Kotlin是最近被推出的、仅次于Java的Android开发语言。它虽然与Java类似,但是在很多方面具有清晰的“思路”。
  • C/C++ - Android Studio通过使用Java NDK来支持C++。这允许产生本地原生编码,这对于游戏之类的应用来说会更为方便。不过C++比较复杂。
  • C# - 相对于C或C++容易混淆代码来说,C#是一种新的替代方式。它能够被Unity和Xamarin之类的工具所方便支持,因此更适合于游戏、以及跨平台的开发。
  • BASIC – 您可以通过Anywhere Software的B4S IDE来支持BASIC。此工具虽然简单且强大,但比较小众。
  • Corona/LUA – 是另一个基于LUA的跨平台工具,它大幅简化了应用构建的过程,也允许您去调用本地原生库。
  • PhoneGap(HTML、CSS、JavaScript) - 如果您已经知道了如何构建交互式页面的话,那么您可以将该知识运用到PhoneGap上,来构建更为基础的跨平台应用。

开发Android应用的最佳方式是直接下载Android Studio。这是一款具有IDE和集成开发环境的软件。它提供带有Android SDK包的一组工具,以满足Android的开发。它能够一站式地提供各种应用启动和运行所需的环境。

Google提供了其官方教程与文档,您也可以在那里找到更多的库和免费的代码,以增强您的应用效果。视觉设计和各种提示之类的功能,能够使得程序进程更为流畅。同时就像其他云存储空间那样,一些更为先进且强大功能还会被持续添加进去。

1.Java

对于世界各地的移动应用开发人员来说,首选的、也是最受欢迎的编程语言莫过于Java。它是Android应用开发的官方语言,Google不但能完全支持它,而且Play Store中的大多数应用也都是用它来构建的。Java由Sun公司于1995年所开发。Android设备上的虚拟机能够运行并解释其代码。

不幸的是,Java对于初学者来说有点复杂,这也是Android应用开发人员所面临的最大障碍。由于是一种面向对象的编程语言,因此它的构造函数、空指针异常、检查异常等会显得不易阅读。而且它经常使用大量的代码来表示一些简单的对象。

如果添加了Java SDK,初学者就更难分辨出哪些部分属于Java、哪些属于Android。如果使用Java进行开发,您还需要用到Gradle之类基于JVM的构建工具,并需要理解Android Manifest、以及标记语言XML。当然,Java有着广泛的交流社区。

所以,Java会是您学习编程的最好语言吗?答案是肯定的,特别是如果您想拥有完整的Android开发体验的话。如果担心面对复杂的代码,您可以尽量使用设计界面、并参考各种帮助文档。但是作为初学者,如果您期待尽快做出有价值的产品的话,我建议您选择其他简单的语言,等积累了一定的经验后,再回头来接触Java。

2.Kotlin

Kotlin是排在第二位的Android开发官方语言。有人猜测其逐渐升高的热度,会成为下一个Swift。

和Java一样,Kotlin也运行在Java虚拟机之上。它与Java具有完全的互操作性,不会因为文件大小的增加,而造成障碍。

与Java的不同之处在于:Kotlin较少地需要“boilerplate(前端模板)”代码,这使得它更简化且易于阅读。它消减了空指针异常之类的错误,和句末的分号。

Kotlin对于初学者来说虽然是一个更为简单的起点,但是您目前需要下载Android Studio的测试版,才能获得对其“开箱即用”的支持。这比起在Unity里使用C#还是略显复杂。另外,其社区方面的支持也还处于相对初级的阶段。

3.C/C++

Android Studio通过使用Android原生开发工具(Native Development)来支持C/C++。您不必编写在Java虚拟机上运行的代码,而能够将代码在设备上本地原生地运行,并且可以控制内存之类的部件。对于一些3D要求高的游戏应用,您可以使用C或C++编写的库,来获取Android设备上的特有性能。

当然,它在设置上会比较复杂,可能会引入一些bug,同时也缺少一定的灵活度。如果您的确想为电脑开发一款游戏的话,那么您最好还是使用现成的游戏引擎为妙。

4.C#

C#是纯粹面向对象的C和C++版本。微软保留了C++的强大功能和Visual BASIC的简约性,它有点类似于Java的简化版。

和Java相同,C#也具有垃圾回收功能,因此您不需要担心内存泄漏、或考虑自行释放内存等问题。同时相对于Java来说,C#的语法更为清晰。当然,我推荐您将C#和下面将要提到的Unity结合起来使用。

5.Unity

Unity是一款“游戏引擎”,它提供诸如物理计算、3D图形渲染、以及类似Android Studio的IDE。它是一个开源的工具,您能很容易地创建出自己的游戏,并能获得其强大社区的支持。只需几行代码,您就可以在一小时之内搭建出一个基本的游戏平台。作为Google Play Store里大多数游戏工作室所使用的工具,它是跨平台的。由于一直使用的是对象,其开发模式还能提供学习面向对象编程的实战方法。

Unity虽然对于开发游戏非常实用,但面对创建标准的Android应用,特别是要符合Google材料设计语言(Material Design)的要求,则支持欠佳。

如果您想成为一名专业的Android开发人员,那么这条“非标准”的路线将会限制您的就业发展,除非您的目标只是想成为一名游戏开发者。

C#也可以用在Visual Studio的Xamarin之中。与传统的Android开发相比,它不但具有跨平台的优势,还具有适用于Android和iOS的代码库。

对于入门级的初学者来说,这条路并不一定适合,但对于一个想同时为iOS和Android平台创建应用的小公司来说,此路完全值得尝试。

6.BASIC

BASIC(Beginners All-Purpose Symbolic Instruction Code,初学者通用符号指令代码)是初学者理想的切入点。

可惜,它并不被Android Studio官方所支持,您不能在Unity或Xamarin中使用它。不过好消息是:您可以用到一个鲜为人知的工具--Anywhere Software的B4A(BASIC 4 Android),来运用BASIC开发Android应用。正如您所期望的那样,它可让您使用BASIC来编写Android应用程序。

B4A是为RAD(Rapid Application Development,快速应用开发)环境所设计的。它有着非常强大的支持社区。

由于“非官方”语言的因素,您用它制作出的高端游戏可能会不太理想,而且也很难完全符合材料设计语言的规范。这同时也会限制您的专业发展道路。另外,BASIC还有一个重大的缺点:它并不免费。

7.Corona

Corona作为开发Android应用的另一个选项,同样为您提供了相当强大的控制功能。比Java简单的是:您可以在LUA中进行编码,而且Corona SDK能够支持所有的本地原生库,并允许您将应用发布到多个平台之上。

除了被广泛地运用到创建游戏,您还可以在其他方面使用它。您可以使用Notepad++之类的文本编辑器来输入代码,并在模拟器上运行,而无需提前进行编译。在准备创建APK并予以部署时,您完全可以使用在线的工具来完成此操作。

由于确实需要一定的编程基本技巧,它提供了全面的使用介绍。不过,它也有自己的局限性:对于想要创建简单应用、又不想提高自己的编码技能与专业度的人来说,它是够用的;而如果您想用到“应用内购买”和原生Android API等功能的话,您就需要支付额外费用了。

8.PhoneGap

除非您想使用应用程序生成器,不然PhoneGap将是您“简化” Android应用开发的最后选项。

由Apache Cordova带来的PhoneGap,允许您使用HTML、CSS和JavaScript这些常用于创建网站的编程语言。PhoneGap就像桥梁一样,允许开发者访问手机或平板电脑上的一些原生功能,如计算器或相机等。

PhoneGap实际上不是真正的“Android”开发,而只是用到了JavaScript进行编程。因此它所完成的只是一些基本的任务,而如果您想成为真正的Android应用开发者的话,还是请从前面的列表中选择语言吧。

原文标题:Top Programming Languages for Android App Development,作者:Mohit Maheshwari

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

原文  http://developer.51cto.com/art/201806/575272.htm
正文到此结束
Loading...