Learning Java Road-Map

Vlad Ungureanu
CodeX
Published in
8 min readDec 7, 2020

Road-Map for Java Beginners

Prerequisites

Before you can jump into learning Java there are a few prerequisites that need to be satisfied. First of all, you need to have a basic understanding of how to use a computer, how to install applications on your computer and how to do basic configuration in the operating system, for setting up environmental variables (for example). Second of all you need to be comfortable with searching things on Google and following online tutorials, as many of the things you need in the beginning can be easily found online. Finally, it is a great plus knowing the English language as a high number of tutorials, courses and other useful information are easily found in English.

Learn Stuff Academy — Learning Java for Beginners Road-Map

Step 1 — Java Core

We start by learning the basic Java structure and syntax of the language. At this point you need to learn the basic elements used by Java like creating a class with a main method, declaring variables and methods and using control structures. We continue with learning about datatypes and arrays which are a fundamental part of any programming language.

After the basics are completed you need to focus on Object Oriented Programming (encapsulation, inheritance, abstract classes, interfaces and polymorphism) which is one of the defining elements of the Java programming language. Make sure you spend sufficient time on this, as all other aspects of Java are related, in some way, to Object Oriented Programming.

We continue with Data Flows and Exception Management. This will allow us to read and write data from files and properly manage unexpected circumstances or behavior in our code.

Generics represent a type safety feature in Java and while it is less likely that we will implement Generic types on a regular basis, most libraries in Java are based on Generics. As such, having a good understanding on how this feature works is very important.

Finally, Java Core’s last part refers to using Collections. Collections provide the functionality for storing objects, iterating through them, sorting and retrieving objects, all heavily used in any Java application.

This step usually takes between 2 to 6 weeks.

Step 2 — Practice

In order to better understand the core elements of Java it is recommended that you do a series of practical exercises that allow you to use all the features you have learned. Our suggestion is to search for Java interview problems and exercises and do as many of them as you can. In case you have difficulties finding suitable exercises you can start with the following: Fizz-Buzz, Palindrome, Implementing Quick Sort and Calculating the Factorial value of a number.

This step usually takes between 1 to 3 weeks.

Step 3 — Core Libraries

After finishing the practice exercises, we can move on to the advance core libraries provided by Java. First of all, we need to dedicate at least a few days for learning SQL (Structured Query Language) and practicing on a database management system (we recommend PostgreSQL or MySQL). After this, we will need to learn JDBC (Java Database Connectivity) in order to make our Java applications interact with a database for storing and retrieving data. Other practical libraries, provided by Java refer to using Threads (for parallel execution) and Network Programming (for making client-server applications and working with URLs).

In some cases, working with an UI library, such as Swing or JavaFX may also be useful, based on the nature of the work you are doing or planning to do, and the time you have to invest in learning Java.

This step takes between 2 to 4 weeks.

Step 4 — Development Principles and Practices

In this step we should focus on learning the principles and practices associated with software development. This will help us correctly and efficiently use the Java Programming Language. We start by learning about SOLID, DRY, YAGNI and KISS principles of software development. After this we focus on Unit Testing and Clean Code practices. Finally, after all these are understood and thoroughly practiced, we can focus on the concepts of Code Review, Agile Methodology, Source Control (we recommend GIT) and Dependency Management (we recommend Maven) which are used on a daily basis by software developers.

This step takes between 2 to 4 weeks.

From Beginner to Expert

Learn Stuff Academy — Learning Java Road-Map

Step 5 — Web Applications

This is probably the most complex step of the learning process, because it contains the most study topics. We start by getting familiar with the nature of web applications, especially focusing on the client-server paradigm and learning HTML and CSS which allow us to create static web pages. At this point, while it is not explicitly required, most Java Developers also learn the basics of JavaScript.

We continue with conceptual knowledge of Java Enterprise, which is the part of the Java Development Kit — JDK — that is oriented towards developing web applications. At this stage we need to cover the following topics: Servlets, Java Server Pages (JSP), Java Server Faces (JSF), filters and web servers. Also, if we are practicing using an application server (like Tomcat and Glassfish) we can also address SOAP web services and Enterprise Java Beans (but more at a conceptual level as these libraries are less frequently used in modern software development).

