Issue
We need to implement a one-form app (long form) that persists into Oracle DB. There are no Web services of any kind. The culture is traditionally Java-oriented here but it's open for suggestions.
What are the Pros and Cons of going with:
- The traditional MVC Java stack - Spring, Struts2 or SpringMvC, Hibernate
- The JS (modern) stack - AngularJS, NodeJS, ReactJS
Any clear explanation of the differences, with the Pros and Cons, would be strongly appreciated.
As I stated, I haven't been able to find a reasonable and understandable comparison.
Solution
It's apples and oranges. I'm only posting this as an answer because it outgrew the comment.
First to nitpick a bit, AngularJS is front-end technology, you can use it with any back-end technology (I use it with Struts2). So lets remove that from the comparison.
Second nitpick your comparison is more a JS vs Java choice. If you did your research you could be comparing NodeJS against Play, Vert.x, or similar. Not because those frameworks are "modern" but because they share some of design goals which made NodeJS what it is (Vert.x is very similar in intention, it has comparable speed, non-blocking design, and allows for polyglot programming).
But really there is something more fundamental than the frameworks... and that is the language. If you know JS and you've worked on the front end design did a mockup and then need to develop server side services and aren't more comfortable with another language, well it really doesn't make sense to invest in that heavy lifting when you can start doing something useful right away. It's also the same the other way (from the Java perspective) no matter what the framework you need to invest time, if you already know a Java web framework, why waste your time figuring out something else?
That last question isn't rhetorical, seriously why waste your time? In defence of keeping with JS, you can keep everything in one language, NodeJS is pretty fast, although keeping the comparison fair there are many Java web frameworks Struts2/SpringMVC don't have similar design goals to NodeJS while Play, Vert.x, and I'm sure there are others would be a more fair comparison. JS has a different way of doing things and if you have JS ninjas then it does make sense to do everything that way. As for why Java, it is fast, it has an enormous codebase, there are APIs and frameworks for everything, from meta programming, AI, robotics, security, obviously databases and everything common, there is enormous choice. It is more structured, in the end this means that months later you can generally figure out what you were doing and you can better share work and divisions of labour. But again, does any of that matter? I'm not looking to start an argument with the general public, only you know your requirements. Consider them and also consider human nature and take a reasonable course.
In my experience people use what they know, people I find are often splitting hairs over their favourite framework and someone else's for no other reason that that is what they know. If you're going to use some technical tooling advantage to try an get consensus that is highly unlikely to happen, and I would recommend first to look at your human resource capabilities; I mean you could write it in Java or JS, whatever but happy employees will produce way more regardless! What the majority would rather work with can't be discounted lightly.
Answered By - Quaternion