Java与Go的特点对比和分别适合用于构建什么类型系统软件?

Kilin · 2022-03-01 17:39:36 · 1514 次点击 · 预计阅读时间 1 分钟 · 大约8小时之前 开始浏览    
这是一个创建于 2022-03-01 17:39:36 的文章,其中的信息可能已经有所发展或是发生改变。

Java特点

  • 使用JVM层,确定开发者和系统调用的界限;内置自动垃圾回收算法。
  • 编程语言,到可执行汇编前,使用 字节码 协议;多了一层运行时 可编辑 的解释性语法
  • 可执行文件终态是字节码包,可运行于任何安装了虚拟机的操作系统
  • 线程映射至操作系统线程,JVM作为用户态应用存在于宿主机上;IO操作需要用户态到系统态的转移

Go特点

  • 直接编译为操作系统所需的可执行文件,可执行文件终态为汇编态;
  • 可执行文件运行于Go运行时空间,Go运行时提供自动垃圾回收,程序执行是面向CPU的任务调度
  • 面向CPU的资源调度思想,高效、无用户态和系统态的切换,高IO效率

对比优缺点

  1. Java字节码的存在,可在运行时动态修改执行指令;为开发提供动态配置的优势,例如:注解的使用、SpringBoot的自动化配置
  2. Go编译压缩率高,同等功能实现,运行态 占用内存小 很多,并且直接运行(不需要类似Java的JVM)
  3. Go是面向CPU的任务调度,硬件使用率很高;尤其是IO操作
  4. Java应用可在启动初始时,实现自动化配置,配置文件简单

适合构建的系统

  • Java适合构建流水式、日志式数据系统,业务系统;生态全面。 例如:财务系统、日志系统
  • Go适合构建高IO、硬件调度类、运维辅助类; 例如:内存数据库、DevOps、视频图片处理,文件服务

判断选择依据

  • 专注于硬件资源的使用,或解决硬件资源占用过多的问题;建议使用Go
  • 想要运行期出现问题迅速定位和解决,快速处理因软件系统导致的运营过程中的问题,请使用Java。

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1514 次点击  ∙  2 赞  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传