屠龙勇士Java是如何一步步变成恶龙的?

fuck Java

Posted by Zeusro on August 17, 2020

如果你是一个资深Java爱好者,建议直接按 Ctrl + W 完成阅读。

1995年,Sun正式对外公布了Java,并且发布了JDK 1.0。

弱鸡的语法

我2014年的时候是做ASP.NET MVC,也就是C#起步的。C#的语法相当优美,10年前的语法都吊打当前的 Java10 十条街。

C#的泛型是一个很优美的设计。这个设计,直到今天,Java 还是在用类型擦除的方式去实现。

而 C# 的泛型加上 linq,简直是神挡杀神,佛挡杀佛。与之相对比,Java 的 Stream API,啰嗦就算了,限制也一大堆。

关于这一点,可以看我写过的这篇《Java8的stream API与 C#的 LINQ 拓展方法对比》。

继母没有爱

1997年10月,Sun 向美国加州地方法院起诉微软公司违反两公司就微软使用Java技术所签定的合同,指控微软公司在自己的Java产品中做了“不恰当的修改”,违反了合同中承诺向用户提供Java兼容产品的条款。

我们认为Oracle借助Sun现有的硬件平台,能够更好地推广自己的数据库、中间件等产品。

Google哭了,要赔甲骨文88亿美金!

可以说 2009 年 Oracle 公司收购 Sun 公司之后,就已经宣布了 Java 的死期。后面所做的一切都不难理解。

面向裹脚布编程

如果你有看我写的 《How To Do In Java》 就不难理解,JAVA API 是非常坑爹的。这些坑爹的地方说好听点叫做“非常稳定”,说难听点叫做“面向裹脚布编程”,正是这些不合理的设计,构成了这门语言的历史遗留债务。而且这个问题是不可解的,因为 Java 习惯向前兼容。

脑残JVM

找工作的时候你会发现,title 稍微高一点的岗位,都会有如下类似的描述:

了解JVM,包括内存模型、类加载机制以及一般内存问题审查;

Java基础扎实,熟悉IO、多线程、集合等基础原理,对JVM有一定的了解;

我觉得互联网从业者的骄傲应该在于技术创新,用技术去满足这个社会的需求。而不是满足这个语言对你的需求。

语言是一种工具,终究要为商业/业务价值服务。从资源能效比考虑,Java是一门有问题的语言(因为很占内存,启动也慢),但如果是面向稳定开发的项目,比如银行这一类不差钱的大户,Java 还是能继续发挥余热的。但 Java JVM 作为一种容器的技术传承给 docker,已经实现了它的历史使命,是该退休了。

我个人不喜欢给历史遗留问题擦屁股,写 Java 对我来说如同掏粪。

结论

Java 老矣,不能饭否。

参考链接

  1. Java 20 年:历史与未来
  2. Jvm 系列(一):Java 类的加载机制
  3. 纳尼,Java 存在内存泄泄泄泄泄泄漏吗?
  4. Go 会接替 Java,成为下一个企业级编程语言吗?
  5. Java 老矣,尚能饭否?
  6. Java 有值类型吗?
  7. 进击的Java - 云原生进化
  8. Sun-Microsoft Trial: Preliminary Injunction Order
  9. java 诞生的背景