阅读更多
原文:Kotlin 1.0 Released: Pragmatic Language for JVM and Android
作者:Andrey Breslav
Kotlin是一门实用的编程语言,可用于JVM和Android程序开发。日前,Kotlin 1.0正式发布。以下为原文翻译:

我们欣然宣布:Kotlin 1.0 发布了!

这是条令人激动的漫长之路,如今我们总算达成首个大版本发布。为了庆祝正式版本的发布,我们为Kotlin准备了焕然一新的logo:



什么是 Kotlin ?
Kotlin是一门实用的编程语言,可用于JVM和Android程序开发,Kotlin结合了面向对象和函数式特性,致力于互操作性、安全、简洁和工具支持。

Kotlin是一门通用的语言,只要能用Java的地方就能用Kotlin,包含:服务器程序开发、移动应用开发(Android)、桌面客户端程序开发。 Kotlin支持所有主要的开发工具以及服务,比如:
  • IntelliJ IDEA、Android Studio和Eclipse;
  • Maven、Gradle和Ant;
  • Spring Boot(Kotlin 支持今天正式发布!);
  • GitHub,Slack,甚至Minecraft。
  • Kotlin的主要特点之一是Java+Kotlin混合工程的互操作性以及无缝兼容,使引入Kotlin的过程简单容易,并达成更少的重复性代码(boilerplate code)和更佳的类型安全(type-safety)。

Kotlin还有一个扩展标准库(extensive standard library)能让日常工作变得简单顺畅,它能帮助保持低字节码足迹 (bytecode footprint)。当然,Kotlin 中自然可以使用 Java 库,反之亦然。

何谓实用?
了解核心价值是长期项目最至关重要的一环。如果要选择一个词来形容Kotlin设计,那必是”实用”。这也是为什么在一开始我们便声明Kotlin的重心不在发明或研究。虽然最后我们仍然做了一些新发明,但从未是项目的重点。当然,我们是在建立一个防止错误的类型系统,以及有利于代码重用的抽象机制,换作其他人在我们相同位置上,也都会这么做的。但我们用以独特的(并且是务实的)方法来落实-我们专注于使用案例,来促使语言成为一个好工具。

这也立即的点出了最根本的概念,即与现有代码和基础设施的互操作性是极致重要的。谁不希望能用正确方法重新创造世界,认一切从零开始?如果不是考量着与Java的互操作,Maven的整合,以及Android的兼容发展,Kotlin的设计会是更容易的!并且肯定在许多方面更优雅。优雅虽是可喜的,但并不是我们的主要目标。Kotlin的首要目标是在实用。而只要我们的用户能避免重新学习,重新发明,从头开始重做,并且越能重复使用,就是对用户好的。

为什么Kotlin没有自己的包管理器,或自己的构建系统?
  • 因为已经有Maven和Gradle,并重复使用他们庞大的插件对许多项目是非常重要的。
  • 为什么在重新设计集合会更加容易的情况下,我们还是投入了大量的时间和精力制作JDK兼容的集合接口?
  • 因为大量的Java代码通过JDK集合运行,而转换数据是非常痛苦的。
  • 为什么Kotlin支持Java 6的字节码?
  • 因为很多人还在运行的Java 6(尤其是Android)。

对我们来说实用是在创造用户体验,而不是只一种语言或单独的库。许多语言设计的决策是在重重限制下不得不为,比如: “这个设计是否会阻碍增量编译?”,“万一这个设计增加了APK方法计数?”,“IDE将如何标示这个as-you-type?”…等等。因此我们特别为我们的工具以及语言感到自豪。

Kotlin 是否足够成熟,能适用于正式产品中?
Kotlin是足够成熟的,并且已经应用于产品开发有一段时间了。在过去的两年中,JetBrains不止实现了编译器和工具化,同时还在项目中进行过大规模地对 Kotlin 进行实战检测。除了JetBrains内部,许多外部公司都已经使用Kotlin开发正式产品一段时间了。

正因为我们花费了相当大的精力通过实践来验证我们的设计决断,我们花了相当长的时间才正式发布1.0版本。这是必须的步骤,因为往后的这个编译器将确保它的向后兼容性,并且未来Kotlin 的后续版本也必须兼容现有的代码。于此,我们花了点时间来确保我们的选择是正确的。

