文档章节

Kotlin简介

拿客-三产
 拿客-三产
发布于 2017/04/06 16:59
字数 1112
阅读 411
收藏 2

#Kotlin 是什么?

KotlinJetBrains开发的针对JVM、Android 和浏览器的静态编程语言。

JetBrains,作为目前广受欢迎的 Java IDE IntelliJ IDEA 的开发商,在 Apache 许可下已经开源其Kotlin 编程语言。JetBrains 作为最智能的 Java IDE 的开发商,对 Java 的了解是毋庸置疑的,在使用 Java 过程中,JetBrains 的工程师们发现了大量的问题,为了更高效的开发以及解决 Java 中的一些问题,JetBrains 开发了致力于替代 Java 的 Kotlin

#为什么使用 Kotlin?

1、简洁——大大减少您需要编写的样板代码量

使用一行代码创建一个包含gettersetter并重写equals()hashCode()toString()copy()等方法的POJO

data class Customer(val name: String, val email: String, val company: String)

虽然 Java8 中引入了 lambda 表达式,但是由于类库兼容性等问题,我们的一些老项目还在使用旧版本的 JDK。而 Kotlin 提供了 lambda 表达式支持而只需使用 JDK6 + 版本。下面的代码使用 lambda 表达式过滤List

val positiveNumbers = list.filter {it > 0}

极简的单例模式:

object ThisIsASingleton {
    val companyName: String = "JetBrains"
}

2、安全——避免整个类的错误,如空指针异常

摆脱那些讨厌的 NullPointerExceptions 可能导致十亿美元损失的错误。

var output : String
output = null

Kotlin可以保护您免受对可空类型的误操作,包括来自Java的类型。

println(output.length())

如果你检查一个对象的类型是否是某个类型,编译器会自动转换该对象为您检查的类型。

fun calculateTotal(obj: Any) {//这里的 Any 相当于 Java 中的 Object
    if (obj is Invoice) {
        obj.calculateTotal()
    }
}

3、多用途——支持多中类型的应用程序

多用途语言允许您构建任何类型的应用程序:

  1. Android开发。 没有性能影响。运行时非常小。

  2. 服务器应用 100%兼容所有JVM框架。

  3. JavaScript 在Kotlin中编写代码,并转换为 JavaScrip 在 Node.js 或浏览器中运行。

  4. 企业 使用Kotlin进行任何类型的企业Java EE开发。

  5. 网页 无论您是要强制类型的HTML,CSS构建器还是简单的Web开发。

  6. 其他所有(ios、嵌入式等等) Kotlin/Native 在2017年4月份推出了预览版,并在在官方博客中描述了对 Kotlin/Native 的美好愿景。

    Kotlin/Native 使用LLVM编译器基础架构生成机器代码。在这个预览中,支持以下目标平台

    • Mac OS X 10.10及更高版本(x86-64)
    • x86-64 Ubuntu Linux(14.04,16.04及更高版本),其他Linux版本也可以正常工作
    • 苹果iOS(arm64),在MacOS X主机上交叉编译
    • Raspberry Pi,在Linux主机上交叉编译

    博客中提到后期还要加入:

    • iOS应用程序(使用Android重用代码)
    • 嵌入式系统/ IoT(例如,Arduino及其以外)
    • 数据分析与科学计算
    • 服务器端和微服务器(低占用性、可执行,利用协同程序的功能)
    • 游戏开发

4、可互操作——100%兼容 Java 从而可利用已有代码及 JVM 类库

在 Kotlin 代码中随意创建 Java 对象、使用已有 Java 代码

import io.netty.channel.ChannelInboundMessageHandlerAdapter
import io.netty.channel.ChannelHandlerContext

public class NettyHandler: ChannelInboundMessageHandlerAdapter<Any>() {
    public override fun messageReceived(p0: ChannelHandlerContext?, p1: Any?) {
        throw UnsupportedOperationException()
    }
}

或者使用 JVM 上的任何现有库,因为 Kotlin 对 Java 有100%的兼容性,包括SAM支持。

指定 JVM 或 JavaScript。在Kotlin编写代码,并选择你要部署到哪里。

import js.dom.html.*

fun onLoad() {
    window.document.body.innerHTML += "<br/>Hello, Kotlin!"
}

5、多工具支持——自由选择命令行编译器或一级IDE支持

Kotlin目前提供了四种编写方式:

  1. 命令行编译工具
  2. 在线编辑 Try Kotlin
  3. Eclipse
  4. IntelliJ IDEA

