在今日凌晨的 Google I/O 大会上,Google 官方正式宣布,Kotlin 编程语言现在是 Android 应用程序开发人员的首选语言。Java 占据 Android 开发绝对统治的时代一去不复返了。

##Kotlin,东宫太子

谷歌今天宣布,Kotlin 编程语言现在是 Android 应用程序开发人员的首选语言。

谷歌在今天的声明中写道:“Android 的开发将越来越以 Kotlin 为先。”许多新的 Jetpack API 和特性将首先在 Kotlin 中提供。如果你要开始一个新项目,你应该用 Kotlin 来写;用 Kotlin 编写通常意味着更少的代码——更少用于类型、测试和维护方面的代码。”

就在两年前的 2017 年 I/O 大会上,谷歌宣布在其 Android Studio IDE 中支持 Kotlin。考虑到 Java 长期以来一直是 Android 应用程序开发的首选语言,这有点令人惊讶。在过去的两年里,Kotlin 的人气只增不减。谷歌说,超过 50% 的专业 Android 开发人员现在使用该语言开发他们的应用程序,在最新的 Stack Overflow 开发人员调查中,它被列为第四大最受欢迎的编程语言。

Android 的首席倡导者切特·哈斯 (Chet Haase) 表示:“我们宣布,我们正在采取的下一个重大举措是,我们将以 Kotlin 为先。”

哈斯说:“我们知道,不是每个人现在都在用 Kotlin,但是我们相信,你会需要它的。”“你可能有充分的理由继续使用 C++ 和 Java 编程语言,这完全没问题。这些语言不会消失。”

##Kotlin,Android 世界的 Swift?

早在 2015 年,Kotlin 就有“Android 世界的 Swift ”的称号。

Kotlin 是一门与 Swift 类似的静态类型 JVM 语言,由 JetBrains 设计开发并开源。与 Java 相比,Kotlin 的语法更简洁、更具表达性,而且提供了更多的特性,比如,高阶函数、操作符重载、字符串模板。它与 Java 高度可互操作,可以同时用在一个项目中。

按照 JetBrains 的说法,根据他们多年的 Java 平台开发经验,他们认为 Java 编程语言有一定的局限性和问题,而且由于需要向后兼容,它们不可能或很难得到解决。因此,他们创建了 Kotlin 项目,主要目标是:

  • 创建一种兼容 Java 的语言
  • 编译速度至少同 Java 一样快
  • 比 Java 更安全
  • 比 Java 更简洁
  • 比最成熟的竞争者 Scala 还简单

若在当时看来,Android 世界的 Swift 称号似乎底气不足,更像是一种美好的愿望。那么在 2017、2019 两届的 Google I/O 以后,这个说法可以站住脚了。

##Kotlin 真比 Java 强?

许多新语言的出现似乎都是源于对某种其它语言的厌倦,Kotlin 看上去也是如此。但在 JetBrains 看来,Kotlin 项目的原始动机就是为了提升生产力。JetBrains 开发者支持组组长 Hadi Hariri 在接受 InfoQ 采访时表示:

”尽管当时我们已经开发了对几种基于 JVM 的编程语言的支持,我们还是基本都在 Java 环境下写基于
IntelliJ 的 API。IntelliJ 开发系统是基于 Groovy 和 Gant 的,Groovy 也用于测试,RubyMine 中还有一些 JRuby 代码,情况就是如此。我们希望转向更具表现力的语言从而提高生产力。同时,我们不能接受在 Java 互操作性或编译速度方面的妥协。“

####Kotlin 与 Java 总是在主观比较

“Kotlin 比 Java 好”,“Kotlin 可读性比 Java 强”,“Kotlin 开发速度比 Java 快”,类似这样的陈述缺少相关准确数据的支持,所以都归为主观看法一类。

主观看法是个体开发人员在对与 Kotlin 或 Java 相关的主题作出一个或多个主观判断时形成。

开发人员的主观判断存在如下问题:

  • 没有与主观判断相关联的量化指标。
  • 主观判断存在很大的偏见。
  • 主观判断的偏见在开发人员之间存在很大的差异。

由于没有与主观判断相关联的量化指标,建立在这些判断基础上的观点只是反映出了开发人员之前就有的偏见。不同的开发人员可能有着截然不同的偏见,因此,有开发人员认为 Kotlin 是不错(或糟糕)的 Java 替代者并不意味着其他开发人员也这么认为。

而且,由于没有客观指标,主观分歧就无法客观地消除,这经常会导致“口水战”。

相较于 Java,Kotlin 的确在一些方面有较大优势:效率高、易维护、可靠、简单易学。在一些特定场景下,许多 Java 开发者因为某些方面的问题选择了切换到 Kotlin:比如受够了 Java NullPointerException 的人都喜欢 Kotlin 的 Null 安全特性;扩展函数被大量使用;除了扩展 Java 类,人们也常常将 Java 代码迁移到 Kotlin。

根据英国软件公司 Pusher 的调查数据显示,在样本数 2744 人的调查中,超过 87% 的受调者已经完成了迁移。他们有的使用了迁移向导,有的直接手动修改代码。超过四分之一的受调者迁移到 Kotlin 后又回到了 Java。有技术方面的原因,也有组织方面的原因。其中使用了反射或代码生成的工具是被提及最多的因素。

  • “Kotlin 的枚举不能包含常量。在自定义注解时(比如 @IntDef),为了保持接口的整洁,需要将值保存在枚举中。”

  • “我们正在使用 Realm,但它不能与数据类一起使用。”

  • “我们的 Java 代码中使用了 Retrolambda,因为类型缺失,很难转到 Kotlin。”

  • “另一个团队不喜欢 Kotlin,我们也预料不到会这样。”

  • “这不是我们决定的,我们是按照公司的规则来的。”