我们之所以能够达成这个里程碑,必须感谢来自 Kotlin 早期使用者的帮助。感谢他们的勇敢,感谢他们付出的精力,感谢他们的热情!

Kotlin 的背后是谁?
首先必须知道的是,Kotlin是一个开源语言。
  • Kotlin是在GitHub上基于Apache 2.0 Open-Source license开发的;
  • 如今已经有超过100位贡献者。

目前而言,JetBrains是Kotlin的主要支持者,我们为了开发Kotlin付出了巨大的努力并且承诺会长期的坚持下去。最初我们创造Kotlin是为了满足自身开发产品的需求,如今我们已经有十多个JetBrains产品使用Kotlin开发,包含IntelliJ IDEA、JetBrains Rider、JetBrains Account和E-Shop、YouTrack以及部分IDE。因此Kotlin将会长存。

从2012年开始,我们对 Kotlin 的开发就保持着非常开放的态度:无时无刻在社区中交流着,收集并且处理了大量反馈意见与建议。我们正计划着设立一个集中地以供汇总讨论和设计建议,如此一来整个流程就会变得更加透明,有条理。Kotlin 规范化相关的工作目前尚未开始,但这只是迟早的事情。

语言设计与项目的统筹管理已经由 JetBrains 雇用的团队完成了,目前我们有超过20位全职员工致力于 Kotlin,这也说明了 JetBrains 是认真的对待这个项目。

Kotlin 相关的数字
让我们从一些数字来了解Kotlin。
  • 上个月总计有超过11k的使用者,光是上周就有5k的使用者
  • 上百个StackOverflow回答
  • 两本书:Kotlin in ActionKotlin for Android Developers
  • 大约1400人活跃于Slack(获得邀请)
  • 超过50万行的Kotlin代码的在大型项目中使用,比如IntelliJ IDEA和Project Rider
  • 谈到代码行数,在GitHub上的开放知识库内Kotlin的代码行数正随着时间指数增长,这还不包含JetBrains自己的项目。


今天,将Kotlin用于正式产品开发的企业数目不断的增加,其中包括大家熟知的Prezi和Expedi。如果你也正在使用Kotlin,请提交一个Pull Request让我们将你的项目也加进这个名单上。



Kotlin将如何演进?
随着1.0的发布,我们承诺了Kotlin语言的向下兼容性以及其标准库,kotlin-stdlib,的长期发展:
  • 新版编译器能够兼容旧版二进制文件(但是旧版本的编译器无法理解新的编译,就像 javac 1.6 无法解析 javac 1.8 编译的类一样)
  • 在运行时环境,旧版二进制文件能与新版二进制文件兼容(但是新的代码还是需要新的依赖)

这仅适用于JVM/Android。JavaScript的支持仍处于实验阶段,之后会单独发布。

至于计划,除了修复bug之外我们近期的目标包含:
  • 对Kotlin工具链持续性能优化(例如,Gradle增量更新)
  • JavaScript语言支持(包括JVM和JS的交叉编译)
  • 支持将优化过的lambdas 表达式生成Java 8字节码,以及其他(只要Android用户需要,我们也会积极支持Java 6)

工具更新和bug修复会在次要更新中发布,比如1.0.x。较大的变更,首先会发布一个早期试用版本(EAP版本),然后才会发布正式版,比如1.1。

如何开始使用?
最简单的试用Kotlin的办法是使用在线的迷你IDE: try.kotl.in,以及Koans,一个有系统的入门教学,来引导你了解语言基础。

