您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

架构选型之Nodejs与Java

时间:2019-08-30 10:57:31  来源:  作者:

前言:

身边越来越多的同事谈论Nodejs,谈其异步IO、事件回调、前后台统一一门语言,创业的朋友的第一个创业项目也选择了Nodejs,期望能够使用一种语言节省成本快速完成需求开发。与其他项目组的同事聊项目选型JAVA时被他们嘲笑了一把,怎么这么不与时俱进怎么还在用Java。而且发现,越来越多的前端同事通过Nodejs轻松上手后端功能开发,作为后端开发工程师倍感压力。

借新项目的机会系统了解了下Nodejs的知识体系,本文对了解到的Nodejs技术作了总结,同时将其与Java的相关技术进行了总结对比,为其他考虑两种语言选型的架构师提供选型的决策依据。为了避免争议,本文避免对选型语言的推荐,也不对未来的发展趋势做出预测。

 

语言背景分析:

简单对两门语言进行“拼爹”对比,发现有技术深度的事情还是博士比较擅长,计算机专业的技术又未必是计算机专业的人贡献:

架构选型之Nodejs与Java

 

语言及SDK分析:

Nodejs选择JavaScript语法导致了其灵活、面向过程、单进程单线程执行的基本特性。然而得意其语言的灵活性,一些面向对象的特征也可以通过逻辑代码实现,但受阻于ECMAScript的发展速度,整体上Nodejs向企业级应用语法转型还暂时较慢。Nodejs主打的异步IO事件回调使其更适合服务器的编程,其单进程单线程的特质使得开发变得简单。得意与社区的活跃语言处于高速发展、SDK不断地发展稳定丰富。

相比之下,Java是面向对象的具备了面向对象的全部特征,经历了20年的发展沉淀越发的强大、稳健。与Nodejs相比Java是个在各个领域作精作深的技术巨人,然而也正因如此,学习Java的成本要比Nodejs高很大一个台阶,每一个小的技术方面都能找到很厚的一本书来。面对异步IO事件回调的新技术Java也在其新的SDK中提供支持与时俱进,相关Java的开源项目也及时跟进。

架构选型之Nodejs与Java

 

三方开源框架选型:

语言选型后面即框架选型,好的框架可以去除很多不必要的重复工作使项目轻松获取强大的功能。当然三方开源框架的引入也带来的相应的学习成本,同样的,Nodejs框架由于发展时间相对较短学习成本相对较低,开发人员更容易了解到更多底层的实现源码,但相对的部分框架容易出现稳定性兼容性问题,加之NPM开发人员水平不一而又没有很好的审核机制,选择一些模块(尤其是C/C++模块)时需要慎重。Java三方开源框架大都已被大量企业大量使用、成熟稳定,提供强大能力的同时作了很好的封装分层,开发人员付出较高的学习成本后更多的是“傻瓜“式的使用。就WEB开发体系而言,两者都可以找到很多可服用引入的开源框架。

架构选型之Nodejs与Java

 

产品化分析:

就产品化而言,Nodejs虽然在各个方面都有建设,但相对Java还有很多需要继续完善发展的地方,如系统监控和性能分析领域还不如Java体系那么完善,受限于单进程单线程模式稳定性部署方面还不如Java那么灵活,灵活的脚本语言加上Nodejs发展时间相对较短使得系统的安全性还需要经受更多的考验。同时,前后端代码都可以使用到js并同时保存在一个开发分支时,单纯的依赖目录去区分前后端代码,容易造成前后端代码的混淆,相对不够清晰。但相信争议和问题都是暂时的,高速发展的Nodejs会逐步完善完美。

架构选型之Nodejs与Java

 

 

执行引擎分析:

在浏览器方面V8引擎大名鼎鼎赞不绝口,这也是Nodejs选型V8这个最快的Javascript执行引擎的原因。然而另一方面,V8引擎专门针对浏览器的设计也严重限制了Nodejs在服务器领域的大有作为,仿佛带着手链脚链在高速奔跑。因V8引擎的创始人和技术都是来自Java虚拟机,使用了部分Java虚拟机技术适配浏览器业务实现,所有相比之下Java虚拟机更加的成熟完善,也必然相对的复杂沉重。

