代码编织梦想

使用kotlin已经有一段时间了。打算从宏观上做一下java和kotlin的对比。java虽然也有很多新特性,但是android低版本并不兼容。因此这里以旧版本为例。

kotlin 简介

在这里插入图片描述

Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift,由 JetBrains 设计开发并开源。

Kotlin 可以编译成Java字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。

易用性

在语法糖的加持下,kotlin能够用更短的代码实现更多的功能。这是java 无法比拟的。所谓代码量越少,出bug的可能性就越低。

kotlin特有的扩展属性,不再需要java工具类,对开发更加友好。

比如我们想实现字符串判空操作,在java中需要写一个StringUtil类,这样其他开发同学想实现该功能的时候,可能并不知道已经有人实现了该功能,存在重复造轮子的可能。通过扩展属性,我们可以很方便的看出String类都存在哪些方法。

java中的bean类总是需要使用插件生成setter getter方法。kotlin中的data关键字可以解决这类问题,data类在编译期自动生成getter setter方法。

规范性

工程项目都是需要指定开发规范的。比如变量命名等。在java中,方法重载的时候会生成@Override注解,但是这并不是强制约束的。kotlin的方法采用override关键字进行了强制约束。
再比如TODO。java中的TODO是以注释的形式存在,即使没有实现TODO处的代码,也没什么运行时问题。kotlin的TODO形式如下:

fun main(args: Array<String>) {
    TODO()
}
kotlin TODO的实现
@kotlin.internal.InlineOnly
public inline fun TODO(): Nothing = throw NotImplementedError()

可以看到运行时会抛出异常。
思考:这里为什么不在编译期抛出异常呢?

安全性

java中虽然有@Nullable @NotNull等注解。但是不会在编译期起作用,而是在运行期抛出异常。kotlin在声明变量的时候,可以指定变量是否为空,调用可为空对象时,需要进行空判断。

跨平台

java在jvm的协助下虽然也是跨平台语言,但是不能像kotlin一样可以既可以编译成class字节码,又可以编译成js。

编译速度

只有全量编译下,kotlin比java慢。增量编译下,两者几乎没有差距。

其他kotlin特性

懒加载、高阶函数、协程、inline操作符、运算符重载、默认参数等。

针对于Android开发,毫无疑问,Kotlin就是未来,不仅有谷歌官方的支持,而且学习成本也不高,现在入坑也还来得及。

在这里为了方便大家系统的学习Kotlin,这里特意联合了阿里P7架构师和谷歌技术团队共同整理了一份Kotlin全家桶学习资料。

内容概要:Kotlin 入门教程指南、高级Kotlin强化实战和史上最详Android版kotlin协程入门进阶实战 。

内容特点:条理清晰,含图像化表示更加易懂。

由于文章内容比较多,篇幅有限,资料已经被整理成了PDF文档,有需要Kotlin全家桶学习资料,完整文档的可扫码免费获取!!!!

1678085907857.png?t=0.7492258136178696

《Kotlin入门教程指南》

第一章 Kotlin 入门教程指南

● 前言
img

第二章 概述

  • 使用 Kotlin 进行服务器端开发
  • 使用 Kotlin 进行 Android 开发
  • Kotlin JavaScript 概述
  • Kotlin/Native 用于原生开发
  • 用于异步编程等场景的协程
  • Kotlin 1.1 的新特性
  • Kotlin 1.2 的新特性
  • Kotlin 1.3 的新特性
    img

第三章 开始

  • 基本语法
  • 习惯用法
  • 编码规范
    img

第四章 基础

  • 基本类型
  • 控制流:if、when、for、while
  • 返回和跳转
    img

第五章 类与对象

  • 类与继承
  • 属性与字段
  • 接口
  • 可见性修饰符
  • 扩展
  • 数据类
  • 密封类
  • 泛型
  • 嵌套类与内部类
  • 枚举类
  • 对象表达式与对象声明
  • Inline classes
  • 委托
    img

