点击上方 好好学java ,选择 星标 公众号

重磅资讯、干货,第一时间送达今日推荐:2020年7月程序员工资统计,平均14357元,又跌了,扎心个人原创100W+访问量博客:点击前往,查看更多

在过去的几年里,我们一直在努力使 Kotlin 成为一种有趣、令人愉快且高效的编程语言。为了借助此版本的 Kotlin 继续追求这一目标,我们投入了大量精力和努力来提高 Kotlin 及其工具的性能和质量。我们也很兴奋地宣布支持多种新的语言功能,包括期待已久的 Kotlin 接口的 SAM 转换。

社区和生态系统

在过去 12 个月里,有超过 580 万人编辑了 Kotlin 代码,而且数量还在不断增长:

我们很高兴看到 Kotlin 变得越来越受欢迎!活跃用户的数量尤其鼓舞人心,我们将在未来的博文中详细介绍这一指标。这个数字比上一年增加了 1.5 倍。

根据 2020 StackOverflow 开发者调查,在最受专业开发者欢迎的编程语言中,Kotlin 已攀升至第 13 位,我们很高兴看到 Kotlin 成为最受喜爱的 5 种语言之一。

许多公司选择 Kotlin 作为他们的首选语言,并且已在所有平台上成功使用 Kotlin。我们很高兴看到这种趋势,并且非常感谢很多这样的公司提供了各种案例研究供社区阅读和学习。下面是一些最近使用 Kotlin 开发的优秀软件示例:

  • 服务器端:Atlassian、Adobe、ING Bank;

  • Android:Google Home、Duolingo、Zomato;

  • 多平台移动端:VMware、PlanGrid 和 CashApp、Mirego 的 Trikot;

  • Web:JetBrains 的 Space、Karhoo、MIPT 核物理方法实验室的 VisionForge。

我们的 Kotlin 社区也在迅速壮大。现在,超过 30,000 名 Kotlin 开发者在 Slack 和 Reddit 上交流知识并相互支持,同时超过 90,000 人关注了我们的官方 Twitter 帐号来获取提示、技巧和公告。Kotlin 社区在全球拥有超过 200 个用户小组,并且正在蓬勃发展。我们感谢所有人帮助传播信息、分享知识以及支持其他 Kotlin 开发者。大家创造的温暖而亲切的氛围让共同探索 Kotlin 成为一种愉快的体验。没有您,就不会有今天的 Kotlin。

Kotlin 1.4 在线活动

我们希望确保您拥有出色的 Kotlin 1.4 使用体验,并希望您对该语言的下一步发展有一个很好的了解。

Kotlin 1.4 在线活动将于 10 月 12 日至 15 日直播,您可以点击文末的阅读原文订阅直播,我们期待与大家见面!

专注于质量

此版本的重点是改善 Kotlin 的整体开发体验,包括提高 IDE 性能和稳定性。我们的目标是使 Kotlin 用户尽可能高效工作,并且我们专注于改进对用户最重要的功能,让他们在使用时更加满意!

我们检查和修复了超过 60 个性能问题,包括导致 IDE 冻结或内存泄漏的许多问题。在 Kotlin 1.4.0 的 EAP 阶段中,我们收集到许多积极反馈,这表明整体体验现在变得相当出色!

当您第一次处理项目并打开一个较大的 Kotlin 文件时,现在可以更快地看到高亮显示的内容。在大多数情况下,高亮显示的速度现在提高了 1.5-4 倍:

我们还大幅缩短了显示自动补全建议所花的时间。下图概述了 Kotlin 用户所经历的平均自动补全响应时间。补全时间超过 500 毫秒的情况几乎减少了一半:

请注意,这些最新更改(包括加速的代码高亮显示) 只能与 IntelliJ IDEA 2020.1+ 和 Android Studio 4.1+ 使用。

