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

Kilin · · 1392 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

#### 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

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