Introduction to lambdas and Streams in Java: introduced in Java 8, see how these bring more flexibility and and conciseness to your code.

Java lambdas tutorial

An introduction to "raw" threads in Java, looking at the Thread and Runnable classes and issues such as thread safety. See also: Java and threading performance on Apple Silicon (M1) vs Intel i7.

Java threads tutorial

Aspects of synchronization and concurrency in Java that go beyond basic thread programming, including how to balance thread-safety and performance requirements.

Java concurrency tutorial

Java's Collections framework provides a range of key classes for organising data in memory. How to hash maps work? When should you pick a list versus a set versus a queue...? How do you ensure your code is thread-safe?

Java collections tutorial

How to use exceptions to manage error flow in Java: how do you throw and catch exceptions? When do you use the different exception classes? Which exceptions can be thrown by the JVM?

Java exceptions tutorial

Doing math in Java: an overview to using math primitives and utility classes. How do different maths operations perform in Java? How do you perform arbitrary precision arithmetic?

Java maths tutorial

How to generate random numbers in Java. What are the limitations of java.lang.Random and when is it not suitable? When and how should you use ThreadLocalRandom?

Java random tutorial

How to calculate or query the memory usage of Java objects. How much memory do strings and other objects take up in Java?

Java memory usage

An overview of the main encryption and authentication facilities offered by Java. How do you encrypt data and files in Java? Which algorithm should you use? Which key length should you pick?

Java cryptography tutorial

The standard Java I/O libraries: how to read and write to files, sockets; how to improve Java I/O performance.

Java I/O tutorial

Tutorial on using regular expressions in Java, including basic expressions with the String.matches() method plus performance considerations.

Java regex tutorial

How to access databases at a lower level in Java using the JDBC API.

Read JDBC tutorial

Performance profiling in Java: using Java's built-in profiling facilities to find bottlenecks in your production code.

Java profiling tutorial

Java Servlets provide a framework for serving dynamic web pages supported by many cloud services.

Java Servlets tutorial

How to use the standard Java compression libraries, including some more advanced techniques.

Java compression tutorial

How to use Swing, Java's rich and extensible user interface library.

Read tutorial

Section on how to immitate in Java certain features of other languages, notably C and C++.

Java equivalents tutorial