[译] 将 Kotlin 应用于现有 Java 代码的策略

简介: 本文讲的是[译] 将 Kotlin 应用于现有 Java 代码的策略,自 Google 在 I/O 大会上发布最新消息(译者注:Google 宣布 Android Studio 将默认支持 Kotlin)起,事情变得疯狂起来。
本文讲的是[译] 将 Kotlin 应用于现有 Java 代码的策略,

将 Kotlin 应用于现有 Java 代码的策略


将 Kotlin 应用于现有 Java 代码的策略

自 Google 在 I/O 大会上发布最新消息(译者注:Google 宣布 Android Studio 将默认支持 Kotlin)起,事情变得疯狂起来。在过去的两周内,Kotlin 周报邮件列表的订阅人数增长了 20% 以上,文章提交数增长超过 200%。我所组织的线下交流(Kotlin 慕尼黑用户组)的参与人数大幅增长。所有这一切伴随着开发者社区总体的爆发性增长。

一个还会不断增长的趋势。

总之现在来看,未来将会如何发展是很显然的。尽管 Google 承诺将继续支持 Java,但Google 和 Oracle 之间的法律纠纷以及 Kotlin 是一个更加简洁、高效、强大的语言的清晰事实正在标志着你学习的方向。我发现下面这个推文相当有预见性。

几个月前,当我出现在与 Kotlin 相关的讨论、社区中时,可能最常被问及的问题是,现在是否是一个迁移至 Kotlin 的好时机。我的回答始终不会变:是的。进行 Kotlin 迁移有很多收益,且几乎没有任何坏处。我所能想到的唯一一个技术上的副作用是方法数将会增多,因为 Kotlin 标准库(目前)增加了 7191 个新方法。综合利弊来看,这是一个完全可以接受的不足。

既然这个问题的答案是毫无争议的肯定,我意识到另一个问题在浮现出来:开始使用 Kotlin 应该采取什么样的步骤?

本文旨在向那些困惑从何开始或寻求灵感的人们提供一些自己的想法。

1.- 从测试开始

是的,我知道测试是有限制性的。单元测试确切是指:你所测试的(是)独立单元和模块。当你所拥有的一切只是一群单独的类和可能的少量辅助类时,开发复杂的架构网是很困难的。但是这是一种对新语言建立认知和拓展的非常廉价和高效的方法。

我所听到的一个最常见的反对 Kotlin 的观点是,要避免在生产环境中部署 Kotlin 代码。虽然在我看来这是一种非常有偏见的观点,我想向你强调的是,如果你从测试开始,没有任何代码会被实际部署(到生产环境)。取而代之的是,这些代码可能会在你的持续集成环境中被使用,而这也是一种拓展知识的方式。

开始用 Kotlin 书写新的测试吧,它们可以直接与其他 Java 类进行协同和互通。当你有空闲时间时,可以将 Java 类迁移,并检查生成的代码,根据需要进行手动更改。以我个人经验来看,60% 的转换代码都是可以直接使用的,对于没有复杂功能的简单类而言这个比例会更高。我发现这是一个非常安全的场景,可以作为第一步来开始。

2.- 迁移已有代码

你已经开始编写了一些 Kotlin 代码。你了解了一些关于语言的基础。现在你已经准备好将 Kotlin 用于生产环境了!

当你要第一次开始在生产环境中使用时,从低耦合的类(DTO 和数据类)开始是非常高效的。这些类的影响很小,可以在非常短的时间内轻松的重构。这是了解数据类并大幅减少你的代码量的最佳时机。

这是你希望发起的 PR。

在这之后,开始迁移单一类。可能是类似 LanguageHelper 或 Utils 这样的类。虽然它们在很多地方被调用,但这种类一般只提供一些影响和依赖关系很有限的功能。

在某个时间节点,你会感觉解决架构中那些更加庞大和核心的类已经足够舒适了。不要害怕。请特别注意可为空(nullability),这是 Kotlin 中最为重要的特性之一。如果你已经进行了很多年的 Java 编程的话,它需要你用一种新的思维方式。但请相信我,新的编程范式最终会在你的头脑中形成。

记住:你不需要强制迁移整个代码库。Kotlin 和 Java 可以无缝交互,现在你并不需要让代码库 100% 由 Kotlin 组成。当你感觉到足够舒适的时候再去做它。

3.- 尽情的使用 Kotlin

到这个阶段你一定可以开始用 Kotlin 编写所有的新代码了。把这当成过去的事,不要总是回看。当你开始用纯 Kotlin 编写第一个功能时,除了在上面提到过的可为空(nullability),你还需要对默认参数多加注意。更多的考虑扩展功能,而不是继承。发起拉取请求(Pull Request)和代码审查,和你的同事讨论如何能够进一步完善。

最后的建议,享受吧!

用于学习 Kotlin 的资源

下面所列的是我曾经尝试过并且可以推荐的学习 Kotlin 的资源链接。我特别喜欢书籍,尽管有些人讨厌它们。我发现把它们大声读出来是很重要的,同时在电脑上进行编写和练习的话对于知识的沉淀更有帮助。

  1. Kotlin Slack: 许多 JetBrains 的人和 Kotlin 狂热者会聚集在这里。
  2. Kotlin Weekly: 我管理的一个每周选取 Kotlin 相关资讯发布的邮件列表。
  3. Kotlin Koans: 一系列可以训练和强化你的 Kotlin 技能的在线练习。
  4. Kotlin in Action: 来自 JetBrains 的一些 Kotlin 工作者的书。
  5. Kotlin for Android developers: 一本重点在如何使用 Kotlin 做 Android 开发的书。
  6. Resources to Learn Kotlin: Google 提供的更多学习 Kotlin 的资源。

