首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

20年后的Java,跟得上节奏吗?

作者 | Nishant Aanjaney Jalan

策划 | 云昭

Java已经存在了将近30年。从1997年开始,有30亿台设备运行Java。现在Kotlin、Scala等更新的JVM语言流行了,Java是不是已经过时了?人们开始厌弃Java了吗?

我相信有很多人喜欢Java。很自豪本人也其中的一员。当像Kotlin和Scala这样的语言出现时,我发现这些语言更好。当然,这绝不意味我讨厌Java。

Java过去到底有多受欢迎?

Java的受欢迎程度如此之高,以至于ECMAScript被昵称为JavaScript,因为它在我们心中取代Web Assembly的速度和Java一样快。

可以列举几个例子来说明Java是一种受欢迎的语言。

Java为什么受欢迎?

平台无关

因为Java运行在Java虚拟机(JVM),相同的代码可以毫无困难地在多个平台上运行。另一方面,c有多个编译器为不同的isa编写汇编代码。如果一个C程序可以在机器A上运行,它不能保证在机器b上运行。

类似于C和C++的语法Java与C和C++共享一个相似的语法,这使得程序员不用重新学习所有的东西就可以切换到Java。

没有更多的指针

Java消除了指针的外部处理。这意味着你不再有那些烦人的缺点了。Java使用了指针(当然),但是代码是以各种方式抽象的。

自动垃圾收集器

在C和C++中,当对象不再被使用时,程序员必须手动释放内存(这需要大量的内存泄漏)。在Java中,基于程序员应该知道的某些规则,垃圾收集器会自动为您释放未使用的分配内存。

面向对象的编程

Haskell是一种纯粹的函数式语言。它严重依赖于数学技能,需要练习才能掌握。Java是一种纯粹面向对象的语言,与现实生活联系紧密。这种转变平滑了学习曲线(当然这在以后会变得非常困难)。

清晰的结构

Java的语法非常结构化。类中的一切都有助于理解相关的信息和功能。从第一句“你好,世界!”,您需要对类语法有一个基本的了解。在Java的帮助下,重要的原则、设计模式和编程范例可以很容易地得到解释。

回顾以上原因,没有理由讨厌Java。Java曾经是语言在2000年代。许多政府软件和银行都使用Java,其中一些现在仍在使用。

现在发生了什么?

不管人们怎么说,现在Java正在衰落。虽然Java仍然被维护着,全球仍然有许多Java开发者,但是作为编程语言,过去的辉煌现在已经一去不复返了。

无效

作为“空引用”的创造者,东尼·霍尔在一次采访中说,“这是一个十亿美元的错误”,因为它会导致意想不到的行为和程序崩溃。Java在核心库中采用了null,这使得它类似于在c中处理segfault错误。

刚性

在用Java编程一段时间后,您会注意到您多次编写了相同的代码。随着技术的进步,Java中的样板代码激增,从而使其变得庞大。

没有函数式语言支持

正如我前面所说,Java是纯面向对象的。然而,程序员需要命令式和声明式语言都包含的特性。

继承抽象中的一个缺陷

Java中有四种访问说明符:公共的、受保护的、私有的和受包保护的/默认的/友好的。没有办法允许对子类的访问并限制对包中其他类的访问。

Java历史上的重要改进

Java 8的改进

Java维护者没有忽视开发者的请求。

(1)功能支持—他们引入了流API的功能接口。然而,由于向后兼容,实现它仍然很笨拙。

(2)Optionalclass— Optional是无效问题的一种解决方法。尽管如此,包括Optional并没有消除null的可能性,因为它在Java的核心库中根深蒂固。

Java 12改进

表达式中引入Switch语句,减少了条件控制流中的一些样板。     

Java 16改进

Java中引入了record,它在编写POJOs(普通的旧Java对象)时,删除了大部分样板文件。

Kotlin和Scala的到来

就像Java是对C++的改进一样,Kotlin是对Java的改进。 Kotlin的优势如下:

1.大大减少了样板文件。

2.根深蒂固的Null安全。

3.引入了字符串模板(受Python/PHP的启发)。

4.介绍sealed class(受Rust/Haskell启发)。

5.多范例语言(改进的OOP和融合性的功能)。

6.运算符重载(如C和Python)。

7.引入了data class(Java中的record)。

8.其他杂项功能,如扩展和内联函数,以及协程。

因为我从未使用Scala编程,所以我不在文中讨论它的好处。当然,Java也在进化。

结论

仅仅因为更好的东西出现了,并不意味着我们厌弃了Java。

Java是明星编程语言,我们不能忽视它是如何帮助改变今天的编程语言的。Java的建立是为了解决一些问题,但作为副作用,它也产生了新的问题。在我看来,10年后,人们会开始抱怨今天的语言,一种新的语言将被创造出来解决这些问题。

如果没有Java,现代语言不会像今天这样强大。正如C++之父所言,世界上只有两种语言:人们抱怨的语言和没人使用的语言。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230511A02MNS00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券