如果你是一个资深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现有的硬件平台,能够更好地推广自己的数据库、中间件等产品。
可以说 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 老矣,不能饭否。