首页 » PHP教程 » 手机php编译器技巧_Android赶上Kotlin|第一部分第一课 Kotlin若只如初见

手机php编译器技巧_Android赶上Kotlin|第一部分第一课 Kotlin若只如初见

访客 2024-11-08 0

扫一扫用手机浏览

文章目录 [+]

-- 作者 谢恩铭 转载请注明出处「程序员同盟」ProgrammerLeague

原文 : http://www.jianshu.com/p/e04b252e71b8

手机php编译器技巧_Android赶上Kotlin|第一部分第一课  Kotlin若只如初见

内容简介

手机php编译器技巧_Android赶上Kotlin|第一部分第一课  Kotlin若只如初见
(图片来自网络侵删)

序言

Kotlin的名字由来

Kotlin是什么

Kotlin的上风

Kotlin学习资源

总结

第一部分第二课预报

1. 序言

随着谷歌在 2017 年 5 月的 Google I/O 中宣告 Kotlin 这门编程措辞成为 Android 新官方措辞,比来掀起了一阵 Kotlin 学习热潮。

作为一个热爱 Android 开拓,有多年 Android 开拓履历的嵌入式软件和 app 开拓工程师,我也来写一个 Kotlin 和 Android 的系列教程。

希望这个教程能做到:

方便大家查找资料

适当比拟 Java 和 Kotlin 在开拓 Android 运用时的不同

保持不断更新,紧跟 Kotlin 官网的最新动向

听取大家的建议来改进

好了,话休絮繁,我们一起探索吧!

2. Kotlin的名字由来

一样平常我们先容事物或人时,总是先从名字入手。
比如有人大概会这样自我介绍:「我叫小明,不是黄晓明的晓明。
我爸妈当初为什么要给我起这个优(keng)秀(die)的名字呢?blablabla ... 」。

我们要认识 Kotlin,也可以从它的名字开始。

Kotlin 来源于一个岛屿的名字,全称是 Kotlin Island,是英语「科特林岛」之意。
这个小岛属于俄罗斯,我们用互联网来搜索一下,它是不才图中赤色标记的位置:

科特林岛位于俄罗斯的圣彼得堡以西约30公里处,形状狭长,东西长度约14公里,南北宽度约2公里,面积有16平方公里,扼守俄国进入芬兰湾的水道。

拉近点看更清楚:

圣彼得堡也便是以前的列宁格勒。

那么 Kotlin 编程措辞为什么要选这个看似名不见经传的小岛来作为自己的名字呢?

这就不得不说说 Kotlin 措辞的开拓者 JetBrains 公司了。

提起大名鼎鼎的 JetBrains 公司,

作为软件开拓者,你该当听说过 JetBrains 公司;而作为当前的 Android 开拓者,如果你不知道 JetBrains 公司,那解释你该当没用过 Google 的「亲儿子」Android Studio。

我们可以去 JetBrains 的官网 https://www.jetbrains.com 瞧一瞧:

作为 Android 开拓者,该当有些激动,由于我们看到了左下角的 IntelliJ IDEA 的图标。
和 Android Studio 一样,IntelliJ IDEA 也是一个 IDE(IDE 是 Integrated Development Environment,「集成开拓环境」的意思),是一个强大的 Java 集成开拓环境,安装上 Android 的 Plugin(插件)后可以用来开拓 Android 运用。

而 Google 推出的 Android 官方集成开拓环境 Android Studio 便是基于 IntelliJ IDEA 。

这样说大概不准确,该当说 Android Studio 和 IntelliJ IDEA 的 Android 插件 是从同一个源码开始构建的。
现在 Google 卖力开拓 Android Studio,等 Android Studio 发布之后,IntelliJ IDEA 再把 Google 的插件拿去测试并发布。

