1.浅谈java跟go的区别
1.1什么是java
- Java是一种用于一般用途的计算机编程语言,它是基于类的,并发的和面向对象的。Java专门设计为包含很少的实现依赖项。Java应用程序在JVM(Java虚拟机)上运行。它是当今最着名和最着名的编程语言之一。
- Java是一种用于为多个平台开发软件的编程语言。Java应用程序上的编译代码或字节码可以在大多数操作系统上运行,包括Linux,Mac操作系统和Linux。Java的大部分语法都源自C ++和C语言。
简单说,java就是一门面向对象的高级编程语言,面向web开发非常的方便。框架比较流行的有spring,spring boot ,
spring cloud等等。
1.2什么是go
简单说,go也是一种编程语言,语法类似C语言,但是具有垃圾回收机制,与C++相比,Go并不包括如枚举、异常处理、继承、泛型、断言、虚函数等功能,但增加了 切片(Slice) 型、并发、管道、垃圾回收、接口(Interface)等特性的语言级支持。
go多用于k8s云原生编程,以及一些高并发处理的编程。
2.如何学习go编程
2.1go语言的学习过程
个人推荐三天看完这个go基础教程 : go语言教程
怎么学习基础语法呢?
- 首先学习如何定义变量
- 然后学习如何运行数据结构
- 然后学习如何写函数
- 最后理解golang独有特性
2.2go的特点
并发
Go 作为一门语言致力于使事情简单化。它并未引入很多新概念,而是聚焦于打造一门简单的语言,它使用起来异常快速并且简单。其唯一的创新之处是 goroutines 和通道。Goroutines 是 Go 面向线程的轻量级方法,而通道是 goroutines 之间通信的优先方式。
编译速度
当前我们使用 Go 编写的最大微服务的编译时间只需 6 秒。相较于 Java 和 C++呆滞的编译速度,Go 的快速编译时间是一个主要的效率优势。我热爱击剑,但是当我依然记得代码应该做什么之时,事情已经完成就更好了。
3.go跟java的区别
go语言和Java之间的区别
1、函数重载
Go上不允许函数重载,必须具有方法和函数的唯一名称。java允许函数重载。
2、速度
go的速度比java快
3、多态
Java默认允许多态。而,Go没有。
4、路由配置
Go语言使用HTTP协议进行路由配置;而java使用Akka.routing.ConsistentHashingRouter和Akka.routing.ScatterGatherFirstCompletedRouter进行路由配置。
5、可扩展性
Go代码可以自动扩展到多个核心;而,Java并不总是具有足够的可扩展性。
6、继承
Go语言的继承通过匿名组合完成:基类以Struct的方式定义,子类只需要把基类作为成员放在子类的定义中,支持多继承。
4.个人理解
小编个人觉得编程语言大同小异,只不过开发起来各有优缺点,小编刚毕业的时候是一名C++开发工程师,C++是一门面向对象的编程语言。用起来比C方便很多,但是跟java相比,缺少了很多工具类,很多函数的实现都要自己去写,而且不能跨平台,但是C++也有自己的优点呀,那就是运行速度很快,很多数据上的处理,比java快很多。缺点就是linux跟windows不同版本函数之间还是有一点点区别,也没有垃圾回收机制,自己申请的内存需要自己手动的释放。不过写久了以后,有了自己的封装库,写后台系统也是挺方便的。
后来小编离职了以后来到了一家新公司,这是一家新成立的事业单位,该公司做的项目是偏向云平台的,刚开始做是用的java开发,给前端界面写后台接口,因为小编是前端开发几乎一窍不通,刚来的时候连rest接口是啥都不知道,更不用说nginx是什么了。但是小编花了一周时间学习java语法规范。也不懂spring是啥,于是github上拉了一个项目,看了看源码。理解了下,前后端交互流程。
终于知道一个浏览器发起一个http请求,后端接收到请求如何处理。以及学会了json是什么。怎么使用。很多细节都被框架封装了,业务逻辑自己写就行了,难度不大,一个月就上手了。
写了半年java以后。又开始基于k8s开发一个公有云平台。因为是基于开源平台开发的,源码都是go语言,于是开始往go语言转型。转型过程跟转java差不多。个人更喜欢go,可能是因为以前写C++的缘故,觉得go有点像C,写java太枯燥了,很多java做的web项目没啥技术难度,就是前后端交互,把数据存在缓存,或者数据库,进行数据处理,存起来或者返回给前端。技术难度不大,也可能因为做业务,本身就这么枯燥吧。
因为java被封装过的工具太多了,所以小编每次用完工具类封装的功能都会看看源码都是怎么实现的,这个好习惯保持到现在,对自己的基础能力有了很大的提升。反正做it行业本来就是不断学习的过程,一天积累一点就行了。