Java 依旧是编程语言排行榜上的第一名。但 Java 是最好的语言么?不是,因为在每个领域都有更合适的编程语言。

那么,Java 语言到底有什么优势可以占据排行榜第一的位置呢?

  • 其一,语法比较简单,学过计算机编程的开发者都能快速上手。

那么,Java 语言到底有什么优势可以占据排行榜第一的位置呢?

  • 其一,语法比较简单,学过计算机编程的开发者都能快速上手。

Java失宠,谷歌宣布Kotlin现在是Android开发的首选语言相关推荐

  1. Kotlin 继续助力 Android 开发,并计划涉足更多领域

    作者:James Lau,产品经理 今年10月3日,Kotlin 社区年度最大的现场盛会 KotlinConf 2018 举行.2018 年是 Kotlin 的盛年,这门语言持续被采用,并赢得了大量开 ...

  2. 【收藏向】谷歌技术团队出品,Android开发入门教程,开源分享

    程序员圈子中,python.java等都是热门领域,网络上相关学习资源也比较多,相较之下Android的学习资料就比较少了,并且大多是碎片化的知识,不够系统和全面. 今天就来整理一下Android开发 ...

  3. 学android开发,入门语言JAVA知识点

    Android是一种以Linux为基础的开源码操作系统,主要使用于便携设备,而linux是用c语言和少量汇编语言写成的,如果你想研究Android,就去学java语言吧. Android开发入门教程  ...

  4. java 安卓项目案例_Java - 随笔分类 - android开发实例 - 博客园

    随笔分类 - Java 摘要:1.使用标准输入串对象System.inSystem.in.read()一次只读入一个字节数据,而我们通常要取得一个字符串或一组数字,这就很不适合,需要其他方法取得这样的 ...

  5. android开发多国语言对照表

    android开发,支持多国语言时,都是"语言-地区"简称不好记忆,此处网络收集来作为笔记参考. msm8x12\build\target\product\languages_fu ...

  6. listview在java中的使用_我的Android开发之路——ListView的使用

    在Android开发过程中,遇到需要列表显示的时候,这时候就会用到listview. 1.首先创建一个ListViewTest项目,选择empty activity类型.修改activity_main ...

  7. go语言1.4版本将支持面向android开发,[翻译]Go语言1.4版本将支持面向Android开发

    Go语言将支持Android 概述 我们建议将Go语言引入Android平台,重点是用Go语言编写游戏程序,API将在Android NDK中定义. 背景 Android平台被设定为一个多应用操作系统 ...

  8. android开发用c语言,AndroidC语言开发系列.doc

    AndroidC语言开发系列 一.Android C语言开发之一[开发环境的配置]Android是基于Linux的操作系统,处理器是ARM的,所以要在Linux或Windows等x86系统上编译And ...

  9. 2020年,Android开发想自学可能吗,大概要多久?

    看见有人提问"Android开发想自学可能吗,大概要多久?",想着自己好歹也是工作了快六年的老Android,就在这里特意写了一篇文章回答一下,希望对大家的自学之路有所帮助. 一. ...

  10. 新课程上线 | 学习使用 Kotlin 进行 Android 开发的最佳时机!

    作者 / Android 开发技术推广工程师 Kat Kuan 如今,越来越多的人希望考虑能够支持远程办公的职业,而从事应用开发或许可以实现.对于希望获得新机遇的人而言,即使过去没有编程经验,也可以立 ...

最新文章

  1. 95. Unique Binary Search Trees II 不同的二叉搜索树 II
  2. matlab有模糊分析,用matlab进行模糊综合评判_模糊综合评判matlab
  3. 既然参与,那就做好,我相信我们是最棒的!!!
  4. python视频延迟严重_利用多进程降低opencv视频延迟处理rtsp视频流
  5. dhcp 授权的原理
  6. oracle排序后第一条,Oracle排序取第一条数据
  7. Mysql优化(出自官方文档) - 第二篇
  8. 一级计算机办公软件,计算机一级与高级办公软件
  9. PascalVOC Dataset下载链接
  10. WPS中插入论文公式
  11. Java 导出word和pdf_Java实现word导出与pdf导出
  12. NextDay-Java(适用软件测试)
  13. 线性表的顺序存储结构及基本操作
  14. 4274. 【NOIP2015模拟10.28B组】终章-剑之魂
  15. 登陆档案信息未找到服务器是怎么办,用友畅捷通T+软件POS端常见问题汇总
  16. 如何生成Android的keystore文件
  17. 【玩转Jetson TX2 NX】(九)TX2 NX 安装onnx-tensorrt工具(详细教程+错误解决)
  18. Node.js 从零开发web server博客项目--项目初始化
  19. Error mounting /dev/sdb1 at /media/ on Ubuntu 16.04 LTS
  20. 注册域名时如何填写域名信息

热门文章

  1. 变分模态分解(VMD)运算步骤及源码解读
  2. 用matlab进行拉普拉斯滤波,[转载]matlab滤波技术及区域处理---线性滤波
  3. 1月10日云栖精选夜读:专访金榕:四年蜕变,阿里iDST是如何登上浪潮之巅的?
  4. 遗传算法的手工模拟计算示例(通俗易懂)(包含遗传算法原理、遗传算法代码)
  5. Excel VBA编程教程(基础一)
  6. Excel VBA解密教程
  7. MongoDB下载安装教程
  8. 大厂面经----接近30场面试分享
  9. linux wifi驱动rtl8188移植
  10. 黑马程序员全套Java教程_Java基础入门视频教程零基础自学Java必备教程视频讲义(2)