或者说,Android Studio 纯粹用于 Android 开拓。
IntelliJ IDEA 能做的事情比较多,但是不专精于 Android 开拓。
而且由于上面说到的顺序问题,IntelliJ IDEA 的 Android 插件是会相对滞后于 Android Studio 的。
因此做 Android 开拓最好用 Android Studio。

目前 Android Studio 所用的 JVM(JVM 是 Java Virtual Machine 的缩写,也便是「Java 虚拟机」的意思)是 JetBrains 公司的,见下图 Android Studio 的先容:

看到上图中那行「JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o 」了吗?

关于 IntelliJ IDEA 和 Android 之间的「恩怨情仇」,可以辞官方的 IntelliJ IDEA 和 Android FAQ 看看。

接着,我们可以点击 JetBrains 主页的 IDEs 那个菜单进去看看,可以看到有 12 个 IDE :

上面的 IDE 中,除了刚才先容过的 IntelliJ IDEA,比较著名的有:

WebStorm :做网络开拓的朋友该当有用过,极为强大的 JavaScript 集成开拓环境。
被广大中国 JS 开拓者誉为「Web 前端开拓神器」、「最强大的 HTML5 编辑器」、「最智能的 JavaScript IDE」等。
我以前略微用过。

PyCharm :结合了 Django 框架的 Python 集成开拓环境。
我在事情中写 Python 程序喜好用 PyCharm。

PhpStorm :号称「天下上最好的编程措辞」PHP 的集成开拓环境。

CLion :C 和 C++ 集成开拓环境。

RubyMine :结合了 Ruby on Rails 框架的 Ruby 集成开拓环境。

Gogland :Go 措辞的集成开拓环境。

觉得 JetBrains 出品的各个 IDE 长得都比较像。
这些年 JetBrains 在 IT 界可谓是风生水起。
险些可以说:「JetBrains 出品,必属佳构」。
不禁遐想到当年「暴雪出品,必属佳构」的口碑。

