Authors: Sander Mak, Jim Wilson, Richard Warburton, Sarah Holderness, Maurice Naftalin, Sekhar Srinivasan, Jose Paumard, Kevin Jones, Mike Nolan

Java is a programming language used for both client-server programs, web applications and Android development. It is one of the most popular programming languages and runs on all... Read more

What you will learn

  • Control flow
  • Operators
  • Generic classes & methods
  • Collections
  • Streams
  • Lambdas
  • Objects
  • Classes
  • Interfaces
  • Inheritance
  • Exception handling
  • Primitive types
  • String
  • Threads
  • IO


No previous experience is required, and all necessary tools and concepts will be introduced throughout the path.


These introductory Java courses will teach you the basics of the language and how to effectively work with Java in the EE context. Some of the concepts you will master in this section include control flow in Java, object orientation, exception handling and even generics. By the end of these Java courses you will have the skillset to work on your own Java application.

Modern Java: The Big Picture

by Sander Mak

Nov 2, 2018 / 1h 58m

1h 58m

Start Course

You’ve heard about Java and want to get started with it, but what is Java really about? In this course, Modern Java: The Big Picture, you'll gain an overview of what you can expect from Java as a development platform. First, you'll learn the answers to important questions like “What does Java code look like?" and "How is it run?” Next, you'll explore the JDK and learn when you should use Java and when you shouldn't. Finally, you’ll discover the most popular libraries, practices, and tools used in modern Java development. After finishing this course, you’ll have a broad outlook on modern Java development and you will know which Java skills to focus on next in your personal development.

Table of contents
  1. Course Overview2m
  2. Introducing the Java Platform16m
  3. Adopting Java33m
  4. From Desktop to Enterprise Java to the Cloud19m
  5. Popular Java Libraries17m
  6. Practices and Common Tools17m
  7. Examining Alternative JVM Languages12m

Java Fundamentals: The Java Language

by Jim Wilson

Dec 2, 2015 / 7h 42m

7h 42m

Start Course

This course provides complete coverage of the Java programming language giving you the strong language foundation required for any Java-based development environment. Whether targeting a client-based, server-side, or Android environment, this course provides you with everything you need to quickly ramp up and become an effective Java programmer.

Table of contents
  1. Course Overview1m
  2. Introduction and Setting up Your Environment14m
  3. Creating a Simple App35m
  4. Variables, Data Types, and Math Operators31m
  5. Conditional Logic, Looping, and Arrays50m
  6. Representing Complex Types with Classes40m
  7. Class Initializers and Constructors27m
  8. A Closer Look at Parameters31m
  9. Class Inheritance47m
  10. More About Data Types50m
  11. Exceptions and Error Handling35m
  12. Working with Packages33m
  13. Creating Abstract Relationships with Interfaces34m
  14. Static Members, Nested Types, and Anonymous Classes27m

Java Fundamentals: The Core Platform

by Jim Wilson

Jul 21, 2016 / 7h 25m

7h 25m

Start Course

Java is the most in-demand programming language skill amongst software developers, and one of the most important skills for big data specialists. This course, Java Fundamentals: The Core Platform, provides thorough coverage of the core Java platform, giving you the foundation you need to begin developing Java applications using the features and capabilities of the Java Runtime Environment (JRE), as well as providing you with the skills you need to quickly ramp-up and begin developing effectively with Java using the JRE. First, you'll learn about working with streams, files, and the file system. You'll also learn about I/O topics specific to working with files such open/closing files, detecting end-of-file, and buffering. Next, you'll learn about configuring application execution and environments, the features available, and detailed discussions of the PATH and CLASSPATH environment variables that affect the Java runtime. Finally, you'll learn about multithreading and concurrency, taking a look at the basic ideas of the thread startup lifecycle along with the more sophisticated executor service. After watching this course, you'll be ready to begin working within any of the many environments that rely on Java.

Table of contents
  1. Course Overview1m
  2. Introduction4m
  3. Input and Output with Streams and Files56m
  4. String Formatting and Regular Expressions41m
  5. Working with Collections38m
  6. Controlling App Execution and Environment45m
  7. Capturing Application Activity with the Java Log System49m
  8. Multithreading and Concurrency1h 13m
  9. Runtime Type Information and Reflection53m
  10. Adding Type Metadata with Annotations36m
  11. Persisting Objects with Serialization43m

What's New in Java 12

by Sander Mak

Mar 18, 2019 / 1h 7m

1h 7m

Start Course

Keeping up with Java can be a challenging task. Only 6 months after the realease of Java 11, you now have to contend with Java 12. In this course, What's New in Java 12, you get an overview off all the important new features in Java 12. First, you will learn about API changes, such as the CompactNumberFormat API and new methods on the String class. Next, you will discover a preview Java language feature called Switch Expressions. Finally, you will explore how to use JMH, a micro-benchmarking tool for Java code that is heavily used in JDK 12 itself. When you're finished with this course, you'll be ready to make the most of Java 12 in your own projects.

Table of contents
  1. Course Overview1m
  2. Java 12 API Updates18m
  3. Preview Feature: Switch Expressions13m
  4. Micro-benchmarking with JMH19m
  5. JVM Changes14m

Java Fundamentals: Collections

by Richard Warburton

Mar 7, 2016 / 4h 2m

4h 2m

Start Course

Working with data is fundamental to any business problem. Java Collections are data structures designed to store and process data in memory. We start with why you want to use collections instead of arrays, cover the capabilities of Lists, Sets, and Maps and explain the different data structure tradeoffs.

Table of contents
  1. What Are Collections and Why Use Them?12m
  2. Defining and Iterating Collections28m
  3. Collections with Iteration Order: Lists36m
  4. Collection with Uniqueness: Sets40m
  5. Collections with Modification Order: Queues, Deques, and Stacks39m
  6. Collections of Pairs: Maps1h 3m
  7. Collection Operations20m

Java Fundamentals: Generics

by Richard Warburton

Aug 10, 2015 / 3h 53m

3h 53m

Start Course

Java’s powerful generics has been available to developers for ten years now and is extensively used throughout both core and third party libraries. Unfortunately, it's not as well understood as it could be. This course is here to help. We’ll both shine a light on the common use cases of generics on classes, methods, or interfaces and also peer into some of the darker corners such as type bounds and wildcards.

Table of contents
  1. The What and Why of Java Generics20m
  2. Java's Generic Collections and Friends30m
  3. Generic Classes and Interfaces26m
  4. Generics on Methods15m
  5. Wildcards33m
  6. Raw Types and Compatibility49m
  7. Reflection25m
  8. Advanced Topics32m

Add Database Admin Features to a Java Book Store Web App

by Sarah Holderness

Jun 1, 2018 / 1h 35m

1h 35m

Start Project

In this project you’ll follow along with our instructions and add update and delete features to the admin section of an existing Java Web application.

Project overview
  1. Setup15m
  2. Deleting Books From a Database20m
  3. Showing an Edit Form30m
  4. Updating Books In a Database30m

Add a Session-based Shopping Cart to a Java Book Store Web App

by Sarah Holderness

Jul 23, 2018 / 1h 10m

1h 10m

Start Project

In this project you’ll follow along with our instructions and add update and delete features to the shopping cart section of an existing Java Web application.

Project overview
  1. Setup15m
  2. Adding Update Buttons to the Shopping Cart15m
  3. Deleting from the Shopping Cart20m
  4. Updating the Shopping Cart20m


This section of Java tutorials goes further in depth with the language, giving you additional tools for your Java toolbelt. Now that you know a little about Java, you’ll be ready for the next level of understanding as you dive into memory management, reflection and even useful frameworks like Spring.

Programming with Dates and Times in Java 8

by Maurice Naftalin

Jul 23, 2018 / 2h 12m

2h 12m

Start Course

Handling dates and times is an essential part of most business and scientific applications. In this course, Programming with Dates and Times in Java 8, you will learn all about the much-needed new library in Java 8: the java.time API. First, you will learn the basic use of the core java.time classes. Next, you will discover how the library handles the complexities of time zones and daylight saving time transitions. Finally, you will explore the interconversion of java.time classes with other Java types and with database representations. When you are finished with this course, you will have a thorough knowledge of how to use this modern Java library for the fundamentally important problems of handling dates and times in your applications.

Table of contents
  1. Course Overview1m
  2. Overview of java.time21m
  3. The Basics of java.time23m
  4. Working with Time Zones50m
  5. Formatting and Parsing35m

Java Platform: Working with Databases Using JDBC

by Sekhar Srinivasan

Mar 3, 2016 / 2h 54m

2h 54m

Start Course

This course provides complete information which is required for JDBC Programming from Beginner Level to Advanced level by describing how to read and manage data from relational databases, calling stored procedures, working with prepared statements, transaction management, reading and storing CLOB data, storing images within the databases and retrieving the image from the database, connection pooling, working with metadata etc.

Table of contents
  1. Course Overview1m
  2. Introduction18m
  3. Getting Started with JDBC28m
  4. Performing Basic CRUD Operations Using JDBC56m
  5. Working with Stored Procedures32m
  6. Managing Transactions7m
  7. Working with BLOB and CLOB14m
  8. Working with Metadata7m
  9. Pooling Database Connections7m

Applying Concurrency and Multi-threading to Common Java Patterns

by Jose Paumard

Apr 4, 2016 / 2h 39m

2h 39m

Start Course

Every developer needs to know how to write multi-threaded applications in Java. This course, Applying Concurrency and Multi-threading to Common Java Patterns, is a precise presentation of all the fundamentals you'll need. You'll learn about the main problems of concurrent programming on multicore CPU, including race condition, synchronization, reentrant lock, and deadlock. Next, you'll cover how your application use is moved from the main memory to the CPU caches and how false sharing can occur. Finally, you'll be introduced to the Java Memory Model and the notion of happen-before. By the end of this course, you will understand how concurrency and multi-threading work on a variety of Java patterns and you'll be able to use this knowledge to create better apps.

Table of contents
  1. Understanding Concurrency, Threading, and Synchronization48m
  2. Implementing the Producer/Consumer Pattern Using Wait / Notify36m
  3. Ordering Read and Writes Operations on a Multicore CPU34m
  4. Implementing a Thread Safe Singleton on a Multicore CPU41m

Java Web Fundamentals

by Kevin Jones

Jun 5, 2019 / 3h 22m

3h 22m

Start Course

Many Java web frameworks, such as Struts, are built on top of the Servlet and JavaServer Page specifications and base libraries. To fully understand how these frameworks operate, and to be able to take full advantage of the facilities they offer, you should understand the foundations such frameworks are built on. This course takes you through building a web application using the base Servlet and JavaServer Page libraries. The course discusses the Model-View-Controller pattern using Servlets as the Controller and JavaServer Pages as the View. You will also learn how to hide complex UI interaction inside tag libraries. The course will show you how it is possible to build a web application using these fundamental technologies, and how other frameworks are built.

Table of contents
  1. Course Overview1m
  2. Introduction13m
  3. Writing Servlets31m
  4. JavaServer Pages25m
  5. The Expression Language16m
  6. The Java Standard Tag Library21m
  7. Writing Tag Libraries40m
  8. Event Listeners15m
  9. Writing Filters15m
  10. Asynchronous Programming20m


This final section is designed for the Java developer with a little experience under their belt. This sections of advanced Java tutorials dives deep into areas that every Java pro will want to ace before they call themselves a master. Topics such as patterns, best practices and testable code are fully covered in this section.

Introduction to Testing in Java

by Richard Warburton

May 11, 2015 / 3h 54m

3h 54m

Start Course

This course introduces why you want to write automated tests for your code and how to implement this in Java, covering fundamentals of how to write simple tests using JUnit and Hamcrest, through Test Driven Development (TDD) and then explains how to structure your code and design in order to make testing easier.

Table of contents
  1. Introduction15m
  2. Testing Code38m
  3. Writing Good Tests48m
  4. Introducing Test Driven Development43m
  5. Dependencies39m
  6. Going Outside-in47m

Test-Driven Development Practices in Java

by Mike Nolan

Apr 7, 2014 / 2h 54m

2h 54m

Start Course

This course covers Test-Driven Development (TDD) practices and tools supporting TDD on the Java Platform. This includes information on JUnit, Mockito, PowerMock, and DBUnit.

Table of contents
  1. Overview of Practices, Principles, and Tools20m
  2. Required Setup7m
  3. JUnit Overview and Demonstrating Red / Green / Refactor29m
  4. Basic Features of Mockito28m
  5. Mockito Feature Deep-Dive37m
  6. Fixture Management & Data Component Testing49m