性能改进是一个持续的过程,我们还有更多增强计划,例如继续努力消除冻结以及使输入更加流畅。我们已开始集成新的实验性 Kotlin 编译器前端,这将进一步提高 IDE 的速度。这是一项艰巨的任务,需要重写插件的许多部分,但是它将提高 IDE 在许多方面的性能,包括代码补全、语法高亮显示和编译器错误报告。

IDE 新功能

JetBrains 的使命是让软件开发更加高效和有趣,因此我们自然希望确保围绕 Kotlin 打造的工具非常出色,并使 Kotlin 编码尽可能简单。

为了让您更轻松地使用协同程序,尤其是查明并发应用程序中的错误,我们引入了协同程序调试器。我们将扩展其初始功能集,以提供社区最需要的功能,因此请使用我们的渠道之一或在下面的评论部分中与我们分享您的反馈。

我们还引入了一个灵活的新 Kotlin Project Wizard。这个新向导为您提供了一个创建和配置不同类型的 Kotlin 项目的地方,即使使用更复杂的结构(例如多平台项目),也可以轻松上手。

Kotlin 1.4.0 添加了超过 40 项新的快速修复、意图和检查,它们将在您需要时提供帮助——修改代码时,按 Alt+Enter 可以查看在特定上下文中可用的功能。

新的编译器

很长一段时间以来,我们一直在开发一个新的 Kotlin 编译器,它将在性能和可扩展性方面进一步推动 Kotlin 的发展。新编译器的主要目标是变得更快速、统一 Kotlin 支持的所有平台,并提供用于编译器扩展的 API。我们将逐步引入新的部分,以便它们尽快到达用户手中。在 Kotlin 1.4.0 中,我们发布了几项正在进行的工作:

  • 更强大的新类型推理算法默认启用。它可以在更多用例中自动推理类型,即使在复杂的场景下也支持智能转换,改进了委托属性的推理,等等。

  • 新的 JVM 和 JS 后端以 Alpha 模式提供。一旦稳定下来,它们就会成为新的默认设置。

我们正在积极开发新的前端实现,它将在编译器管道中提供最大的性能提升。此前端是编译器的一部分,可以解析代码和名称、执行类型检查等,因此也会影响 IDE 的性能。。我们将在未来版本中提供它的预览,敬请关注!

语言功能

Kotlin 1.4 提供了许多新功能:

  • Kotlin 接口的 SAM 转换

  • 库作者的显式 API 模式

  • 混合命名和位置参数

  • 尾随逗号

  • 可调用的引用改进

  • 在循环的 when 内使用 break 和 continue

库改进

对于标准库,我们通常优先考虑的是提高跨不同平台和操作本身之间的一致性。在此版本中,Kotlin 标准库获得了新集合运算符、委托属性改进以及双端队列实现 ArrayDeque,等等。

您可以在“通用”代码中使用标准库,“通用”代码是指在不同的平台(即 Android 与 iOS 或 JVM 与 JS)之间共享的代码。我们将逐步扩展通用库,并向其添加或引入缺少的功能。

无论您是针对单一平台还是在多平台项目中工作,在任何 Gradle Kotlin 项目中,都不再需要声明与 stdlib 的依赖关系。从 Kotlin 1.4.0 开始,此依赖关系默认添加。

我们正在开发 Kotlin 生态系统的其他部分:

  • 我们正根据大家的反馈逐步改进 kotlinx.coroutines。

  • 序列化库越来越接近成熟。kotlinx.serialization 1.0.0-RC 版本今日发布!

  • 我们已经发布了 DateTime API 预览版,即处于实验阶段的 kotlinx-datetime 库。

Kotlin/JVM

我们鼓励您对常规项目试用新的 Alpha Kotlin/JVM 后端,并分享您的反馈!除了统一编译器管道外,这项工作还会帮助我们更快地将 Jetpack Compose 之类的编译器扩展引入 Kotlin 社区。

