人生苦短 须用Kotlin
原址
就在昨天谷歌2017 IO大会宣布将Kotlin列为Android开发的一级语言,Android Studio 3.0也将在不使用插件的情况下自动兼容Kotlin语言。这也就意味着谷歌在专利流氓“甲骨文”公司的逼迫下有慢慢放弃使用Java的想法,当然,短期内想谷歌完全摒弃Java那是不可能,因为当前Android所有的开发生态基本都建立在Java语言之上,但是,某种意义来说这是谷歌对后面Android开发的一种态度或者一种趋势。而且Kotlin本身是一个非常优秀的语言,其简洁的语法,无缝对接Java都是非常吸引人的。
什么是Kotlin?
Kotlin是一种在Java虚拟机上执行的静态类型语言,它是由JetBrains开发团队创造的,目前它能够支持在服务端、JavaScript、Android上使用,今天我们主要介绍它在Android上面的一些特性。
Kotlin无缝对接Android开发
- 兼容性:Kotlin能够运行在JDK6以上,意味它能够运行在更老的设备上面
- 性 能:由于和Java具有相似的字节码结构,所以Kotlin语言和Java运行一样快,而且由于对内联函数和lambdas 表达式的支持,甚至有些时候比Java运行还要快
- 大 小:Kotlin的Runtime lib非常小,小于100K。所以运行出来的APK文件和原生的差不多大
- 编 译:对增量编译支持非常好,它和Java的增量编译一样快
- 易用性:学习非常简单,和Java的语法很相近,但是写起来又更爽利。借用一些插件能够自动让Java和Kotlin语言自由装换,这也意味着当前项目的代码能够无缝切换到Kotlin了。
它还有一些额外的优点,比如空安全(如果对象可以为null,必须显式声明),函数式编写等等。举个和简单的例子来证明Kotlin的易用和简洁性:
1
2
3
4
5
|
data class Student(
var id: Long,
var name: String,
var sex: String
)
|
这就已经新建了一个Student类,他会自动帮你建立好对各个属性的索引和基本方法.
在Android中,使用Kotlin的扩展,能够提供一些额外的功能。比如你对一个view进行赋值,它是这样实现的:
1
2
|
activity.hello_tv.setText("hello world")
|
其中hello_tv就是你在xml布局中对应的id。
怎么在Android Studio中使用?
如果你使用的是Android Studio 3.0,你可以直接使用。如果使用的是Android Studio 3.0以下,可以通过引入插件和依赖包的形式。
其它版本可以通过插件市场下载安装kotlin插件
安装成功后重启Android Studio。
这个时候按照正常的新建项目逻辑新建一个Android项目,自动生成MainActivity的java文件。在这个类中通过help - find action -输入 Covert java file to kotlin file点击,就可以发现当前的文件自动转换成kotlin类了。
安装完插件后其实开发环境已经基本搭建成功。我们根据右上角的提示,增加对应的build配置信息
在当前app的build文件中自动添加了
1
2
3
4
5
6
7
|
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
...
dependencies {
...
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
}
|
在当前项目的build 文件中自动添加了
1
2
3
4
5
6
7
8
9
10
|
buildscript {
ext.kotlin_version = '1.1.2-4'
...
dependencies {
...
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
...
}
}
|
如果你需要扩展功能,需要在app下面引入扩展插件功能
1
|
apply plugin: 'kotlin-android-extensions'
|
引入插件功能后意味着你能够使用扩展功能,具体有那些功能,可以参考官方文档。
接下来你就可以开心使用Android Studio撸代码啦。
怎么学习Kotlin?
由于Kotlin的语法和Java及其相像的,所以如果你有Java基础,学习起来应该是非常容易的。而且Kotlin也有一些开源社区提供的中文同步网站,如果你英文不错建议直接看英文原版本文档,总的来说上手还是非常容易的。
总结
作为一名程序员,时刻保持学习新的东西和动力和热情是非常重要的品质。谷歌有推广Android Studio的成功经验,而且无缝对接Java语言的巨大优势,会让很多Android开发人员切换更加容易,所以有理由相信Kotlin语言可能是Android 的未来。
人生苦短 须用Kotlin相关推荐
- Kotlin威胁、Python逆袭,2018年程序员需要升级哪些技能?(附报告下载)
来源:CSDN 本文共6700字,建议阅读10分钟. 本文从App开发.Web开发.安全和系统管理.数据科学四大方面讲述了2018年开发者运用的工具和获得高薪的技能. [ 导读 ]近日,著名的技术书籍 ...
- 【Bugly 技术干货】Android开发必备知识:为什么说Kotlin值得一试
1.Hello, Kotlin Bugly 技术干货系列内容主要涉及移动开发方向,是由 Bugly 邀请腾讯内部各位技术大咖,通过日常工作经验的总结以及感悟撰写而成,内容均属原创,转载请标明出处. 1 ...
- Kotlin入门简介
Kotlin的"简历" 来自于著名的IDE IntelliJ IDEA(Android Studio基于此开发) 软件开发公司 JetBrains(位于东欧捷克) 起源来自JetB ...
- 第3章 Kotlin语言基础 《Kotlin 极简教程》
2019独角兽企业重金招聘Python工程师标准>>> 第3章 Kotlin语言基础 掌握基础,持续练习 学习任何东西,都是一个由表及里的过程.学习一门编程语言也一样.对于一门编程语 ...
- Kotlin学习笔记 第二章 类与对象 第一节类与继承(补)
参考链接 Kotlin官方文档 Kotlin docs | Kotlin 本系列为参考Kotlin中文文档 kotlin官方文档2020版.pdf-其它文档类资源-CSDN下载 第二章 第一节 类与继 ...
- Kotlin学习总结(1)——Kotlin快速入门
"近一百多年来,总有一些公司很幸运地.有意识或无意识地站在技术革命的浪尖之上.一旦出在了那个位置,即使不做任何事,也可以随着波浪顺顺当当地向前飘个十年甚至更长时间.在这十几年间,它们代表着科 ...
- pdf 深入理解kotlin协程_协程初探
Hello,各位朋友,小笨鸟我回来了! 近期学习了Kotlin协程相关的知识,感觉这块技术在项目中的可应用性很大,对项目的开发效率和维护成本有较大的提升.于是就考虑深入研究下相关概念和使用方式,并引入 ...
- Kotlin拿Android本地视频缩略图
本文主要讨论如下三个问题: 如何拿到本地视频? 怎么拿视频缩略图? 缩略图如何压缩? 1 如何拿到本地视频? 1.1 定义数据结构 先定义媒体信息数据结构MediaInfo,以及视频信息数据结构Vid ...
- Kotlin 函数式编程(Kotlin Functional Programming)
Kotlin 函数式编程 (Kotlin Functional Programming) 陈光剑 1. 函数式概述 6 1.1. 函数式简史 6 1.2. 函数式编程语言家族 7 1.2.1. ...
最新文章
- 比可微架构搜索DARTS快10倍,第四范式提出优化NAS算法
- 【Ethereum】以太坊ERC20 Token标准完整说明
- 使用JNDI+连接池
- Aix下如何运行Java程序
- C# 代码生成二维码方法及代码示例(QRCoder)
- java 中 正则 正则表达式 匹配 url
- python读取配置文件获取所有键值对_Python读取properties配置文件操作示例
- 复制粘贴之后出现问号怎么办_网页没办法复制粘贴?老司机传授这3招太赞了,全网任意免费复制...
- 8首次登陆与线上求助
- 社区列表根据关注人数排序(排行榜)的实现思路整理
- Python代码反向解析列线图nomogram自动计算各项得分及总得分
- python傅里叶变换相位谱图_图像傅里叶变换的幅度谱、相位谱以及双谱重构原图像...
- php 微信自动全屏视频设置,微信H5视频自动弹出全屏播放的解决方案
- 自学Java day17 jvav网络编程 从jvav到架构师
- 博士申请 | 澳大利亚麦考瑞大学王岩教授招收机器学习方向全奖博士生
- Fire And Motion(英文原版) [转]
- android10版本怎么实现swf播放,swf播放器怎么用?swf播放器安卓版使用教程
- Pulsar 社区周报 2020-09-12 ~ 09-18
- 传输层协议——UDP和TCP
- 【Educational Codeforces Round 6A】【水题】Professor GukiZ's Robot 曼哈顿距离
热门文章
- 简单的redis使用watch完成秒杀抢购功能
- CSharpGL(30)用条件渲染(Conditional Rendering)来提升OpenGL的渲染效率
- SQL Server 2008性能故障排查(二)——CPU
- Sicily 1156. Binary tree 解题报告
- C# .NET ORM 框架 SqlSugar 5.X 版本
- 10个最棒的jQuery视频插件
- 【k8s】记踩坑无数后的kubernetes二进制安装详细步骤
- NLP --- 文本分类(基于概率的隐语意分析(PLSA)详解)
- Vue学习笔记之18-网络请求模块的封装
- helloworld代码_12 种主流编程语言输出“Hello World”