第六章 函数与 Lambda 表达式

  • 函数
  • 高阶函数与 lambda 表达式
  • 内联函数
    img

第七章 其他

  • 解构声明
  • 集合:List、Set、Map
  • 区间
  • 类型的检查与转换“is”与“as”
  • This 表达式
  • 相等性
  • 操作符重载
  • 空安全
  • 注解
  • 反射
  • 类型安全的构建器
  • 类型别名
  • 多平台程序设计
  • 关键字与操作符
    img

第八章 Java 互操作与 JavaScript

  • 在 Kotlin 中调用 Java 代码
  • Java 中调用 Kotlin
  • JavaScript 动态类型
  • Kotlin 中调用 JavaScript
  • JavaScript 中调用 Kotlin
  • JavaScript 模块
  • JavaScript 反射
  • JavaScript DCE
    img

第九章 协程

  • 协程基础
  • 取消与超时
  • 通道 (实验性的)
  • 组合挂起函数
  • 协程上下文与调度器
  • 异常处理
  • select 表达式(实验性的)
  • 共享的可变状态与并发
    img

第十章 工具

  • 编写 Kotlin 代码文档
  • Kotlin 注解处理
  • 使用 Gradle
  • 使用 Maven
  • 使用 Ant
  • Kotlin 与 OSGi
  • 编译器插件
  • 不同组件的稳定性
    img

第十一章 常见问题总结

  • FAQ
  • 与 Java 语言比较
  • 与 Scala 比较【官方已删除】
    img

《高级Kotlin强化实战 》

第一章 Kotlin 入门教程

  • Kotlin 概述
  • Kotlin 与 Java 比较
  • 巧用 Android Studio
  • 认识 Kotlin 基本类型
  • 走进 Kotlin 的数组
  • 走进 Kotlin 的集合
  • 完整代码
  • 基础语法
    img