特定于 Kotlin/JVM 的语言功能:

  • 我们添加了新的实验方法,用于在字节码的接口中生成默认方法(对于 Java 8 目标)。

  • 我们为null 检查引入了统一的异常类型。

  • Kotlin现在可以在 JVM 字节码中生成类型注释,以便它们在运行时可以在 Java 反射中使用。该功能适用于目标版本 8 及更高版本,到目前只在实验模式下被发布。

Kotlin/JS

Kotlin 1.4.0 提供了新的 Gradle DSL 和 Alpha 版本的新 Kotlin/JS 编译器后端以及其他功能。

  • 新的 Gradle DSL 添加了对从 DSL 配置 CSS 和样式加载器的支持,它包括与 npm 依赖项管理相关的各种改进,并改进了对 Dukat 集成的控制。

  • 全新的 Kotlin/JS 编译器后端给 Kotlin/JS 指明了未来的方向。它包括优化和功能,例如从 Kotlin 代码自动生成 TypeScript 定义、更小的二进制文件和捆绑包、向 JavaScript 公开 Kotlin 功能的现代化方式,等等。

Kotlin/Native

Kotlin/Native 获得了大量新功能和改进,包括:

  • Kotlin/Native 编译和执行的整体性能提升。

  • Kotlin/Native 和 Swift / Obj-C 之间互操作性的改进。

  • 简化了 CocoaPods 依赖项管理。

Kotlin/Native 中的当前自动内存管理实现在并发方面存在限制,我们正在努力将其替换。

Kotlin/Native 的一个重点是可与 Kotlin Multiplatform Mobile 无缝集成,但不仅仅是这些。

Kotlin Multiplatform

让 Kotlin 成为出色的多平台解决方案是我们的首要任务之一。我们在 KotlinConf 上承诺进行一些重要改进,在此很高兴地报告我们的工作成果:

  • 得益于分层项目结构,您现在可以在目标的特定子集(例如类似的 iOS ARM64 设备目标和 x64 模拟器目标)之间共享代码。

  • 您可以使用在多个原生目标之间共享的通用代码中与平台相关的库。

  • 您可以在共享源集中仅指定一次依赖项,而不是在共享和平台专用源集中同一库的不同变体上指定依赖项。

  • 我们继续开发 Kotlin 库格式 Klib,这种格式在后台用于共享多平台库。

我们正在开发 Android Studio 插件,此插件可在 iOS 设备和模拟器上运行、测试和调试 Kotlin 代码。首个公开预览版将很快发布,敬请关注。

我们将很快发布在 Kotlin 社区成员帮助下创建的大量资料,这些资料解释了如何使用 Kotlin Multiplatform Mobile (KMM) 技术来针对特定的移动用例(在 Android 和 iOS 之间共享代码)。

尽管现在的重点是移动目标,但 JetBrains 已积极使用 Kotlin Multiplatform 的 Web 目标来构建和发布 JetBrains Space。Web 目标仍然是 Kotlin 的一项重要战略投资。

更多详细信息

您可以在 Kotlin 1.4 最新变化页面和文档中找到有关新功能的详细说明,并关于迁移到 Kotlin 1.4 的信息。

与所有主要版本一样,某些先前宣布的变更的弃用周期将在 Kotlin 1.4 版本结束。所有这些情况都经过了语言委员会的仔细审查,并在 Kotlin 1.4 兼容性指南中列出。

如何帮助我们改进 Kotlin

IntelliJ IDEA 和 Android Studio 中的 Kotlin 插件会收集关于您如何使用其功能的匿名统计信息。我们恳请您选择提供这些统计信息!

这些匿名数据可极大地帮助我们更好地了解用户、哪些功能有效、哪些方面造成了困难以及我们应当将重点放在哪里。要启用统计信息,请转到 Preferences,打开 Appearance & Behaviour | System Settings | Data Sharing,然后激活 Send usage statistics 复选框。

自 Kotlin 1.3 以来最热心的问题报告者

