目前Java码农,还有必要从0基础学go语言吗

如果你是一名后端工程师那不管你是在大厂,还是小厂我猜你一定听过 Go 语言和云原生。

也许你现在还没接触过云原生,你可能会觉得云原生离自己比较远但其实┅切就在眼前。远的不说你看招聘市场上,Go 和 Kubernetes 的工程师工资明显会高一些。

Go 语言的两个杀手级应用分别是 Docker 和 Kubernetes而 Docker 和 Kubernetes 基本奠定了云原生嘚基本盘,他们的出现和普及让 2010 年就提出来的云原生的概念一下子变得具体化了。

云原生是个很大的词到现在,行业都没有统一的定義但可以确定的是,所有有点规模的公司绝对是在提云原生。

我不知道你现在是什么样的状态是在大厂还是小厂,是 Java 工程师还是 PHP 工程师是运维还是开发,总之从我的角度,特别推荐你看看由极客时间总编辑小盖发起的系列直播活动

恰好 7 月 31 日是个周六。

整体内容峩看了特别有意思,请的专家基本都是行业里的大神平时我们很难接触到。并且小盖说,没广告他就是想把这事做好,这是重点 点击下面的红色按钮就可以预约。

如果你对这场直播感兴趣记得预约,我也会去看毕竟像刘新铭、国柱、Kevin这样的大佬不经常出来讲。

我有朋友是资深程序员目前现茬依据他的兴趣循序渐进的学习Go,而他过去十年一直在利用Java做开发再往前他是利用C ++。

我们探讨过过去他会利用Java为银行和医疗领域的相聚做开发,即便站在今天的时间点上仍旧可以相信java仍旧是首选安全、成熟的技术。

Java的强项是有像Spring这样成熟的框架如果有人要解决业务問题,尤其是那些适合OO数据模型的业务问题用java是很容易实现的。

我们了解的目前在使用Go的团队基本是在搞大数据项目。

我们认为Go会昰java(因为在国内太主流了)的一个备选方案,譬如当你发现你希望某个项目/产品非常有挑战有可能是有技术创新和突破的那类,并且发現Java的优势在这样的项目中不怎么突出那Go一定是不错的选择。

以下可以选读随便聊聊go与java,

侧重在go上因为java在华人社区是最受欢迎的编程語言,虽然在国外早已开始“百花齐放”了


1、Go和Java都是C族语言,这意味着它们共享相似的语言语法因此,Java开发人员经常发现阅读Go代码相當容易反之亦然。Go在语句的末尾不使用分号(';')但在少数情况下除外。对我来说Go的行分隔语句更加清晰易读。

2、Go和Java都使用了我最喜歡的功能之一即垃圾收集器(GC),以帮助防止内存泄漏与C ++不同,C系列程序员必须担心内存泄漏垃圾回收器是使内存管理自动化并因此简化工作的功能之一。Go的GC仅GOGC变量可设置初始垃圾回收目标百分比在Java中,有4个不同的垃圾收集器每个垃圾收集器都有大量的设置。

3、Java囷Go都被认为是跨平台的但是Java需要Java虚拟机(JVM)来解释编译后的代码。Go可以简单地将代码编译为任何二进制文件实际上,我认为Java与Go相比Java嘚依赖程度更低,因为Go每次为一个平台编译代码时都需要您创建一个二进制文件从测试和DevOps的角度来看,分别编译不同平台的二进制文件非常耗时并且跨平台的Go编译在某些情况下不起作用,尤其是当我们使用CGo部件时同时,使用Java您可以在拥有JVM的任何地方使用相同的jar。Go需偠更少的RAM并且不需要任何有关安装和管理虚拟机的事项。

4、反射与Java不同,Go的反射似乎更复杂且不那么明显Java是一种面向对象的语言,洇此除原语之外的所有内容都被视为对象如果要使用反射,则可以为对象创建一个类并从该类中获取所需的信息,如下所示:

这真的佷奇怪尤其不方便,因为如果不更改整个项目代码库的导入就无法用自己的实现替换某人的实现。

在Java中导入通常以公司名称开头,唎如:

区别在于在Go中,go get将转到by.spirascout.public并尝试获取资源在Java中,程序包和域名不必关联


Go和java,谁才是最终答案

不一定有最佳答案,在于你希望鼡他们开发什么项目/产品。。。

Java是行业标准相比之下,现在使用Go做开发的还是比较少基本是些大厂和涉及大数据的项目。

但是我非常喜欢Go。

我认为最好的办法是环顾四周看看每种语言都可以提供哪些工作机会。

无疑你可能不会找到很多Go作业,但是会找到很哆Java

Java更“普通”,即如果您学习Java,那么您也已经学习了一半的C#

借助Go,您已经学到了一些Limbo但实际上,现在全世界大约有4个人在使用Limbo

其实你这个问题很好回答。

首先我们分别看一下互联网大厂对各个岗位的技术要求

Java开发技术工程师



从整体解决方案来讲java可能是无可比拟的。

不管是你要构建一套微服務或者是要做一个通讯服务,甚至是做一个权限管控java都有一整套的框架可用。现实中很多搞java的都是在不停的学框架,一个典型的java架構师往往都是打开spring,或者其它一些框架的官网把一坨一坨的框架源码示例copy下来,然后再在这一坨坨代码中做调整个性化业务定制。莋java开发的“搬砖感”是最强烈的可以分分钟理解为什么程序员被称做码农。

我以前毕业的时候也很纠结安卓,iosphp,javac++,python 都接触过UI和運维普遍大部分从业者是女生,我们来看看Ui岗位职责都有哪些:

1、参与产品需求设计并根据产品需求进行UI设计

2、完成产品UI原型图和效果圖设计

3、完成产品前端需要的各类图片设计

4、参与产品需要的海报图设计

5、参与或指导产品前端研发工程师完成产品UI研发,并进行测试

6、根据用户反馈和产品思路的调整完成对产品UI的调整、优化和升级

而思维逻辑复杂的spring底层框架从事 java 相关工作现在说明,岗位越多的其实机會越大在工作中你还是有机会用到 go,pythonlua 之类的语言的,不用太纠结这个问题本身程序员的我们就是要不断地学习和探索中前进,如果呮是一味的要求工资和市场需求总就会被市场所淘汰。

如果觉得小编写的不错那就点个赞支持一下~

更多IT相关知识等你来解锁~

我要回帖

 

随机推荐