Java 太老了,2018 年该学什么? Java 太老了,2018 年该学什么?

2025-06-05

Java 太老了,2018 年应该学什么?

Java 太老了,2018 年应该学什么?

Java 太老了,2018 年应该学什么?

Java 已经成为一种遗留语言。它无法在保持向后兼容性的同时发展成为一门现代语言。但它为我们提供了一个优秀的 JVM 生态系统,并催生了许多优秀的语言,例如 Groovy、Scala、Clojure 和 Kotlin。

欢迎最新的 Kotlin

Kotlin 诞生于 2011 年,但在谷歌宣布其成为 Android 官方语言后,它于去年开始流行起来。Kotlin 借鉴了许多其他 JVM 语言的强大功能。让我们快速了解一下 Kotlin 对 Java 开发人员的优势。

无需担心 NPE

每个 Java 程序员都讨厌运行时抛出的空指针异常。Kotlin 提供了一流的支持,以避免在编译时出现空引用。默认情况下,所有对象都是不可空的,您必须使用 ? 运算符来定义可空类型。编译器会强制您使用安全调用运算符 ?. 来访问可空对象。您还可以使用 elvis 运算符 ?: 来分配默认值。

var name = "Kotlin"
var nameLength = name.length // Works
name = null // Compilation Error : Null can not be a value of a non-null type String
var nullableName : String? = null
// Compilation Error : Only safe (?.) or non-null asserted (!!.)
// calls are allowed on a nullable receiver of type String?
var nameLength = nullableName.length
nameLength = nullableName?.length ?: 0
view raw nullSafety.kt hosted with ❤ by GitHub

无需提供明确的类型声明。

Kotlin 会自动推断类型,因此您无需显式声明。您可以简单地使用 val 来定义 final 变量,使用 var 来定义非 final 变量。注意,只有在单个语句中同时声明和赋值时,才能推断类型。

避免复杂的字符串格式。

在 Kotlin 中,您可以使用字符串模板来更轻松地格式化字符串。$ 用于引用变量,您可以使用 ${} 来表示复杂的表达式

无需样板代码即可创建简单的 POJO。

Kotlin 为用于简单保存值的对象提供了数据类。它会自动为数据类生成 equals 、 hashCode 、 toString 、 copy 、 getters 和 setters(针对定义为 var 的属性)方法。你还可以对数据类进行对象解构,将属性提取到变量中。

您可以避免使用 Builder 类和冗余方法重载。

Kotlin 支持命名方法参数,因此在大多数情况下您无需创建构建器。此外,Kotlin 支持默认方法参数,因此您无需创建冗余的重载方法来传递默认值。

您不再需要 guava 库来静态初始化集合。

Kotlin 提供了简洁的内联初始化集合的方法,例如使用 listOf 、 mapOf 和 setOf 方法。Map 还支持直观的键值对语法进行初始化。此外,它还提供了 Map 键值对的解构功能,方便迭代。

您不需要采用复杂的方法来创建单例。

Kotlin 支持对象声明,以在一行中创建单例。

你不需要不必要的局部变量

在 Kotlin 中,像 try 和 when 这样的结构是返回值的表达式。例如,你可以将 try 的结果赋值给变量,而不是创建局部变量。类似地,when 也可以用作表达式。when 相当于 Java 中的 switch,但功能更强大。

您将避免 Class Cast 异常。

Kotlin 提供了 is 运算符(相当于 Java 中的 intnanceOf)来检查对象是否属于特定类型。使用 is 运算符会自动进行类型转换。这可以避免在转换为错误类型时出现 Class Cast 异常。

您不需要重复变量名来调用同一个对象中的序列方法。

Kotlin 提供了一种构造方法,可以轻松地在同一对象上调用一系列方法,而无需重复变量名。在 Java 中,我们通常使用构建器模式和方法链来实现这一点。即使对于非构建器类,Kotlin 也可以轻松地实现类似的功能。

Kotlin 也提供了 apply 扩展函数来实现同样的事情。

