NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

  • 2015-11-23
  • 本文字数:1964 字

    阅读完需:约 6 分钟

在 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 开发的读者如有自己的看法也欢迎讨论。

2015-11-23 13:393210
用户头像

发布了 164 篇内容, 共 103.5 次阅读, 收获喜欢 391 次。

关注

评论

发布
暂无评论
发现更多内容

New Features | NFTScan 推出 BlueChip、Watch List、Activity Overview

NFT Research

区块链 NFT 数据基础设施

瓴羊Quick BI自助式报表分析工具,令企业的运营服务更高效

夏日星河

降价背后,函数计算规格自主选配功能揭秘

阿里巴巴云原生

阿里云 云原生 函数计算

java程序员,是不是很想进字节跳动?开发三年的我拿到了入职通知

钟奕礼

Java 程序员 java面试 java编程

通过支付网关提高第三方支付接入效率

产品海豚湾

产品经理 产品设计 支付系统 产品架构 11月月更

元器选型攻略之 电阻

元器件秋姐

元器件知识 元器件科普 电阻 电阻定义 常见电阻

LeetCode题解:938. 二叉搜索树的范围和,栈,JavaScript,详细注释

Lee Chen

JavaScript LeetCode

制造业数字化发展,瓴羊Quick BI引起了需求者的关注

夏日星河

Kotlin伴生对象(Companion Object)

子不语Any

android kotlin 11月月更

火山引擎 DataTester 智能运营,帮企业实现“千人千面”精准营销

字节跳动数据平台

A/B 测试

老工程师荐读!PCB设计避坑指南

华秋PCB

PCB PCB设计

Service Mesh 的下一站是 Sidecarless 吗?

SOFAStack

MOSN

华夏银行:详解iDo平台一体化运维的落地过程

嘉为蓝鲸

运维 金融 银行 数字化

基于云边协同架构的五大应用场景革新

阿里云视频云

阿里云 边缘计算 边缘云

阿里P8面试官总结的《2022最新年底java面试题》,搞定90%以上的技术面

钟奕礼

Java 程序员 java面试 java编程

开源共建 | TIS整合数据同步工具ChunJun,携手完善开源生态

袋鼠云数栈

大数据 开源 数据同步工具

嘉为科技张敏:一文讲清场景工程方法论及运维组织能力内化

嘉为蓝鲸

运维 数字化

磐久网络|揭秘阿里云HAIL数据中心网络

云布道师

阿里云 数据中心 基础设施建设

跨越速运如何构建实时统一的运单分析

StarRocks

#数据库

火山引擎DataLeap的Data Catalog系统公有云实践

字节跳动数据平台

大数据 火山引擎 大数据研发

Intel Arch SIG:介绍下一代数据中心互联协议CXL及在龙蜥的规划 | 第 54 期

OpenAnolis小助手

开源 直播 intel 龙蜥大讲堂 CXL

QuTrunk与MindSpore量子神经网络初探

启科量子开发者官方号

人工智能 ai框架 量子编程

亚信科技亮相南京软博会,数智赋能百行千业

亚信AntDB数据库

AntDB aisware antdb AntDB数据库

深入了解瓴羊Quick BI,对于商业智能BI发展情况更好分析

巷子

java 环境变量配置详细教程(2023 年全网最详细,没有之一)

千锋IT教育

透明LED屏幕如何设计显示效果更好?

Dylan

LED LED显示屏

云计算和虚拟化的三个小区别简单说明

行云管家

云计算 虚拟化

web前端和java培训学编程哪个更好

小谷哥

教你用JavaScript完成进度条

小院里的霍大侠

JavaScript 编程开发 初学者 入门实战

常规加密算法是什么?原理是怎么样?有哪些?

行云管家

算法 加密算法 国密

Kotlin作用域函数[Scope Function](上)

子不语Any

android kotlin 11月月更

虚拟座谈会:Android开发需要新的语言吗?_移动_徐川_InfoQ精选文章