what's going on guys ASW welcome to Amigoscode in this video I want to walk you through
this beautiful Java road map that I have for you so that when you start your career as a
Java engineer you kind of know where to go step by step so obviously in here there's a bunch of
things but what I want to focus is the most important things because often you see people
saying oh you need to learn a bunch of things that you might not even need in order to become good
at Java so let's start from the very top and basically I've got these labels so 1 2 3 4 5
all the way to 14 so that it's easy on the eye and also if you want to download this you can
find the link under description of this video so number one in here I've got Linux and git
it's fundamental across every single programming language the order here actually git and Linux
so basically it doesn't really matter which one you learn first and luckily for you I'm actually
launching a 10 plus hour course with exercises and it's a collaboration between myself and abs where
we teach you Linux from the ground up so this is the most comprehensive course that we've done on
Linux and currently there's a waiting list for it and once the course is out we will send you a
special coupon so that you can get up and running with Linux but Linux is foundation whether it's
for software engineering devops networking cyber security basically Linux is a foundation for you
and if you're scared of using the terminal and don't know Linux Hold Up Wait A Minute something
ain't right basically you must have a clear understanding of Linux so these two foundation
and also git I've got a free course on git which I'm also going to link in the description of this
video now moving on let's start with Ides so make sure that you have an IDE which will take you a
long way because Ides if you don't know how to use an IDE and coding is just like a waste of
time okay so picking an ID is very important so you've got intell eclipse and vs these are
the three most popular ones in my opinion uh intell beats all of them for jvm development
and is the one that you should choose and I also have a course on intellig which basically covers
pretty much everything you need to know so now let's move into the actual meat of this video so
we have core so core Java so here this is where you learn about you know variables strings Loops
inheritance interfaces um how to work with files IO streams you know polymorphism packages classes
arrays classes and O so this is what I call so here I'm actually missing in here so let's
just say classes slash objects and then here o right object oriented programming because this is
basically the meat of it right so everything that you build involves in terms of creating a bunch of
classes and then from those classes you create a bunch of objects so it's important that you grasp
the fundamentals and again luckily for you I've got free course that goes the fundamentals of Java
for you then moving on to collection so this is very important because you know part of building
applications it's all about storing data okay and basically the collections framework has different
you know data types that allows you to store data so arrays lists Maps so these are the the ones
that you're going to be using most of the time and actually list will be the one used majority of the
times but I would say you know have a clear understanding for example how to use arrays
because you know most of these data structures are backed by arays so this actually will teach you
for example how to add how to remove items from the array if the array is full what do you do
right so you have to write business logic in terms of growing or reducing the size of your array
right so very very important okay so collections important so once you kind of know you know the
core collections then moving on to some of the more advanced stuff in here we've got optionals
dependenc injection design patterns IO how The jvm Works multi-threaded which I also have in here as
a separate one but I'll cover this in a second and then generics so this is important and obviously
as you become more familiar and you start to build applications which are not just you know
CLI projects you will basically you know encounter some of these things and these will help you to
write better code now also important here is how the jvm works so usually understanding high level
so what is the jvm how objects are store in memory how variables are stored in memory so having an
understanding of this is important because as you're coding you actually know exactly you
know how these things work and uh it will lead in order for you to make better decisions then moving
on to exception handling so very important you know often you can imagine that we have to deal
with errors right so how do we handle errors so in Java we have checked and unchecked exceptions
and this is a must and you should really know what is the difference between these to right because
you have to deal when things go wrong then moving on to streams and functional programming so here
it's more about instead of you having a bunch of logic in terms of Performing something very simple
you can have you know some code that basically tells Java what you want instead of how you want
it so this is very powerful and one which is not essential but as you build applications this will
save you time okay and you know it looks more modern you know instead of you having a method
with 20 lines of code working on a collection for example that might just be let's say five lines of
code instead okay so this is very important then moving on to testing I always bring this up would
you ever board on a plane that hasn't been tested and the answer is absolutely I was going to say
yes but absolutely no okay so it's the same thing with coding so understanding for example
unit testing integration testing contract testing debugging skills right so how to properly debug
an issue that you are facing for example uh then we have also mocking and the assertion Library so
here very important because as you learn testing you don't want to basically have redundant tests
you want to make sure that your tests are fast and you know as your application skills you have
the right amount of tests so testing it's a must and one that a lot of people are scared and to be
honest it's not that difficult then obviously moving on you should have understanding of
databases in here so I'm missing an S but this is important because um majority of the time what you
you need is to store data and I just realized that these numbers they don't make sense I'm going to
have to fix them and that's because I reorganize things but working with backend so Java is mainly
for back end just just use Java for the back end don't use swing or anything like that you're
going to have to store data right so have an understanding of um you know a database relational
database and then here uh SQL for example right so basically you have relational and no SQL
right most of the times you're going to be using a relational database and one thing which I actually
forgot in here and that is so where is the new so here if I basically say jdbc right so jdbc very
important which I'm going to stick in here and basically this is the Java database connectivity
and this is without using any framework but just to understand how do you connect to a database
how do you close and open connections data source understanding all of that it's crucial because as
then you move into things such as spring framework then you actually it's not just magic but you
understand how these things work then moving on to clean code so at this point you kind of know how
to write back in applications and you're all good but you need to understand how to structure your
application you know learn about solid principles and the solid this should be actually all caps so
solid and then principles the entor architecture there's other types of architecture that you
should learn as well but you know keep it simple to start with then also imitability you know why
having things that don't change it's crucial for your application then here we have logging so
logging it's crucial so um as you do some testing and um you want to debug and maybe you have an
issue in production if you have no visibility of what is going on with your application then
you are in deep trouble so here I'm not saying logging with system.out.print line but actually
using using a log framework such as SLA for J and log for J log back and all that stuff right and
I will basically include those in here then we have multi-threading so here it's kind of later
down but here I would say just have the basics of what is a thread is how to create and stop threads
and I wouldn't even go deep into this because this could be quite challenging and it's very difficult
for you to write multi-threaded applications okay then we have build tools Maven Gradle basil so
these are the main ones so let's say that I've written this code and I want to distribute that
to you right so how do you reuse code how do you compile your code how do you produce
the executable for your application how do you basically use it within a cic CD pipeline so build
tools very important then here I go straight into HTTP because when you build backend applications
most of the times you're going to have to expose and create apis right so basically having an
understanding of rest what is an API graph ql how HTTP Works API design very very important
so crucial okay so basically having a foundation of HTP important because then this leads nicely
into Frameworks so here the Frameworks basically allows you to you know build applications off the
ground super quick and everything is like plugged and instead of you having to have
a bunch of code to do something very small you know you know everything is just like nice and
easy and you can just focus on the business logic and the meat of what you need to do right so here
Frameworks uh spring boot is one of the most popular ones where you've got play quers and
others and I actually have a spring boot course and video here on YouTube that will basically
teach you how to get up and running with spring boot this is pretty much my Java road map so as
I said these arrows on the right hand side they're a bit messed up that's because I've been changing
things but I'll fix this and and the comment down below let me know what you think about this Java
road map is there anything that I should change is anything that I've missed and uh what other videos
that you want to see next this is pretty much it I'll catch you in the next one [Music] [Applause]
alikum