Kotlin教程(一):走进Kotlin的世界

原文出处:http://blog.coderclock.com/2017/06/11/kotlin/kotlin-lessons-0

今年Google I/O大会上,官方扶正Kotlin的举动火遍整个Android开发圈。不过,有些开发者似乎过度解读Google的意图,认为Kotlin要取代Java成为Android开发的标配,大会上说的是official support kotlin,并非replace java with kotlin。以至于后来回公司上班,后台童鞋打招呼的时候还问,听说你们Android以后不用Java要用Kotlin写(那位后台童鞋之前用Kotlin写过服务器代码)。好吧,我本人是不支持官方一支持Kotlin后,就说Java辣鸡,Kotlin才是王道这类说法。毕竟,语言终究有自己的优缺点,既然官方开始支持了,我们不妨利用一些空余时间学习一下Kotlin好了。

Kotlin简介

Kotlin是JetBrains推出项目,是一种在Java虚拟机上运行的静态类型编程语言,也可以被编译成为JavaScript源代码。在2011年7月推出之前,它已被开发一年之久。直到2016年2月15日,官方发布了第一个稳定的release版本 —— Kotlin v1.0。从Kotlin官网介绍来看,这近乎是一门野心勃勃的语言,

  • 基于JVM编程,这意味着Kotlin可以写服务器代码;
  • 基于Android和Browser编程,这意味着不仅可以写客户端编程,连前端开发都可以;
  • 基于Native编程,直接绕过JVM与底层代码打交道,好彪悍;

不过Kotlin-Native项目还在开发阶段,不知道最终推出的项目如何,还是蛮期待的,感兴趣的朋友可以关注它的Github更新

https://github.com/JetBrains/kotlin-native

Kotlin与Android

我在2015年的时候就开始留意到Kotlin这门语言(当然仅仅是留意,并未深入了解过),因为偶尔逛Github的时候会看到一些Kotlin编写的Android开源项目,直到2016年12月底的时候,又发现了Github的Trending榜上居然有Kotlin一项。

感到惊讶之余,也说明了越来越多的开发者在Github上提交Kotlin项目代码。这也意味着如果我们想要用Kotlin开发Android项目,可以从Github上获取到很多开源项目支持,如:

  • JSON解析:https://github.com/cbeust/klaxon
  • 响应式编程:https://github.com/ReactiveX/RxKotlin
  • Jake大神的Kotlin版Knife:https://github.com/JakeWharton/kotterknife
  • Anko:https://github.com/Kotlin/anko ,Kotlin官方出品用于Android开发的库,有了它可以忽略Android SDK对JDK的限制
  • 更多关于Kotlin开源项目资源可以看看:https://github.com/KotlinBy/awesome-kotlin

环境搭建

开发环境上,需要先安装Apache Ant(1.9.4或更高版本)和JDK(1.6, 1.7 and 1.8)。然后再安装开发的IDE,关于Kotlin开发的IDE有很多,如:

  • IntelliJ IDEA:https://www.jetbrains.com/idea/

  • Android Studio:2.x版本需要安装Kotlin插件支持,3.0开始默认支持编写Kotlin代码,无需插件。

  • Eclipse:通过Help -> Eclipse Marketplace搜索Kotlin插件安装。

  • Sublime插件:https://github.com/vkostyukov/kotlin-sublime-package

小到记事本同样可以编写Kotlin代码(这句简直是废话)。

Kotlin语法特点

  • Kotlin与Java语法并不兼容,但可以和Java代码相互运作(混合编译)。跑一个最简单的混编Demo,用Java代码创建一个MainActivity,再用Kotlin编写一个Lesson0Activity,从MainActivity调用startActivity进入Lesson0Activity。

  • 代码精简,相同的功能,比Java实现的代码量少。如你要创建一个Entity类,除了声明属性外你还要创建对应的get、set方法,分别来看看Java和Kotlin是怎么做,Kotlin代码就一行搞定。

获取Entity中的属性值,这里不要认为跟Java中把属性声明成为public一样(后面的文章再详细说明)

关于代码精简的特点还有很多例子,不一一赘述。

  • 代码语句不需要作为结束,这点和Python一致。(加了分号也不会报错)
  • 使用var声明变量,用val声明常量,用fun声明函数。

  • 继承父类和接口无需extends、implements,只需

  • 支持lambda表达式。在Java8前,我们要传入一个接口是这样的

Java8有了Lambda表达式后是下面这样的

而Kotlin支持Lambda可以写成这样,对比Java版的setOnClickListener大家可以看得出区别。

  • 空指针检测。NullPointerException(也称NPE)是开发过程中最常遇到的Exception之一了,为此我们不得不写很多防御性代码去判断一个对象是否为null。而Kotlin默认是不需要变量为null的,否则在编译的时候就会报错,

要想程序正常运行,你就需要改成下面这样的代码

关于Kotlin的NPE处理,还有很多有意思的地方,同样以后再细说。

  • 数据类型自动推断,创建对象无需new。

关于Kotlin的特点暂时写到这里,我也是一边学习一边写文章记录,后面说不定还得看到更多亮点。

运行Kotlin代码

简单了解完Kotlin后,最后从IDE上跑一下代码来结束本文,下面分别从IntelliJ IDEA和Android Studio环境下分别运行一下代码。

安装IntelliJ IDEA后,创建一个基于JVM开发的Kotlin Project,

