Getting Started with Clean Code Java SE 9
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 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?
This video gives an overview of the entire course.
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
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
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
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
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
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
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
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
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
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
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
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
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
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)
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)
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
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
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
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
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
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
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
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
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
Advanced Module Concepts
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
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
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