阅读 188

停止对Java的投资,可以考虑Go

原因

1. Java是一门不完整的语言

Java的招牌是面向对象,但是Java设计者当时对面向对象的理解不完整,这直接导致语言设计上缺少了面向对象编程的一个根本部分:消息传递。

面向对象的理念至少包含两个重要的基石:对象化和对象的消息传递机制。其中对象化意味着在编程时,可以按照人对世界的理解,通过程序模拟简化过的真实世界运行;而在真实世界中,所有数据的传递都是通过消息,不是简单的通过共享内存或者其它东西,这对编程的影响不亚于一门语言不支持函数。

面向对象的开源鼻祖是Smalltalk,这门语言在设计上领先了时代很多,但是同时也是因为太过领先,导致了其生不逢时,加上商业的原因,导致一个缺陷的Java成为很多人追捧的对象。

现在的环境已经不同以往,埋在历史当中的金子应该被重新发现和应用,当然基本不会是让Smalltalk重新流行,而是将其设计理念在新的语言中体现,例如有一点苗头的Go。

2. 值得投资的方面很多,例如Go

Go一出现就得益于谷歌受到很多人的重视,但是仅仅是重视,让Go走到现在这个程度的更是因为Go本身的简约设计和广阔的发展空间。

Go天生支持面向对象(面向对象是一种思想,不要提什么继承什么的,那只是某些设计者的理论),同时支持消息传递,虽然个人认为没有erlang的那么自然和纯粹,但是确实有这个意思,毕竟设计的应用环境不同。虽然还有许多的缺陷,但是同时得益于谷歌的支持,改进空间比缺陷容忍空间无限大。

最近已经好久没有基于Java的影响深远的大型组件了(Kafka,ES,Spark等等作为现在很多公司系统运转的基石,产生时间也是好久之前了),但是基于Go的却是蓬勃之势刚刚雄起,无论是云端数据处理应用,还是开发运维的容器化技术,都在成为新的事实标准。

3. 还有.Net

微软在重新崛起,那么.Net平台必将借助微软的核心业务云平台的繁荣而成为云开发的重要基石。

可能唯一缺少的就是Java成熟的生态,但是如果微软能够通过GitHub平台借助社区的无限力量将Java生态中最重要的组件移植到.Net,那开发者转换到.Net平台几乎没有太大的痛苦,毕竟大部分开发者不需要了解重要组件的内部,只需要接口协议一致,那就是无缝迁移;而一些小的工具,对于Java来说需要借助各种这样的开源库,但对.Net来说,其优良的标准库设计无需各种外部依赖。

同时.Net的开发环境宇宙第一,这个方面相比于Java不需要过多渲染。

总结

Java的新的发展空间被新生的Go等环境限制,而核心领域慢慢被.Net蚕食,那么Javaer的生存空间最终就会局限于老系统的维护,这对开发者来说不是好事,说不定维护几年后,一出来发现世界都变了。

文章分类
阅读