首先要看你的需求,如果是跨硬件平台,那么Python、Golang相对不错。如果是边缘设备也是这两个。
大厦不能建立在沙地上,房子也不能盖好了之后总是拆了修理地基。因此选择什么类型的技术栈和基础产品很重要。这个是为了规避未来的风险。
开发语言上有很多选择:Java,Python,Go语言
指标 | Java | Golang | 备注 |
人好招吗 | 容易 | 较少 | Java太多了,转Golang的人比较多。 |
学习门槛 | 高 | 低 | Java的体系比较庞大,学习周期长 |
内存占用 | 高 | 很低 | EdgeX从Java改Golang之后内存占用少了80% |
启动时间 | 很慢 | 很快 | EdgeX改Golang后微服务启动时间从30秒变成0.5秒 |
边缘设备支持 | 折腾多 | 折腾少 | 物联网边缘设备需求越来越强。 |
性能 | 高 | 更高 | 最新的测试是高一丢丢。 |
并发 | 高 | 高 | Golang天生高并发 |
省钱? | 需要更多的硬件 | 省钱 | Golang硬件利用率高,更节省设备费 |
易部署? | 慢 | 快 | Golang编译一个可执行文件就可以跑起来 |
框架体系 | 发达 | 一般 | Java人多势众,框架多 |
发展趋势 | 逐步衰落 | 逐步上升 | TIOBE编程语言排行榜。 |
易维护 | 代码难度大 | 代码易读 | 面向过程性的代码比面向对象抽象代码易读。 |
常见物联网开发所使用的语言(代表过去的选择)
产品名 | 开发语言 |
ThingsBoard | java11,angular9/vue |
NodeRed | JS |
netdata | C |
grafana | Typescript |
mainflux | go |
kaa | java,go |
EClipse IoT(Kura) | java |
home-assistant.io/ | python |
SiteWhere | java,MongoDB |
ThingWorx | java |
DeviceHive(no update) | PostgreSQL,java |
Zetta(no update) | nodejs |
openremote | java |
亚马逊云 | - |
Blynk | C++ |
particle-iot | JS,C,Java |
thinger | java |
jetlinks | java,Reactor(VUE) |
Cayenne | java |
airiot | go、react |
EMQX | erlang |
EdgeX Froundry | golang |
zettajs.org | Node.js |
Jetlinks | Java |
ThingsPanel | Golang vue |
Java最成熟,人也好找,不过长江后浪推前浪,Java的未来不是那么看好。
从根本上来说,你能驾驭的住,能实现目的就是好语言。
从我们的角度来说,我们推荐go语言(golang),最早我们的系统是PHP做的,发现了很多性能各方面的问题,后来重做改成了golang,切换技术栈的原因是,整体投入产出比目前看Golang是最高的。