00. Kotlin 安装和语言的基本组成

简介: 00. Kotlin 安装和语言的基本组成

为什么要学 Kotlin


要想知道为什么 Kotlin 广受欢迎,首先要理解 Java 在现代软件开发领域中所扮演的角色。这两门语言联系得非常紧密,因为很多时候,Kotlin 代码的开发目标就是要在 Java 虚拟机上运行。


Java 语言比较稳健,久经考验。多年来,它一直是最常用的一种编程语言,造就了庞大的生产代码库。自从 1995 年 Java 问世以来,对于优秀的编程语言应满足什么条件,人们已通过实践积攒了很多经验教训。然而 Java 却裹足不前,开发者喜欢的很多现代语言高级特性,它都没有,或者迟迟才加入。


Kotlin 从这些经验教训中受益良多,而 Java(和其他语言,比如 Scala)中的某些早期设计却愈显陈旧。脱胎于旧语言,Kotlin 解决了它们的很多痛点,进化成了一门优秀的语言。相比 Java,Kotlin 进步巨大,带来了更可靠的开发体验。


作为一门新秀语言,Kotlin 不仅支持编写代码在虚拟机上运行,而且还是一门跨平台的通用型语言:你可以用 Kotlin 开发各种类型的原生应用,如 macOS 应用、Windows 应用、JavaScript 应用,当然还有 Android 应用。平台独立性意味着 Kotlin 有各种各样的用途。


Kotlin 语言特点


简洁、安全、支持函数式编程、支持面向对象、Java 具有良好的互操作性、免费开源。


1. Kotlin 对函数式编程的支持


函数式编程并不能完全取代面向对象编程,函数式编程擅长数据处理,如核心业务逻辑、算法实现等;而面向对象擅长构建 UI 界面编程、搭建系统架构等。


2. 异常处理的理念


Java 把异常分为受检查异常和运行期异常,编译器强制要求受检查异常必须捕获或抛出。事实上经过多年的实践,开发者发现即便是捕获了那些受检查异常处理起来也力不从心。受检查异常会使得程序结构变得混乱,代码大量增加。而 Kotlin 把所有的异常都看做是运行期异常,编译器不会强制要求捕获或抛出任何异常,开发人员可以酌情考虑是否捕获处理异常。


3. 对可空类型的支持


空指针异常是 Java 最为头痛的问题之一,Java 数据类型可以接收空值。而 Kotlin 数据类型默认不能接收空值,是非空数据类型,这样保证了数据类型的安全,防止空指针异常的发生。


Kotlin 应用程序运行过程


Java 程序运行过程如下图所示,首先由 Java 编译器将 Java 源文件编译成为 class 字节码文件文件),这个过程可以通过 JDK(Java 开发工具包)提供的 javac 命令进行编译。当运行 Java 字节码文件时,由 Java 虚拟机中的解释器将字节码解释成为机器码去执行,这个过程可以通过 JRE(Java 运行环境)提供的 java 命令解释运行。


image.png

Java 程序运行过程


安装 Kotlin 集成开发环境


为了把 Kotlin 代码转译为字节码,编写 Kotlin 程序需要 JDK。所以这里先配置 JDK 环境。


image.png


image.png


1. 设置为 JAVA_HOME 变量


image.png


2. Path下添加 %JAVA_HOME%\bin


手动下载 Kotlin 编译器


https://github.com/JetBrains/kotlin/releases/ 之后设置两环境变量。


  1. 设置“变量名”设置为 KOTLIN_HOME,“变量值”设置为 Kotlin 编译器解压路径。


  1. 将 Kotlin 编译器下的 bin 目录追加到 Path 环境变量


image.png

1. 设置 KOTLIN_HOME


image.png


2. Path 下添加 bin


可以通过在命令提示行中输入 kotlinc –version 指令进行验证是否安装成功。


IntelliJ IDEA


https://www.jetbrains.com/idea/


社区版免费, 企业版收费。


Eclipse


下载地址 https://www.eclipse.org/downloads/ + kotlin 插件。


运行 Kotlin 程序


运行 hello world

package org.kotlinlang.play
fun main() {
    println("Hello, World!")
}


  1. Kotlin 代码通常在包中定义。包规范是可选的: 如果您没有在源文件中指定一个包,那么它的内容将转到默认包。


  1. Kotlin 应用程序的入口点是主要功能。自从 Kotlin 1.3 以来,您可以在没有任何参数的情况下声明 main。没有指定返回类型,这意味着函数不返回任何值。


  1. println 将一行写入标准输出。它是隐式导入的。还要注意分号是可选的。


编写和运行 Kotlin 程序有多种方式,总的来说可以分为:


  1. 交互式方式运行


  1. 编译为字节码文件方式运行


这里介绍 REPL 方式。


REPL 是英文 Read-Eval-Print Loop 缩写,直译为“读取-求值-输出”,它指代一种简单的交互式运行编程环境。REPL 对于学习一门新的编程语言具有很大的帮助,因为它能立刻对初学者做出回应。许多编程语言可以使用 REPL 研究算法以及进行调试。


启动 REPL 可以通过 Kotlin 编译器提供的 kotlinc 命令或 IntelliJ IDEA 工具中选择 Tools → Kotlin → Kotlin REPL 菜单。打开命令提示行输入 kotlinc 命令。


