我一直在用 Java,但是我一直都不喜欢 Java!

科技   2025-01-01 17:02   江苏  
 脚本之家 设为“星标
第一时间收到文章更新

文 | 风筝

来源 | 古时的风筝(ID:gushidefengzheng)

最近,一位资深同行国外微博上发表了一篇关于 Java 的帖子。

作者二十多年的编程经验,表示既不喜欢它的某些方面,又不得不承认其卓越的设计和深远的影响。

我写 Java 也好几年了,刚毕业的时候是写 C# 的,然后同同时学了 Python,3年之后才转做 Java 的。

要说为什么转到 Java 呢,是因为 Java 写起来更爽吗,那肯定不是。当时C#已经是 3.5 了,在语法方面肯定是比 Java 顺手的,而且各种语法糖写起来很省心。加上 Visual Studio 是宇宙第一强大 IDE,写起代码来还是很安逸的。

然后学 Python 的时候呢,「人生苦短,我用 Python」不是盖的,入门简单,上手容易,对硬件和人都没有什么要求,谁来了都能写两段。

之所以转到 Java ,最主要的原因是用C# 没什么机会做互联网项目,而互联网公司基本都是标配 Java 的,工资相对来说也比 C# 高一些,所以才转到 Java 的。

实话说,我当时转到 Java 之后,对 Java 的印象也是极其差的。给我的感觉就是写起来啰里吧嗦,而且当时我做的第一个项目是 SSH 的,也就是 Struts + Spring + Hibernate,最近入行的同学可能已经不知道这是何物了。其实那会儿就已经是 Spring MVC + Mybatis 了,但是不知道那个项目为啥要用 SSH,这一用不要紧,差点儿给我干yue了,各种配置文件乱到飞起,再加上当时用的是 Eclipse。

你能体会到那种落差吗,从写的很安逸的 C# 到xml配置乱飞,从宇宙第一强大的 IDE Visual Studio 到 Eclipse,这XML动不动就出错还不好查问题,我心想,这哪是项目,这是豆腐渣啊,一碰就碎一地啊。

还好后来都开始用 Spring Boot 了,没有那么多配置内容了,至少在Java Web 层面上使用体验上升了一大截,要不然就只能靠习惯来适应了。


Java 的崛起:从“玩具”到企业级霸主

Java 的诞生可以追溯到上世纪 90 年代初,最初的目标是为嵌入式系统开发一种平台无关的编程语言。在互联网兴起的前夜,Sun 公司捕捉到了 Java 的潜力,并将其推向了更广阔的舞台。凭借着“Write Once, Run Anywhere”的跨平台特性,Java 迅速在开发者群体中流行起来。

时至今日,Java 仍然是市场占有率非常靠前的编程语言。

1、早期的性能问题与 JVM 的不断进化

Java 早期的性能问题的确是一个大问题,很大原因就是因为 JVM 。虚拟机建立了语言和硬件之间的沟通桥梁,另一方面其实也相当于做了一道屏障。只有有了 JVM ,才能实现“Write Once, Run Anywhere”这个目标,但其实做过多平台部署的同学都知道,很多时候并不是这么完美的。一次编写,有时候要做兼容的。“到处运行”也是有代价的,有时候会在多个平台进行不断的调试。

最早是由于硬件条件限制和 JVM 技术的不成熟,Java 程序的性能饱受诟病,启动速度慢、运行效率低是常态,也因此被戏称为“玩具语言”。

然而,Sun 公司以及后来的 Oracle 并没有坐视不管。他们持续投入大量资源对 JVM 进行优化,特别是引入了 JIT(Just-In-Time)编译器技术,使得 Java 的性能得到了质的飞跃。如今,在许多应用场景下,Java 的性能已经可以与 C++ 等编译型语言相媲美,特别是在高并发、大数据处理等领域,得益于 JVM 的持续优化和成熟的并发库,Java 甚至表现出了一定的优势。

JVM 虽然很厉害,但是其实开发者是挺烦它的,尤其是找工作面试的时候,跟其他语言不同,面试语言就是面试语言,但是面试 Java 好像是面试两门语言,一个是 Java ,一个是 JVM。

2、 J2EE 的繁荣

随着 Java 的普及,J2EE(Java 2 Platform, Enterprise Edition)应运而生,旨在为企业级应用开发提供一套完整的解决方案。这就是我前面说的刚接触 Java Web 开发的时候那种眩晕感的源头。