再扯回 Kotlin 的名字由来(

Kotlin 的紧张开拓事情是由俄罗斯的圣彼得堡分公司的程序员团队完成的。

他们说:Java 措辞的名字是来自于一个岛,那个岛便是印度尼西亚的爪哇(Java)岛,因盛产咖啡而有名。
以是 Kotlin 也得选一个岛作为名字。

我们所见到的 Java 标志,总是一杯热咖啡。
Java 措辞的许多库的类名称,多与咖啡有关:如 JavaBeans(爪哇豆)、NetBeans(网络豆)以及 ObjectBeans(工具豆)等等。
bean 是英语「豆」的意思,咖啡豆便是 coffee bean。

由此看来,Kotlin 确实有取代 Java 的年夜志。

当然了,许多措辞都认为自己可以取代 Java。
比如目前有 Scala、Fantom、Groovy、Gosu、和 Ceylon,而 Scala 和 Groovy 最为盛行。

但 Kotlin 已经被 Google 钦点为 Android 开拓第一措辞,相称于「黄袍加身」,其命运当非其他措辞可比。

3. Kotlin是什么

知道了名字的由来和背后的老大们,我们进一步来认识一下 Kotlin 本人。

Kotlin 当然是一门编程措辞,但它并不是「新出炉的面包」,从 2010 年就开始「烘焙」了。

说一点 Kotlin 的历史:

2010 年 :JetBrains 动手开拓 Kotlin。

2011 年 7 月 :JetBrains 公开宣告 Kotlin。

2012 年 2 月 :JetBrains 在 Apache 2 容许证下开源了 Kotlin 的源码。
目前 Kotlin 的官方源代码在 Github 上 https://github.com/JetBrains/kotlin 。

2016 年 2 月 :JetBrains 发布了 Kotlin 1.0 版,算是比较稳定的正式版。
许诺之后一贯会保持向后兼容。

2017 年目前最新版本 :1.1.2(2017 年 6 月)。
比较 Kotlin 1.0 版本时,和 Kotlin 有关的代码数目从 210 万行飞升到 1000 多万行。

Kotlin 是基于 JVM 的静态类型编程措辞,而 Java 也是基于 JVM 的编程措辞,那么 Kotlin 比 Java 究竟有哪些上风呢?

4. Kotlin的上风

在 Kotlin 之前,JetBrains 团队一贯利用 Java 来创建他们的 IDE。
那为什么他们要开拓一门新的编程措辞呢?

JetBrains 团队之以是开拓 Kotlin 这门新措辞,是由于他们对已经存在的措辞略有失落望。
这和 Go 措辞的发明动机类似。

当时,Java 和其他措辞都不能知足 JetBrains 的需求,而 Scala 措辞虽然不错,但无奈编译韶光太长,于是 Kotlin 因运而生。

Kotlin 从不少措辞得到灵感,比如 Java、Scala、Groovy、C#、Gosu,可以说是博采众长。
既具备了快速开拓的能力,编译运行也快,实现相同功能的代码长度可以比 Java 少很多。

有一个网站 https://fabiomsr.github.io/from-java-to-kotlin 是比拟 Java 和 Kotlin 的基本语法。
在这个网站上可以看出 Kotlin 比 Java 精简很多。
Kotlin 官网也有 Java 和 Kotlin 比拟的页面:https://kotlinlang.org/docs/reference/comparison-to-java.html 。

我们来列举一下 Kotlin 的紧张上风:

多平台开拓的可能 :基于 JVM 的开拓,Android 开拓,Web 开拓,Native(原生)开拓。
个中 Web 开拓可以结合 Spring 框架,而且 Kotlin 也可以编译天生 JavaSript 模块,可以在一些 JavaScript 的虚拟机上编译。
Native 开拓就更牛了,目前 Kotlin 官方在 Github 开源了 Native 开拓的源码 https://github.com/JetBrains/kotlin-native,基于 LLVM(Low Level Virtual Machine 的缩写,表示「底层虚拟机」。
LLVM 是一种编译器根本举动步伐,以 C++ 写成。
它是为了任意一种编程措辞而写成的程序,利用虚拟技能创造出编译期间、链接期间、运行期间以及闲置期间的最优化)的后端,方便为各个平台编写原生运用,比如为 Mac OS,iOS,Linux,嵌入式系统,等等。

开源:闭源项目总归比较有限。
众人拾柴火焰高,代码开源可以更快速地创造 Bug,有了全天下各地程序员的贡献,Kotlin 的精良代码和库会越来越多。
Linux 系统便是开源的很好例子。

和 Java 100% 兼容 :Kotlin 调用 Java 已有的代码或库没有问题。
在一个项目中也可以同时用 Java 和 Kotlin 来编写代码。
Android Studio 和 IntelliJ IDEA 都可以实现一键转换 Java 代码到 Kotlin。
官方也有专页先容:https://www.jetbrains.com/help/idea/2017.1/mixing-java-and-kotlin-in-one-project.html

安全 :大家聊得最多切实其实定是可以轻松防止在 Java 中很常见的 NullPointerException(空指针非常)问题咯。
做 Android 开拓的一定深有体会,一样平常 app 奔溃,基本都是由于 NullPointerException,很多时候规避机制便是加一个 if 语句的判断,很累赘。

随意马虎学习 :Kotlin 语法很大略,和主流措辞类似,语法高效,入门非常随意马虎。
好比当初苹果发布 Swift 也是由于 Objective-C 的语法奇怪,学习曲线比较陡峭。

Lambda 表达式。

变量类型推断。

when 语句块 :告别繁琐的 switch 和 if... else if... else 语句块。

非常方便的运算符重载。

不再须要手动添加 get 和 set 方法对了,直接对类的私有变量赋值和取值。

Anko 这样的 Kotlin 的官方库可以使 Android 运用开拓更快捷。

函数/方法 的关键字是 fun,而不是 function。
真的很简洁也很有趣(fun 是英语「有趣」的意思)。

