Roadmap for Java for JS Developer

I have been working as a javascript developer from past 8 years which includes experience in Vanilla JS , Angular , React , Node etc.

Now I want to include Java+Spring + Spring boot into my arsenal. Just want some suggestions for the roadmap to follow for the same.

P.S - I do have basic knowledge of Core Java.

HI @Avinash

I don’t know why you are interested in Java + Spring, so let me start with: If you are looking for a backend tech stack Node.js + Express is probably easier to pick up for you, just based on extensive JavaScript experience.

If you are looking to get away from JavaScript then Spring is an option. But I recommend you use Kotlin instead of Java. Kotlin has a lot of traction in the JVM world and is much more accessible than Java. In particular I would say that its syntax is closer to modern JavaScript & TypeScript than Java. There are many other aspects that make Kotlin superior to Java - but that’s a different topic (e.g. see here). Kotlin is officially supported in Spring (since 2017) so Kotlin + Spring is a good option for you.
You probably want to start with spring boot, which makes getting started with spring easier by setting sane defaults. Here is a tutorial for kotlin + spring boot from spring.io.

Spring is an old & mature technology, which comes with some baggage/legacy (for example a lot of configuration, which spring boot tries to resolve). Here’s a write up on the differences between spring & spring boot. It will be confusing at first, answers on the internet may be old & outdated, or information that applies to older versions of spring, but not spring boot.

Lastly you could also consider other languages & frameworks, e.g. Python + Django or Flask, Ruby + Rails or Sinatra.

Java is really the last language you should invest nowadays.

Cheers
Nemo

2 Likes

@nemo_oudeis…Thanks for the in depth analysis and explanation.

I have a good knowledge in node js and have worked on it previously . My only traction towards java is because the company I am working in ,have significantly good projects in Java .So,I will be able to get a good hands on, as an in and out in a back end technology along with database.

Once I am comfortable,always can switch to other languages you mentioned.

Ridiculous. It’s far from dead, still in high demand, and pays twice as much as your average web development position. Things like Quarkus show Java can be as “agile” as any other language if not more.

1 Like

I have to agree with chuck here. Java is far from gone and is still the language of choice for a large number of major companies. As of today, there is far more demand for Java knowledge than Kotlin. Look up any respectable organization that tracks these things.

Kotlin is “cool” and certainly newer, but if you’re aim is to expand your marketability, go with Java.

Besides, being that it’s also a JVM language, you’ll be able to intermingle them if you really decide Kotlin is better for your job.

Last, and probably most important. Don’t chase tools. What kinds of problems are you trying to solve? (Or what kinds of jobs?)

Start there, then decide what language/tool makes sense. This is the equivalent of a chef asking “Which kitchen tool should I learn next?” instead of figuring out what to cook first. I think we’re the only industry that has this fixation on learning tools without having a problem to solve in the first place :stuck_out_tongue:

1 Like

@jefejeff & @chuckadams
Yes Java is not dead, neither is C or Cobol. I still don’t recommend those languages to Avinash.

The reason I argue against Java is that it has been very popular language in over many years, which has lead to a gigantic talent pool of, frankly, underskilled Java developers. You could say Java is a victim of its own success.
I did a lot of interviews last year (as the technical interviewer) and the candidates that advertise themselves as Java developers were among the least qualified. That’s highly biased of course, I only interviewed ~50 candidates.

I recommend Kotlin because it is more accessible than Java (given Avinash’s experience) and it is already adopted by large and small companies globally. Demand for Kotlin skills is already high.

However at the end of the day it comes down to what @jefejeff said:

Last, and probably most important. Don’t chase tools. What kinds of problems are you trying to solve? (Or what kinds of jobs?)

Avinash says:

My only traction towards java is because the company I am working in ,have significantly good projects in Java .So,I will be able to get a good hands on, as an in and out in a back end technology along with database.

Which is the only reason that matters. Breaking into the tech stack that your company already uses is the goal.

I suggest you look at the fcc material like this course, other than that I have found the baeldung site pretty reliable. They have an array of spring tutorials. There is always spring.io with a lot of material, e.g. this guide on building a REST webservice with spring boot, however I have found the spring documentation to be a bit spotty in the past.

Good luck @Avinash !

@Avinash I started out with core Spring, because I wanted to understand the things that actually happen behind the scenes “automagically” when you use Spring Boot. Learning these concepts helped me understand the basic building blocks that Spring (and Spring Boot) is based on - container, application context, DI, IoC, etc.

Then I learnt Spring MVC (with just Spring, not spring boot yet), as that is what you would use for almost every web app that utilizes Spring. Here you’d learn concepts like the Front Controller (Dispatcher Servlet), how M-V-C is organized, etc.

Then I took up Spring Boot to build a Spring MVC app, and this is where the power of Boot really shines, no need of configuring the servlet mappings yourself, for instance, is just one major benefit.

I had some experience with JDBC, and Hibernate, so then I took up Spring Data JPA, and how it makes things really easy over using just plain Hibernate (which in itself is a big step-up over just JDBC).

Up next is Spring Security for authentication, then Spring Cloud, and more interesting projects from the spring.io projects.

Hope this helps!

1 Like