Welcome to Amigoscode's most comprehensive Java course! It includes everything you need to gain a complete understanding of Java, code well and build your own applications. Earlier this year, I taught a Java Bootcamp in London for over a year. Then an idea struck me: why not bring all this value to Amigoscode's community in the form of a Master Class? Thanks to six months of preparation and an amazing effort by Amigoscode's team, I am excited to announce that we have surpassed our goal and also included features that will help you master the language within the shortest possible time:
Java Master Class
Java Master Class is a 357-lesson 24 hours 40 minutes self-paced course by Nelson Djalo (Amigoscode). Welcome to Amigoscode's most comprehensive Java course!
Course facts
- Lessons
- 357
- Duration
- 24 hours 40 minutes
- Level
- All levels
- Language
- English
- Updated
- Instructor
- Nelson Djalo (Amigoscode)
- Price
- Premium
Who teaches Java Master Class? Nelson Djalo (Amigoscode)
Nelson Djalo publishes the Amigoscode YouTube channel and standalone course platform — one of the largest independent Java / Spring Boot tutorial sources online, with several million subscribers and a multi-year track record of weekly back-end engineering tutorials.
The course catalog covers the full Java back-end stack: Java fundamentals, Spring Boot for production web services, Spring Security and OAuth, Spring Data and JPA, microservices patterns with Spring Cloud, Kafka and event-driven architecture, Docker and Kubernetes for the deployment layer, AWS for cloud infrastructure, and the database side (PostgreSQL, MongoDB, Redis). Material is project-oriented — most courses build a working microservice or full application end-to-end.
The CourseFlix listing under this source carries over 13 Amigoscode courses spanning that range. Material is paid; Amigoscode runs on per-course or membership pricing on the original platform. Courses are aimed at Java developers building production back-end services.
What lessons are included in Java Master Class?
| # | Lesson Title | Duration | Access |
|---|---|---|---|
| 1 | Intro Demo | 02:34 | |
| 2 | Practice Practice Practice | 01:03 | |
| 3 | Textbook | 04:15 | |
| 4 | Discord | 02:46 | |
| 5 | What is Java | 03:51 | |
| 6 | What can you build with Java | 02:56 | |
| 7 | Java Usages | 06:21 | |
| 8 | Compliled vs Interpreted Languages | 05:11 | |
| 9 | Static vs Dynamic Type Checking | 05:23 | |
| 10 | Java version history | 05:10 | |
| 11 | IntelliJ IDEA | 03:26 | |
| 12 | jetbrains.com/idea | 04:48 | |
| 13 | Jetbrains ToolBox | 03:20 | |
| 14 | Quick Word Before We Begin | 01:38 | |
| 15 | Create Project - Part 1 | 04:53 | |
| 16 | Create Project - Part 2 | 03:11 | |
| 17 | Your First Java Program | 02:24 | |
| 18 | Compiling and Running via Terminal | 03:35 | |
| 19 | Fixing Compilation Errors | 04:41 | |
| 20 | View ByteCode | 02:07 | |
| 21 | Public Static Void Main | 02:46 | |
| 22 | Understanding Java Code | 03:07 | |
| 23 | SOUT Keyboard Shortcut | 01:47 | |
| 24 | Reserved Keywords | 01:57 | |
| 25 | Comments | 02:28 | |
| 26 | Variables | 03:59 | |
| 27 | Primitives Data Types Difference | 04:55 | |
| 28 | Numeric Literals with Underscore | 01:43 | |
| 29 | Arithmetic Operators | 03:05 | |
| 30 | Increment and Decrement Operators | 04:38 | |
| 31 | Comparison Operators | 02:43 | |
| 32 | Short hand re-assignment | 03:21 | |
| 33 | Naming Variables | 03:09 | |
| 34 | Strings | 06:38 | |
| 35 | String API Documentation | 02:08 | |
| 36 | Reference Types and Objects | 05:04 | |
| 37 | Reference Types and Objects Diferences | 06:16 | |
| 38 | Pass py value with Primitives | 04:21 | |
| 39 | Pass py value with Reference Types | 06:31 | |
| 40 | Arrays | 07:43 | |
| 41 | 0 and Null Values for Arrays | 03:20 | |
| 42 | Quick word on Arrays | 01:22 | |
| 43 | TextBook and Exercises | 03:23 | |
| 44 | How To Attempt Exercises | 06:54 | |
| 45 | Quick word on the CLI Project | 00:36 | |
| 46 | For Loop | 05:03 | |
| 47 | Loops and Arrays | 03:33 | |
| 48 | Enhanced For Loop | 02:38 | |
| 49 | For i vs Enhanced For Loop | 02:02 | |
| 50 | While Loop | 03:06 | |
| 51 | Do While | 02:38 | |
| 52 | If Statements | 03:16 | |
| 53 | If Statements with Conditions | 02:24 | |
| 54 | Else If | 03:30 | |
| 55 | AND Logical Operators | 03:52 | |
| 56 | OR Logical Operators | 04:10 | |
| 57 | Logical Operators Recap | 02:49 | |
| 58 | ! on ifs | 01:37 | |
| 59 | Dont do this with if statements | 01:04 | |
| 60 | Switch Statement | 04:28 | |
| 61 | Data Types for Enums | 02:32 | |
| 62 | New Switch Expression | 03:55 | |
| 63 | Packages | 02:24 | |
| 64 | Creating Packages | 03:47 | |
| 65 | Exploring Packages | 03:01 | |
| 66 | Import keyword | 06:01 | |
| 67 | Optmizing imports | 00:50 | |
| 68 | Import with fully qualified name | 03:49 | |
| 69 | No Import for java lang | 01:46 | |
| 70 | Access Modifiers Intro | 01:02 | |
| 71 | Public Access Modifier | 05:18 | |
| 72 | Private | 02:26 | |
| 73 | Default | 04:34 | |
| 74 | Recap | 06:25 | |
| 75 | When To Use Each Access Modifier | 01:35 | |
| 76 | Static Keyword | 07:18 | |
| 77 | Methods | 03:22 | |
| 78 | Method that add 2 numbers | 05:12 | |
| 79 | Parameters and Arguments | 01:35 | |
| 80 | Void methods | 05:23 | |
| 81 | Naming Convention | 03:29 | |
| 82 | Exercise | 01:25 | |
| 83 | Exercise Solution | 04:07 | |
| 84 | Understanding public static void main | 06:51 | |
| 85 | Program Arguments | 05:03 | |
| 86 | Type Inference with Var | 06:42 | |
| 87 | Break Keyword and Loops | 02:18 | |
| 88 | Continue | 03:14 | |
| 89 | Return Keyword and Void Methods | 02:49 | |
| 90 | Final Keyword | 06:24 | |
| 91 | Enums | 09:06 | |
| 92 | Enums Methods | 04:08 | |
| 93 | Implicit and Explicit Type Casting | 04:33 | |
| 94 | Global and Local Variables | 07:04 | |
| 95 | Wrapper Classes | 06:32 | |
| 96 | Working With Strings | 08:45 | |
| 97 | How Strings are stored in memory | 04:04 | |
| 98 | Strings are Immutable | 02:36 | |
| 99 | String Literal vs String Object | 04:14 | |
| 100 | Comparing Strings with == | 04:41 | |
| 101 | Comparing Strings with .equals | 02:10 | |
| 102 | Useful String static Methods | 05:18 | |
| 103 | LocalDateTime | 03:54 | |
| 104 | LocalDate and LocalTime | 02:43 | |
| 105 | Creating Specif Dates | 04:56 | |
| 106 | ZoneIds | 04:05 | |
| 107 | Other Date Classes | 04:42 | |
| 108 | The Problem With double | 02:06 | |
| 109 | BigDecimal | 02:16 | |
| 110 | Exploring BigDecimal Methods | 04:37 | |
| 111 | Scanner | 04:14 | |
| 112 | NextInt and other data types | 03:28 | |
| 113 | Outro | 01:07 | |
| 114 | Intro | 02:17 | |
| 115 | What is an exception | 04:10 | |
| 116 | Try Catch | 04:31 | |
| 117 | Multiple Catch Blocks | 04:15 | |
| 118 | Using Or Within Catch | 02:37 | |
| 119 | The Exception Class | 07:09 | |
| 120 | Finally Keyword | 02:06 | |
| 121 | Exception Hierarchy | 08:11 | |
| 122 | Uncheck Exceptions | 05:20 | |
| 123 | Checked Exceptions | 06:59 | |
| 124 | Throw and Throws | 06:34 | |
| 125 | Throwing Exceptions | 08:25 | |
| 126 | When To Use Checked VS Unchecked Exeptions | 01:33 | |
| 127 | Creating Custom Exceptions | 06:31 | |
| 128 | Creating Files | 06:02 | |
| 129 | Writing To Files | 08:27 | |
| 130 | Reading from Files | 04:09 | |
| 131 | Try with Resources | 04:40 | |
| 132 | Intro | 02:09 | |
| 133 | Your first class | 03:57 | |
| 134 | Setters | 05:44 | |
| 135 | Getters | 02:56 | |
| 136 | Constructors | 04:55 | |
| 137 | Default Constructors | 02:25 | |
| 138 | Multiple Contructors | 04:11 | |
| 139 | ToString | 06:26 | |
| 140 | The Inside Constructors | 03:27 | |
| 141 | The This Keyword | 06:14 | |
| 142 | Everything in Java is an Object | 07:49 | |
| 143 | @Override | 02:53 | |
| 144 | Comparing Objects with == | 04:56 | |
| 145 | Comparing Obects with .equals | 05:13 | |
| 146 | Generating Equals method | 04:02 | |
| 147 | Equals Explained | 06:49 | |
| 148 | Generating Code | 04:14 | |
| 149 | Person and Cats Example | 04:48 | |
| 150 | POJOS | 03:48 | |
| 151 | Java Bean | 05:02 | |
| 152 | Exercise | 03:14 | |
| 153 | Exercise Solution | 09:21 | |
| 154 | Static Keyword | 05:49 | |
| 155 | When to use Static | 06:31 | |
| 156 | Static Initlaization Block | 06:35 | |
| 157 | Instance Block Initializer | 05:18 | |
| 158 | Static Import | 02:36 | |
| 159 | Intro | 01:41 | |
| 160 | Packages | 03:08 | |
| 161 | Models | 04:28 | |
| 162 | Service Classes | 09:31 | |
| 163 | Data Access Object | 08:29 | |
| 164 | Connecting DAO and Service | 08:51 | |
| 165 | N Tier Architecture | 02:42 | |
| 166 | Utitlity Classes | 05:04 | |
| 167 | Intro | 01:26 | |
| 168 | The first CLI project task | 03:09 | |
| 169 | Demo | 04:20 | |
| 170 | Upcoming Section Intro | 02:09 | |
| 171 | Encapsulation | 02:29 | |
| 172 | Encapsulation in Action | 05:07 | |
| 173 | The Problem With Non Private Fields | 06:33 | |
| 174 | Data Hiding | 06:25 | |
| 175 | String Class Encapsulation Example | 04:20 | |
| 176 | What is Inheritance | 02:14 | |
| 177 | Implementing Inheritance | 04:53 | |
| 178 | Create an instance of Programmer | 06:09 | |
| 179 | Super Keyword | 04:20 | |
| 180 | Protected Access Modifier | 02:44 | |
| 181 | Override | 05:57 | |
| 182 | Single and Multi Level Inheritance | 01:11 | |
| 183 | Abstract Keyword on Classes | 04:05 | |
| 184 | Abstract Methods | 04:19 | |
| 185 | A Quick Word Before we move on | 00:34 | |
| 186 | Abstract Classes Example | 15:33 | |
| 187 | What is Polymorphism | 07:44 | |
| 188 | Car Bicycle Electric Scooter Example | 04:28 | |
| 189 | Create Your First Interface | 02:22 | |
| 190 | Implementing Interfaces | 07:01 | |
| 191 | Putting it all together | 07:00 | |
| 192 | Constants | 02:16 | |
| 193 | Default Methods | 05:31 | |
| 194 | CLI Project Exercise | 03:11 | |
| 195 | Don't Do This | 01:25 | |
| 196 | Dependecy Injection | 05:07 | |
| 197 | Dependency Injection In Action | 05:20 | |
| 198 | Singletons and @Inject_@Autowire | 08:05 | |
| 199 | CLI Project Exercise | 01:32 | |
| 200 | SOLID Principles | 03:01 | |
| 201 | Single Responsibitiy | 04:55 | |
| 202 | Open Close | 06:01 | |
| 203 | Liskov | 03:14 | |
| 204 | Interface Segragation | 02:37 | |
| 205 | Dependecy Inversion | 06:15 | |
| 206 | Null Pointer Exception | 06:17 | |
| 207 | The Wrong Way Of Dealing with Null | 03:48 | |
| 208 | Optionals | 10:42 | |
| 209 | Intro | 03:30 | |
| 210 | Overview | 01:58 | |
| 211 | Arrays | 02:37 | |
| 212 | Working With Arrays | 11:28 | |
| 213 | 2D Arrays | 01:38 | |
| 214 | Working with 2D Arrays | 05:43 | |
| 215 | Lists | 01:38 | |
| 216 | Working With Lists and ArrayList | 10:23 | |
| 217 | Stack | 01:53 | |
| 218 | Working With Stacks | 07:07 | |
| 219 | Queue | 01:24 | |
| 220 | Working With Queues | 06:20 | |
| 221 | Linked List | 04:18 | |
| 222 | Working with LinkedList | 08:34 | |
| 223 | Sets | 01:21 | |
| 224 | Working with Sets | 07:33 | |
| 225 | Map Interface Hierarchy | 01:56 | |
| 226 | Maps | 00:42 | |
| 227 | Working With Maps | 09:05 | |
| 228 | HashCode | 02:56 | |
| 229 | Working HashCode and HashFunction | 07:51 | |
| 230 | Outro | 03:18 | |
| 231 | HackerRank Big Notation | 08:37 | |
| 232 | CLI Project Exercise | 01:33 | |
| 233 | Intro | 01:05 | |
| 234 | Class Cast Exception | 04:25 | |
| 235 | ClassCastException Example 2 | 02:31 | |
| 236 | Type Parameter and Type Argument | 06:08 | |
| 237 | Generic Type Naming Convention | 02:25 | |
| 238 | Generic and Classes | 03:45 | |
| 239 | Generic and Classes Part 2 | 06:10 | |
| 240 | Generics and Methods | 08:28 | |
| 241 | Bounded Type Parameters | 09:06 | |
| 242 | Multiple Bounds | 04:24 | |
| 243 | Unbounded Wildcard | 05:06 | |
| 244 | Upper Bounded Wildcards | 03:31 | |
| 245 | Lower Bounded Wildcards | 03:42 | |
| 246 | Difference Between Bounded Type Parameters and Wildcards | 03:23 | |
| 247 | Type Erasure | 02:44 | |
| 248 | Outro | 01:03 | |
| 249 | Intro | 01:15 | |
| 250 | Java Streams | 03:30 | |
| 251 | How Streams Work | 03:27 | |
| 252 | Getting Started With Streams | 06:30 | |
| 253 | Exercise | 00:57 | |
| 254 | Declarative Solution | 01:52 | |
| 255 | Imperative Solution | 04:08 | |
| 256 | Visualise Streams | 02:13 | |
| 257 | Outro | 00:25 | |
| 258 | CLI Exercise | 01:27 | |
| 259 | Maven | 02:55 | |
| 260 | Installing Maven | 02:03 | |
| 261 | Verifying Maven Installation | 00:47 | |
| 262 | Creating a Maven Project | 03:40 | |
| 263 | Maven Folder Structure | 04:09 | |
| 264 | Project Object Model (pom.xml) | 02:48 | |
| 265 | Target Folder | 03:41 | |
| 266 | Installing Maven Dependencies | 07:52 | |
| 267 | Using Java Faker | 03:54 | |
| 268 | .m2 Folder | 05:27 | |
| 269 | Maven Lifecycles | 03:52 | |
| 270 | Running Maven Commands | 06:09 | |
| 271 | Packaging and Jar Files | 04:04 | |
| 272 | CLI Project Exercise | 02:22 | |
| 273 | Intro | 02:49 | |
| 274 | JUnit | 01:21 | |
| 275 | Installing JUNIT | 04:30 | |
| 276 | Launching Your First Test | 04:36 | |
| 277 | Calculator and CalculatorTest Classes | 03:49 | |
| 278 | Writing Your First Unit Test | 05:12 | |
| 279 | Assertions | 02:44 | |
| 280 | Test Scenarios | 03:28 | |
| 281 | Other JUnit Features | 02:19 | |
| 282 | CLI Exercise | 01:18 | |
| 283 | Section Intro | 01:12 | |
| 284 | Intro Spring Boot | 02:31 | |
| 285 | Spring Initializr | 02:56 | |
| 286 | Open the project with IntelliJ | 02:04 | |
| 287 | The pom.xml | 02:27 | |
| 288 | Cleanup Few Things | 02:18 | |
| 289 | JDK | 02:47 | |
| 290 | Your first Spring Boot Application | 04:10 | |
| 291 | Embedded Web Serve | 03:06 | |
| 292 | Configuring Embedded Web Server | 04:48 | |
| 293 | Your first API | 02:53 | |
| 294 | @SpringBootApplication | 06:07 | |
| 295 | Spring Web MVC | 05:46 | |
| 296 | JSON For Java | 07:17 | |
| 297 | Java Objects to JSON Objects | 05:26 | |
| 298 | Introduction to HTTP | 04:12 | |
| 299 | The Evolution of HTTP | 03:15 | |
| 300 | HTTP Request and Response Messages | 03:49 | |
| 301 | HTTP Methods | 04:44 | |
| 302 | HTTP Status Codes | 06:32 | |
| 303 | URL | 09:01 | |
| 304 | API and REST API | 03:38 | |
| 305 | Public APIs and Other Types | 06:37 | |
| 306 | Why build APIs | 02:55 | |
| 307 | Chrome Developer Tools | 07:07 | |
| 308 | Exploring XHR for our API | 04:35 | |
| 309 | Inspecting Instagram Network Activity | 09:29 | |
| 310 | REST Client & Postman | 03:49 | |
| 311 | IntelliJ REST Clients | 05:08 | |
| 312 | CRUD and Section Overview | 02:05 | |
| 313 | Customer Model | 02:29 | |
| 314 | Fake Database | 03:27 | |
| 315 | API Endpoint | 05:54 | |
| 316 | @PathVariable | 07:57 | |
| 317 | N Tier Architecture | 02:02 | |
| 318 | Refactor - Controller Service and DAO | 10:40 | |
| 319 | @RestController @Service @Repository @Component | 07:02 | |
| 320 | Application Context | 04:58 | |
| 321 | Inspecting beans | 05:09 | |
| 322 | Bean Scopes | 02:23 | |
| 323 | Creating Beans | 07:49 | |
| 324 | We are not handling error the right way | 01:56 | |
| 325 | Custom Exception | 05:02 | |
| 326 | @ResponseStatus | 02:28 | |
| 327 | Include error Message to Responses | 02:04 | |
| 328 | Section Intro | 00:51 | |
| 329 | Postgres and Docker | 02:18 | |
| 330 | Verifying Docker Installation | 02:27 | |
| 331 | Postgres DB with Docker compose | 04:26 | |
| 332 | Connecting to Database | 01:34 | |
| 333 | Connecting to DB using IntelliJ IDEA | 03:22 | |
| 334 | Data Source & JPA | 02:30 | |
| 335 | Installing PostgreSQL Driver and Spring Data JPA Dependencies | 03:00 | |
| 336 | Configuring Datasource Properties | 04:48 | |
| 337 | Create Customer Table | 04:51 | |
| 338 | Entity | 03:44 | |
| 339 | Inspecting The Database | 02:29 | |
| 340 | Column Contraints | 02:31 | |
| 341 | CustomerRepository | 02:24 | |
| 342 | CustomerJPADataAccessService class | 02:02 | |
| 343 | @Qualifier | 02:48 | |
| 344 | Saving Entities | 04:32 | |
| 345 | Exploring JPA Methods | 03:43 | |
| 346 | The Problem | 01:03 | |
| 347 | Exercise Solution | 01:42 | |
| 348 | Intro | 01:36 | |
| 349 | Chasing Interface | 00:51 | |
| 350 | Override insert customer | 01:27 | |
| 351 | Business Logic for Adding new Customer | 08:36 | |
| 352 | Controller @RequestMapping and @RequestBody | 02:46 | |
| 353 | Testing POST Request | 04:07 | |
| 354 | Exercise | 01:40 | |
| 355 | Exercise Solution | 02:35 | |
| 356 | Exercise | 03:23 | |
| 357 | Exercise Solution | 05:01 |
Get instant access to all 356 lessons in this course, plus thousands of other premium courses. One subscription, unlimited knowledge.
Learn more about subscriptionWhat courses are similar to Java Master Class?
-
Updated 2y agoUltimate Java Part 1: Fundamentals
By: Mosh Hamedani (Code with Mosh)Java is the most widely used and in-demand programming language. It's used in 90% of fortune 500 company websites, most big banks and financial companies, almos3h 21m -
Updated 2y agoMaster Microservices with Java, Spring, Docker, Kubernetes
By: UdemyMaster Microservices with Java, Spring, Docker & Kubernetes — build production microservices using Spring Boot, Spring Cloud, Eureka, Hystrix, Resilience4j.23h 57m -
Updated 2y agoData Structures & Algorithms !
By: UdemyLearn data structures and algorithms from scratch. Start with basic data structures and work your way up to intermediate. This course is for all those who want28h 40m5/5 -
Updated 2y agoExperience Design Patterns In Java
By: UdemyBoost your software designs by taking this content-rich and hands on fully featured training course. This course will give you insight in the more than 20+ desi7h 19m -
Updated 2y agoJava Programming Bootcamp: Zero to Mastery
By: Zero To MasteryLearn Java programming from scratch to advanced skills with an industry expert. Enhance your skills with over 80 exercises and 18 quizzes. Perfect for aspiring9h 15m -
Updated 2y agoJava from Zero to First Job, Practical Guide, 2000+ examples
By: UdemyWelcome to the fundamental and the most complete course 'Java from Zero to First Job'. As it's declared in the course name, it's created for people who want to80h 4m -
Updated 2y agoBuilding Your First App with Spring Boot and Angular
By: PluralsightSpring Boot and Angular have forever changed how web applications are built. Understanding how they work is essential for any full-stack developer. In this cour2h 22m5/5 -
Updated 8mo agoLow Level Design
By: takeUforward (Striver)The course is dedicated to Low-Level Design (LLD) - a key stage in software development where abstract ideas and architectural decisions are transformed into.22h 34m
More courses by Nelson Djalo (Amigoscode)
-
Updated 2y agoSpring Boot Master Class
Learn how to get started with Spring Boot, a powerful framework to build web applications quickly, using less code. The Java-based programs you build in Spring9h 28m5/5 -
Updated 2y agoMicroservices and Distributed Systems
Microservices are an architectural and organisational approach to software development where software is composed of small independent services that.11h 18m5/5 -
Updated 2y agoSpring Data JPA Master Class
In this course you learn everything there is to learn about Spring Data JPA allowing to build scalable backend applications backed by any relational database.4h 21m5/5 -
Updated 3y agoDatabase Design & Implementation
Backend starts from Your Database. When you have a solid database design coding is easy.2h 7m5/5 -
Updated 3y agoIntelliJ IDEA Developer Guide
IntelliJ IDEA is an integrated development environment written in Java for developing software.4h 17m5/5 -
ClassicPROFESSIONAL Full Stack Developer
Are you ready to level up your coding skills and become a full stack professional?54h 23m5/5