由于 J2EE 其自身也逐渐变得臃肿不堪,也就是那位前辈说的“物极必反”和“矫枉过正”,也是许多 Java 同行的心声。繁琐的 XML 配置、复杂的 API、陡峭的学习曲线,使得 J2EE 开发变成了一件苦差事。

3、Spring 和 Spring Boot 的出现

Spring 框架以 IoC(控制反转)和 AOP(面向切面编程)为核心理念,极大地简化了企业级 Java 开发。开发者不再需要编写大量的配置文件,而是可以通过注解等方式更加专注于业务逻辑的实现。Spring 的出现,不仅提高了开发效率,也推动了 Java EE(现在更名为 Jakarta EE)自身的革新。

现在提起Java,大概有一半多说的都是 Spring 、Spring Boot。

这些年来,各种语言层出不穷,虽然用Java的人和不用 Java的人都在抱怨 Java 的各种问题,但是它就是一直长盛不衰。

这绝非只是幸运而已,因为 Java 已经成为一门成熟、稳定、功能强大的编程语言,拥有庞大的生态系统和广泛的应用场景。

虽然它代码冗余,开发效率没那么高,但是它中规中矩、生态圈繁荣啊;虽然它学习曲线相对较陡峭,但是是它中规中矩、生态圈繁荣啊;


其他语言


C#

我工作后的第一门语言,在大学自学的。还记得是一本白皮的书,还是在新华书店买的。

都说 C# 是完全参照 Java 的语法来设计的。

C# 1.0 时代确实借鉴了 Java 的一些设计思想,并以“简单易学”作为卖点,但它绝不仅仅是一个简单的模仿者。委托、事件、属性、值类型等特性都是 C# 的独到之处。而且,C# 经过多年的发展,已经形成了一套完善的生态系统,特别是在 .NET 平台的加持下,以及在游戏开发(Unity)领域的广泛应用,C# 已经成为 Java 的有力竞争者。

C# 的优势在于与 Windows 平台的紧密集成、强大的 IDE 支持(Visual Studio)、丰富的语法糖以及高效的开发效率。但 C# 也存在一些问题,比如对非 Windows 平台的依赖不如Java,以及之前 .NET Framework 更新速度较慢的问题。但随着 .NET Core(现在的 .NET)的开源和跨平台,这些问题正在得到解决。

Python

人生苦短,我用Python 。Python 以其简洁的语法、丰富的库和强大的社区支持,在数据科学、人工智能、Web 开发等领域得到了广泛的应用。Python 的优势在于其易学易用、开发效率高,以及在数据处理和机器学习方面的强大能力。但 Python 的动态类型在大型项目中可能会带来一些维护上的挑战,性能相比 Java 和 C# 也有一定差距。

Python 原本是2.x的版本,但是里面的坑太多了,导致再出现 3.x 的时候,这两个大版本是不兼容的。但凡 Python 的优点没那么充分,两个版本完全不兼容都是个灾难。

Go

号称为并发而生的语言。并发在Java 中也是一块儿难啃的骨头,使得很多只接触过 Java 的同学认为并发就是这么难学,而实际上在 Go 语言中,并发是天然被支持的,学习曲线并不高,而在 C# 中,也有关键字直接支持。

Go 语言以其简洁的语法、高效的性能和出色的并发支持,在云计算、微服务等领域迅速崛起。Go 的优势在于其天生支持高并发、编译速度快、部署方便。但 Go 的错误处理机制、缺少泛型(Go 1.18已支持)等问题也受到一些开发者的诟病。


最后

没有最好的语言,没有银弹,只有合适的语言和工具

每种编程语言都有其自身的优势和劣势,没有一种语言能够适用于所有场景。选择哪种编程语言,取决于具体的项目需求、团队的技术栈以及开发者的个人喜好。

作为程序员,保持开放的心态,拥抱变化,不断学习新的技术,根据实际情况选择最合适的工具。

END



看完本文你有什么想说的?欢迎各位评论区聊一聊

留言抽 3位 小伙伴,赠送8.88元现金红包!

下面顺便给大家推荐一个不错的AI工具聚合平台,欢迎来体验。

点击长按二维码,即可体验

👇👇👇

✅传送门:https://www.aijuli.com

脚本之家
脚本之家(jb51.net)每天提供最新IT类资讯、原创内容、编程开发的教程与经验分享,送书福利天天在等你!
 最新文章