本人 Java 工程师,最近换工作,碰到字节和 B 站的后端岗位要求用 Go 。想问问各位 Java 或者 Go 工程师,现在是否有必要去学习 Go,未来职场收益如何?或者说 Go 会不会替代 Java,如果有 Java 转 Go 经验的大佬来谈一谈更好。
Java 不会替代 Go,Go 也不会替代 Java,在他们各自的优势场景他们都有无可替代的地位。只不过当前看来 Go 的学习成本比 Java 低,而工程性价比又高于 php 、c++一众,因此会有很多创业公司或非 Java 系大厂逐步选择迁移到 Go,而原本的 Java 系公司我相信还是会坚持 Java 路线
经历过多次各式各样的技术栈的更迭, 看了下 tiobe, 前十除了 VB 和 C#基本已经集齐了, 就从两个方面来聊聊吧, 简单的说, 推荐去学一下
1 职场使用
目前你听过的大厂基本分几种, 阿里美团多多主要是 JAVA, 当然也有少数用 C++的部门, 比如搜索等, 目前也没有听说他们内部有什么要换技术栈的声音, 说实话也没必要
百度应该还是 C++为主, 字节是 Golang 为主, 腾讯分不同的 BG, C++, Golang, JAVA 全都有
所以从这个角度看, 三种语言其实都有去处, 你也不可能保证你去的地方一定就用什么语言
2 学这肯定都是要学的
作为一个后台开发, 一门为了几万人的巨型大厂的软件工程而设计的语言你不太能错过啊, 自带代码风格工具, 模块管理, 你用 JAVA, 在 MAVEN 这里 肯定也踩了不少坑了吧. 你看下 C++ 20 的更新, 看下 project loom, 在很多场景下, Golang 的代码是不需要思考异步的问题, 这样代码的维护成本马上降低一大截, Golang 的协程实现以及 GC 实现都很精彩, 你认真学习之后回头再看 JAVA, C++的类似功能也能让你触类旁通,反之也是一样
我在 16 17 年的时候开始接触 Golang, 后来换了工作, 是几乎全 JAVA 的环境, 但是我还是坚持去学 Golang, 看优秀的项目, 看新出的特性, 之后又有了需要用 Golang 的场景, 你的职业生涯很长, 很有可能过了几年看你已经集齐了十二星座了, 多学点没坏处的
推荐一篇周志明大佬(深入理解 java 虚拟机作者)的文章《云原生时代,Java 的危与机》
https://www.infoq.cn/article/RQfWw2R2ZpYQiOlc1WBE
这种问题每次争了半天谁也不服谁,也没啥意思,我也不想说技术或者业务方面了。
我说点实际的,不一定对,能引发一些思考就是好的,最后觉得我说的不对我也无所谓:
总得来说 Java 最终肯定还是会有很多市场的,Go 肯定也不会完全替换 Java,但是应该多从未来从业者的求职角度思考(薪资,供需比,文化等),而不是纠结最后 Java 是不是还适合写业务,现在这几个大厂最后还用不用 Java,论写业务优秀吊打 Java 的语言有一打,但是对于题主的问题回归的是市场。
如果上面说的不够直观的话,英文好可以搜搜 90 年代的 C++ 和 Java 之争,当时 Java 还是小众玩具,大部分业务还是 C++写的。C++党基本上以轻视为主,打击 Java 功能垃圾为辅。像这种帖子最常见的论点「场景不一样,不可能替代」虽然没错,但是并不能反应最后的市场走向,因为不仅其实大部分业务可以用 Java,到现在像网络游戏之类不适合 Java 的都在强行 Java 。
如果套用美苏冷战思维看的话,某个时间的确两边实力差不多,但是双方发展的速度完全不一样,那么结局很可能已经注定了。