Var 和 Val 关键字 :和 fun 关键字类似,也很简洁。
Var 是 Variable(英语「可变的」之意)的缩写,表示「可变的」变量。
Val 大概是 Value (英语「值」之意)的缩写,表示只能赋值,而不能改写其值,是表示「只读的」变量,有点类似 C 措辞中的 const 变量。
这两个关键字的起名估计是参考了 Scala 措辞。

类的方法扩展很方便。

可以创建自定义的 DSL(领域特定措辞)。

精良工具的支持 :JetBrains 公司开拓了那么多精良的工具,Kotlin 可以完备享用。

Coroutine :协程。

可以用下图来大致总结 Kotlin 的紧张上风:

当然了,Kotlin 的上风肯定不止这些,篇幅关系我们不可能逐一列举。
之后的课程中,会让大家见识的。

正是由于 Kotlin 的这些上风,才得到 Google 的垂青,新出任 Android 开拓第一把交椅。
现在 Android 还是很火的,海内貌似 iOS 开拓的热度轻微低落了些,但各大学习平台上 Android 的火爆程度还是很高,虽然要找个好的 Android 开拓职位比以前难了。

现在 Android 和 Kotlin 一联手,那家伙,切实其实是「AK47」啊。

说来有趣,目前 Kotlin 被 Google 宣告为 Android 官方措辞,而它和 Android 的竞争对手 -- 苹果的 iOS 的官方措辞 Swift 很像,有个网站 http://nilhcem.com/swift-is-like-kotlin 是专门比拟 Kotlin 和 Swift 的语法的,很有趣。

很多大公司也早已开始用 Kotlin 了,例如 Pinterest,Netflix,Gradle,Uber(个人对 Uber 公司的企业文化比较反感),Trello :

有了这么多大公司的支持,开源社区的掩护,Kotlin 要再没有来日诰日那切实其实「天理不容」啊。

5. Kotlin学习资源

中外 Kotlin 学习资源。

英语资源

Kotlin 官网:http://kotlinlang.org 永久是最值得去的地方,最新的动态在官网,最威信的阐明也在官网。
不过须要英语还过得去,由于里面的文档和教程都是英语的。
对付程序员,英语是很主要的。
可以看我的这篇文章:对付程序员, 为什么英语比数学更主要? 如何学习 。

Kotlin 官网的 Android 专页 :http://kotlinlang.org/docs/reference/android-overview.html

Kotlin 官方文档 PDF 版 :https://kotlinlang.org/docs/kotlin-docs.pdf 方便大家下载下来离线查看。

Kotlin 在线代码环境 :https://try.kotlinlang.org 有例子程序,在 Examples 里。
也包含了寻衅练习题,在 Kotlin Koans 里。

Kotlin 寻衅练习题 :http://kotlinlang.org/docs/tutorials/koans.html 。

Kotlin 的 Slack 社区 :https://kotlinlang.slack.com 。
Slack 是一个谈天管理工具,可以方便加入各种 Channel(频道,群组)来谈天。
我已经加入这个社区,Android 大牛 Jake Wharton 也在里面谈天,你可以和他私聊。
不过从海内访问 Slack 速率貌似比较慢,而且随意马虎被墙。
提及来,刚过去的 2017 Google I/O 里,Jake Wharton 也作为登场高朋对 Kotlin 做了很多先容,大家不妨去 http://jakewharton.com/kotlin-is-here 看看。

Stack Overflow 上 Kotlin 干系问题 :https://stackoverflow.com/questions/tagged/kotlin 。

Kotlin 官方论坛 :https://discuss.kotlinlang.org 。

Kotlin 官网整理的链接汇总 :https://kotlin.link 。

Kotlin 社区汇总:https://kotlinlang.org/community 。

中文资源

简书的 Kotlin 专题 :http://www.jianshu.com/c/98aaef9f5d2f

知乎的 Kotlin 话题:https://www.zhihu.com/topic/20008824/hot

Kotlin 中文社区 :http://kotlin.cn 我注册上岸了,觉得这个网站还比较新。

Kotlin 中国 :https://kotlintc.com 这个网站也还比较新。

Kotlin 中文网站 :https://www.kotlincn.net 中文页面,不过内容没有官网那么全。
而且中文翻译也只做了一部分,很多链接还是会导到英文官网的相应页面。
他们的博客是 http://www.kotliner.cn 。

Kotlin 官方参考文档中文版 :https://www.gitbook.com/book/hltj/kotlin-reference-chinese 。

稀土掘金的 Kotlin 资源页 :https://juejin.im/post/591dd9f544d904006c9fbb96 。

Kotlin 从入门到「放弃」系列视频 :https://github.com/enbandari/Kotlin-Tutorials 。

《Kotlin for Android developers》中文翻译版 :http://uprogrammer.cn/kotlin-for-android-developers-zh 。

6. 总结

首先,如果你自学能力比较强,英语比较好,那完备可以根据上面供应的各种 Kotlin 资源动手学习了,都不用连续看我的教程了。
没想到,我拆自己台的功力还是蛮强的 :P

现在不少新的编程措辞都挺类似的。
新开拓的措辞更像是已有措辞精良特性凑集的产物。
Kotlin 和 苹果 iOS 的官方措辞 Swift 就挺像。

Kotlin 的未来该当是比较光明的,由于 Google 将其作为 Android 新的官方措辞,又有 JetBrains 这样大牌的软件公司做后盾,而且还有那么多大公司在利用,开源社区在掩护。

如果不是为了 Android 开拓,那也可以学习一下 Kotlin,毕竟 Kotlin 也能做其他事情。
程序员要做到「一专多能」,精通一个领域,多打仗其他领域。
比如目前 Python(人工智能等领域的新贵)值得学习,Go 措辞(被称为 21 世纪的 C 措辞,著名的 Docker 便是用 Go 措辞开拓的)也很不错。
纵然不用来做开拓也该当理解一下,紧跟 IT 潮流。

作为程序员,真的须要花点功夫把英语入门了。
水平不用太高,有些不懂的词可以用有道词典、金山词霸等查,但该当具备基本的英语理解能力,由于很多新措辞的资源都是英语的,而中文翻译的事情虽然有人做,但一方面须要韶光,另一方面难以担保最新,更何况还难以担保翻译的质量。
英语好,你就比别人先行一步。

文中如有缺点,欢迎指出,会更正,感激。

7. 第一部分第二课预报

通过这一课,该当说我们对 Kotlin 有了详细的理解,也知道该从哪里入手学习了。

下一课我们就来搭建 Kotlin 的 Android 开拓环境,讲解基本的 Kotlin 语法,并且用 Kotlin 来编写我们的第一个 Android 运用吧。

微信"大众年夜众号「程序员同盟」ProgrammerLeague

我是[谢恩铭](http://www.jianshu.com/u/44339a8a9afa),在巴黎奋斗的软件工程师。

[我的简介](http://www.jianshu.com/p/e1c5835fee7d)

热爱生活,喜好拍浮,略懂烹饪。

人生格言:「向着标杆直跑」

标签:

相关文章

语言游戏聚会的魅力,跨界交流的盛宴

在繁忙的都市生活中,一场别开生面的语言游戏聚会悄然兴起。这不仅是一场简单的娱乐活动,更是一次跨界交流的盛宴,一场思想的碰撞与火花。...

PHP教程 2024-12-29 阅读0 评论0

语言序列逻辑在现代传播中的运用与影响

语言序列逻辑,作为现代传播学中的重要理论之一,对于理解语言传播的规律、提高传播效果具有重要作用。在信息化、网络化时代,语言序列逻辑...

PHP教程 2024-12-29 阅读0 评论0