在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
历史背景这里给不了解历史的同学先介绍一下背景。EdgeX的前身是Dell的Fuse项目(它是一个开源的物联网平台,包含超过12个微服务以及125000行净代码量),后由Dell将源码捐赠给Linux基金会并发起了EdgeXFoundry。 说得更直白一点,Fuse(也即EdgeX早期)主要是基于Java语言(JVM平台)来实现的,微服务采用的是Spring Boot来构建。但到目前为止,已基本确定用Go语言(Golang)来改写或重新实现,目前基于Go语言实现的主项目为edgex-go(https://github.com/edgexfoundry/edgex-go,其他的仓库可以不必关注了,除非你对历史比较感兴趣),这也是即将在6月份发布的加利福利亚版本的主要任务之一。 那么,EdgeX为什么要做出弃Java转Go的决定呢(要知道原先的Java版本从功能层面上来看已经比较完备了)?其实EdgeXFoundry官网早已解释过这个原因(点击“阅读原文”查看),这里我们摘取其中的核心点进行说明。 Java VS Go由于Go编译为可执行文件,因此即使先不考虑Java应用程序的运行需要JVM,单就应用程序的大小而言Go的可执行文件也远远小于Java的可执行文件。 下面给出了一幅图来对比EdgeX核心微服务的原始Java JAR与Go可执行文件大小,Docker容器中这些相同微服务的大小也显示在图表的右侧。 Java容器镜像大小的确包含Java的JVM - 因此,在查看Java容器时,它们占用的空间更大: 但是Java作为一个存在了如此之久的语言,它有生态优势,这一点很显然是新兴的Go Lang语言所无法相提并论的,这是项目主导者Jim White担心的点之一。 总结无论如何,在EdgeX项目上,Java与Go之战的大局已定,采用Go Lang来重写绝大部分的EdgeX微服务已是板上钉钉。 其实除了EdgeX,Go Lang也正在成为服务端、网络、IoT等开发领域的新宠。而且语言本身开发效率也非常高,值得大家学习。
|
请发表评论