Getting Started with Clean Code Java SE 9

Get to know the basics of modular coding through Java 9
Instructor:
Packt Publishing
10 students enrolled
English [Auto-generated]
Understand Java SE 9 platform module system (JPMS) concepts and goals
Understand the changes to the folder and library structure in JDK 9 and how this introduces the reliable configuration concept
See how JPMS provides real encapsulation to develop more secure applications
Build applications using the new module system
Know how to use the module-path instead of the class-path when starting Java applications
Learn by examples the different techniques that help you migrate your current code to Java SE 9 smoothly
Find out how to use the new jlink tool in JDK 9 to a customizable JREs that fit scaled-down devices efficiently.
Master creating pluggable and loosely coupled components or modules, with services, service providers, and service consumers.
Explore via examples how to create a service provider where you need more control over how the service implementation is initiated

This practical video series will make you a master of Java SE 9’s core concepts, components, tools, and new major features, so you can become a Java Ninja. By the end of the third section, you will have mastered Java Modularity and its core JDK structure changes.

The second section introduces more advanced topics about modularity and covers all the techniques that will help you migrate your code smoothly to Java 9. The final section introduces the great new features shipped with the language to show you how to create custom runtime images (aka customized JREs) and loosely coupled modules with services, service provider, and service consumers.

All the topics are powered by examples to make the explanations practical.

About the Author 

Mohamed Taman is an Enterprise Architect/Senior Software Engineer at WebCentric Company. He is a frequent consultant with around 20+ years’ experience in Java. He holds a Diploma in Computer and Automatic Control in 1999, and a BSc in computer systems engineering, with a major in Electrical Engineering in 2005. He formerly lived in Cairo, Egypt, but has just relocated to Belgrade, Serbia.

Mohamed’s experiences strongly include development in Java and JavaScript, web, mobile, and IoT for industries including financial, banking, tourism, government, and healthcare; he has worked for Pfizer, Silicon Expert, Google, Oracle, and e-finance. He has worked with a number of technologies including UX, user-facing GUI frontend engineering, DevOps, cloud computing, AI, ML, big data, Blockchain, backend, mid-tiers, and integrations of large-scale systems in Agile environments.

Mohamed enjoys talking at international conferences to evangelize Java standards, Java EE, Java SE, and his experience in different domains, as he is a very knowledgeable Java community member. He worked closely with the teams responsible for the development of the JDK and Java EE.

In addition, he is a member of Adopt-a-JSR of Java EE 8, OpenJDK 9, 10, and 11, and JavaFX programs. He is a JCP member, was 2014 JCP Executive Committee member, and is on the Java Community Process (JCP) expert group (EG) for JSRs 354, 363, and 373.

Community-wise, Mohamed is a Java Champion, Oracle Developer Champion, EGJUG leader, MoroccoJUG member, and Oracle Egypt Architects Club board member, and won the 2014 and 2015 Duke’s choice awards, 11th annual JCP adopt 2013 awards, and United Nations Mobile Hackathon 2015, gaining second place worldwide.

Why Java SE 9?

1
The Course Overview

This video gives an overview of the entire course.

2
Welcome to Java SE 9

The aim of this video is to introduce the core features brought by Java SE 8 to the language, and then introduce the amazing release Java SE 9 importance, improvements, core changes done in the language, and the way of writing more modular code.

  • Explore an overview on Java SE 8 core features and its importance to the viewer
  • Explore an overview on Java SE 9 core language features and tools to the viewer
  • Show the viewer why Java SE 9 is the next major release and why they need to master this topic
3
Java SE 9 Is the Future

The aim of this video is to learn more about project Jigsaw the module system specifically and Java SE 9 specification in general, and how they target the future.

  • Introduce the project Jigsaw, the module system JSR 376
  • Know about the module system features and what is problem addressed to solve
  • Get an overall exploration about Java SE 9 specification and its features
4
What You Should Know?

The aim of this video is to learn more about a specific and basic knowledge, tools, and development environment required to get the most of this course.

  • Know what the needed knowledge, tools to go through this course
  • Explore the required tools
  • Understand what you will get from this course
5
Choosing a Development Environment

The aim of this video is to introduce the Java IDEs available in the market with a small overview and comparison of each one.

  • Explore the best IDEs available in the market
  • Know about NetBeans, and IntelliJ IDEA IDEs features
  • Know about the chosen IDE and operating system that will be used during the course

