Back to courses
Java Master Class
Java Bootcamp curriculum to help you become a Java Software Engineer
Level: Entry, Junior and Mid Engineers
Nelson
Course by
Nelson
What you'll learn
Compiled vs Interpreted Languages
Static vs Dynamic Type Checking
IntelliJ IDEA and Jetbrains Tools
Java Data Types and Variables
Control Structures: Loops and Conditional Statements
Packages and Access Modifiers
Methods, Functions, and Exception Handling
File Operations and Input/Output Handling
Object-Oriented Programming
Inheritance, Polymorphism, and Abstraction
Dependency Injection and SOLID Principles
Data Structures: Arrays, Lists, Maps
Generics and Java Streams
Maven Build Tool
Testing with JUnit
Spring Boot Framework
Database Integration and ORM
APIs, HTTP, and Full Stack Development
Continuous Integration and Deployment (CI/CD)
Welcome to Amigoscode's most comprehensive Java course! Your journey to mastering Java, coding proficiently, and building robust applications begins here.
Last year, the vibrant energy of a Java Bootcamp in London transformed many aspiring developers. A year of on-ground experience, myriad questions, countless solutions, and then it clicked: Why not expand this learning experience? Why not mold it into a Master Class for the entire Amigoscode's community
Six intense months. Countless cups of coffee. Infinite passion. The Amigoscode team and I have funneled all this energy to bring forth more than just a course. I am excited to announce that we have surpassed our goal and included all these features to help you master the language within the shortest possible time:
Whether you're a student from a Bootcamp or University, a professional versed in other languages, a self-guided coding enthusiast, or someone stepping into the realm of coding for the first time, the Master Class is crafted for you. Its mission? To transform you into a proficient Java programmer.
For the last four years, I have been meeting with Amigoscode's students from all these backgrounds on a day-to-day basis: tutoring, helping to resolve errors, giving advice on personal projects and just having a chat. Drawing from these multifaceted interactions, I've crafted a comprehensive roadmap designed to propel anyone with the ambition to master Java. And it’s not just my assurance—our Success Stories highlight individuals, perhaps much like you, who have successfully transitioned into accomplished roles in software engineering through Amigoscode's guidance.
New to Java or coding? It's natural to feel the landscape is vast and daunting. But here's the silver lining: you've stumbled upon the perfect course tailored to demystify the coding realm for you. Gone are the days of bewilderment and mounting frustration. With the Java Master Class, clarity is our mantra from the get-go. And with a 30-day return policy, you're free to test out the system without any strings attached.
Seasoned in Java? Fantastic! Peruse the curriculum and dive in wherever you deem fit. And even if some topics resonate as familiar, there's always a fresh perspective and hands-on exercises to elevate your comprehension and expertise.
There is a reason why Java is frequently taught as the first programming language at universities.
One of my favourite features of the language is what I call "abstraction revelation" - using words for otherwise abstract concepts. Java’s English-like syntax makes it easy to read and understand the reasoning behind every command line. You can quickly get hands-on, reinforce everything that you are taught, and start practising your programming thinking skills.
Once you understand how to communicate abstractly with Java, any new language that you decide to learn will come with relative ease as most of the fundamental programming principles are shared with all other languages.
You will benefit from the support of a 10 million-strong community and a massive library of open-source tools, like Spring Boot. All these resources make the development in Java swift and your code more robust and efficient.
As a result, Java dominates as the top programming language and sees versatile uses across web, mobile and enterprise industries: from large-scale applications involving millions of lines to a few hundred-lines projects.
It’s no surprise that Java presents some of the best job opportunities in the programming field, with an average salary of $104,868.
42K Salary from Finance Assistant to Software Engineer
At this moment you might be feeling as if Java is out of your reach, You have already spent a lot of time and effort learning Java and nothing has made a difference. I have been there, becoming good at something very often feels impossible until you achieve it.
Even with access to all the resources online, Most of them probably leave you even more confused and just send you to more articles/courses.
So what’s the problem? If you don’t know a single programming language from the ground up, you won’t have the necessary knowledge to evaluate the information and really understand it. Disjointed articles that describe each function are seldom enough to teach you a broader perspective of programming.
That’s why completing Java Bootcamp will be such an invaluable experience. With a course structured from the beginning to the end, lessons that won’t ever confuse you and a supportive class on discord, we will ensure that you start thinking in the language of a software engineer and go on to start building your own amazing projects.
With these skills, software engineering will become a lot of fun 😊
To unlock the full potential of software engineering
This course has 52 sections including exercises
Course Intro
Introduction to Java
Environment Setup
Your Gift
1 - The Gift
2 - 6 Months bonus IntelliJ Ultimate
Getting Started
1 - Create Project
2 - Your First Java Program
3 - Compiling and Running via Terminal
4 - Fixing Compilation Errors
5 - View ByteCode
6 - Public Static Void Main
7 - Understanding Java Code
8 - SOUT Keyboard Shortcut
The Basics
1 - Reserved Keywords
2 - Comments
3 - Variables
4 - Primitives Data Types Difference
5 - Numeric Literals with Underscore
6 - Arithmetic Operators
7 - Increment and Decrement Operators
8 - Comparison Operators
9 - Short hand re-assignment
10 - Naming Variables
11 - Strings
12 - String API Documentation
13 - Reference Types and Objects
14 - Reference Types and Objects Differences
15 - Pass by Value with Primitives
16 - Pass by Value with Reference Types
17 - Arrays
18 - 0 and Null Values for Arrays
19 - Quick word on Arrays
Exercises
1 - TextBook and Exercises
2 - How To Attempt Exercises
3 - Exercises for Previous Sections
4 - Quick word on the CLI Project
Loops
1 - For Loop
2 - Loops and Arrays
3 - Enhanced For Loop
4 - For i vs Enhanced For Loop
5 - While Loop
6 - Do While
Exercise
If Statements
1 - If Statements
2 - If Statements with Conditions
3 - Else If
4 - AND Logical Operators
5 - OR Logical Operators
6 - Logical Operators Recap
7 "-" ! on ifs
8 - Dont do this with "If Statements"
9 - Switch Statement
10 - Data Types for Enums
11 - New Switch Expression
Exercise
Packages
1 - Packages
2 - Creating Packages
3 - Exploring Packages
4 - Import keyword
5 - Optmizing imports
6 - Import with fully qualified name
7 - No Import for java lang
Exercise
Access Modifiers
1 - Access Modifiers Intro
2 - Public Access Modifier
3 - Private
4 - Default
5 - Recap
6 - When To Use Each Access Modifier
7 - Static Keyword
Exercise
Methods
1 - Methods
2 - Method that add 2 numbers
3 - Parameters and Arguments
4 - Void methods
5 - Naming Convention
6 - Exercise
7 - Exercise Solution
8 - Textbook Exercises
Beyond The Basics
1 - Understanding public static void main
2 - Program Arguments
3 - Type Inference with Var
4 - Break Keyword and Loops
5 - Continue
6 - Return Keyword and Void Methods
7 - Final Keyword
8 - Enums
9 - Enums Methods
10 - Implicit and Explicit Type Casting
11 - Global and Local Variables
12 - Wrapper Classes
Exercise
Strings
1 - Working With Strings
2 - How Strings are stored in memory
3 - Strings are Immutable
4 - String Literal vs String Object
5 - Comparing Strings with ==
6 - Comparing Strings with .equals
7 - Useful String static Methods
Dates
1 - LocalDateTime
2 - LocalDate and LocalTime
3 - Creating Specific Dates
4 - ZoneIds
5 - Other Date Classes
Exercise
Big Decimal
1 - The Problem With double
2 - BigDecimal
3 - Exploring BigDecimal Methods
Taking User Input
1 - Scanner
2 - NextInt and other data types
3 - Outro
Exercise
Exception Handling
1 - Intro
2 - What is an exception
3 - Try Catch
4 - Multiple Catch Blocks
5 - Using Or Within Catch
6 - The Exception Class
7 - Finally Keyword
8 - Exception Hierarchy
9 - Uncheck Exceptions
10 - Checked Exceptions
11 - Throw and Throws
12 - Throwing Exceptions
13 - When To Use Checked VS Unchecked Exceptions
14 - Creating Custom Exceptions
Exercise
Working with Files
1 - Creating Files
2 - Writing To Files
3 - Reading from Files
4 - Try with Resources
Exercise
Classes and Objects
1 - Intro
2 - Your first class
3 - Setters
4 - Getters
5 - Constructors
6 - Default Constructors
7 - Multiple Constructors
8 - ToString
9 - The Inside Constructors
10 - The This Keyword
11 - Everything in Java is an Object
12 - @Override
13 - Comparing Objects with ==
14 - Comparing Objects with .equals
15 - Generating Equals method
16 - Equals Explained
17 - Generating Code
18 - Person and Cats Example
19 - POJOS
20 - Java Bean
21 - Exercise
22 - Exercise Solution
23 - Texbook Exercises
Static Keyword
1 - Static Keyword
2 - When to use Static
3 - Static Initialization Block
4 - Instance Block Initializer
5 - Static Import
Organizing Code
1 - Intro
2 - Packages
3 - Models
4 - Service Classes
5 - Data Access Object
6 - Connecting DAO and Service
7 - N Tier Architecture
8 - Utility Classes
9 - Extra Resources
CLI Project
1 - Intro
2 - The first CLI project task
3 - Demo
OOP
Upcoming Section Intro
OOP Encapsulation
1 - Encapsulation
2 - Encapsulation in Action
3 - The Problem With Non-Private Fields
4 - Data Hiding
5 - String Class Encapsulation Example
OOP Inheritance
1 - What is Inheritance
2 - Implementing Inheritance
3 - Create an instance of Programmer
4 - Super Keyword
5 - Protected Access Modifier
6 - Override
7 - Single and Multi-Level Inheritance
OOP - Abstraction
1 - Abstract Keyword on Classes
2 - Abstract Methods
3 - A Quick Word Before We Move On
4 - Abstract Classes Example
OOP - Interfaces
1 - What is Polymorphism
2 - Car Bicycle Electric Scooter Example
3 - Create Your First Interface
4 - Implementing Interfaces
5 - Putting It All Together
6 - Constants
7 - Default Methods
8 - CLI Project Exercise
Dependency Injection
1 - Don't Do This
2 - Dependency Injection
3 - Dependency Injection In Action
4 - Singletons and @Inject/@Autowire
5 - CLI Project Exercise
SOLID Principles
2 - SOLID Principles
3 - Single Responsibility
4 - Open Close
5 - Liskov
6 - Interface Segregation
7 - Dependency Inversion
Optionals
1 - Null Pointer Exception
2 - The Wrong Way Of Dealing with Null
3 - Optionals
Data Structures
1 - Intro
2 - Overview
3 - Arrays
4 - Working With Arrays
5 - 2D Arrays
6 - Working with 2D Arrays
7 - Lists
8 - Working With Lists and ArrayList
9 - Stack
10 - Working With Stacks
11 - Queue
12 - Working With Queues
13 - Linked List
14 - Working with LinkedList
15 - Sets
16 - Working with Sets
17 - Map Interface Hierarchy
18 - Maps
19 - Working With Maps
20 - HashCode
21 - Working HashCode and HashFunction
22 - Outro
23 - HackerRank Big Notation
24 - Algorithms, Big O and Time/Space Complexity - Extra reading
25 - Textbook Exercise
26 - CLI Project Exercise
Generics
1 - Intro
2 - Class Cast Exception
3 - ClassCastException Example 2
4 - Type Parameter and Type Argument
5 - Generic Type Naming Convention
6 - Generic and Classes
7 - Generic and Classes Part 2
8 - Generics and Methods
9 - Bounded Type Parameters
10 - Multiple Bounds
11 - Unbounded Wildcard
12 - Upper Bounded Wildcards
13 - Lower Bounded Wildcards
14 - Difference Between Bounded Type Parameters and Wildcards
15 - Type Erasure
16 - Outro
Streams
1 - Intro
2 - Java Streams
3 - How Streams Work
4 - Getting Started With Streams
5 - Exercise
6 - Declarative Solution
7 - Imperative Solution
8 - Visualize Streams
9 - Outro
10 - Textbook Exercise
11 - CLI Exercise
Maven
1 - Maven
2 - Installing Maven
3 - Verifying Maven Installation
4 - Creating a Maven Project
5 - Maven Folder Structure
6 - Project Object Model (pom.xml)
7 - Target Folder
8 - Installing Maven Dependencies
9 - Using Java Faker
10 - .m2 Folder
11 - Maven Lifecycles
12 - Running Maven Commands
13 - Packaging and Jar Files
14 - CLI Project Exercise
Testing
1 - Intro
2 - JUnit
3 - Installing JUnit
4 - Launching Your First Test
5 - Calculator and CalculatorTest Classes
6 - Writing Your First Unit Test
7 - Assertions
8 - Test Scenarios
9 - Other JUnit Features
10 - Textbook Exercise
11 - CLI Exercise
Spring Boot
1 - Section Intro
2 - Intro Spring Boot
3 - Spring Initializr
4 - Open the project with IntelliJ
5 - The pom.xml
6 - Cleanup Few Things
7 - Textbook
Spring Boot - Getting Started
1 - JDK
2 - Your first Spring Boot Application
3 - Embedded Web Server
4 - Configuring Embedded Web Server
5 - Your first API
6 - @SpringBootApplication
7 - Spring Web MVC
8 - JSON For Java
9 - Java Objects to JSON Objects
Spring Boot - HTTP & APIs
1 - Introduction to HTTP
2 - The Evolution of HTTP
3 - HTTP Request and Response Messages
4 - HTTP Methods
5 - HTTP Status Codes
6 - URL
7 - API and REST API
8 - Public APIs and Other Types
9 - Why build APIs
Spring Boot - Developer Tools
1 - Chrome Developer Tools
2 - Exploring XHR for our API
3 - Inspecting Instagram Network Activity
4 - REST Client & Postman
5 - IntelliJ REST Clients
Spring Boot - CRUD - Read
1 - CRUD and Section Overview
2 - Customer Model
3 - Fake Database
4 - API Endpoint
5 - @PathVariable
Spring Boot - Structure the Backend
1 - N Tier Architecture
2 - Refactor - Controller Service and DAO
3 - @RestController @Service @Repository @Component
Spring Boot - Application context and beans
1 - Application Context
2 - Inspecting beans
3 - Bean Scopes
4 - Creating Beans
Spring Boot - Error Handling
1 - We are not handling error the right way
2 - Custom Exception
3 - @ResponseStatus
4 - Include error Message to Responses
Spring Boot - Database
1 - Section Intro
2 - Postgres and Docker
3 - Verifying Docker Installation
4 - Postgres DB with Docker compose
5 - Connecting to Database
6 - Connecting to DB using IntelliJ IDEA
7 - Data Source & JPA
8 - Installing PostgreSQL Driver and Spring Data JPA Dependencies
9 - Configuring Datasource Properties
10 - Create Customer Table
Spring Boot - Spring Data JPA
1 - Entity
2 - Inspecting The Database
3 - Column Constraints
4 - CustomerRepository
5 - CustomerJPADataAccessService class
6 - @Qualifier
7 - Saving Entities
8 - Exploring JPA Methods
Spring Boot - Get Customer By Id Exercise
1 - The Problem
2 - Exercise Solution
Spring Boot - CRUD, Create
1 - Intro
2 - Chasing Interface
3 - Override insert customer
4 - Business Logic for Adding new Customer
5 - Controller @RequestMapping and @RequestBody
6 - Testing POST Request
Spring Boot - CRUD, Delete (Exercise)
1 - Exercise
2 - Exercise Solution
Spring Boot - CRUD, Update (Exercise)
1 - Exercise
2 - Exercise Solution
Spring Boot - Exercise
1 - Start
Next Steps
Full Stack Professional
If you have any other questions - please get in touch
Amigoscode offers unique, practical, and industry-relevant programming courses taught by experienced instructors. We focus on real-world applications, giving you the skills you need to excel in your career.
Yes, many of our students purchase our courses through their company's training budget. Our courses are considered a valuable investment in employee skill development, and they can be expensed as part of your company's training and development initiatives.
Our courses are designed to bridge the gap between theory and practice. You'll gain hands-on experience, work on real projects, and build a portfolio that will impress employers and clients, opening up new opportunities for career growth.
Yes, we provide certificates of completion for all our courses. These certificates are recognized in the industry, and they can help you showcase your skills to potential employers or clients.
Absolutely! Amigoscode courses are self-paced, allowing you to learn at a speed that suits your schedule. You can revisit the material whenever you need, and you have lifetime access to the course content.
No, our courses are designed to accommodate all levels of learners. Whether you're a beginner looking to start your programming journey or an experienced developer wanting to enhance your skills, we have courses suitable for you.
We provide extensive support to our students through discord. You'll have access to a community of learners and can ask questions, share your progress, and collaborate with fellow students. In addition, our instructors are available to help with any challenges you encounter during the course.
We offer a 15-day refund policy. If you're not satisfied with your course within the first 15 days after purchase, we will provide a full refund, no questions asked. Your satisfaction is our priority.
Engage in a dynamic and interactive learning experience as you complete exercises and projects.