Java: Enterprise App Development with Java 9: 4-in-1
3.7 (5 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
57 students enrolled

Java: Enterprise App Development with Java 9: 4-in-1

Build modern and scalable enterprise applications using Java 9 and Java EE 8 to become a professional Java developer!
3.7 (5 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
57 students enrolled
Created by Packt Publishing
Last updated 7/2018
English [Auto-generated]
Current price: $139.99 Original price: $199.99 Discount: 30% off
5 hours left at this price!
30-Day Money-Back Guarantee
This course includes
  • 9 hours on-demand video
  • 1 downloadable resource
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
Training 5 or more people?

Get your team access to 4,000+ top Udemy courses anytime, anywhere.

Try Udemy for Business
What you'll learn
  • Create efficient lock-free programs that leverage the multi-core architecture of the CPU using Java 9’s features
  • Gain practical experience of Java 9, including modules, the Streams API, the Collections API, multi-level JARs and HTTP/2 clients.
  • Build real enterprise Java applications including a website and a microservice
  • Building APIs for the connected web
  • Build a simple music streaming service
  • Learn about enterprise Java (JEE 8), including JSF, JPA, and CDI
  • Use the Reactive programming model to create efficient programs
Course content
Expand all 62 lectures 08:52:42
+ Java 9 Core Principles
17 lectures 02:47:24

This video provides an overview of the entire course.

Preview 04:23

How to install and set up the development environment on MacOS and Windows?

  • Download the Java Development Kit (JDK)
  • Install JDK on our Mac and Windows operating system
  • Install the IntelliJ IDEA IDE 
Installation and Setup

What is Java, and how is it useful to developers?

  • Go through the history of Java
  • Learn the features in each version
  • Get to know the advantages of Java over other languages      
Introduction to the Java Programming Language and Its History

How do I build an application in Java, and which tools are involved in this process?

  • Know what the JVM is
  • Understand what the JIT compiler is
  • Learn how Java manages the memory 
Introduction to the JVM

What is the quickest way of writing an application in Java 9, using the JShell?

  • Understand what JShell is
  • Understand the components of a Java application
  • Write the application in JShell and run it 
Java 101 – "Hello World” Example in JShell"

What is a Java class, and why is it a required component in any source file?

  • Know what a Java class is
  • Know what the components of a class are
  • Understand the difference between classes and instances      
Introduction to OOP

Which are the main paradigms in Java, and how can they help us write better code?

  • Look what inheritance is
  • Learn what interfaces, abstract classes, and final classes are
  • Look into polymorphism and encapsulation 
Introduction to OOP Principles

How can we design an application in Java based on given usability requirements?

  • Discuss the normal structure of a Java application
  • Analyze the user requirements
  • Discuss the technical requirements 
Introduction to the Application

Based on known requirements and a given design diagram, how do we implement them in Java code?

  • Write the basic structure of the Java classes
  • Link the classes together
  • Understand how to use the links in the data structure 
The Foundations – Creating Classes for Songs, Artists, Albums, and Listeners

How do we start applying the OOP paradigms in our existing code to enhance our application?

  • Use encapsulation in our application
  • Use interfaces and abstract classes
  • Discuss how using the paradigms makes a difference 
Abstract Classes and Interfaces

Which data structures does Java come with that we can use to store series of objects? Also, what is the difference between the various data structures?

  • Discuss lists and arrays – and the difference between them
  • Discuss the difference between typed versus untyped structures
  • Use the new concepts to improve the code 
Untyped Versus Typed Data Structures

Which data structures in Java enable us to store data in a more complex way?

  • Look into maps and the various implementations
  • Look into sets as alternatives to lists
  • Improve our application yet again using these concepts 
Maps and Sets

How can we enhance the existing structure of the application to enable answering more complex queries about the stored music?

  • To enhance the application, we need to improve the design diagram
  • Understand the new requirements
  • Improve the code by double-linking the classes 
Linking All of Our Models together

How can we use static methods in Java to define behavior that does not need a stored state?

  • Know what a static variable is in Java
  • Look into static methods
  • Write new code using static variables and methods 
Creating Static Methods

How can we use the concepts we learned to store the songs that a given user has listened to and allow querying from a user’s perspective?

  • Understand how the new requirement adds value to the application
  • Look into the updated design diagram
  • Code the new classes and link them to the existing code      
Creating Instance Methods

How can we load some data into our application and have richer data structures?

  • Define how we read the data from files
  • Discuss how the application changes to cope with more data
  • Write code to read the data from file into memory 
Loading Our Streaming Service with Data

How can we design a command-line user-facing interface to allow anyone to input data and interact with the application?

  • Understand what a CLI application is
  • Design how the user interaction must happen
  • Reuse existing code to create a CLI user interface 
Creating an Interactive Shell for Our Application and Testing
Test your knowledge
6 questions
+ Java 9 New Features Deep Dive
10 lectures 02:39:14

This video provides an overview of the entire course.

Preview 02:55

In this video, we will discuss module system introduced in Java 9, what they are good for, and what they are not good for.

  • Discuss Java Platform module system
  • Explore the problems the modules can solve
  • Understand module system and address the problems 
Working with Modules

This video shows steps to design your API and the package structure in your library.

  • Design package structure for your module
  • Create modules for a library 
Limiting Access to APIs

In this video, we will be talking about strategies for easing these migration concerns.

  • Discuss why migration is needed and is an issue
  • Study how JPMS supports old libraries and mixed applications
  • Migrate JARs to modules step by step 
Handling the Migration to Java 9

This video shows how to use JShell to aid the learning path for new developers.

  • Use and reuse variables
  • Create methods
  • Explore an API with JShell 
Using JShell

In this video, we will go over some of the key features in Java 9.

  • Explore HTML 5 Javadoc
  • Discuss improved method collection
  • Study about multi-release jars 
Other New Features of Java 9

In this video, we will be covering how some of tools will be changing to take advantage of new Java 9 features.

  • Discuss different commands that we get with JDK
  • Study examples about some of these commands 
Java 9 Tooling Support
Java 9 Garbage Collection

This video shows the improvements in JVM logging.

  • Discuss logging
  • Describe the different logging systems
  • Explore Java 9 
Java 9 Logging

In this video, we will be reviewing security and other JVM and runtime enhancements.

  • Discuss support for SHA-3, deprecation of SHA-1, and the new JVMI interface, ahead of time compilation and some other smaller new features.
  • Study enhanced support for DTLS
  • Discuss security and other features 
Other Features and Enhancement
+ Writing High Performance Java application in Java 9
12 lectures 58:02

This video provides an overview of the entire course.

Preview 01:45

In this video, you will learn what Java Memory Model is.

  • Learn how each Java thread has its own stack
  • Learn how heaps are shared between threads
  • Get access to the shared object that is directly from the main memory
Java Memory Model

In this video, you will learn about hardware affinity.

  • Learn about the context switching
  • Explore more with leverage processor affinity
  • Learn more with pre-fetching
Hardware Affinity

In this video, you will learn about JVM intrinsic functions.

  • Learn about the intrinsic function
  • Learn why it is useful
  • Learn how to enable it
JVM Intrinsic Functions

In this video, you will understand and analyze byte-code.

  • Learn about the byte-code
  • Understand how to see the byte-code of the class
Understanding and Analyzing Bytecode

In this video, you will learn about optimistic versus pessimistic locking.

  • Explore pessimistic locking
  • Learn about optimistic locking
Optimistic Locking Versus Pessimistic Locking

In this video, you’ll learn about Compare and Set structures.

  • Create an efficient aggregator
  • Use CAS structures from the java.util. concurrent package
  • Implement the accumulate method
CompareAndSet Structures

In this video, we will explore more about threads by coordinating them.

  • Learn how to execute multiple threads
  • Use CountDownLatch to achieve coordinating threads
Coordinating Threads

In this video, we will explore more of Java 9 with reactive streams.

  • Explore the Java 9 reactive streams API
  • Implement Publisher and Subscriber
  • Learn about the Processor
Java 9 - Reactive Streams

In this video, we will look at the code of the application with a potential memory leak.

  • Write a Stress Test to simulate real traffic
  • Start and look at the jvisualvm tool
  • Use jvisualvm to detect memory leaks
Detecting Memory Leaks - JVisualVM

In this video, we will examine CPU and resource usages of the Java application.

  • Use JavaMissionControl (jmc) to perform recording of a running application
  • Examine the recording and analysis of the usage of resources
Examining CPU and Resources Usage

In this video, we will go through the important points covered in this section.

  • You learned what the optimistic locking and pessimistic locking are
  • You used the CAS structures from java.util.concurrent
  • You created reactive application using Java 9 Reactive Streams
Summary of Writing High Performance Java Applications
Test your knowledge
5 questions
+ Hands-On Enterprise Application Development with Java 9
23 lectures 02:28:02

This video gives an overview of the entire course.

Preview 02:54

In this video, the latest version of Java 9 is downloaded and installed on the development machine.

  • Download Java 9.0.1 from Oracle website
  • Run installation and install Java 9 JDK and SDK
  • Test the Java 9 installation from the command line
Installing Java 9

In this video, we will see that Eclipse Oxygen is downloaded from the Eclipse website. It is then installed and started.

  • Download Eclipse Oxygen from eclipse website
  • Unzip the Eclipse Oxygen to software directory
  • Startup Eclipse and check install
Installing Eclipse

In this video, we will see how Open Liberty Application Server is downloaded and then installed to the software directory. It is then configured under eclipse together with the Open Liberty plugins.

  • Download Open Liberty Application Server and unzip to software directory
  • Install Open Liberty and plugin under Eclipse
  • Startup Open Liberty
Installing Open Liberty

In this video, we will see how Apache Derby is downloaded from the Apache site and get installed under Eclipse.

  • Download Apache Derby and unzip to software directory
  • Apache Derby database is created under Eclipse
  • Test the Apache Derby database
Installing Apache Derby

This section provides an overview of the application that we are building. It covers use cases, screen flow, and the entity model. It ends with considering the applications limitations.

  • Discuss use cases
  • Discuss screen flow and entity model
  • See the limitations of the application
Exploring Our Marathon Entry System and Use Cases

This video introduces JSF and its associated configuration files. It concludes with a simple application and deployment to Open Liberty application server.

  • Explain what is JSF
  • Look at JSF configuration files
  • Code a simple example and deploy to Open Liberty application server
Introduction to JSF

In this video, the JSF lifecycle is introduced along with PrimeFaces facelets. It concludes with looking at how to use these facelets to develop our application.

  • Learn about JSF lifecycle and PrimeFaces
  • Code PrimeFaces data table facelets and backing beans
  • Deploy to Open Liberty
Displaying Data with JSF

This video covers entering data in JSF forms and navigating between screens. It also introduces CDI scope.

  • Introduce the CDI scope
  • Use CDI scope to navigate between screens
  • Run example on Open Liberty application server
Inputting Data with JSF

This video covers serving web pages using HTTP/2. It uses the Servlet 4.0 API, and also uses JShell and the HTTP/2 client in Java 9.

  • Introduce HTTP/2 scope
  • Install Tomcat 9 and HTTP/2 configuration
  • Run example on Tomcat 9 from browser and JShell
HTTP/2 Server Push

This section explains what CDI is and how it can be used to create better enterprise Java software.

  • Explain CDI
  • Understand Dependency Injection
  • Explain @Inject and @Qualifier
What Is CDI?

This video develops a payment service using CDI. It also covers Java 9 optional and streams changes.

  • Learn the changes to optional and streams APIs
  • Understand and develop code implementation
  • Test implementation on Open Liberty application server
Developing Our Payment Service Using CDI

This section covers the evolution of Java interfaces under Java 8 and 9. It concludes with how to use this on the payment service.

  • Learn about Java 8 and 9 interfaces
  • Code an example implementation for the payment interface
  • Deploy to Open Liberty
Using Default Methods on Our Payment Service

This video explains the options for database access in Java. It explores JDBC, JPA, and concludes with Enterprise JavaBeans (EJB)

  • Explain JDBC
  • Understand Java Persistence API (JPA)
  • Understand Enterprise JavaBeans (EJB’s)
Data Access in Java

This video explains the options for database access in Java. It explores JDBC, JPA, and concludes with Enterprise JavaBeans (EJB)

  • Explain JDBC
  • Understand Java Persistence API (JPA)
  • Understand Enterprise JavaBeans (EJB’s)
Configuring Data Access in Open Liberty

This video covers how JPA mapping works and concludes with mapping the marathon entry system domain model to its database.

  • Revisit the domain model and entity model
  • Learn how JPA attributes to map to entity model
  • Configure JPA attributes on domain model
Introduction to JPA Mapping

This video completes the JPA entity model for the marathon entry system. It covers mapping entity relationships.

  • Introduce JPA entity relationships
  • Map one-to-one and one-to-many entities
  • Code marathon entry system and run example
JPA – Mapping Relationships

This video explains what a microservice is and introduces RESTful microservices and JSON and JAX-RS.

  • Explain microservices
  • Explain RESTful services and JSON
  • Introduce Java EE 8 JAX-RS library to create RESTful services
What Is a Microservice?

This video develops a healthcheck microservice. It discusses why diagnostic healthcheck services are important and look at the Java 9 Process API.

  • Discuss healthcheck microservices and Process API
  • Develop healthcheck microservice, and create two GET methods
  • Test implementation on Open Liberty application server
Developing a Healthcheck Microservice

This video covers the evolution of Java interfaces under Java 8 and 9. It concludes with how to use this on the payment service.

  • Learn about Java 8 and 9 interfaces
  • Code an example implementation for the Payment Interface
  • Deploy to Open Liberty
Developing a Payment Microservice

This video explains the reason behind Java modules, what a module is and the syntax of module-info.class.

  • Why we need Java modules
  • What a module is
  • Explain module-info.class syntax
Introduction to Java Modules

This video works through a Java 9 module example using a payment interface and client.

  • Walk through of code example
  • Run code with initial module-info.class
  • Complete the Java module example
Java 9 Modules Examples

This video discusses what multi-release jars are, and how they are structured.

  • Explain the motivation for multi-release jars
  • Explain the issues associated with multi-release jars
  • How a multi-release Jar is structured
Java 9 Multi-Release Jars
Test your knowledge
4 questions
  • Prior programming experience of Java is assumed.

A lot of applications built today need to handle huge amounts of traffic in low latency. Java is a very popular language and JVM is a popular platform to build high performance programs in Java. Writing high-performance concurrent and thread-safe programs is hard, but you’ll discover how and see what Java 9 adds to the software engineer toolkit.

Java 9 comes with a rich feature set. It intends to change the way Java developers used to write code. It introduces a modular JDK so that developers can only include the modules that they need. The prospect of being one of the first to explore the brand new JDK from Java is the primary motivator. Also, this is the biggest change been introduced in Java for a while.

This comprehensive 4-in-1 course will set you on the path to become a skilled and professional Java developer by exploring Java 9 and Java EE 8 and learning how these technologies can be used to create a modern, scalable enterprise application. Comprehensive and detailed, the easy to follow tutorial will take viewers on a journey to going from zero to hero Java programmers with the new Java 9 SDK.

Contents and Overview

This training program includes 4 complete courses, carefully chosen to give you the most comprehensive training possible.

The first course, Java 9 Core Principles, covers exciting real-world examples with Java. As you progress in your journey, you will encounter more advanced topics including functional data processing, before investigating how you can build fast, scalable APIs for the connected web. In the final section, you will build an API to analyze the sentiment of sentences provided by the user, along with various statistics about your API.

The second course, Java 9 New Features Deep Dive, covers new modular programming concept in Java 9 and know how it will affect you and your clients ahead of time.We will start up with the setting up of Java 9 and learn the modularization concepts and then proceed to deployment. This should be hands on look at Java 9, but no one will be using it to make real-world applications yet. This is an assessment video for the millions of Java developers out there looking to put it to the test.

The third course, Writing High Performance Java Application in Java 9, covers how to monitor applications and write code in high concurrent with the proper tools. First, we’ll create efficient lock-free programs that leverage the multi-core architecture of the CPU using the newest Java 9 features. Then you’ll see how Java Memory Model affects the performance of your programs. You’ll discover why it’s even more important to be aware of the software-hardware co-operation of your programs in Java 9. Moving on, you’ll find out how to leverage constructs from JAVA 9 java.util.concurrent to create efficient multi-threaded programs. We’ll explore the different kinds of locking available in JAVA 9 and get to know when you should use which kind of locks. Finally, you’ll see what tools are shipped with the JDK 9 and know how to use them properly.

The fourth course, Hands-On Enterprise Application Development with Java 9, covers modern and scalable enterprise applications using Java 9 and Java EE 8 and become a professional Java developer. We will use case studies to explore how we can use the JEE8 technologies of JSF, EJB, and JPA to build a database-driven website, while all the time working with new Java 9 constructs. You'll learn how to extract a component from our website as a standalone microservice and decouple your microservice to allow it to be reused within an organization. We will then delve into Java 9 technologies such as JShell, modules, the Streams API, Multi-Jar, Process APIs, and HTTP/2 clients.

By the end of the course, you’ll get up and running with Java with exciting real-world examples to monitor applications and write code in high concurrent with the proper tools leveraging Java Concurrency.

About the Authors

  • Colibri is a technology consultancy company founded in 2015 by James Cross and Ingrid Funie. The company works to help its clients navigate the rapidly changing and complex world of emerging technologies, with deep expertise in areas such as big data, data science, machine learning, and cloud computing. Over the past few years they have worked with some of the World's largest and most prestigious companies, including a tier-1 investment bank, a leading management consultancy group, and one of the world's most popular soft drinks companies, helping all of them make better sense of their data and process it in more intelligent ways. The company lives by its motto: Data -> Intelligence -> Action. Andrei Ruse, our Author, is currently working with Colibri Ltd, has been working as a software developer in the financial service industry for over 3 years, and has over 6 years' experience with Java as the main programming language, both academically and professionally. Prior to his current role in a FinTech startup in London, he spent three years working for one of the World's largest investment banks, having joined it straight after graduating from Manchester University with a degree in Computer Science.

  • Peter Verhas is a senior developer and software system architect with more than 30 years' software development experience. He currently works for EPAM as a senior developer, where he is involved in many customer projects and actively participates in the educational activities of the company. Peter writes a technical blog and is committed to open source software development. He has been using Java since 2005 and is also an author at Java Code Geeks.

  • Tomasz Lelek is a Software Engineer who programs mostly in Java and Scala. He is a fan of microservice architectures and functional programming. He dedicates considerable time and effort to be better every day. Recently, he's been delving into big data technologies such as Apache Spark and Hadoop. He is passionate about nearly everything associated with software development. Tomasz thinks that we should always try to consider different solutions and approaches to solving a problem. Recently, he was a speaker at several conferences in Poland - Confitura and JDD (Java Developer's Day) and also at Krakow Scala User Group. He also conducted a live coding session at Geecon Conference. He is currently working on this website using ML

  • Martin Farrell is an independent Java consultant and trainer based in Edinburgh, UK, with over 18 years' Java experience. He has consulted across a range of businesses from banking to telecommunications and Silicon Valley start-ups. He also blogs about Java and Spring technologies on the popular javabullets blog, and is Most Valuable Blogger at dzone and a contributor to  When not consulting, Martin likes to spend time with his wife and two children. He is also a keen cyclist and triathlete.

Who this course is for:
  • Developers looking to get started with programming in Java, or looking to learn what’s new to the language in Java 9.
  • Software engineers with professional experience in Java who want to create very efficient and high-performance applications in Java 9.
  • Programmers who want to take their knowledge of Java to the next level by learning to build enterprise-level applications using Java 9 and its new features.