Getting Started with Java SE 9

1
Installing Java SE 9 on macOS

The aim of this video is to go through the installation and configuration process of Java SE 9 JDK on Apple macOS Sierra operating system.

  • Check the minimum Apple macOS operating system versions that support Java SE 9 SDK
  • Learn the new applet requirements and start downloading the Java SE 9 SDK
  • Install and configure the Java SE 9 SDK on Apple macOS Sierra
2
Installing Java SE 9 on Windows

The aim of this video is to go through the installation and configuration process of Java SE 9 JDK on Microsoft windows 10 operating system.

  • Check the minimum Microsoft Windows operating system versions that support Java SE 9 SDK
  • Learn the new applet requirements, and start downloading the Java SE 9 SDK
  • Install and configure the Java SE 9 SDK on Microsoft Windows
3
Installing IntelliJ IDEA on Windows

The aim of this video is to go through the installation process of IntelliJ IDEA 2017 community edition on Microsoft Windows 10 operating system.

  • Introduce IntelliJ IDE versions and start downloading the Microsoft Windows version
  • Install Intellij IDEA on Microsoft Windows 10
  • Start and configure Intellij IDEA on Microsoft Windows 10
4
Installing IntelliJ on macOS

The aim of this video is to go through the installation process of IntelliJ IDEA 2017 community edition on Apple macOS Sierra operating system.

  • Introduce IntelliJ IDE versions and start downloading the Apple macOS version
  • Install Intellij IDEA on Apple macOS Sierra
  • Start and configure Intellij IDEA on Apple macOS Sierra
5
Test Your Installations

The aim of this video is to develop a simple Java SE 9 application using one of the core features (module system) to check that our environment is healthy and ready for the course.

  • Launch IntelliJ IDE and configure Java SE 9 SDK
  • Create and develop Hello World application
  • Compile and run the application
6
Using the Exercise Files

The aim of this video is to explain how the exercise files are organized and how to use them along with the course.

  • Explain exercise files contents organization
  • Navigate the projects
  • Open projects inside Intellij IDE

Project Jigsaw and Basic Module Concepts

1
Introduction to Module System

The aim of this video is to Introduce the JPMS concepts, problems of the current system, project Jigsaw history and goals to solve, none reliable configuration, and week encapsulation pains we had, in the previous Java releases.

  • Talk about what is the module system, why we need it, its long history, and explore the current system problems
  • Look on how the module system solves these problems
  • Highlight the difference between previous JDKs structure and the new JDK 9 structure
2
What Is a Module?

The aim of this video is to explore module development in Java. How JDK 9 is different from other releases, how java SE 9 application is different, and list all the modularity related JEPs and JSRs.

  • What are the Java SE 9 module and its core components? Also look at how current JDK is modularized
  • List current JDK 9 modules, introduces base mother module, and compare Java SE 9 and 8 applications structure
  • Get familiarized by the list of all JEPs and JSRs that brought to us the Java modularity for more deep insights
3
Module and Module Descriptor Basics

The aim of this video is to discuss about two more important concepts of module and module descriptor basics, syntax, and its rules.

  • Explain the basic module concepts and the rules that we should follow to be able to develop Java 9 modules
  • Know more about the module descriptor, its metadata, and its syntax
  • Know the difference between class-path and module-path
4
Module Declarations

The aim of this video is to learn how to declare module explain all the basic required keywords, and directives related to module declaration.

  • Introduce more about module declaration directives
  • How to create module declarations that specify a module’s dependencies (with the requires directive)
  • Which packages a module makes available to other modules (with the exports directive)
5
Advanced Module Declarations

The aim of this video is to learn how to declare a module, explain all the advanced keywords and directives related to module declaration to develop a services and different reflections implementation.

  • Explain more about advanced module declaration directives and how services are offered (with the provides...with directive)
  • Explain how services are consumed (with the uses directive) with examples
  • Explain what other modules it allows reflection (with the open modifier, the opens and opens...to directives)
6
Developing Modular Hello World Application

The aim of this video is to go through the development of a Hello World application in a modular way. Also we will see how to compile and run such a modular application from exploded module folder.

  • Explain the module naming convention
  • Explain Hello World-module project structure and relationship between module and its artifacts
  • Develop, compile, and run the modular hello World application from exploded module folder from command line and IntelliJ IDE
