Advanced Java Development

This course is aimed at existing Java developers who wish to obtain a deeper understanding of advanced Java programming techniques, APIs, and development practices. The course also explores important additions in Java 8 and includes a preview of Java 9, as well as showing how to implement distributed systems using REST and Web Sockets.

What you will learn:

  • Advanced file handling, NIO2, and JDBC
  • Localization and resource bundles
  • Reflection
  • Sockets
  • Interfacing with native code using JNI
  • Multithreading and concurrency techniques and APIs
  • Tuning garbage collection
  • Implementing security
  • Utilizing Java 8 language features and API enhancements
  • Effective unit testing
  • Design patterns
  • Creating and consuming REST-based Web services
  • Implementing full-duplex client-server communications using Web sockets
  • Looking ahead to Java 9

Prerequisites:

  • At least 6 months Java experience

Course outline:

NIO2
  • Overview of NIO2
  • Basic operations
  • File visitors
  • Directory watching
  • File attributes
Advanced JDBC Techniques
  • DataSources
  • Metadata
  • JDBC escape syntax
  • Transaction management
  • Additional techniques
Localization and Resource Bundles
  • Locales
  • Resource bundles
  • Locale-specific formatting and parsing
Reflection
  • Dynamic retrieval of information using reflection
  • Creating instances of extensibility objects
  • Class fields, methods and constructors
Sockets
  • Introduction to sockets
  • Implementing a socket server
  • Implementing a socket client
Java Native Interface (JNI)
  • Getting started with JNI
  • Defining native methods in Java
  • Implementing native code in C/C++
Multithreading Techniques
  • Java synchronization language features
  • Designing thread-safe classes
  • Recommendations for synchronizing resource access
Additional Multithreading Issues
  • Using concurrent collections
  • Using synchronizers and locks
  • Thread pooling techniques
  • Using the executor framework
  • Using pooling effectively
Tuning Garbage Collection
  • Essential concepts
  • Understanding object lifetimes
  • Generational collectors
  • Heap organization
  • Garbage collection options
  • Garbage collection monitoring and tuning
Security
  • Security managers
  • Policy files
  • Sandboxing
  • Cryptographic random numbers
Java 8 Features
  • Lambda expressions
  • Method references
  • Constructor references
  • Interface changes in Java 8
Additional Java 8 Features
  • Streams
  • Collections and concurrency enhancements
  • New date/time API
  • IO/NIO additions
TDD and Unit Testing
  • Principles of unit testing
  • Using JUnit and Hamcrest effectively
  • Dependency injection and mocking
Design Patterns
  • Taxonomy of design patterns
  • Creational patterns
  • Behavioural patterns
  • Structural patterns
REST-Based Web Services
  • Overview of RESTful services
  • Creating a RESTful service
  • Consuming a RESTful service
  • Handling JSON data
  • Browser-based developer tools
  • Secure communications
Web Sockets
  • Overview of Web Sockets
  • Defining a Web Sockets server
  • Defining a Web Sockets web page client
  • Defining a Web Sockets Java client
  • Overview of SSE
Looking Ahead to Java 9
  • Summary of features expected in Java 9
  • Modularizing code
  • New Java compiler options
  • Tooling

Andy Olsen - author of the course

Andy is a freelance consultant and instructor based in the UK, working mostly in the City of London and Oxford. Andy has been working with .NET since the Beta 1 days and has extensive experience in many facets of .NET development including WCF, WPF, WF, ASP.NET MVC Web development, and mobile applications. Andy has designed and written many Microsoft Official Curriculum courses in the last decade, and has been engaged as author and technical reviewer with Apress on some of their biggest selling books.

Other relevant courses