After we have a strong grasp over all major concepts of Java Web Development, we can start learning Spring with a focus on Spring Boot, Inversion of Control, Spring MVC, building REST APIs using Spring, Java Persistence API (JPA) and Java Messaging (JMS). All these are comprising parts of the Spring Framework and allow for fast and extremely simplified (compared to the standard Java Enterprise libraries and frameworks) web development. Finally, we will learn how to secure our web applications by using Spring Security, with a focus on implementing security using Java Web Token (JWT) and OAuth2.

This step usually takes between 2 to 8 months.

Step 6 — Functional Projects

By this stage, you should have sufficient knowledge to build end-to-end applications using Java. You should try to implement small sized, but relatively complex projects making sure you go through all layers of an application from the user interface to the actual database. Trying to implement a project from scratch allows you to understand how specifications work, how a project should be planned and developed as well as providing a overview of how each element of the Spring Framework fits into building a complete web application. We recommend you develop each project with the utmost diligence, also including Clean Code, Unit Testing and Development Principles in order to better understand how these concepts fit in the context of web development.

This step usually takes between 2 to 4 months.

Step 7 — System Design

At this point we will focus on the requirements and specifications parts of software development. We will learn how to gather specifications and requirements (both functional and non-functional) and then learn the principles of designing systems that accommodate these requirements. We will learn what technologies, frameworks and libraries are better suited for performance, parallel processing, large amounts of data (either large volumes of insert operations or high volumes of reads), data warehouse and business intelligence, security and many more. In this step we will also focus on learning and understanding the best practices for most of the frameworks and technologies we learned along the way.

An important aspect of system design is identifying inputs and outputs for parts of the system and designing the logical flows (and their comprising elements) that lead from the given input to the desired output. This process, alongside non-functional requirements greatly effects the designed software system.

While there are many aspects to consider, by this point you will most likely have several years of experience working within a company and you will be more likely to focus on technologies and projects better suited for the company you are working for, leading to a form of specialization (if you wish) into system design.

Later Edit

Depending on the nature of your work, the requirements of your projects and the team you are part of, in this step you might also need to learn about the following concepts: NoSQL (we recommend MongoDB, Cassandra and Elastic Search), Caching (we recommend EhCache and Redis) and Event Streaming (we recommend Kafka).

This step usually takes between 2 to 4 months.

Step 8 — Web Service Patterns, Service Oriented Architecture, Domain Driven Design and Micro-services

Once we covered system design, we further increase our knowledge and understanding of web applications by learning the principles and standards used for Service Oriented Architecture, Domain Driven Architecture and Micro-services. These are not considered standards in the industry or the Java world, but these concepts have gained increased popularity in the last decade and are more likely to be used in the company you are working in and the projects you are working on.

Exposure to SOA, DDD and Micro-Services usually also leads to the need to learn, at least at a conceptual level, about Cloud Infrastructure, Containers and Container Management (we recommend Docker, Docker Compose and Kubernetes), Load Balancers and API Gateways (we recommend Amazon API Gateway, Mashery and Nginx). At code level, you will need to have some hands on experience with Feign Clients (we recommend Eureka with Ribbon from Spring Cloud).

This step usually takes between 3 to 6 months.

Step 9 — Software Architecture

The final step, on the Java Road-Map refers to system architecture and learning how to create the architecture of complex systems, that might incorporate multiple projects, each with their own requirements and specifications. Software Architecture includes, but is not limited to the following aspects of software development: used hardware, deployment, infrastructure, scalability, technologies, security, components, services, layers and interactions of the comprising parts of a software system.

At this point we have a wide variety of options in terms of concepts and practices we can learn, but as with System Design, we are more likely to specialize into those practices and standards better suited for the company we are working for or the projects we are responsible for.

This step usually takes between 3 to 9 months.

Want to start your Java Developer career?

Check out our free Java course:

http://learnstuff.io/courses/java

And our comprehensive code samples:

https://github.com/UngureanuVlad/learn-stuff-java

Or, are you looking to improve your Java Skills?

Check out our free Spring Framework course:

http://learnstuff.io/courses/spring

And our comprehensive code samples:

https://github.com/UngureanuVlad/learn-stuff-spring

Interested in webinar series (both free and paid)?

Have a look at our platform:

https://learnstuffacademy.io/

--

--

Vlad Ungureanu
CodeX
Writer for

Software Developer, Trainer, Personal Development Enthusiast.