Java/Java EE, Open-Source & Web Application Servers
Over twenty years after its inception, Java continues to be one of the most utilized programming languages in the world. But the software industry has changed dramatically during this time and so has Java. Java has evolved from its simple object-oriented and imperative roots to one that embraces reactive, modular, and functional programming paradigms. The outcome is Modern Java 9.
This course will present you the most up to date features of Java, including the modular system, the REPL engine and the reactive libraries. It will also take you on a deep dive in functional programming and offer a complete discussion on parallel and concurrent programming in Java – essential to all modern, core Java developers.
This course will combine theoretical with practical examples and generous amounts of lab time to ensure the material presented is fully understood. The course covers five learning modules over three days. Students will complete the course with a solid understanding of modern programming in Java 9.
To succeed fully in Advanced Java Training, you should be familiar and comfortable with basic Java programming concepts: Java syntax and object-oriented programming (OOP) in Java.
3 Days/Lecture & Lab
The course is modern take on Java and can be attended by beginner or advanced Java developers. It covers all new version 9 features plus topics that are not necessarily version 9 but still very current and important for Java SE developers Students should take Advanced Java Training if interested in learning more about the Java programming language in order to learn advanced programming techniques and concepts. Be prepared to participate and ask questions in class, as well as dive in and complete a variety of small labs (which can be done collaboratively with other class members).
Understanding modularity, its objectives and how it relates to Java.
- Mastering the new modularity syntax in Java 9.
- Grasping dependency graphs and how they affect code.
- Learning to apply modular thinking in real-world Java applications.
- Comparing the new module path concept to the classpath.
- Learning to use the new tools to build modular applications.
- Building modular Jars with versioning.
- Using Jlink to build light Java applications.
- Grasping layers and how they relate to classloaders.
- Recognizing the goals of JPMS vis à vis microservices and OSGi.
- Using the JShell REPL engine for quick protototyping.
- Learning how to use the new HTTP 2 client libraries.
- Accessing processes natively in Java using the Process API.
- Understanding the new Stack Walker API.
- Recognizing the different garbage collectors in the platform and their strengths and weaknesses.
- Understanding the history of functional programming and its principles tenets.
- Reconciling Java’s object oriented/imperative legacy with the functional paradigm.
- Understanding lambdas, lambda expressions, lambda blocks and how they differ from anonymous classes.
- Mastering the new Java 8 syntax for lambdas, functional interfaces, default methods and method references.
- Applying the standard functional interfaces in functional code.
- Using functional composition to create new functionality by combining disparate code segments.
- Utilising the newly functionalized Collections library.
- Be able to reason in functional streams.
- Writing efficient parallel code with parallel streams.
- Making appropriate use of mutable and non-mutable reduction.
- Adapting functional concepts such as currying, higher-order functions, partial applications and recursion to Java 8.
- Understanding the importantce of type safety in Java.
- Grasping the concept of type erasure and the goals of generics.
- Understanding co-variance as it applies to regular Java objects vis à vis parametrized types.
- Simplifying the complexities of generics and understanding the reasons behind them.
- Comparing the differences between concurrent and parallel programming.
- Understanding threads, thread interruptions, Synchronized blocks, Wait/notify, Executor service flavours, the fork-join framework, futures, atomics, Read/Write locks and conditions, Semaphores, barriers, countdown latches, exchangers, promises, spliterators, and Streams.
- Understanding the goals of the reactive manifesto and how reactive programming is achieved in Java 9.