从剑到板砖——JAVA到Golang的碎碎念


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



剑,短兵之祖,百兵之君,近博之器。剑作为一种兵器,超越了战场,在历史、文化、宗教中都有无可替代的作用。招式众多,轻拢慢撚抹复挑,啊不对,是劈砍刺截扫挂挑,剑招耍起来龙飞凤舞,飘洒大方,行走江湖,哪个侠客不会几手剑招?颜值高的的学落英剑法,悟性好的的练成独孤九剑。
JAVA,也可以称作编程语言之君了,从95年正式创立以来,经过众多java程序员的发展,从sun到oracle,这门语言不仅没有沉寂下去,反而越发壮大,虽然每年都有人说java是不是不行了,可是按照目前的生态来说,java语言的坚挺不容置疑:
  • 从语言特性的层面上来说,对于锁、gc、并发包的优化,引入函数式编程、闭包;
  • 从框架的角度上来说,服务微型化的springboot,大数据的Hadoop,让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语言的专家,这只是我几周以来学习的主观感受,如果有不同的意见,欢迎留言,
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值