Kotlin REPL 提供一些前面带有冒号(:)的管理指令,例如 “:quit” 指令是退出 REPL,“:help” 指令是帮助。


kotlin 新特性


What's new in Kotlin 1.8.0


发布日期: 2022年12月28日


以下是它最大的亮点:


  • JVM 的新实验函数: 递归复制或删除目录内容


  • 改进了 Kotlin 反射性能


  • New -Xdebug 编译器选项,以获得更好的调试体验


  • Kotlin-stdlib-jdk7 和 kotlin-stdlib-jdk8 合并到 kotlin-stdlib 中


  • 改进的 Objective-C/Swift 互操作性


  • 与 Gradle 7.3 兼容性


如何获得帮助


对于一个初学者必须要熟悉如下几个 Kotlin 相关网址:







构建遇到问题


jvm 版本不一致


'compileJava' task (current target is 19) and 'compileKotlin' task (current target is 1.8) jvm target compatibility should be set to the same Java version.


解决

import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
    application
    kotlin("jvm") version "1.8.0"
}
java.sourceCompatibility = JavaVersion.VERSION_1_8
java.targetCompatibility = JavaVersion.VERSION_1_8
tasks.withType<KotlinCompile> {
    kotlinOptions.jvmTarget = "1.8"
}


参考




目录
相关文章
|
IDE Java 开发工具
开发语言漫谈-kotlin
Kotlin是一个岛屿的名字,全称是Kotlin Island
|
17天前
|
Java Android开发 C++
Kotlin vs Java:选择最佳语言进行安卓开发
【4月更文挑战第13天】Java曾是安卓开发的主流语言,但Kotlin的崛起改变了这一局面。Google在2017年支持Kotlin,引发两者优劣讨论。Java以其成熟稳定、强大生态和跨平台能力占优,但代码冗长、开发效率低和语言特性过时是短板。Kotlin则以简洁语法、空安全设计和高度兼容Java脱颖而出,但社区和生态系统仍在发展中,可能存在学习曲线和性能问题。选择语言应考虑项目需求、团队熟悉度、维护性、性能和生态系统。无论选择哪种,理解其差异并适应新技术至关重要。
|
11月前
|
XML 安全 Java
使用Kotlin构建Android应用:现代化的开发语言
随着移动应用开发的不断发展,开发人员有了更多选择来构建功能强大、高效和可维护的Android应用程序。其中一种备受推崇的选择就是使用Kotlin作为开发语言。Kotlin是一种现代化的编程语言,它为Android开发带来了许多优势和便利。
107 0
|
Android开发 Kotlin
kotlin新版本插件本地安装
kotlin新版本插件本地安装
|
SQL 存储 NoSQL
JVM 上数据处理语言的竞争:Kotlin, Scala 和 SPL
JVM 上数据处理语言的竞争:Kotlin, Scala 和 SPL
198 0
|
SQL 存储 NoSQL
JVM 上数据处理语言的竞争:Kotlin, Scala 和 SPL
基于JVM的开源数据处理语言主要有Kotlin、Scala、SPL,下面对三者进行多方面的横向比较,从中找出开发效率最高的数据处理语言。本文的适用场景设定为项目开发中常见的数据处理和业务逻辑,以结构化数据为主,大数据和高性能不作为重点,也不涉及消息流、科学计算等特殊场景。......
193 0
JVM 上数据处理语言的竞争:Kotlin, Scala 和 SPL
|
Java Android开发 C++
【Android NDK 开发】Kotlin 语言中使用 NDK ( 创建支持 Kotlin 的 NDK 项目 | Kotlin 语言中使用 NDK 要点 | 代码示例 )(二)
【Android NDK 开发】Kotlin 语言中使用 NDK ( 创建支持 Kotlin 的 NDK 项目 | Kotlin 语言中使用 NDK 要点 | 代码示例 )(二)
173 0
【Android NDK 开发】Kotlin 语言中使用 NDK ( 创建支持 Kotlin 的 NDK 项目 | Kotlin 语言中使用 NDK 要点 | 代码示例 )(二)
|
Java Android开发 C++
【Android NDK 开发】Kotlin 语言中使用 NDK ( 创建支持 Kotlin 的 NDK 项目 | Kotlin 语言中使用 NDK 要点 | 代码示例 )(一)
【Android NDK 开发】Kotlin 语言中使用 NDK ( 创建支持 Kotlin 的 NDK 项目 | Kotlin 语言中使用 NDK 要点 | 代码示例 )(一)
319 0
【Android NDK 开发】Kotlin 语言中使用 NDK ( 创建支持 Kotlin 的 NDK 项目 | Kotlin 语言中使用 NDK 要点 | 代码示例 )(一)
|
Java Android开发 Kotlin
【Kotlin】Kotlin 中使用 ButterKnife ( 仅用于适配 Kotlin 语言 | 不推荐新项目使用 )
【Kotlin】Kotlin 中使用 ButterKnife ( 仅用于适配 Kotlin 语言 | 不推荐新项目使用 )
452 0
|
自然语言处理 Kotlin
【Kotlin】Kotlin 领域特定语言 DSL 原理 二 ( 中缀表达式 )
【Kotlin】Kotlin 领域特定语言 DSL 原理 二 ( 中缀表达式 )
133 0