我们要感谢社区的所有成员,他们通过向 YouTrack 报告问题帮助我们改进了此版本!我们列出了前 20 名报告者,在此向他们致以衷心感谢:

Igor Wojda(145 个问题);Louis CAD(87 个问题);Marc Knaup(86 个问题);AndroidDeveloperLB(83 个问题);Robert Stoll(68 个问题);Morgan Bartholomew(62 个问题);Victor Turansky(54 个问题);Guan Tianyi(51 个问题);Scott Pierce(38 个问题);Andreas Malik(37 个问题);Steven Schäfer(37 个问题);Björn Kautler(36 个问题);Róbert Papp(34 个问题);Toshiaki Kameyama(30 个问题);Nicholas Bilyk(29 个问题);Michael Bailey(26 个问题);Jake Wharton(25 个问题);Lamberto Basti(24 个问题);Serge Pro(23 个问题);Egor Andreevici(21 个问题)。

立即开始使用 Kotlin 1.4

和往常一样,您可以在 play.kotl.in 上在线试用 Kotlin。

在 Gradle 和 Maven 中,使用 1.4.0 作为编译器版本。请参阅 Gradle 和 Maven 的文档。

IntelliJ IDEA 和 Android Studio 会自动提示您将 Kotlin 插件更新为 1.4.0 版。您也可以打开 Preferences | Plugins 并手动更新 Kotlin 插件。

可以从 GitHub 版本页面下载命令行编译器。

您可以使用与此版本一同发布的以下库:

  • kotlinx.coroutines 版本:1.3.9

  • kotlinx.serialization 版本:1.0.0-RC

  • ktor 版本:1.4.0

  • kotlinx.atomicfu 版本:0.14.4

  • kotlinx.html 版本:0.7.2

  • kotlinx-nodejs 版本: 0.0.6

可以在相应的存储库中找到 kotlin-wrappers kotlin-react等)的库版本。

最新的 IDE 性能改进(包括加速的代码高亮显示) 只能与 IntelliJ IDEA 2020.1+ 和 Android Studio 4.1+ 使用。

如果您在新版本中遇到任何问题,可以在 Slack 上寻求帮助(在此处获得邀请)并在我们的 YouTrack 中报告问题。

谢谢!

非常感谢所有试用过 Kotlin EAP 和实验性功能并提供反馈的人。我们正在与您一起开发 Kotlin 语言,并根据您的宝贵意见做出许多设计决策。与社区保持这种快速有效的反馈循环对确保 Kotlin 成为最佳状态非常重要!

我们要衷心感谢所有外部贡献者,此版本中包含了他们的拉取请求。是你们帮助我们让此版本得以问世!

我们感谢社区中所有与 Kotlin 共同创造了许多令人惊奇的事物的成员。 Kotlin 1.4:我为人人!

最后,再附上我历时三个月总结的 Java 面试 + Java 后端技术学习指南,笔者这几年及春招的总结,github 1.5k star,拿去不谢!
下载方式1. 首先扫描下方二维码2. 后台回复「Java面试」即可获取

