This course is aimed at Java developers with some experience working on Java projects.
Newer programmers will be able to follow the course as long as they have already learned the basics of java programming. We recommend you take Virtual Pair Programmers’ Java Fundamentals Course before starting Java : Advanced Topics.
The course is ideal for developers working with frameworks like Spring and Hibernate. There are a number of example spring and hibernate projects, taken from Virtual Pair Programmers’ other courses, which feature in this course, although you do not need any prior knowledge of Spring or Hibernate to take this course.
If you’re still a relatively novice java programmer, then don’t worry – you’ll be able to follow this course as long as you have learned the basics before you start – we recommend you take Virtual Pair Programmers’ Java Fundamentals Course – certainly that covers all the pre-requisites for this course.
Having problems? check the errata for this course.
1 |
Introduction |
Preview
9m 50s |
|
An overview of the course | |||
2 |
Sorting Lists |
Watch
24m 1s |
|
How to sort Lists in Java, with the Comparable and Comparator interfaces. | |||
3 |
Types of List |
Watch
25m 44s |
|
An in depth look at the ArrayList and LinkedList. | |||
4 |
How HashMaps Work |
Preview
23m 22s |
|
How HashMap data is stored, and the purpose of the hashCode. How Linked HashMaps work. | |||
5 |
Beginning Log4j |
Watch
36m 1s |
|
Why to use logging, what are logging events, appenders and severity levels, and how to configure version 2 of Log4J. | |||
6 |
Going Further with Log4j |
Watch
30m 3s |
|
We explore the differences between versions 1 and 2 of Log4J, and see a working example with Spring. We’ll cover the rolling file appender, logging exceptions, and how to optimise logging code. | |||
7 |
Java.util.logging |
Watch
19m 55s |
|
Differences between Log4J and JUL, and a worked example in JUL. | |||
8 |
Logging facades |
Watch
19m 41s |
|
Why logging facades are used, and we’ll see Commons Logging in action. We’ll talk about SLF4J and JBOSS also. | |||
9 |
Introducing Generics |
Preview
14m 56s |
|
What problems do Generics solve, and using built in Java classes that support generics. | |||
10 |
Writing Generic Classes and methods |
Watch
21m 15s |
|
Creating our own generic classes and methods. | |||
11 |
Handling Generics compiler warnings |
Watch
27m 10s |
|
Understanding the warning messages that Eclipse gives us when we use Generics, and strategies for resolving the warnings. | |||
12 |
Generics with Wildcards |
Watch
16m 50s |
|
Approaches to using collections with multiple object types (interfaces, inheritance and Wildcards), and how to understand the complexities of generics syntax. | |||
13 |
Lambdas in Java 8 |
Preview
34m 29s |
|
An overview of functional programming and how it can add to the Java object model. Functional interface and lambda expression syntax. | |||
14 |
Built in Functional Interfaces |
Watch
24m 56s |
|
The Function, Supplier, Consumer and Predicate functional interfaces and their variants. | |||
15 |
Lambdas with Collections |
Watch
18m 52s |
|
Using the forEach method and sorting collections with Lambdas. | |||
16 |
Introducing Streams |
Watch
28m 14s |
|
Manipulating collections using the new Java 8 Stream objects. | |||
17 |
Lambdas Practical |
Watch
21m 54s |
|
A chance to put the lambda functionality into practice on a project. | |||
18 |
Introducing Threading |
Watch
10m 57s |
|
What is threading and how modern processors work. | |||
19 |
Writing a Thread |
Watch
15m 35s |
|
Writing our first threading code. | |||
20 |
Synchronization and Thread Safety |
Watch
22m 14s |
|
The problems of thread-safety, the synchronized and volatile keywords. | |||
21 |
Collections Thread Safety |
Watch
24m 24s |
|
Using collections in multi-threaded applications. | |||
22 |
Thread Safety in Web Applications |
Watch
13m 54s |
|
How to ensure web applications (including Spring MVC) are thread-safe. | |||
23 |
Avoiding Deadlocks |
Watch
21m 20s |
|
The problem of synchronization deadlocks and the wait and notifyAll methods. | |||
24 |
Thread Process Flow |
Watch
18m 49s |
|
How to interrupt and chain threads. Should I catch the InterruptedException? | |||
25 |
Java 5 Enhancements |
Watch
31m 9s |
|
How to create thread pools with Executor Services, the Callable interface, Locks and Conditions. | |||
26 |
Memory Fundamentals |
Preview
18m 30s |
|
How java manages memory, explaining the stack and the heap. | |||
27 |
Values and References |
Watch
25m 1s |
|
How varaibles are passed into methods, by value or by reference and what this means. | |||
28 |
Escaping References |
Watch
36m 10s |
|
The problem of escaping references and strategies to avoid them. | |||
29 |
Garbage Collection |
Watch
42m 24s |
|
Introduction to garbage collection, string itnernalization, garbage collection eligibility, the finalize method, and memory leaks. | |||
30 |
Generational Garbage Collection |
Watch
26m 45s |
|
An in depth look at how the JVM collects garbage in an efficient way, monitoring the garbage collection process, and understanding PermGen memory issues. | |||
31 |
Tuning the Virtual Machine |
Watch
17m 14s |
|
Options for adjusting the default behaviour and settings of the virtual machine. | |||
32 |
Hunting for Memory Leaks |
Watch
26m 2s |
|
A practical session where we’ll looking at a real web application to detect and fix a memory leak. | |||
33 |
Weak and Soft References |
Watch
5m 59s |
|
Weak references, Soft references and WeakHashmaps. | |||
34 |
Course Summary |
Watch
3m 41s |
|
A final farewell |