虚拟座谈会:Android开发需要新的语言吗?

jopen 9年前
 

在Java之外,Android是否需要一门新的开发语言,长久以来一直都是业内茶余饭后时常提起的话题,特别是苹果推出了Swift语言,以及Oracle和Google关于Java的专利纠纷,让这一问题备受关注。恰逢国内Google技术社区盛事 北京GDG Devfest 2015 在北航举办,InfoQ记者邀请到大会上的几位讲师对这一问题发表了自己的看法。

在讨论这一问题之前,先让我们了解一下问题的背景。从去年以来,Swift、Go、Dart语言的社区都对Android开发表示了兴趣:

  • 今年早些时候有一个 Silver项目 致力于用Swift来开发跨平台的应用,不过在Android平台是通过将Swift转换为Java代码实现的。而另一些人则在等待Swift开源以便将其移植到Android,有人已经做了一些前期的研究, 在Android上运行Swift代码 ,表明这至少在理论上是可行的。
  • Go语言对Android开发的支持更加官方,在去年发布的Go 1.4中就已经支持了Android开发,Go语言也是在各种Android新语言的流言中最常出场的一位。但Go语言从目前的趋势来看,在服务端发展的可能性更大,它的部分特性也更适用于服务端编程。
  • Dart语言自今年Google宣布Chrome不再内置Dart VM之后遭遇重大挫折,很多人认为它最终将被抛弃,但这门语言背后有 多位优秀的开发者和语言设计者 ,自从不再将替代JavaScript作为目标后,Dart反而迎来了更广阔的施展空间。今年Dart峰会上Google宣布了用于Android开发的 Sky框架 (现更名为Flutter),更用120fps的流畅性打消了人们对这个曾被用于前端开发的脚本语言的疑虑。

除了这三门已经有一定历史积累的语言,另一个被认为可能替代Java的是Kotlin语言。Kotlin是开发工具公司JetBrains设计的一门新语言,旨在替代Java,其风格更加贴近现代语言,一经推出便受到Android开发社区的注意,声势也越来越大。

最近Kotlin语言刚刚发布1.0的rc版,我们正好从这个话题入手来看看国内Android开发社区是如何看上面的问题的。

InfoQ:Kotlin最近发布1.0rc版,是否研究过,感觉如何? Swift、 Go、Dart语言社区都对Android开发感兴趣,Android开发是否需要另一门语言,如果有,最看好哪个?

朱凯(Flipboard Android工程师):Kotlin我尝试过,没有做过深入研究。它给我的感觉就像是一个除了没有动态语言特性之外应有尽有的Java,很爽。我觉得 Kotlin目前可以作为Java的一种补充应用于Android开发(例如用于POJO),而且就相互兼容性来看,Kotlin是最适合做这种事的。但 要说替代Java,目前还没有能够做到的语言,包括Kotlin。未来我不知道,如果有的话我最看好Kotlin,但我觉得 Kotlin最终行不行还得看Google怎么决定。

韩国恺(北京GDG社区组织者、开发者):没研究过Kotlin。每个人都有自己喜爱的编程语言,但特定的系统或框架决定了它所采用的主语言,其它语言想加入就比较难。以Web为例,所有浏览器都只支持一种语言(JavaScript),其它语言想成为浏览器的主力语言就很难或者会很受限。而服务器端由于没有这种限制,而呈现百花齐放的景象,Java、Go、PHP、Ruby都可以。再说Android,我感觉Android系统的语言环境介于 Web和服务器端之间。JVM本身可以支持多种语言,使用NDK可以进行C/C++开发,同时又包含Web环境以及与系统的交互,所以Android比 Web环境的语言选择余地要大。不过应用层还是以Java为主的,其它语言的使用多少会受到一些影响。另外,语言的开发成本也选择一个语言很重要的方面,新语言都要走很长的路。

段建华(遨游浏览器Android工程师):Kotlin有过关注和简单了解。Kotlin和Java很类似,使用起来也比Java轻巧很多,同时也可以规避了Java中的一些坑。使用Swift开发Android程序的听到的较少,使用Go语言开发Android应用是已经可以实现的。

个人觉得Android需要一门新的语言的需求有,但是不够迫切。Android一开始选定Java,目的就是利用庞大的Java程序员群可以快速的低成本地创造出丰富的Android应用。曾经的Oracle和Google就Android侵权官司,弃用Java炒的沸沸扬扬,议论纷纷。然而 现在Java依旧是Android的官方语言,地位没有动摇。

而Kotlin在Android界开始有名气,应该是来自DroidCon NYC 2015,目前国内使用的据我了解,都是少数个别开发者在使用。因而我觉得Kotlin挑战Java的地位,推广和宣传必不可少。

如果真的需要一们新的语言,论实力来说Go很强,当然Kotlin有着Jetbrains支持也不错。就个人而言,我更倾向于Kotlin,因为我觉得它与Java相近,转换成本较低。

Android开发到底是否需要新语言,这个新语言到底会是什么,在Google没有正式发布之前没有正确的答案,但这不妨碍我们站的角度稍微高一点,来挑选出我们心目中最适合的新语言。各位Android开发的读者如有自己的看法也欢迎讨论。