其中 IntelliJ IDEA 提供了对 Kotlin 最新功能的支持,也是 Kotlin 最智能的编辑器。

前景如何?

目前 花瓣、豆瓣 APP 以及 JetBrains 全线编辑器都在使用 Kotlin,国内很多初创公司也都在使用 Kotlin(尤其是用于 Android 开发)大家可以参考下 哪一些大公司在使用 kotlin 开发应用? Kotlin 被业内称之为 Android 的 Swift ,从这个称呼中大家也能感觉到开发者对 Kotlin 的喜爱程度了吧。Spring Framework 5.0 也提供了对 Kotlin 支持可以看出 Kotlin 在服务端以及移动端都有较好的发展。 2017年5月18日谷歌宣布 Kotlin 成 Android 开发一级语言,并会在AndroidStudio 3中提供相关支持。

© 著作权归作者所有

共有 人打赏支持
拿客-三产
粉丝 109
博文 75
码字总数 121734
作品 0
丰台
程序员
私信 提问
Android 开发者应该知道的 Kotlin 技巧

今年的 Google I/O 大会上,Google 是这样评价 Kotlin:在过去一年里,有35%的专业 Android 开发者在使用 Kotlin,其中95%的开发者都对 Kotlin 非常满意。虽然 Kotlin 正处于发展的初始阶段,...

码云Gitee
05/28
0
0
浅谈Kotlin(一):简介及Android Studio中配置

浅谈Kotlin(一):简介及Android Studio中配置 浅谈Kotlin(二):基本类型、基本语法、代码风格 浅谈Kotlin(三):类 浅谈Kotlin(四):控制流 前言:   今日新闻:谷歌宣布,将Kotli...

听着music睡
2017/05/18
0
0
《Kotin 编程思想·实战》目录

《Kotin 编程思想·实战》目录 《Kotlin极简教程》正式上架: 点击这里 > 去京东商城购买阅读 点击这里 > 去天猫商城购买阅读 第1章 JVM语言家族概览 1.1 编程语言简史 1.2 程序执行的三种方...

程序员诗人
2017/06/03
0
0
使用IntelliJ IDEA创建Kotlin项目

一、kotlin被谷歌看中后,开始了突飞猛进的进步 下面来看一下维基百科关于Kotlin的介绍 简介: Kotlin是一种在Java虚拟机上运行的静态类型编程语言,它也可以被编译成为JavaScript源代码。它...

王木东
03/28
0
0
使用Kotlin进行服务器端开发

简介 Kotlin非常适合开发服务器端应用程序,允许编写简明明了的代码,同时保持与现有基于Java的技术栈的完全兼容性和平滑的学习曲线: 表现力:Kotlin的创新语言功能,如支持类型安全的构建器...

Pape
2017/10/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Redis分布式锁的实现原理看这篇就够了~

一、写在前面 现在面试,一般都会聊聊分布式系统这块的东西。通常面试官都会从服务框架(Spring Cloud、Dubbo)聊起,一路聊到分布式事务、分布式锁、ZooKeeper等知识。 所以咱们这篇文章就来...

Java干货分享
14分钟前
1
0
Actor并发编程模型浅析

一.Actor模型介绍 在单核 CPU 发展已经达到一个瓶颈的今天,要增加硬件的速度更多的是增加 CPU 核的数目。而针对这种情况,要使我们的程序运行效率提高,那么也应该从并发方面入手。传统的多...

终日而思一
14分钟前
1
0
利用arthas实时定位线上性能问题

0. 场景及需求 我们线上5台solr读服务器,配置一样,但是相同的请求,其中一台响应时间明显比其他4台慢,我们想通过arthas来定位具体哪里执行慢。 1. arthas介绍 阿里开源的java调试工具,能...

andersChow
16分钟前
2
0
docker 启动策略

Docker run的时候使用--restart参数 no - Container不重启 on-failure - container推出状态非0时重启 always - 始终重启 例如: docker run --restart=always -itd -p 2222:22 -p 3306:3306......

colin_86
16分钟前
1
0
Thinkphp5开发OA办公系统之招聘申请

开发运行环境: 神舟笔记本K650D-G6D1 i5-6400 GTX950M Windows 10 专业版 Nginx 或 Apache Web 服务器软件 MySQL5.7.x 数据库 PHP7.1.0 PHPStrom 2017 PowerDesigner 16.5 Axure RP8 原型设......

乐兔CRM
18分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部