架构选型之Nodejs与Java

 

其他一些对比:

其他一些简单对比如下:

架构选型之Nodejs与Java

 

 

结束:

Nodejs的异步IO、事件回调虽是杀手锏能力,但其他程序开发语言也都有相应的跟进支持,但Node成功将前后端统一一门语言开发,这绝对是无人能及,吸引了大批的开发者加入。得益但又受限于V8引擎,其发展还带着包袱,但Nodejs还年轻还处在高速发展中,相信随着IO.js与Node.js合并、越来越多的开发者进行共建,Node会越来越稳定成熟。

相比之下Java是编程领域的巨人,20年的发展,越发的成熟稳定,形成完善的体系完善的生态,Android的流程再次将这门语言推到了巅峰,架构选型永远是个重点选项。

希望本文能帮助到您!

点赞+转发,让更多的人也能看到这篇内容(收藏不点赞,都是耍流氓-_-)

关注 {我},享受文章首发体验!

每周重点攻克一个前端技术难点。更多精彩前端内容私信 我 回复“教程”!

原文链接:https://yq.aliyun.com/articles/54118?spm=5176.10695662.1996646101.searchclickresult.430d6b70LRw1Hk

作者:泉石



Tags:架构   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
为了构建高并发、高可用的系统架构,压测、容量预估必不可少,在发现系统瓶颈后,需要有针对性地扩容、优化。结合楼主的经验和知识,本文做一个简单的总结,欢迎探讨。1、QPS保障目标...【详细内容】
2021-12-27  Tags: 架构  点击:(5)  评论:(0)  加入收藏
前言 单片机开发中,我们往往首先接触裸机系统,然后到RTOS,那么它们的软件架构是什么?这是我们开发人员必须认真考虑的问题。在实际项目中,首先选择软件架构是非常重要的,接下来我...【详细内容】
2021-12-23  Tags: 架构  点击:(7)  评论:(0)  加入收藏
现有数据架构难以支撑现代化应用的实现。 随着云计算产业的快速崛起,带动着各行各业开始自己的基于云的业务创新和信息架构现代化,云计算的可靠性、灵活性、按需计费的高性价...【详细内容】
2021-12-22  Tags: 架构  点击:(10)  评论:(0)  加入收藏
我是一名程序员关注我们吧,我们会多多分享技术和资源。进来的朋友,可以多了解下青锋的产品,已开源多个产品的架构版本。Thymeleaf版(开源)1、采用技术: springboot、layui、Thymel...【详细内容】
2021-12-14  Tags: 架构  点击:(21)  评论:(0)  加入收藏
本系列为 Netty 学习笔记,本篇介绍总结Java NIO 网络编程。Netty 作为一个异步的、事件驱动的网络应用程序框架,也是基于NIO的客户、服务器端的编程框架。其对 Java NIO 底层...【详细内容】
2021-12-07  Tags: 架构  点击:(17)  评论:(0)  加入收藏
前面谈过很多关于数字化转型,云原生,微服务方面的文章。虽然自己一直做大集团的SOA集成平台咨询规划和建设项目,但是当前传统企业数字化转型,国产化和自主可控,云原生,微服务是不...【详细内容】
2021-12-06  Tags: 架构  点击:(23)  评论:(0)  加入收藏
背景在日常工作中,我们通常需要存储一些日志,譬如用户请求的出入参、系统运行时打印的一些info、error之类的日志,从而对系统在运行时出现的问题有排查的依据。日志存储和检索...【详细内容】
2021-11-23  Tags: 架构  点击:(22)  评论:(0)  加入收藏
zookeeper动物管理员,是一个很形象的名字,是一个分布式协调服务。它可以用来做分布式配置管理,服务注册及发现,分布式锁。在CAP中,属于CP型。下图是zookeeper的架构图: 图中,绿色的...【详细内容】
2021-11-16  Tags: 架构  点击:(38)  评论:(0)  加入收藏
如何设计一个好的软件架构,如何提高软件的扩展性,移植性,复用性和可读性?很多做嵌入式开发的朋友经常会遇到这种情况:一个项目软件设计完成了,客户提出了一些新的功能需求。这时侯...【详细内容】
2021-11-08  Tags: 架构  点击:(35)  评论:(0)  加入收藏
架构是数据仓库建设的总体规划,从整体视角描述了解决方案的高层模型,描述了各个子系统的功能以及关系,描述了数据从源系统到决策系统的数据流程。业务需求回答了要做什么,架构就...【详细内容】
2021-11-03  Tags: 架构  点击:(35)  评论:(0)  加入收藏
▌简易百科推荐
为了构建高并发、高可用的系统架构,压测、容量预估必不可少,在发现系统瓶颈后,需要有针对性地扩容、优化。结合楼主的经验和知识,本文做一个简单的总结,欢迎探讨。1、QPS保障目标...【详细内容】
2021-12-27  大数据架构师    Tags:架构   点击:(5)  评论:(0)  加入收藏
前言 单片机开发中,我们往往首先接触裸机系统,然后到RTOS,那么它们的软件架构是什么?这是我们开发人员必须认真考虑的问题。在实际项目中,首先选择软件架构是非常重要的,接下来我...【详细内容】
2021-12-23  正点原子原子哥    Tags:架构   点击:(7)  评论:(0)  加入收藏
现有数据架构难以支撑现代化应用的实现。 随着云计算产业的快速崛起,带动着各行各业开始自己的基于云的业务创新和信息架构现代化,云计算的可靠性、灵活性、按需计费的高性价...【详细内容】
2021-12-22    CSDN  Tags:数据架构   点击:(10)  评论:(0)  加入收藏
▶ 企业级项目结构封装释义 如果你刚毕业,作为Java新手程序员进入一家企业,拿到代码之后,你有什么感觉呢?如果你没有听过多模块、分布式这类的概念,那么多半会傻眼。为什么一个项...【详细内容】
2021-12-20  蜗牛学苑    Tags:微服务   点击:(9)  评论:(0)  加入收藏
我是一名程序员关注我们吧,我们会多多分享技术和资源。进来的朋友,可以多了解下青锋的产品,已开源多个产品的架构版本。Thymeleaf版(开源)1、采用技术: springboot、layui、Thymel...【详细内容】
2021-12-14  青锋爱编程    Tags:后台架构   点击:(21)  评论:(0)  加入收藏
在了解连接池之前,我们需要对长、短链接建立初步认识。我们都知道,网络通信大部分都是基于TCP/IP协议,数据传输之前,双方通过“三次握手”建立连接,当数据传输完成之后,又通过“四次挥手”释放连接,以下是“三次握手”与“四...【详细内容】
2021-12-14  架构即人生    Tags:连接池   点击:(17)  评论:(0)  加入收藏
随着移动互联网技术的快速发展,在新业务、新领域、新场景的驱动下,基于传统大型机的服务部署方式,不仅难以适应快速增长的业务需求,而且持续耗费高昂的成本,从而使得各大生产厂商...【详细内容】
2021-12-08  架构驿站    Tags:分布式系统   点击:(23)  评论:(0)  加入收藏
本系列为 Netty 学习笔记,本篇介绍总结Java NIO 网络编程。Netty 作为一个异步的、事件驱动的网络应用程序框架,也是基于NIO的客户、服务器端的编程框架。其对 Java NIO 底层...【详细内容】
2021-12-07  大数据架构师    Tags:Netty   点击:(17)  评论:(0)  加入收藏
前面谈过很多关于数字化转型,云原生,微服务方面的文章。虽然自己一直做大集团的SOA集成平台咨询规划和建设项目,但是当前传统企业数字化转型,国产化和自主可控,云原生,微服务是不...【详细内容】
2021-12-06  人月聊IT    Tags:架构   点击:(23)  评论:(0)  加入收藏
微服务看似是完美的解决方案。从理论上来说,微服务提高了开发速度,而且还可以单独扩展应用的某个部分。但实际上,微服务带有一定的隐形成本。我认为,没有亲自动手构建微服务的经历,就无法真正了解其复杂性。...【详细内容】
2021-11-26  GreekDataGuy  CSDN  Tags:单体应用   点击:(35)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条