slot deposit pulsa slot mahjong slot gacor slot gacor slot gacor resmi slot gacor 2025 slot gacor terpercaya slot gacor 2025 slot gacor hari ini slot gacor hari ini slot gacor hari ini
Java已经死亡?
17611538698
webmaster@21cto.com

Java已经死亡?

资讯 0 2226 2019-05-05 12:03:25
 
21CTO导读:Java注定是要死掉吗?来看本文。

5.5_.2_.1_.jpg

 
 
我是个顽固派,一个喜欢Java、Scala和Groovy的老家伙,这没有啥可了不起的。
 
一些人,特别是年轻人,听到这些东西可能会对我翻白眼,这些特性和现代语言相比,“陈旧、不灵活、笨重”,这是我经常听到的话。
 
事实上确实如些吗?
 
陈旧
 
的确,Java提供的基本构造和约束是旧式的,并且依赖于20年前编写代码的方式。但是编程语言不是在消毒泡沫中创造的,开发人员的习惯和需求才是语言设计的核心。虽然语言的发明者试图将创新融入到语言中,但是它如果忽视人们的实际用途就是犯傻的做法了。
 
Java的第一个里程碑可以追溯到1995年。虽然它的一些基础模块在设计时和有十年以上的远见。但很明显, 24年后的今天......情况并非如此。
 
这不仅仅是时间的问题。在过去十年中,IT信息技术发生了太多变化,其中一些内容似乎与当前主题没啥关系,但它们实际就是讨论的核心。
 
比如,廉价的内存提供更大的可用性在大规模部署,生产环境的软件中的函数编程中起着核心作用。这与采用反应式编程宣言有关。
 
可访问和可管理的云计算减缓了微服务模型的概念普及,这个模型在容器化为现实时体现了它的生产角色。微服务模型为不同编程语言提供了更高地位,这些语言适合干某些任务,对自己不擅长的任务则不那么好用。
 
大数据带来的挑战引发优化数据库系统的再度兴起。人们能够抓取大量数据,然后对其进行分析。这种行为并没有引起新语言的诞生,而是对已证明完全适合这项任务的现有编程语言的第二种思考。
 
人工智能时代,年轻人开始争先恐后。但稍等一下......
 
Python现在已成为机器学习的黄金标准,但是如果你浏览一下维基百科页面,你很快发现它出现的比Java还早,可以追溯到1990年!
 
那么R语言,这个数据分析的常见语言呢?它其实发明于1993年。
JavaScript?它诞生于1995年,和Java一样。
是Golang吗?它诞生于1986年...
 
为什么这些语言不被认为是陈旧的,而Java却背了这个锅?
 
因为我们变了,面临的挑战也变了。
 
比如,Python一直是Web应用和数据处理程序的一种脚本语言,它通常认为不适合大型企业应用。但是微服务通常是小程序和数据管道组成,定义明确的,大部分功能的数据流组成。
 
JavaScript一直是使动态网页的唯一解决方案。随着复杂Web应用程序的增长,它跑到服务器端也是合情合理。
 
总之,Java被认为是陈旧的原因在于它非常适合构建大型软件——大多数是单片型应用程序,有着数百万行代码,需要大量的规划和严格的顺序,因此来说Java需要重新设计。
 
当你尝试用JavaScript做同样的事情时,会很快会意识到“死亡不是结束,只是改变”。
 
不灵活
 
这个词听上去特别贴切,我经常用这个段子来形容Java:
如果你要做一个火柴盒,首先需要准备10吨木材,创建一个日志,然后再把它们削到火柴盒里。
 
由于Java强行添加了严谨正规的方法,鼓励创建层次型结构,因此像个白痴一样以正确的方式设置所有内容,即使对于一个非常小的任务也是如此。
 
这就是Java面临的问题。综合前面描述,Java中的所有工作都不那么简单。请注意,简单的方式,这并不代表容易实现。编写复杂的机器算法是一项艰巨的任务,而在Python中这变得很容易。
 
在这一点上,很明显在迭代同一个概念:使用正确的工具。Java是(并且一直是)一种非常通用的编程语言,并且被用于在各种场景中解决问题。随着时间的推移,加上各种变化和挑战,Java变得越来越臃肿。Java无法变成专业化的语言,而是其他语言在特定任务中更合适。
 
如果要构建一个大型企业级平台或至少它是中心节点,具有大量商业逻辑,超大的代码库,大量的高并发等。
 
Java就像一只怪兽,是吗......?
 
Java注定要失败?
“不要害怕未来,你不会经历那么多的事。”
Java的年龄一年年地增长,就像程序员一样。你不会像十年前一样头脑清醒,但作为一种交换,你会变得更加智慧,更加稳重,更加可靠。
 
你当然可以学习Rust这些新型语言,但对于比你年轻10岁的人来说,不会感觉有什么困难。
 
Java现代化生态的竞争在不断退化。当新功能出现时,在适当的时候Java才会变成现实。比如,当人们第一次介绍lambda特性时,反应不再是“耶!我们聚会聊聊!”更多的却是“感谢上天,是什么原因让我们等了这么久?“
 
在另一方面,我们没有意识Java的最大成就不是语言本身。
 
一个非常优秀的生态系统
 
在规划大型应用软件时,Java提供了一个庞大的生态系统,它为我们在互联网上实现的应用提供了卓越与高质量的库。
 
