加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

Web开拓较量:Spring Boot与Express.js

发布时间:2019-02-21 18:52:57 所属栏目:建站 来源:爱码农
导读:JavaScript的处事器端开拓比Java更好吗?它也许只取决于正在开拓的应用措施。我此刻可以听到来自Java开拓职员的发声。 从Java开拓职员的角度来看,行使Spring Boot生态体系和JavaScript与Express举办Web开拓的简朴较量。 本文的方针 这是一个不太技能性的
副问题[/!--empirenews.page--]

JavaScript的处事器端开拓比Java更好吗?它也许只取决于正在开拓的应用措施。我此刻可以听到来自Java开拓职员的发声。

从Java开拓职员的角度来看,行使Spring Boot生态体系和JavaScript与Express举办Web开拓的简朴较量。

Web开拓较量:Spring Boot与Express.js

本文的方针

这是一个不太技能性的较量(您可以在其他处所找到更详细的技能较量)。我只想概述当您是一名Java开拓职员时,如安在Node.js中开拓Web应用措施。

以是请记着,这篇文章布满了小我私人意见。

在开始之前,我概述了一些条件:

1. 我是一名行使Java说话的软件开拓职员。我已经开拓了基于Java的软件约莫15年了。

2. 我今朝正在进修JavaScript开拓(自2007年以来我一向在编写前端JavaScript,但处事器端JavaScript已成为它本身的野兽)。

我想要较量什么

我想夸大一下开拓基于Node / Express仓库的应用措施与基于Spring Boot的应用措施对比时所感觉到的一些差别。

为什么我要较量这些

TL; DR:在完成一个签约项目之后,我抉择测试另一个生态体系来搜查它是否可以停止一些Java最受品评的点。

我最后一个客户是一家正在建设加密互换的公司(是的,在当今市场上很常见,但对付一家意大利公司来说并不常见)。他们让我插手他们的团队(三个差异的开拓团队)并辅佐他们成立本身的平台。我首要开拓用于授权和身份验证的微处事,焦点事宜处理赏罚,以及客户的KYC微处事和差异微处事之间共享的代码库等其他对象。

这是一个大而风趣的项目。

但在与其他团队和职员的接头中,我常常听到对基于Java的Web开拓的品评,转而支持Python或Go。其他说话好像没有蒙受Java的一些品评是:

  1. Java很冗长。
  2. Java中的统统都是界面紊乱的。
  3. Java应用措施的内存耗损是压倒性的。
  4. 磁盘空间耗损也也许是压倒性的。
  5. 成长必要许多时刻。

在编写数百个基于Docker的微处事时应该思量行使3.和4.我以为这个局限题目也许是无稽之谈,由于假如你稀有百个微处事运行,你的组织也许是相等有利可图的,你可以买得起“昂贵” “实例支持内存贪心的Java应用措施。

我必需厚道,偶然我以为,在2019年,上述全部五点都是公道的品评,以是我想实行自筹资金项目来测试其他一些技能。

因为我必要举办Web开拓而不必然是基于微处事的项目,在快速(很是快速地)看GO之后,我抉择阻挡这种说话。我以为它是一种很棒的说话(从我读到的内容)但它不得当我当前的项目。

以是我看了Python并开始行使Python,但我必要编写一些JavaScript代码,由于我将行使Puppeteer作为PricePaladin(一种价值跟踪和监控器材)的根基组件, 并在检察了很是好的 说话较量之后 我抉择行使Node.js.

比较 说话

假如您是Java开拓职员,您会发明JavaScript并不难学。当你处理赏罚回调时,你必定会冻结。你会发明Promises,而且在一天竣事时,你将行使async-await语法糖,使统统规复正常。

也就是说,JavaScript听起来有点稀疏,但本日的JavaScript绝对没题目(正如我之前所说,它不是2015年的JavaScript)。它简朴,成果强盛且简捷。

我留下关于动态打字的全部调查功效,在我看来,这并不是什么大不了的事。

Node.js是单线程的

好的,对付Java开拓职员来说,,这是最“令人震惊”的工作之一。但半晌之后震惊消散了。您应该思量统统都在一个线程上运行(在任何Java Web应用措施上,您有多个线程),而且回调函数(异步函数)在执行它们时列队并执行,但全部代码都在单个线程上运行(Node.js的速率和低内存耗损的要害)。从Java开拓职员的角度来看,这意味着:

1. 不要运行CPU时刻麋集型代码,不然在执行新的列队成果之前,全部内容都将守候CPU空闲。

2. 假如呈现题目而且Node.js瓦解,那么 统统城市 瓦解:在Web应用措施处事多个并发哀求的环境下,全部哀求城市瓦解。您没有Java Web应用措施的断绝。

JS相等于Spring Boot Ecosystem:Express.js,Passport.js,Sequelize

假如我们仅限于与MVC Web应用措施部门的较量,Spring Boot绝对长短常棒的:轻便,快速,完备且极其可设置。从这个角度来看,与Express.js提供的对比,Java开拓职员并没有任何重大缺陷。

Express.js也提供沟通的潜力。按照小我私人咀嚼,可以更好地领略或不是路由:不是在Java注释级别界说,而是在路由文件级别界说。

更一样平常地说,Spring Boot暗示将代码组织到包(模子,处事,节制器)中的很是准确的要领,而在Express.js上下文中则没有这样的指导。尽量云云,可以从头应用相同的代码布局,而且凡是有一些项目标代码布局与Spring Boot项目相同。

对付身份验证部门,Spring Security是“终极器材”......但假如用于某些出格伟大的环境,它也是“顺从的野兽”。JavaScript对应的是Passport.js,它很是强盛,但布局和成熟度较低。然而,您感受它可以或许处理赏罚与Spring Security沟通的环境和前提。在任何环境下,该框架也普及支持开拓通用认证机制,譬喻JWT认证或其他常见的auth机制。Spring Security的成熟度尚未与Passport.js相匹配,但我以为Spring Security提供的80%的成果也是在Passport.js中实现的,偶然辰更简朴。

从我的概念来看,Java中的ORM一向是Java应用措施的致命瑕玷。Java尺度大抵是Hibernate(尽量有各类百般的选择,无论何等普及,如Jooq和MyBatis),而对付与相关数据库相干的JS天下,最受接待的库是Sequelize。

Hibernate与Sequelize

TL; DR:Hibernate如故是最完备,最成熟,最通用的办理方案,但本钱很是高!Sequelize也许会包围90%的用例。

我不厌恶Hibernate,但我必定不喜好它。它过于计划,迟钝而伟大。它就像一头大象。可是,它可以对任何受支持的数据库执行任何操纵。相反,Sequelize小而简朴但无法打点全部用例。

我通过行使Sequelize发明的一些工作:

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读