DEV Community

Discussion on: What you should learn to become a Master Yoda in Java

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
 
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
 
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
 
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
 
twonjee2002 profile image
Adetunji Adegbite

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