golang和java开发选哪个?为什么?

黄淑辰


大家好,我是阿迈达,有趣的互联网软件工程师。专业角度分析技术原理,默的态度解读科技互联网资讯。

Java是目前最火、最流行的编程语言,在编程语言排行榜稳居第一。Golang以其简单的语法、快速入门、高并发等特点越来越受欢迎,得到了很多程序员的喜欢。在项目开发中我们如何在两者之间选择呢?

Java适合所有项目的开发

Java基本适合任何项目的开发,尤其是Web项目开发,不管是什么类型的Web项目,包括电商、培训、金融等行业,Java都是最佳选择。Java有丰富的框架和第三方中间件集成方案。例如目前最流行的SpringMvc、SpringBoot框架等,使用这些框架可以让我们快速构建一个Web项目,我们只需要关注具体的业务实现。而对于像Kafka、Redis、Mysql、Apollo、Netty等第三方中间件,Java都有提供相应的集成方案。不管是弱事务性业务还是强事务性业务,Java的框架都进行了底层封装,对于开发人员来说不需要过度的关注底层细节,所以,Java是最佳、最广泛的选择。



业务简单,高并发选择Go

Golang作为后起之秀,其高并发特性得到了很多高并发项目的青睐。小编阿迈达本人也是Go语言的开发者之一,并且将公司的一个高并发项目用go语言进行了重构,取得了非常不错的性能提升。Go语言的生态目前还在慢慢发展中,很多组件都不太成熟,如果是一个相对复杂的Web项目,不建议选择使用Go语言。因为目前为止,还没有一个相对完善的Go web框架,很多东西需要开发人员去自己实现,重复造轮子。但如果你的项目业务逻辑相对简单,并且并发量非常大,可以考虑选择使用Go语言,它在高并发性能会让你眼前一亮。



总结

根据项目业务逻辑的复杂度选择Java或者Go,如果业务逻辑复杂,需要集成很多中间件,建议选择Java,如果业务逻辑简单,并发量大,选择Go语言。


阿迈达聊技术


一个非常好的问题。Java是当前使用最普遍的编程语言,Go是冉冉升级的新星。根据最新2020年4月份的TIOBE编程语言指数排行榜,排名前三的分别是Java、C、Python,Go排名在第12位。

TIOBE编程排行榜根据全球工程师、课程和搜索引擎数量为指数得出,在一定程度上反映了编程语言的发展趋势。

一,编程语言

从编程语言本身来说,Java首次推出在1995年5月,Go在2009年11月正式推出。


1,Java

两种语言各有特点,Java经历了20多年,一直在不断更新推出新版本。2009年Oracle收购Sun公司后,Java发展得到了大力支持,现在使用非常多的Java8发布于2014年,当前最新版本是Java14。和早期版本相比,从Java8开始,吸收了越来越多的现代化编程语言的优点,比如lambda表达式。


2,Go

Go由Google的三位大神开发,Robert Griesemer,Rob Pike 及 Ken Thompson,是一种静态强类型、编译型语言,语法与C相近,功能更丰富:内存安全,GC(垃圾回收),结构形态及并发计算。在2016年,Go被软件评价公司TIOBE 选为“TIOBE 2016 年最佳语言”。

二,学习难度

1,Java

Java是一种静态面向对象编程语言,继承了很多的C++优点,功能强大、简单易用、跨平台可移植,具有多线程、分布式等特点。入门学习不难,随着项目经验的积累逐步提升进阶。

2,Go

Go也是一种静态的编译型语言,语法和C相近,但是采用了不同的变量声明方式。Go支持垃圾回收功能,并行模型是以通信顺序进程(CSP)为基础,自1.8版本开始支持插件Plugin,能动态加载部分函数。从2.0开始支持泛型。

相比Java,Go内嵌了关联数组数据库类型,也称为哈希表Hashes或字典Dictionaries,就像字符串类型一样。

三,发展前景

考虑发展前景的话,推荐学习Java语言。Java是当前的主流开发语言,普遍使用在Web开发、电商系统、企业信息管理等各种行业场景。


Java社区非常活跃,各种文档和学习资料非常丰富。因为使用广泛,所以很多同事朋友沟通交流。


开发框架也是降低学习难度的有力工具,Spring框架是Java开发时常用框架,有非常丰富的组件和易用的功能,Spring Boot和Spring Cloud更是简化了开发过程中的琐碎工作,自动化配置依赖模块、开箱即用和约定优于配置,这些策略使得Spring框架在快速开发领域非常受欢迎。

我是工作多年的Web应用架构师,陆续发布关于软件开发方面的文章,欢迎关注我,了解更多IT专业知识。


急速马力快de源码控


我是十年程序猿,分别用过c,java,golang开发业务代码并有丰富的开发经验。我们先比较下golang和java的特点:

从功能上来讲,java可以做到的,golang也可以做到,golang能实现的,java也都能实现;从软件集成角度看,java发展了这么多年,一些第三方的工具和类库非常丰富,golang则有些逊色,但是最近几年golang发展迅速,也在迎头赶上。从资源使用上来看,java比较臃肿,而golang比较轻量。java程序运行起来动辄1G以上内存,但是一个golang程序可能只需要100M内存就可以完美的run起来。golang的资源节省非常的明显。从开发成本来看,java程序员,一抓一大把,价格低廉;golang程序员则比较稀缺,笔者所在公司的hr曾经在智联招聘的后台过滤有golang开发经验的工程师,只找到30份简历。

以上就是他们的对比,各有千秋对不对?那如何选择呢?



在我看来,开发语言选哪个,绝对不是程序员自己想用哪个就用哪个的,而是要根据业务场景而定的。如果你做的产品是平台类的,上面要跑很多微服务,而且很多微服务是要跑在不同的用户空间里,那你可能更在意服务的资源消耗,因为云服务器是花钱的嘛,在这种业务场景下,使用golang就比较合适,因为它更能帮你省资源,省下来的资源就是利润。而如果是给甲方做项目,那基础设施就是甲方提供的,那在这种情况下,你就没必要省着用了,甚至有些甲方爸爸是国企,还要靠这个申请经费呢,那在这种情况下,就可以很安心的用java开发啦。

以上是我的回答,望采纳。有疑问也可以私信给我。