从剑到板砖——JAVA到Golang

如果程序员的世界是江湖,那么java程序员肯定是用剑的。

剑,短兵之祖,百兵之君,近博之器。剑作为一种兵器,超越了战场,在历史、文化、宗教中都有无可替代的作用。招式众多,轻拢慢撚抹复挑,啊不对,是劈砍刺截扫挂挑,剑招耍起来龙飞凤舞,飘洒大方,行走江湖,哪个侠客不会几手剑招?颜值高的的学落英剑法,悟性好的的练成独孤九剑。

JAVA,也可以称作编程语言之君了,从95年正式创立以来,经过众多java程序员的发展,从sun到oracle,这门语言不仅没有沉寂下去,反而越发壮大,虽然每年都有人说java是不是不行了,可是按照目前的生态来说,java语言的坚挺不容置疑:

说不好是软件的工程化促进了java的发展,还是java的发展促进了软件的工程化,但是毋庸置疑,java肯定是软件工程的最佳实践之一。跨平台,万物皆对象,gc,这些在当时都是让人惊呼的特性,可以说java将编程语言设计带到了一个新的高度。

剑固然是一种很好的武器,什么招数都有,什么事情都能做,就是每次打架前要先耍一套太极七十二式。曾经念大学的时候,导师说过我们专业大学期间要写1w行代码,java程序员就得写10w行 /滑稽。那可不是嘛,定义几个bean,每个bean光get、set方法就能上百行了,当时用ssh,配置文件又得几百行。算上导入包,声明对象,异常处理,一个类上千行轻轻松松。

JAVA的语法繁琐是一方面,丰富的库带来的是依赖的难以管理。一个简单的http服务,开发上需要依赖框架 SSH或者springMVC或者springBoot,运行环境需要依赖JVM,容器需要依赖Tomcat或者Jetty服务,在大规模微服务的互联网架构中,集群运维难度大,可靠性低。

每一个武器,都有其最适合的场景。go语言就相当于板砖,小巧便携,好发力。有道是乱拳打死老师傅,板砖的优势就是贴身肉搏,流氓斗殴。

在高并发服务这一块,go语言的表现已经远远超过了java。

最近在使用go语言写rpc服务的过程中,深刻体会到了go语言的简单粗暴。毕竟是站在巨人的肩膀上,专门为网络编程,高并发而生的语言。大部分常用的包全部内置,即使是依赖,使用起来也非常简单。放弃了万物皆对象的思想也使go语言的开发效率极高,gofmt又保证了代码风格的统一和良好的可读性。还有goroutine,go协程,比java线程更加轻量级,开发效率更高,运行速度更快,很容易开启上万个go协程进行高并发的服务,这也是go语言的精华所在。。另外go的部署运行也要简单的多,直接构建出一个可执行的脚本,运行就启动了服务。脚本本身小,占的资源也非常少。

Java依然是排名第一的语言,但是对于工程师来说,语言只是工具,拥抱变化,保持学习才是我们必须要一直做的事情。

最后,我并不是go语言的专家,这只是我几周以来学习的主观感受,如果有不同的意见,欢迎留言,

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180620G036NQ00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励