项目选型nodejs与java、golang那个好

特性 nodejs java golang
最早发布时间 2009 1996 2012
流行web框架 express/Sequelize springboot/springcloud gin/gorm
多线程 v10.5.0后支持 原生支持 原生支持
协程 支持 暂不支持 支持
面向对象 原生不支持,可模拟,不支持多态 原生支持 面向过程,不支持继承
异常处理 不够完善,容易产生性能问题 稳定成熟 较完善
标准库 高速发展中 稳定完善 完善
异步IO 语言级别支持 1.7后支持NIO 协程支持
健壮性 单线程单进程模式,通过负载均衡、自杀重启提升能力 支持多线程,支持多核,更加灵活可靠 支持多线程,支持多核,更加灵活可靠
注解、反射、泛型 原生支持 支持反射,泛型尚未成熟
扩展性 C/C++编写的逻辑扩展 支持C/C++/及其他可被JVM执行语言编写的逻辑扩展 支持跨各种语言调用
垃圾回收 分代回收 普遍分代回收,有多种垃圾回收算法可供选择 标记清除
必备知识体系 浏览器平台+nodejs linux、数据库、网络、高并发、系统监控 linux、数据库、网络、高并发、系统监控
杀手锏         IO密集场景表现优秀 生态圈强大活跃 与k8s是兼容性好、可编译成二进制原生部署

架构选型建议:

统治级别领域,任何老板盲选的最优选择,特殊需求才选择其他

大数据、AI :jvm类语言、python人脉广泛

算法、内核级别:c/c++几十年沉淀,新挑战者力量尚且不足

灵活领域,需要综合考虑人力成本与硬件成本

中小企业:nodeJs容易培养全栈人才,资源利用率高,节省机器,人力成本与硬件成本有极大诱惑力,

大厂:大型项目中NodeJs健壮性尚且不足以挑战传统Java、golang等强类型语言,但胜在追求性能极致,适用于某些高并发/高性能领域,如美团网的订单吹,知乎“站内信”等

总体而言越接近基础设施层强类型语言越有优势,反之越接近人类具体使用场景则弱类型逐渐被喜爱,毕竟相同结果少写点代码谁都喜欢。

java由于出生早,当下流行android、hadoop等各种领域占据很大比例,短时间不会被后来者替代

当下风口上的云原生主要依托的k8s为golang构建,生态内go也就具备了天然优势。

NodeJs属于业界新秀,javascript使用人员数量极为庞大,极致的高性能也令同行黯然失色,不容小觑。

你可能感兴趣的:(java,golang,开发语言)