然后再src目录下创建一个Kotlin Class

写一段最简单的入门代码,点击运行即可看到控制台有输出结果,以及生成相应的字节码文件。

在Android Studio 2.x的环境下运行Kotlin代码需要先安装前面提到的Kotlin插件,安装完后重启AS,你就可以在对应的包下创建Kotlin的类文件以及Activity等

创建完Kotlin类后,会弹出下面的弹窗配置相应的Kotlin依赖

这样就会在你的AS Project以及对应的Module下出现如下配置

这样你就可以在AS愉快的跑起Kotlin代码了。

参考文献

  • 维基百科:Kotlin
  • Kotlin官方学习文档

Kotlin教程(一):走进Kotlin的世界相关推荐

  1. 零基础JavaScript入门教程(1)–走进JavaScript的世界

    点此查看 所有教程.项目.源码导航 本文目录 1. 前言 2. JS的历史 3. JS的地位 4. JS与HTML.CSS的区别 5. JS是真正的编程语言 6. JS的组成部分 7. 小结 1. 前 ...

  2. Kotlin 教程(一):走进 Kotlin 的世界

    今年 Google I/O 大会上,官方扶正 Kotlin 的举动火遍整个 Android 开发圈.不过,有些开发者似乎过度解读 Google 的意图,认为 Kotlin 要取代 Java 成为 An ...

  3. 【Kotlin】Kotlin 教程

    kotlin 教程 前言 什么是kotlin 什么是Java? kotlin 与 Java有什么区别 kotlin 的特点 Java的特点 kotlin 的历史 JAVA的历史 kotlin 的优势 ...

  4. Kotlin教程(九)泛型

    写在开头:本人打算开始写一个Kotlin系列的教程,一是使自己记忆和理解的更加深刻,二是可以分享给同样想学习Kotlin的同学.系列文章的知识点会以<Kotlin实战>这本书中顺序编写,在 ...

  5. BeginnersBook Kotlin 教程

    来源:ApacheCN BeginnersBook 翻译项目 译者:飞龙 协议:CC BY-NC-SA 4.0 贡献指南 本项目需要校对,欢迎大家提交 Pull Request. 请您勇敢地去翻译和改 ...

  6. Kotlin教程 - 收藏集 - 掘金

    爽翻天!告别Java.一起来使用kotlin开发完整客户端 - 掘金 必须写在前面:从Java转向Kotlin,只需要几天时间! 有人担心编译时间问题,这里给出一个链接Kotlin VS Java:编 ...

  7. 【2023】Kotlin教程 第二篇 面向对象与函数式编程 第15章 数据容器——数组和集合 15.2 集合概述

    [2023]Kotlin教程 文章目录 [2023]Kotlin教程 第二篇 面向对象与函数式编程 第15章 数据容器--数组和集合 15.2 集合概述 第二篇 面向对象与函数式编程 第15章 数据容 ...

  8. kotlin教程4:函数进阶

    文章目录 可变参数 尾递归函数 函数式 kotlin教程:编程基础

  9. Kotlin极简教程(第一章 Kotlin简介)

    1.1 kotlin简史 科特林岛(Котлин)是一座俄罗斯的岛屿,位于圣彼得堡以西约30公里处,形状狭长,东西长度约14公里,南北宽度约2公里,面积有16平方公里,扼守俄国进入芬兰湾的水道.科特林 ...

  10. Kotlin教程(二)函数

    写在开头:本人打算开始写一个Kotlin系列的教程,一是使自己记忆和理解的更加深刻,二是可以分享给同样想学习Kotlin的同学.系列文章的知识点会以<Kotlin实战>这本书中顺序编写,在 ...

最新文章

  1. systemstap 脚本 内核开发必备技能 基础讲解 (一)
  2. [android] 练习使用ListView(一)
  3. 海量数据库解决方案2011032301
  4. MySQL备份工具收集
  5. SAP MM模块的预留详解
  6. Java基础学习总结(61)——Java项目开发要注意的60个问题
  7. 820. 单词的压缩编码
  8. ServletContextListener小小总结
  9. Python:numpy array数据去头去尾巴
  10. 发展型机器人:由人类婴儿启发的机器人. 2.3 类人婴儿机器人
  11. CH5202 自然数拆分Lunatic版【完全背包】
  12. 改版后的51la统计,与旧版有何区别呢?
  13. [附源码]计算机毕业设计JAVAjsp超市收银系统
  14. 基于协同过滤算法的个性化新闻推荐系统
  15. Android音频简介
  16. OMPL138及U-Boot的启动过程分析(一)
  17. 【方向盘】工具提效:Sublime Text 4的常用快捷键合集
  18. 【T31ZL智能视频应用处理器资料】
  19. MathType公式上浮该怎么办?
  20. go 拼接mysql字符串_MYSQL 整型转字符型 拼接-Go语言中文社区

热门文章

  1. 基于android的学生选课信息app
  2. linux使用163的yum源配置
  3. [解决方案]ios用fd抓包进app无网络
  4. Spring实战(第5版)核心知识点总结
  5. C/C++ typedef用法!
  6. 【系统安全学习5】PGP加密
  7. DPDK Release 19.11
  8. JMP二次开发方法研究
  9. java htmlelement_Java Element.outerHtml方法代码示例
  10. 代码实现 outerHTML