go还是java?

先说结论,如果是初学者 建议java入门  如果已经有工作经验,建议学一下go

Go 的整个生态还没有 Java 那么完善,所以中小厂直接上 Go 的凤毛麟角。所以稳妥起见,Java 为主,Go 为辅是比较合理的选择。

擅长的领域:

go 天生支持高并发

java 工业级应用服务以及安卓

优缺点:

       java目前的问题不在性能,因为jit自动优化后的代码已经跟c匹敌了

        java的问题是真正的项目第三方依赖太多,设计多度,架构臃肿,所以这个时候谁快就不一定了,而go语音只需要标准库就行了 所以在实际工程中 go的表现要优于java,除此之外,go占用cpu资源更少,占用内存更少

go的不足:

  1. 标准库远不如java丰富,
  2. 依赖管理鸡肋
  3. channel如果使用不当,非常容易死锁
  4. 没有现成的Future机制,需要自己实现

但是这些问题都可以解决

java的不足:

  1. 内存,cpu消耗大
  2. 堆内存过大时,实时性高的程序,gc可能无解
  3. jdk体积庞大 spring boot包体积大(微服务架构下问题最突出)
  4. spring全家桶越来越重

每一位java使用者都听说过 “一次编写,到处运行” 同一个class文件运行在不同系统的虚拟机上

但是 现在的云原生以操作系统虚拟化,通过容器实现的不可变基础设施,将程序连同它的运行环境一起封装到稳定的镜像里

所以 java 一次编写,到处运行的优势 已经被容器技术大幅度削弱

java总体是面向大规模,长时间的服务端应用而设计的,严(luō)谨(suō)的语法利于约束所有人写出较一致的代码;静态类型动态链接的语言结构,利于多人协作开发,让软件触及更大规模;即时编译器、性能制导优化、垃圾收集子系统等Java最具代表性的技术特征

但是在微服务的背景下,提倡围绕业务能力,而非技术能力来构建应用,不在追求实现上统一。

一个系统由不同语言,不同技术框架所实现的服务来组成是完全合理的;服务化拆分后,很可能单个微服务不再需要再面对数十、数百GB乃至TB的内存;有了高可用的服务集群,也无须追求单个服务要7×24小时不可间断地运行,它们随时可以中断和更新。同时,微服务又对应用的容器化亲和性,譬如镜像体积、内存消耗、启动速度,以及达到最高性能的时间等方面提出了新的要求

而这些都是java的弱项,哪怕最小的java程序,也必须带着虚拟机和标准类库,使得镜像拉取和创建效率低,而java生态中采用的依赖注入,又进一步增加了启动时间,使得容器冷启动的时间很难缩短。

为什么云原生对java的启动时间这么在意?

因为现在讲究在没有用户负载进来的时候,完全停止,让出资源,一旦负载进来,由集群编排系统直接拉起对外提供服务,所以需要启动速度

但是现在中小厂还是以java为主 所以建议java入门

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值