你也可以选择在自己的设备上使用Kotlin(Koans也可以离线使用):
  • IntelliJ IDEA([urlhttps://www.jetbrains.com/idea/download/=""]Ultimate或者Community版本[/url]):直接创建一个Kotlin工程或者在Java工程中新建一个Kotlin文件
  • Android Studio:通过Plugin Manager安装Kotlin插件
  • Eclipse:通过Marketplace安装Kotlin插件
温馨提醒:如果你使用的是旧版本,你可能需要将 Kotlin 插件升级到1.0。

为了快速了解Kotlin语言的概念,语言文档和教程可以在官方网站上取得,你也可以在Digest of 2015上找到社区成员分享的演讲和文章。

如果你计划在现有的Java项目中使用Kotlin,你可以用IDE中内置的Java-to-Kotlin转换器轻松的转换类。

最后,也请记得来我们的论坛Slack(获取邀请)上分享你的想法和问题。

我们在此再次感谢大家,Kotlin是依靠着社区的力量达成的。

现在就让我们享受Kotlin吧!

P.S. 请到RedditHacker News上阅读相关的讨论。

CSDN软件商城提供JetBrains全系列产品的最新相关信息,欢迎查询
  • 大小: 30.2 KB
  • 大小: 940.6 KB
5
0
评论 共 3 条 请登录后发表评论
3 楼 秦昭襄王 2016-02-18 14:36
white_crucifix 写道
webeasymail 写道
看到这种var的变量声明方式我也是醉了


还有 val 呢

scala也是这样
2 楼 white_crucifix 2016-02-17 16:27
webeasymail 写道
看到这种var的变量声明方式我也是醉了


还有 val 呢
1 楼 webeasymail 2016-02-17 16:22
看到这种var的变量声明方式我也是醉了

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • --Awesome-Kotlin--:基于简洁语法的JVM语言

    由JetBrains创建的基于JVM的面向对象的编程语言。 与Java相比,它具有简洁的语法,并且无疑消除了Java的样板,尤其是在Android中。 它将数据类型分为Nullable和NotNull,并提供null稳定性而没有开销。 它不检查异常...

  • Android Studio错误project :app > org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.10

    在导入项目和升级Android Studio后,较旧的项目再次编译是可能会出现 Failed to resolve: org.jetbrains.kotlin:kotlin-stdlib-jre7 这是因为,版本更新后kotlin的依赖编译失败 解决 打开项目根目录中的build.gradle...

  • Kotlin开发android 报Could not find org.jetbrains.kotlin:kotlin-stdlib-jre7:1.3.72

    报的错是这样的 image.png 解决办法: image.png 把jre7改成jdk7就ok了 ...这里链接:https://stackoverflow.com/questions/53448450/how-to-resolve-error-failed-to-resolve-org-jetbrains-ko...

  • 解决Could not find org.jetbrains.kotlin:kotlin-stdlib-jre7:1.3.20问题

    下载了别人的一个项目,项目编译完成没有出错,运行时出现如下错误 Execution failed for task ':app:checkDebugAarMetadata'. ... Could not find org.jetbrains.kotlin:kotlin-stdlib-jre7:1.3.20. Searched

  • Could not find org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.0-release-764.

    昨天笔记本重装了系统,今天下载安装了最新的版本:Android Studio 4.2,然后创建一个新项目后就出现了异常,如下: A problem occurred configuring root project 'HelloWorld'. > Could not resolve all ...

  • ERROR: Failed to resolve: org.jetbrains.kotlin:kotlin-stdlib-jre7:1.3.10

    kotlin的版本升级之后,报错:ERROR: Failed to resolve: org.jetbrains.kotlin:kotlin-stdlib-jre7:1.3.10 把app下的 implementation"org.jetbrains.kotlin:kotlin-stdlib-jre7:kotlinversion"改成...

  • Android 创建Kotlin项目出现 Could not download kotlin-reflect.jar (org.jetbrains.kotlin:kotlin-reflect:1.1.

    Android 创建Kotlin项目出现 Could not download kotlin-reflect.jar (org.jetbrains.kotlin:kotlin-reflect:1.1.3-2): No cached version available for offline mode 按照这篇帖子完美解决 ...

  • Plugin [id: ‘org.jetbrains.kotlin.android‘] was not found in any of the following sources

    遇见Plugin [id: 'org.jetbrains.kotlin.android'] was not found in any of the following sources:?1.首先检查在构建脚本的顶部没有正确添加Kotlin插件。

  • Android Studio报错:Could not download kotlin-reflect.jar (org.jetbrains.kotlin:kotlin-reflect:1.3.61)

    1. 2. 3.如果还是没有解决问题 然后在build.gradle 里面将 ext.kotlin_version = '1.3.61’设置为自己当前的版本

  • Could not download kotlin-reflect.jar (org.jetbrains.kotlin:kotlin-reflect:1.3.10): No cached versio

    报错 Could not download kotlin-reflect.jar (org.jetbrains.kotlin:kotlin-reflect:1.3.10): No cached version available for offline mode 1. 2.

  • ktor org.jetbrains:kotlin-css-jvm依赖失败

    // implementation "org.jetbrains:kotlin-css-jvm:1.0.0-pre.31-kotlin-1.2.41" implementation "org.jetbrains:kotlin-css-jvm:1.0.0-pre.122-kotlin-1.4.10" 2,gradle使用高版本,笔者开始编译时使用的5.6.4-...

  • android studio jvm设置,如何使用gradle和kotlin为android studio设置jvm目标?

    尝试编译用kotlin编写的单元测试时出现以下错误.任务:app:compileDebugUnitTestKotlin失败…无法将使用JVM target 1.7构建的字节码内联到使用JVM target 1.6构建的字节码中.请指定正确的“ -jvm-target”选项我...

  • Android Studio新建Kotlin项目出问题报错

    问题描述 A problem occurred configuring root ...could not resolve org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.21-release-315 在这里插入图片描述 解决办法: 在build.gradle 更改kotin_version=“1.5.0”

  • JetBrains 发布Kotlin 1.0

    在Beta 之后仅仅几个月,JetBrains 正式宣布Kotlin 的第一个稳定版本,其基于JVM 并兼容Android的新语言。制造商表示,Kotlin 打算作为一个“好工具”,目的是为了驱动设计决策向实用性和互操作性前进。Kotlin 希望...

  • Android studio报错:e: org.jetbrains.kotlin.codegen.CompilationException: Back-end (JVM) Internal error

    e: org.jetbrains.kotlin.codegen.CompilationException: Back-end (JVM) Internal error: wrong bytecode generated 翻译下来就是:后端(JVM)内部错误:生成了错误的字节码 错误截图如下: 解决方法: 1.在...

  • Kotlin初学之依赖错误:Failed to resolve: org.jetbrains.kotlin:kotlin-stdlib-jre7:1.3.21

    第一次写koltin程序,刚开始新建程序编译就报错: 添加koltin无法依赖成功,百度了才找到解决办法: 将依赖: implementation"org....implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin...

  • Plugin [id: ‘org.jetbrains.kotlin.jvm‘, version: ‘1.8.21‘] was not found in any of the following

    看另外一篇CSDN上的帖子关于这个问题的,并没有解决我这边的这个问题。关闭 offline即可。把IDEA的 gradle 构建或者打包的时候 offline 关掉;

  • 基于OpenGL的C语言的魔方项目.zip

    C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。在编写C程序时,需要注意变量的声明和定义、指针的使用、内存的分配与释放等问题。C语言中常用的数据结构包括: 1. 数组:一种存储同类型数据的结构,可以进行索引访问和修改。 2. 链表:一种存储不同类型数据的结构,每个节点包含数据和指向下一个节点的指针。 3. 栈:一种后进先出(LIFO)的数据结构,可以通过压入(push)和弹出(pop)操作进行数据的存储和取出。 4. 队列:一种先进先出(FIFO)的数据结构,可以通过入队(enqueue)和出队(dequeue)操作进行数据的存储和取出。 5. 树:一种存储具有父子关系的数据结构,可以通过中序遍历、前序遍历和后序遍历等方式进行数据的访问和修改。 6. 图:一种存储具有节点和边关系的数据结构,可以通过广度优先搜索、深度优先搜索等方式进行数据的访问和修改。 这些数据结构在C语言中都有相应的实现方式,可以应用于各种不同的场景。C语言中的各种数据结构都有其优缺点,下面列举一些常见的数据结构的优缺点: 数组: 优点:访问和修改元素的速度非常快,适用于需要频繁读取和修改数据的场合。 缺点:数组的长度是固定的,不适合存储大小不固定的动态数据,另外数组在内存中是连续分配的,当数组较大时可能会导致内存碎片化。 链表: 优点:可以方便地插入和删除元素,适用于需要频繁插入和删除数据的场合。 缺点:访问和修改元素的速度相对较慢,因为需要遍历链表找到指定的节点。 栈: 优点:后进先出(LIFO)的特性使得栈在处理递归和括号匹配等问题时非常方便。 缺点:栈的空间有限,当数据量较大时可能会导致栈溢出。 队列: 优点:先进先出(FIFO)的特性使得

  • QT-qtablewidget表头添加复选框QHeaderView

    在 Qt 框架中,要在 QTableWidget的表头中添加复选框,可以通过继承 QHeaderView 并重写 paintSection 方法来实现。 介绍一种继承 QHeaderView的方法分别实现QTableWidget中添加复选框,可全选/全不选/部分选。

Global site tag (gtag.js) - Google Analytics