比如 Spring,Akka,Tomcat,Weblogic,Dubbo ...我还能举出好几百个例子——这些都不是草台班子的车库项目,而是非凡的成就。我并不是说这些不能用其它语言来开发,但是大企业推动Java并创造了软件生态体系,这个体系需要花很多年才能达成,在一些事上,时间因素也非常重要,20年的成熟周期已经足够漫长。
 
我们也可以找到适用于多语言的特殊库,但它们很大程度上取决于大公司是不是认可这个项目。
 
比如,为Python找到好的机器学习库是件很容易的事,你不能否认Google在其中发挥的作用; 借助Facebook,你可以用React.js开发出优秀的Web应用程序和手机客户端应用程序。
 
JVM的地位
 
除了前面提到的庞大生态系统之外,Java的最大成就是JVM。虽然Java语言可能因时间而受损,但JVM看起来非常健康。
 
有人会说容器化已经消减了对JVM的需求,从某种意义上说,情况确实如此。JVM的最初目标是允许Java程序在任何操作系统上执行,但容器在这方面改变了现状,容器提供了可以在任何地方执行操作系统的模拟环境。
 
但是JVM不止于这些,它提供了内存管理和垃圾收集,安全性,基本编程库以及调试和语法检查等高级特性,这些使得JVM成为一个安全,舒适的底层运行环境。
 
“JVM非常重,而且运行很慢!”这是我收到的经典回击。JVM在内存占用和启动时间(它非常不适合面向任务的程序)上确实是这样。在性能角度来看来,20年左右的发展确实发生了一些改变。
 
有一些人使用不同语言在常用算法场景下做基准对比,如:
 
 Python 3与Java
 Node.js与Java
 Go与Java
 Erlang 与Java
 
虽然这些基准测试的数据对所涉及的语言都不是那么公平,因为算法只是故事的一部分,但结果可以清楚地告诉我们,JVM并不是一只病入膏肓的大象,它还是一杯给人活力的热腾腾的Java。
 
但是…
 
虽然JVM活得很好,但Java也在极力保持其在编程语言排名的位置。Oracle深知并努力推动Oak再次让Java变得更好。但此举能否真正阻止Java的老化过程,尚无没预料。
 
这并不是一件坏事。
 
JVM充当了创建更现代,更高效的语言平台。虽然不是很多,但它公平,有一些语言也取得了成功。
 
这是我想说的重点,皇帝并没有死,但咳嗽听起来也不太好,它的后代正在继承他的遗产。
 

 
Scala
 
我的第二个最爱语言。它是一种强大的语言,具有静态类型,支持面向对象和函数式编程。虽然目前仍未大规模采用,但它目前是掌握最具经济效益的语言之一。通常由 AkkaPlayer模型实现丰富的功能,它是 Play Framework的后端语言;
 

 
Clojure
 
Lisp语言是一种非常被接受的语言,以其在并发计算方面的强大功能而闻名,它常用于处理庞大的数据集。
 

 
Groovy
 
这是一种动态编程和脚本语言,我通常称之为Java方言。Groovy广泛用于脚本编写,也是支持 Grails框架的语言。
 

 
Kotlin
 
最后一名,但不代表它不重要,这个语言是由JetBrains推出的静态类型,面向对象和功能的语言,目前是Google Android开发的首选工具。
 
我们不是在谈论Java的扩展,以上都是全新的编程语言,它们从Java中借鉴了很多东西,最重要的是,它们充分利用了JVM和Java生态系统。
 
实际上......
 
这个世界使用Java构建了大量的软件,不论你是不是同意,纵然有它的缺陷,Java仍然是一个非常适合,经过实践验证的软件开发的首选语言。
 
虽然它的作用也正转变,从The Only-Thing-You-Need,变成是画面的一部分,但它却是一个坚实的图画。
 
虽然Scala对我有超强的吸引力,但必须要说的是,Oracle和社区在改进Java方面做得是相当不错,我们都享受着这些进步与优势。
 
编程语言演变与进步的缓慢,可能表示是要被放弃,也可能是成功的标志。当一个语言被业界大规模使用时,确实应该认真对待它的重大变化,其所做的每一步都需要慎重考虑,后续影响以及向后兼容性等,一定不能掉以轻心。
 
小结
 
我有理由并相信已经在这个领域足够长的时间深刻理解Java的某些特质。
 
在过去十年中,这个空间的发展在加速,这些进步会让一些思想家变得兴奋,当他们踢出的尘土降落地面时,我们就能清晰地看到它的真实本质,合理地从中取得坚实成就。
 
如前面所说,我坚持并认真地认为,努力从这些成就中获得最大收益远比赢得胜利更加重要。
 
我对所有人,不论你是“年轻人”还是“老人”,“Java爱好者”甚至“敌人”。
 
我的建议是:
 
让我们一起享受这个美好的科技时代带来的多样性吧!
 

综合:洛逸
来源:21CTO社区


 
相关文章:
 
StackOverflow2019开发者报告:Python力压JAVA持续增长,中国开发者最乐观
 
Java和操作系统交互细节
 
学不动了!调查显示多数Java程序员不希望学习新语言
 
还有用Java开发应用程序的必要吗?
 
谷歌:甲骨文Java的胜利将扼杀软件开发,请求最高法院裁决
 

4.29_.3_.2_.jpg

 
 

评论