7
JAR and Run Modularized Hello World Application

The aim of this video is to go through packaging our previously Hello World modular application into a modular JAR file.

  • Explain how to package the developed modular Hello World module from the terminal or command line
  • Go through the Hello World module project packaging from within Intellij IDE 2018
  • Run both the created modular JAR file, either it was from command line or IntelliJ IDE with different options
8
Creating and Using Custom Modules

The aim of this video is to go through the development of and use of custom modules, and then package them into a modular JAR files.

  • Explain the Hello World modules project structure and relationships between modules and each modules contained packages
  • Develop the project modules and package them into modular JAR files using Intellij IDE 2018
  • Run the main client module from exploded module folder and from modular JAR file

Compatibility and Code Migration to Java SE 9

1
More on Module-Dependency Graphs

The aim of this video is to have a deeper look at module-dependency graphs, and how to avoid module dependency problems that could be raised when implementing modules.

  • Check the dependency graph components of a module depending on java.desktop module
  • Get a closer look at the aggregator modules java.se, and java.se.ee
  • Understand the errors that occur if a module directly or indirectly requires itself known as a cycle
2
Migrating Current Code to Java 9

The aim of this video is to go through the different techniques available in Java SE 9 to help you migrate your current code base to the new Java SE 9 smoothly.

  • Check code migration considerations, especially for internal APIs access
  • Learn about the Java 9, the different compilation modes, and unnamed, and automatic modules
  • Encapsulate resources in modules all with examples
3
The Unnamed Module

The aim of this video is to deep dive to understand what the unnamed module is.

  • Discuss and understand what the unnamed module exactly is
  • Understand what modules they require and what packages it exports
  • See an example of unnamed module that runs on class path and module path, then do the analysis of the application using jdeps tool and at last describe the application using describe-module option
4
The Root Modules

The aim of this video is to deep dive to understand what the root modules is and how to use modules that is not part of root modules.

  • Find out what the root modules are
  • Learn how our old code will continue working using Java EE libraries like JAXB in Java 9
  • How it was working before Java 9 with examples to clear the idea
5
Automatic Modules

The aim of this video is to understand what the automatic modules is.

  • Introduce the automatic modules
  • Learn about what packages it exports and what modules it requires
  • See an example to demonstrate the concepts of automatic modules
6
jdeps Tool – Java Dependency Analysis

The aim of this video is to understand how to use the jdeps which is the Java Dependency Analysis tool to help you migrate your code to Java 9.

  • Introduce another tool to help you migrate your code to Java 9 which is the jdeps tool
  • With examples how to determine the modules you need and how to get in touch with some options
  • How to produce a graph files showing the dependency

Watch Video

Advanced Module Concepts

1
jlink Tool – Creating a Custom Runtime

The aim of this video is to learn how to create a custom runtime images using new jlink tool for scaled down and limited resources devices.

  • Discuss the problems we had previously, that leads to create such a great jlink tool and what the jlink command is
  • How the JDK and JRE modularization will help us to create our reliable custom runtime images smoothly
  • Use the jlink tool to create a custom runtime image for our Hello World application
2
Creating Services and Service Providers

The aim of this video is to learn how to create services and service providers as modules to create a loosely coupled system components which can make large-scale systems easier to develop and maintain.

  • Introduce services and class ServiceLoader which help you to create a loosely coupled system components
  • Deploy services and service providers as modules
  • Develop a complete example to understand how to do that
3
Service Provider Module with provider() Method

The aim of this video is to create service provider module with the provider() method. This can be preferable for the scenarios where we want to have more control over how the service implementation is initiated.

  • Introduce how Java 9 provides another option for the service provider module
  • Discuss how this option is preferable for the scenarios where we want to have more control over how the service implementation is initiated
  • Develop a complete example to understand how to do that
You can view and review the lecture materials indefinitely, like an on-demand channel.
Definitely! If you have an internet connection, courses on Udemy are available on any device at any time. If you don't have an internet connection, some instructors also let their students download course lectures. That's up to the instructor though, so make sure you get on their good side!

Be the first to add a review.

Please, login to leave a review
e89ee63a41d4f540827e1a3640a1acff
30-Day Money-Back Guarantee

Includes

4 hours on-demand video
Full lifetime access
Access on mobile and TV
Certificate of Completion