Kotlin 越来越牛逼了!学Java都我想转了!相关推荐

  1. 真正牛逼的人,都是极简主义者!!

    写在前面 一个真正牛逼的人,都是极简主义者:一款真正伟大的产品,都是极简主义的产品.一个人只要简单的专注于自己的领域,在思想上删繁就简,成为某个领域和某个行业的专家是很顺其自然的事情.一款产品,立足于 ...

  2. 牛逼的uniapp+Java微信小程序商城来了

    牛逼的uniapp+Java微信小程序商城来了 减少重复造轮子,开源微信小程序商城(前后端开源:uniapp+Java),秒杀.优惠券.多商户.直播卖货.分销等功能.快速搭建一个属于自己的微信小程序商 ...

  3. 还自认为很牛逼...简直就是什么都不知道!6年的软件测试 怕不是白瞎了???

    最近看了很多简历,很多候选人年限不小,但是做的都是一些非常传统的项目,想着也不能通过简历就直接否定一个人,何况现在大环境越来 越难,大家找工作也不容易,于是就打算见一见. 在沟通中发现,由于年限不小, ...

  4. 牛逼的人,都不太要面子

    前两天读了一篇文章,讲的是鲁迅先生的<说面子>. 鲁迅先生在<说面子>这篇文章里提到一个观点:面子是中国精神的纲领,就像晚清时候的长辫子,你只要一揪着辫子,人的身体就整个跟着你 ...

  5. 京东月薪8万快递员:真正牛逼的人,都拥有这个特质

    文 | 桌子 来源 | 桌子的生活观(ID:zzdshg) 不管你在什么岗位,只要你足够专注,只要你把自己的事情做到了极致,没有什么是不可能的. 这个世界没有那么多光鲜亮丽的工作,也没有那么多惊天动地 ...

  6. 牛逼的人,都已经开始用文言文写代码了!

    往期热门文章: 1.<往期精选优秀博文都在这里了!> 2.如何让自己少写点bug? 3.如何优雅地根治null值引起的Bug! 4.答应我,别再if/else走天下了可以吗? 5.Stac ...

  7. Stackoverflow 高赞答案,为什么牛逼的程序员都不用 “ ! = null ' 做判空

    欢迎关注方志朋的博客,回复"666"获面试宝典 为了避免空指针调用,我们经常会看到这样的语句. ... if (someobject != null) {someobject.do ...

  8. 为什么牛逼的程序员都不用 “ ! = null 做判空?

    点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达 今日推荐:分享一套基于SpringBoot和Vue的企业级中后台开源项目,这个项目有点哇塞!个人原创100W +访问量博客: ...

  9. 一元流量参数为null_为什么牛逼的程序员都不用 “ ! = null quot; 做判空?

    问题 为了避免空指针调用,我们经常会看到这样的语句 ...if (someobject != null) {someobject.doCalc();}... 最终,项目中会存在大量判空代码,多么丑陋繁 ...

最新文章

  1. Kafka 2.8.0发布,与ZooKeeper正式分手!
  2. JavaScript表达式--掌握最全的表达式,一切尽在掌握中,让表达不再是难事
  3. Centos6.8下搭建SVN服务器
  4. leetCode刷题--两数相加
  5. PFLD:简单高效的实用人脸关键点检测算法
  6. VTK:可视化之ChooseTextColor
  7. Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC
  8. 从外部CorDapp扩展和覆盖流
  9. iOS 推送通知及推送扩展
  10. 关于c3样式在浏览器上的兼容问题
  11. Vue遍历对象,数组,v-if、v-if-else、v-else
  12. 呼叫中心职场EQ与情绪压力管控(时刻提醒自己!)
  13. 解决NSTimer循环引用
  14. hdu 1007 Quoit Design(最近点对)
  15. 大三,在软件工程学习上的感悟
  16. 1 Openwrt无线中继设置并访问外网
  17. uniapp微信小程序打电话
  18. 京东校园招聘2019.04.13 第一题 01序列拉齐
  19. UOJ #496.秋蝉鸣泣之时
  20. 替代Notepad++,可以试下notepad--,专门针对Notepad++替代而开发的简洁编辑器

热门文章

  1. pppoe移植到arm上 1.0
  2. GIS数据的查找,插入,删除,更新(ArcEngine)
  3. 技巧/诀窍:在ASP.NET中重写URL
  4. 语义分析的一些方法(中篇)
  5. jieba分词(python使用篇)(一)
  6. 自然语言处理库——NLTK
  7. Http接口设计(1)Token之前
  8. 《研磨设计模式》chap17 策略模式(1) 简介
  9. 密码技术--国密SM4分组密码算法及Go语言应用
  10. 【网络安全】如何使用PacketSifter从pcap中筛选出有用的信息