5

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

 1 year ago
source link: https://studygolang.com/articles/35491?fr=sidebar
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

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

Java特点

  • 使用JVM层,确定开发者和系统调用的界限;内置自动垃圾回收算法。
  • 编程语言,到可执行汇编前,使用 字节码 协议;多了一层运行时 可编辑 的解释性语法
  • 可执行文件终态是字节码包,可运行于任何安装了虚拟机的操作系统
  • 线程映射至操作系统线程,JVM作为用户态应用存在于宿主机上;IO操作需要用户态到系统态的转移
  • 直接编译为操作系统所需的可执行文件,可执行文件终态为汇编态;
  • 可执行文件运行于Go运行时空间,Go运行时提供自动垃圾回收,程序执行是面向CPU的任务调度
  • 面向CPU的资源调度思想,高效、无用户态和系统态的切换,高IO效率

对比优缺点

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

适合构建的系统

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

判断选择依据

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

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

280

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK