DEV Community

What you should learn to become a Master Yoda in Java

John Selawsky on February 07, 2019

So you decided to be a Java Jedi… There’s a long road ahead of you. The road starts by writing code every day, practicing, and learning a little...
Collapse
 
boudhayandev profile image
Boudhayan Dev

Hi John,

Great article. I am currently at a stage where I am comfortable with Collections and Exceptions. However, I have not experimented with any JAVA frameworks. I come from Python background and as a result I have worked for good amount of time on Django. Now, I understand that Spring is the equivalent of Django in Java environment, but whenever I research on how to get started with Spring, I find servlets as a requirement. My understanding is that servlets is the old way to do web related programming and Spring happens to be built on top of servlets.

So, my question is, to be an able web programmer( mostly for the backend ) in 2019, is it recommended to start with Spring and other related technologies like - Hibernate, Spring boot etc. or should I take a course of Servlets and related tech - JPA etc before. At work we use Olingo for creating REST services and turns out Olingo has Spring compatibility. So considering all these, is it wise to devote time to learn servlets etc or Spring would suffice ?

Regards,
Dev

Collapse
 
yorodm profile image
Yoandy Rodriguez Martinez

1) Go for Spring Boot and then cycle through every Spring related technology.
2) Learn some microframeworks (the equivalent of Flask) I have a post about some of my favorites here

Collapse
 
selawsky profile image
John Selawsky

Hi,

It is not the best idea to read pure servlets specs, I presume.

However, you really need to be familiar with this technology, because the Spring (MVC) uses servlets beneath the hood and the same story with databases. It is difficult to find a project that doesn't use databases.

The simplest option is a relational database and working with it through JDBC. Every ORM framework use this, but it doesn’t mean you need to write your own templates code, close connections, write finally blocks (and catch exceptions in them again). You can google a request such as "top java frameworks 2019" or something like that.

If we mean Java not only as a language for the backend of apps, but also as the skills that developer needs, let’s highlight the following directions: architecture (monolith, SOA, microservices), application build (Maven, Gradle, ...) and deployment. It depends on architecture. We can use Tomcat for deploying, writing Compose files for Docker and a few dozen variations of working with the database (something from ORM: Hibernate, MyBatis, Spring Data JPA, ...), design and work with API (REST, gRPC), security (Spring Security) testing (JUnit, TestNG) - unit & integration.

So… What is the best for you? Some people like watching videos on youtube, the others prefer to read reference documentation. I am an apologist of practice. As you can see from the list of technologies above, Spring ecosystem offers solutions in many ways, so I would recommend starting with Spring.

I highly recommend this resource: spring.io/guides/. There you can find some small examples of code with explanations. So, download the template project from github, follow the instructions and explanations, check that output is the same as in the reference implementation. Unfortunately, I can say nothing of "Spring is the equivalent of Django", because I am not a Python guy. To sum up, you need to understand the basics, and be able to use modern technologies that are built on these basics. So, don’t waste your time just reading specifications.

Collapse
 
lemuelogbunude profile image
Lemuel Ogbunude

Hi,

Check out this Spring course: youtube.com/playlist?list=PLqq-6Pq...

I highly recommend it, it goes straight to the point.

Collapse
 
twonjee2002 profile image
Adetunji Adegbite

You might want to check out Grails framework. Easy to get started and uses Spring under the hood.

Collapse
 
maverickbatra profile image
Shivika

May the force and Lord be with me!

Hi John!
Really a great article, the way you have segregated the topics it's very helpful. Currently I am working as a Java developer and I am not expert in same for now. I am planning to move to Python but since I have already invested 4 years in Java so I am getting confused.
These days I am learning from scratch from GeeksforGeeks. Please suggest from where and how I should get all my Java concepts cleared so I can crack an interview.
Thanks!
Shivika

Collapse
 
andevr profile image
drew

Hi John,

Glad I found your post, a lot of good information here. I started learning Java a month ago, been doing Tim Buchalka's Java Masterclass on Udemy. As far as exercises goes there's a ton. I found codegym also, but price wise a little out of my league at the moment but seemed like an incredible resource for learning. As someone that might be more interested in visual/android than enterprise, should I still learn some spring, or after learning the core jump straight into android (I also really am interested in JavaFX)?

Collapse
 
r3_abd profile image
Abdellah

Hi John, this is a very good write-up for every beginner. I am a student and have once learned Java using the Head First series and later dropped it. Unfortunately for me I never enjoyed the power of Java.
Today, I am back learning through Java The Complete Reference.
I will like you to help me point out some open source projects or project ideas I can use to deepen my skills.
Thank you very much for this.
Regards.

Collapse
 
bowlendev profile image
Ryan Bowlen

Thanks for the resources!

Collapse
 
orestistp17 profile image
orestistp17

May the force be with us!
Very nice article!

Collapse
 
code_jedi profile image
Code_Jedi

The Java is strong with this one...