您不需要样板代码来使用委托或装饰器模式。

为了更好地利用组合而非继承,我们经常使用委托或装饰器模式,但这需要在包装类中复制委托类的每个方法。Kotlin 提供了一流的支持,以简化使用 by 运算符的委托。它会自动实现必要的方法来调用委托类的方法。当然,你也可以根据需要重写特定的方法。

您不需要类来创建静态函数。

Kotlin 支持类外的函数,因此您不需要仅为静态实用程序函数创建类。

您不需要使用 hack 来修改 lambda 中的非最终变量。

Java 通过自动用匿名内部类替换 lambda 表达式来支持 lambda 表达式,但你无法在 lambda 表达式中修改非 final 变量。但在 Kotlin 中,你也可以在 lambda 表达式中修改非 final 变量。

延迟加载不需要付出艰苦的努力。

Kotlin 提供了使用 lazy 关键字来延迟初始化属性的非常简单的方法。

您不必完全切换到一种新语言。

Kotlin 与 Java 无缝互操作,因此您可以轻松集成旧版 Java 代码。您可以继续利用第三方 Java 库和框架。与 Scala 不同,Kotlin 没有自己的集合库,而是扩展了 JDK 集合。因此,您无需编写胶水代码即可在 Java 和 Kotlin 集合类型之间进行转换。

您可以编写简洁且更易读的代码。

Kotlin 使用方法命名约定来重载许多运算符以提高可读性。例如,方法 plus 用于重载 + 运算符,方法 minus 用于重载 - 运算符,方法 times 用于重载 * 运算符,方法 div 用于重载 / 运算符等等。它支持重载更多运算符,例如 %、+=、+-、++、--。

Kotlin 提供了使用 .. 运算符来定义范围的简洁方法。它还提供了 until 关键字用于排除边界,以及 step 运算符用于跳过项目。它还提供了 in 运算符来检查范围内的内容。我们还可以通过实现 rangeTo 和 contains 方法来重载 .. 运算符和 in 运算符。

您可以轻松扩展现有的 JDK 类。

Kotlin 支持轻松地向现有类添加扩展函数。这是一个非常强大的功能,可以帮助我们轻松扩展核心语言 API。

为什么要使用 Kotlin?

它能使你的工作效率提高很多倍

  • 它是静态类型语言,因此您会在编译时发现很多错误。

  • 它有很好的工具支持。毫无疑问它是由一家 IDE 公司创建的

  • 它是由关心开发人员生产力的 IDE 公司 JetBrains 创建的。

  • 避免 Java 开发人员日常遇到的许多挫折。

默认情况下,您将获得许多最佳实践(来自《Effective Java Book 》的原则)的好处。

  • 所有课程均为期末课程。

  • 集合是不可变的。

  • 覆盖强制关键字而不是可选注释

  • 无受检异常

  • 没有原始类型

  • 更清晰地支持泛型。

非 JVM 支持。

  • Kotlin 还可以编译为 Javascript 以用于前端开发。

  • 他们还致力于添加本机运行时,以使其无需 JVM 即可运行。

你应该切换到 Kotlin 吗?

Kotlin 很棒,但还不够完美。它需要一段时间才能发展成为一门优秀的语言。JetBrains 和 Google 正在积极支持 Kotlin,所以你可以确信它只会越来越好。

如果您是 Android 开发人员,您应该立即开始使用 Kotlin。

如果您是 Java 开发人员,您可能需要考虑其他因素,例如团队成员、公司采用等。但即使您不能立即使用它,您也应该学习这个现代的美丽作品。

最后,根据ThoughtWorks 技术雷达,公司可以在适当的时候在项目中采用 Kotlin。

参考

文章来源:https://dev.to/erajasekar/java-is-too-old-what-should-you-learn-in-2018-45p9
PREV
想成为快乐高效的程序员吗?不妨试试这 5 个心理学技巧
NEXT
为什么 Oh My ZSH 这么酷?