【此文章转自乐字节】
一个非常好的问题。Java是当前使用最普遍的编程语言,Go是冉冉升级的新星。根据最新2020年4月份的TIOBE编程语言指数排行榜,排名前三的分别是Java、C、Python,Go排名在第12位。
一,编程语言
从编程语言本身来说,Java首次推出在1995年5月,Go在2009年11月正式推出。
1,Java
两种语言各有特点,Java经历了20多年,一直在不断更新推出新版本。2009年Oracle收购Sun公司后,Java发展得到了大力支持,现在使用非常多的Java8发布于2014年,当前最新版本是Java14。和早期版本相比,从Java8开始,吸收了越来越多的现代化编程语言的优点,比如lambda表达式。
Java 要求开发人员更多地地关注程序的业务逻辑,知道如何创建、过滤、修改和存储数据。系统底层和数据库方面的东西都是通过配置和注解来完成的(比如通过 Spring Boot 等通用框架)。我们尽可能把枯燥乏味的东西留给框架去做。这样做很方便,但控制也反转了,限制了我们优化整个过程的能力。
2,Go
Go由Google的三位大神开发,Robert Griesemer,Rob Pike 及 Ken Thompson,是一种静态强类型、编译型语言,语法与C相近,功能更丰富:内存安全,GC(垃圾回收),结构形态及并发计算。在2016年,Go被软件评价公司TIOBE 选为“TIOBE 2016 年最佳语言”。
Go 不是面向对象编程语言。Go 没有类似 Java 的继承机制,因为它没有通过继承实现传统的多态性。实际上,它没有对象,只有结构体。它可以通过接口和让结构体实现接口来模拟一些面向对象特性。此外,你可以在结构体中嵌入结构体,但内部结构体无法访问外部结构体的数据和方法。Go 使用组合而不是继承将一些行为和数据组合在一起。
Go 是一种命令式语言,Java 是一种声明式语言。Go 没有依赖注入,我们需要显式地将所有东西包装在一起。因此,在使用 Go 时尽量少用“魔法”之类的东西。一切代码对于代码评审人员来说都应该是显而易见的。Go 程序员应该了解 Go 代码如何使用内存、文件系统和其他资源。
二,学习难度
1,Java
Java是一种静态面向对象编程语言,继承了很多的C++优点,功能强大、简单易用、跨平台可移植,具有多线程、分布式等特点。入门学习不难,随着项目经验的积累逐步提升进阶。
2,Go
Go也是一种静态的编译型语言,语法和C相近,但是采用了不同的变量声明方式。Go支持垃圾回收功能,并行模型是以通信顺序进程(CSP)为基础,自1.8版本开始支持插件Plugin,能动态加载部分函数。从2.0开始支持泛型。
相比Java,Go内嵌了关联数组数据库类型,也称为哈希表Hashes或字典Dictionaries,就像字符串类型一样。
Go 也没有继承多态性。被嵌入到结构体里的结构体只知道其自己的方法,对“宿主”结构体的方法一无所知。对于像我这样的开发人员来说,这尤其具有挑战性,因为我们是从其他 OOP 语言(最基本的概念之一就是继承)过渡到 Go 的。
不过,随着时间的推移,我开始意识到这种处理多态性的方法只是另一种思维方式,而且是有道理的,因为组合比继承更加可靠,并且运行时间是可变的。
错误处理。在 Go 中,完全由你来决定返回什么错误以及如何返回错误,因此作为开发人员,你需要负责返回和传递错误。毫无疑问的是,错误可能会被隐藏掉,这是一个痛点。时刻要记得检查错误并把它们传递出去,这有点烦人,而且不安全。
当然,你可以使用 linter 来检查隐藏的错误,但这只是一种辅助手段,不是真正的解决方案。在 Java 中,处理异常要方便得多。如果是 RuntimeException,甚至不必将其添加到函数的签名中。
三,发展前景
考虑发展前景的话,推荐学习Java语言。Java是当前的主流开发语言,普遍使用在Web开发、电商系统、企业信息管理等各种行业场景。
Java社区非常活跃,各种文档和学习资料非常丰富。因为使用广泛,所以很多同事朋友沟通交流。
开发框架也是降低学习难度的有力工具,Spring框架是Java开发时常用框架,有非常丰富的组件和易用的功能,Spring Boot和Spring Cloud更是简化了开发过程中的琐碎工作,自动化配置依赖模块、开箱即用和约定优于配置,这些策略使得Spring框架在快速开发领域非常受欢迎。
最后
祝大家学的愉快,学的神速。
有帮助的话,各位小伙伴可以点个赞收藏支持下啦!❤️
也欢迎关煮lili,一个在变秃,但能带你变强的程序员~
今天先说这么多,我是乐字节哩哩,一个有趣的灵魂!下期见!
最后给大家推荐三个b站超详细的Java和python自学课:
从java零基础到项目实战哦【b站BV: BV1CB4y1A7sk】
十大企业级项目自学课-B站:BV14K411F7HJ
python小白入门到精通完整版b站:BV1Sp4y1W77E
将bv号,复制去b站即可