我在我的 Twitter 账户上分享关于软件工程和生活的一些观点。如果你喜欢这篇文章或它真的对你有所帮助,非常乐意你能够分享、点赞或回复。这是业余作者的最大动力。





原文发布时间为:2017年7月13日

本文来自云栖社区合作伙伴掘金,了解相关信息可以关注掘金网站。
目录
相关文章
|
1月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
2月前
|
前端开发 Java
java实现队列数据结构代码详解
本文详细解析了Java中队列数据结构的实现,包括队列的基本概念、应用场景及代码实现。队列是一种遵循“先进先出”原则的线性结构,支持在队尾插入和队头删除操作。文章介绍了顺序队列与链式队列,并重点分析了循环队列的实现方式以解决溢出问题。通过具体代码示例(如`enqueue`入队和`dequeue`出队),展示了队列的操作逻辑,帮助读者深入理解其工作机制。
|
9天前
|
Java API 微服务
2025 年 Java 核心技术全面升级与实战应用详解
这份Java校招实操内容结合了最新技术趋势,涵盖核心技术、微服务架构、响应式编程、DevOps及前沿技术等六大模块。从函数式编程到Spring Cloud微服务,再到容器化与Kubernetes部署,帮助你掌握企业级开发技能。同时,提供AI集成、区块链实践和面试技巧,包括高频算法题与系统设计案例。通过学习这些内容,可应对90%以上的Java校招技术面试,并快速上手实际项目开发。资源链接:[点此获取](https://pan.quark.cn/s/14fcf913bae6)。
89 41
|
15天前
|
人工智能 前端开发 Java
Java 面试资料中相关代码使用方法与组件封装方法解析
这是一份详尽的Java面试资料代码指南,涵盖使用方法与组件封装技巧。内容包括环境准备(JDK 8+、Maven/Gradle)、核心类示例(问题管理、学习进度跟踪)、Web应用部署(Spring Boot、前端框架)、单元测试及API封装。通过问题库管理、数据访问组件、学习进度服务和REST接口等模块化设计,帮助开发者高效组织与复用功能,同时支持扩展如用户认证、AI推荐等功能。适用于Java核心技术学习与面试备考,提升编程与设计能力。资源链接:[点此下载](https://pan.quark.cn/s/14fcf913bae6)。
48 6
Java 面试资料中相关代码使用方法与组件封装方法解析
|
14天前
|
存储 安全 Java
现代应用场景中 Java 集合框架的核心技术与实践要点
本内容聚焦Java 17及最新技术趋势,通过实例解析Java集合框架的高级用法与性能优化。涵盖Record类简化数据模型、集合工厂方法创建不可变集合、HashMap初始容量调优、ConcurrentHashMap高效并发处理、Stream API复杂数据操作与并行流、TreeMap自定义排序等核心知识点。同时引入JMH微基准测试与VisualVM工具分析性能,总结现代集合框架最佳实践,如泛型使用、合适集合类型选择及线程安全策略。结合实际案例,助你深入掌握Java集合框架的高效应用与优化技巧。
38 4
|
10天前
|
人工智能 Java
Java中的反射机制:深入探索与应用
本文介绍了Java反射机制的基本概念、用途及其实现方式。反射机制允许程序在运行时动态获取类的属性和方法,并调用它们,适用于处理私有成员或权限受限的情况。文章详细讲解了`Class`类的功能,包括获取类的方法、属性、注解、构造器等信息,以及通过四种方式获取`Class`对象的示例代码。此外,还探讨了类加载器、继承关系判断、动态代理等高级内容,展示了如何在运行时创建接口实例并处理方法调用。文末提供了完整的代码示例以加深理解。
Java中的反射机制:深入探索与应用
|
11天前
|
SQL Java 数据库
解决Java Spring Boot应用中MyBatis-Plus查询问题的策略。
保持技能更新是侦探的重要素质。定期回顾最佳实践和新技术。比如,定期查看MyBatis-Plus的更新和社区的最佳做法,这样才能不断提升查询效率和性能。
54 1
|
16天前
|
前端开发 Java 数据库连接
Java 编程进阶实操之工具集整合应用指南
本文聚焦Java编程进阶实操,涵盖并发编程、性能优化及数据库操作优化等核心知识点,并结合Hutool、Postman、Git等实用工具,提供从理论到实践的学习路径。通过小型图书管理系统实战项目,详细解析技术选型与实现步骤,助力开发者掌握Spring Boot、MyBatis等框架应用。同时展望Java新特性与技术趋势,为职业发展奠定基础。资源链接:[点此获取](https://pan.quark.cn/s/14fcf913bae6)。
49 1
|
28天前
|
安全 Java API
Spring Boot 功能模块全解析:构建现代Java应用的技术图谱
Spring Boot不是一个单一的工具,而是一个由众多功能模块组成的生态系统。这些模块可以根据应用需求灵活组合,构建从简单的REST API到复杂的微服务系统,再到现代的AI驱动应用。
234 8
|
2月前
|
IDE Java 开发工具
JetBrains IntelliJ IDEA 2025.1 发布 - 领先的 Java 和 Kotlin IDE
JetBrains IntelliJ IDEA 2025.1 (macOS, Linux, Windows) - 领先的 Java 和 Kotlin IDE
171 2

热门文章

最新文章