第二章 Kotlin 实战避坑指南

  • 方法入参是常量,不可修改
  • 不要 Companion、INSTANCE?
  • Java 重载,在 Kotlin 中怎么巧妙过渡一下?
  • Kotlin 中的判空姿势
  • Kotlin 复写 Java 父类中的方法
  • Kotlin “狠”起来,连TODO都不放过!
  • is、as` 中的坑
  • Kotlin 中的 Property 的理解
  • also 关键字
  • takeIf 关键字
  • 单例模式的写法
    img

第三章 项目实战《Kotlin Jetpack 实战》

  • 从一个膜拜大神的 Demo 开始
  • Kotlin 写 Gradle 脚本是一种什么体验?
  • Kotlin 编程的三重境界
  • Kotlin 高阶函数
  • Kotlin 泛型
  • Kotlin 扩展
  • Kotlin 委托
  • 协程“不为人知”的调试技巧
  • 图解协程:suspend
    img

《史上最详Android版kotlin协程入门进阶实战》

第一章 Kotlin协程的基础介绍

  • 协程是什么
  • 什么是Job 、Deferred 、协程作用域
  • Kotlin协程的基础用法
    img

第二章 kotlin协程的关键知识点初步讲解

  • 协程调度器
  • 协程上下文
  • 协程启动模式
  • 协程作用域
  • 挂起函数
    img

第三章 kotlin协程的异常处理

  • 协程异常的产生流程
  • 协程的异常处理
    img

第四章 kotlin协程在Android中的基础应用

  • Android使用kotlin协程
  • 在Activity与Framgent中使用协程
  • ViewModel中使用协程
  • 其他环境下使用协程
    img

第五章 kotlin协程的网络请求封装

  • 协程的常用环境
  • 协程在网络请求下的封装及使用
  • 高阶函数方式
  • 多状态函数返回值方式
    img

第六章 深入kotlin协程原理(一)

  • suspend的花花肠子
  • 藏在身后的-Continuation
  • 村里的希望-SuspendLambda
    img

第七章 深入kotlin协程原理(二)

  • 协程的那些小秘密
  • 协程的创建过程
  • 协程的挂起与恢复
  • 协程的执行与状态机
    img

第八章 Kotlin Jetpack 实战

  • 从一个膜拜大神的 Demo 开始
  • Kotlin 写 Gradle 脚本是一种什么体验?
  • Kotlin 编程的三重境界
  • Kotlin 高阶函数
  • Kotlin 泛型
  • Kotlin 扩展
  • Kotlin 委托
  • 协程“不为人知”的调试技巧
  • 图解协程原理
    img

第九章 Kotlin + 协程 + Retrofit + MVVM优雅的实现网络请求

  • 项目配置
  • 实现思路
  • 协程实现
  • 协程 + ViewModel + LiveData实现
  • 后续优化
  • 异常处理
  • 更新Retrofit 2.6.0
    img
    1678085907857.png?t=0.7492258136178696

更有更多资料,加微信免费领取

img

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yihanss/article/details/129624409

开发Android应用用Kotlin还是Java?-爱代码爱编程

还记得多年前有关Android与iOS孰优孰劣的辩论吗?如今,Kotlin与Java的争论,时常广泛地发生在开发人员之中。不过,由于大家往往关注的是Java所不具备的Kotlin功能,因此他们的结论可能略显偏颇。下面,我将从资深应用开发人员的角度,综合比较Kotlin与Java在不同领域的优缺点,以方便您做出判断和选择。首先,我们来简单了解一下这两种语言。

Android开发:基于Kotlin编写一个简易计算器-爱代码爱编程

目录 前言Kotlin学习tips界面绘制及控件绑定UI界面绘制控件绑定Button点击事件运算逻辑整体逻辑边界情况输入展示点击数字键点击运算符键点击“=”点击“clean”键在`onCreate()`方法里调用成果展示后记 前言 本着程序员“拥抱变化”的思想,最近开始学Kotlin了。感觉还是得通过实战来入门一门新语言,所以打算写一个基于K

安卓 使用androidstudio java 转kotlin_mawlandroid的博客-爱代码爱编程

java 转kotlin 第一步 先检查kotlin版本,如下图 如果提示不需要更新安装,就不用了, 然后第二部开始配置 如下图: 上图是在根目录的gradle中添加红色代码 我这里贴出来: id 'org.jetbrains.kotlin.android' version '1.6.21' apply false 继续 如下图 是在 app的

android studio java 引用kotlin modules 找不到程序包_kmblack1的博客-爱代码爱编程

1 修改project build.gradle plugins { id 'com.android.application' version '7.2.1' apply false id 'com.android.library' version '7.2.1' apply false id 'org.jetbrains.kot

关于android:kotlin中的枚举注释类型_黄毛火烧雪下的博客-爱代码爱编程

在Java中,我可以定义枚举注释类型(从此处开始) // Constants public static final String WINTER ="Winter"; public static final String

用于 android 开发的 kotlin 与 java_pxr007的博客-爱代码爱编程

Android 应用程序已成为我们日常生活中不可或缺的一部分;例如,许多企业使用 Android 应用程序与客户交流。然而,为 Android 开发选择最佳编程语言可能是一项艰巨的任务。 在 Kotlin 大获全胜之前,开发人员对 Java 感到满意。现在,任何进入 Android 开发世界的人都面临着一个两难的境地:我应该使用 Kotlin 还是 Ja

android java项目添加kotlin混合开发环境配置_android java引入kotlin库-爱代码爱编程

Android Studio java代码中添加kotlin混合开发 1.项目的build.gradle中添加kotlin-gradle-plugin buildscript {     repositories {         google()         jcenter()              }     dependencies {

hbase-爱代码爱编程

1、 简介 跳跃表(SkipList)是一种能高效实现插入、删除、查找的内存数据结构,这些操作的期望复杂度都是O(logN)。与红黑树以及其他的二分查找树相比,跳跃表的优势在于实现简单,而且在并发场景下加锁粒度更小,