2017-06-22 23 views
-3

我在这里发布一个有点主观的问题,但我一直没有找到一个风险,但我一直无法找到任何明确的答案。什么时候与传统的Java堆栈(Struts2/SpringMVC)vs现代的JS堆栈(AngularJS,NodeJS等)

我们需要实现一个持久化到Oracle DB中的单一形式的应用程序(长格式)。没有任何Web服务。这里的文化传统上是以Java为导向的,但是可以提供建议。

哪些优点和与去缺点:

  1. 传统的MVC Java堆栈 - 春天,Struts2的或用SpringMVC,休眠
  2. 的JS(现代)堆栈 - AngularJS,的NodeJS,ReactJS

任何明确的解释与优点和缺点的差异,将不胜感激。

正如我所说,我一直无法找到一个合理和可以理解的比较。

回答

3

这是苹果和橘子。我只发布这个答案,因为它超过了评论。首先要挑剔一点,AngularJS是前端技术,您可以将它用于任何后端技术(我使用它与Struts2一起使用)。所以让我们从比较中删除。

第二个挑选你的比较更多的是JS vs Java的选择。如果你做了你的研究,你可以比较NodeJS和Play,Vert.x或类似的东西。不是因为这些框架是“现代”的,而是因为它们共享了一些使NodeJS成为现实的设计目标(Vert.x在意图上非常相似,它具有可比较的速度,非阻塞设计并允许多点编程)。

但是确实有比框架更基础的东西......那就是语言。如果你知道JS,并且你在前端设计上做了一个模型,然后需要开发服务器端服务,并且对另一种语言不太满意,那么当投资于那些繁重的工作时,真的没有意义你可以马上开始做一些有用的事情。无论您需要花费什么样的框架来投入时间,如果您已经了解Java Web框架,为什么还要浪费您的时间来找出其他的东西,这也同样如此(从Java的角度来看)。

最后一个问题不是修辞,认真的为什么浪费你的时间?为了保护JS,你可以用一种语言来保存所有的东西,NodeJS是非常快的,虽然保持比较公平,但有许多Java Web框架Struts2/SpringMVC没有与NodeJS类似的设计目标,而Play,Vert.x,我相信还有其他人会比较公平。 JS有不同的做事方式,如果你有JS忍者,那么这样做是有道理的。至于Java为什么速度快,代码量庞大,从元编程,人工智能,机器人,安全,显然数据库以及所有常见的东西都有API和框架,有很多选择。它更加结构化,最终这意味着几个月后你可以大致了解你在做什么,你可以更好地分享工作和分工。但是,这又有什么关系呢?我不想与公众争论,只有你知道你的要求。考虑他们,并考虑人性,并采取合理的路线。

根据我的经验,人们使用他们所知道的东西,我发现的人常常把头发分配到他们最喜欢的框架上,而别人的东西没有其他原因,那就是他们所知道的。如果您打算利用一些技术工具优势来尝试达成极不可能发生的共识,那么我会建议您先看看您的人力资源能力;我的意思是你可以用Java或JS编写它,无论如何,只有快乐的员工才会产生更多的方式!大多数人宁愿与之合作的东西也不能轻易打折扣。

+1

正如前面提到的那样,因为它会太长,所以我可能会在一段时间后删除这个答案。 – Quaternion

+1

我建议把这个写得很好的答案/评论留在这里,以供具有类似查询的其他人使用。 – Rohit

+0

谢谢我欣赏解释。但它仍然依赖“习惯”或“历史”作为主要因素。我想我可以把它描述为:什么会导致我为每个以REST服务调用为中心的AngularJS编写单页面应用程序,而不是传统的多页Req/Resp JSP应用程序,必要时使用Ajax,但仍基于多页面渲染/表格提交。不过,很棒的信息,谢谢你,让我们保持在这里。 –

0

这不是你使用的问题。优点和缺点与涉及的技术没有任何关系,而不是通过选择另一个框架来羞辱用户体验。

如果你从一个想法到生产软件的任何项目,你应该知道许多许多因素适用于决定项目的体系结构。这一切取决于你应该先写的建议。本文档的质量将影响进一步的决策和方向,以及作为所需产品消费者的最终用户的反馈。

没有语言,没有框架,没有程序员需要为您提供用户需求。这只是软件,应该做一些事情。这就是你第一次需要知道的一切。

您可以向用户承诺您可以构建所需的软件,但您不会告诉您如何构建,您使用的是哪种语言,框架,技术和资源。

你可以看到其他人是怎么创建的以及它是如何工作的,如果它符合用户需求,那么你很幸运地复制/粘贴。不幸的是,它在大多数情况下不起作用,您必须为建筑物中的每块砖块付费。

技术最重要的部分是编程资源。如果您拥有这样的资源,那么您已经将一项技术与该项目一起使用的优先级降低了一半。技术,语言,框架是不同的,没有人可以用专家级别处理它们。你可以用一个框架构建软件,然后用另一个框架从头开始重建它,然后就可以进行比较。如果你不能比较用于构建软件的成本,那么你的决定仅仅是基于其他观点的意见。

如果您在使用不同语言和不同框架的不同平台上构建生产软件的经验,就会产生愿景。由于许多语言,框架都是面向大多数业务问题的,因此建议专家使用这些框架来解决这类问题。没有哪一个更好,因为如果你选择一个比其他人更推荐的软件,并使用它来创建丑陋的软件,那么你不能说那些不太被推荐的软件更糟。另一方面,如果您选择框架并创建可能缺乏其他框架中可用的某些功能的优秀软件,您将赢得胜利。

不要玩弄技术,使用合格的咨询服务。这是出于stackoverflow的主题。因为这些信息总是商业性的。祝你好运,努力找到适合你需求的更好的软件。