Java/Spring vs JavaScript/Node

Hello World! I just started on a new team where requirements are unclear and we have not yet decided on any sort of architecture yet. I’m doing this as an exercise for myself to determine when to use what technology; also, so I have more things to talk about with my coworkers at Happy Hour.

The preferred choice has always been Java and most people I work with are very comfortable with the Spring framework. I personally prefer Node because I hate Maven and Gradle and never want to use it. However, we don’t live in an ideal world where I get everything I want. I am going to list pros/cons of each technology.

Let’s start off with Java/Spring:

Pros:

1. Better IDE (IntelliJ and Eclipse), easier to debug

2. Tried and tested. Spring has a large user base, lots of libraries and has been around for a while.

3. A lot of enterprise software is built on Java/Spring

Cons:

1. Takes longer to develop and steeper learning curve

2. Dealing with XML configurations

3. Dependency issues

4. A downward trend in general usage of Spring

5. Only people that have previously used Spring use Spring

Node/JavaScript/Express

Pros:

1. Testing. Junit sucks and Chai/Mocha are great

2. Build Management (npm install and npm start and you are ready to go. No need to worry about dependencies)

3. JavaScript in general is more nifty and concise compared to Java

4. Simple and easy to work with

5. When building an API, much easier to work with JSON in Node because it is an inherent part of JavaScript

6. Node is “cool” and it is the future. It is newer than Spring and is only rapidly growing. A lot of big companies like Netflix, Walmart, etc have been using Node.

7. Less code to maintain

Cons:

1. JavaScript can be a little tricky

2. Building an entire enterprise software in JavaScript??? While it is very simple to build a single page web application in JavaScript, it is much more challenging to build an entire enterprise software in JavaScript


Clearly, I am biased. I am personally more comfortable with using JavaScript/Node and so I would not pick Java/Spring. When making decisions like this in a team, it is important to take into consideration what most of the team is comfortable working with and what technology will be most efficient given the requirements.

I started off researching whether to use Java or JavaScript but I have now concluded that Go-Lang is better (lol). For systems programming, Go is the clear winner. Each of these languages serve different purposes. We will most likely be using a combination of these technologies in my next project. But, I am excited about Go. Java and C were built in the 90s and Go is the new kid on the block. It doesn’t have all the annoying nuances of C or Java. Of course, it is still not as ubiquitous as Java but here are a few reasons why Go is cool:

1. Great memory usage (great for cutting down AWS cost)

2. Code is easy to read and understand

3. Build management is much simpler like Node/JavaScript

4. New/cool right now and more startups and companies are adopting Go

5. “Go is an answer to problems of Scale at Google”

6. Great for concurrency!!! It was built by Google for scaling quickly and for concurrency.

7. Go is backed by Google

8. High performance

9. Growing number of gophers

Sources: