
How to use typesafe enums in Java
Use typesafe enums to avoid the problems with traditional enumerated types

How to use Java generics to avoid ClassCastExceptions
Learn how Java’s support for generics helps you develop more robust code

How to use assertions in Java
Use Java assertions to document program correctness and more quickly test and debug your programs

How to describe Java code with annotations
Use annotations to associate metadata with application elements in your Java programs

Packages and static imports in Java
Use packages and static imports to organize top-level types and simplify access to their static members

Static classes and inner classes in Java
Learn how to use the four types of nested classes in your Java code

Get started with method references in Java
Why you should use method references instead of anonymous classes in your functional Java programs

Get started with lambda expressions in Java
Learn how to use lambda expressions and functional programming techniques in your Java programs

Exceptions in Java, Part 2: Advanced features and types
Take your Java exceptions to the next level with stack traces, exception chaining, try-with-resources, final re-throw, and more

Exceptions in Java, Part 1: Exception handling basics
Everything you need to know about throwing, trying, catching, and cleaning up after Java exceptions

Interfaces in Java
Learn the difference between classes and interfaces once and for all, then get started declaring, implementing, and extending interfaces in your Java programs

Class and object initialization in Java
Learn how to to initialize Java classes and objects for successful JVM execution

Java polymorphism and its types
Learn the four types of polymorphism in Java, then start using subtype polymorphism to execute different forms of the same Java method

Inheritance in Java, Part 2: Object and its methods
Get to know Java's Object superclass and its methods for duplicating, comparing, cleaning up, and scheduling Java objects

Inheritance in Java, Part 1: The extends keyword
Use Java's extends keyword to derive a child class from a parent class, invoke parent class constructors and methods, override methods, and more

Classes and objects in Java
Learn how to make classes, fields, methods, constructors, and objects work together in your Java applications.

Loop, switch, or take a break? Deciding and iterating with Java statements
Learn how to use standby statements like for, while, if-else, and break, then get started with the new switch expressions in Java 12

Evaluate Java expressions with operators
Everything you need to know about the Java operator types and using them to write and evaluate Java expressions in Java 12

Elementary Java language features
Learn three ways to document your code, then get started using identifiers, types, literals, and variables in Java 12

Learn Java from the ground up
If you're new to Java then you've come to the right place. Get an overview of the Java platform, then code your first application using Java 12 and the new Java Shell