{"id":6526,"date":"2023-04-28T09:44:34","date_gmt":"2023-04-28T08:44:34","guid":{"rendered":"https:\/\/republify.se\/?post_type=product&#038;p=6526"},"modified":"2026-01-09T08:43:02","modified_gmt":"2026-01-09T07:43:02","slug":"advanced-modern-java","status":"publish","type":"product","link":"https:\/\/republify.se\/index.php\/produkt\/advanced-modern-java\/","title":{"rendered":"Advanced Modern Java"},"content":{"rendered":"<p><em>The course kicks off with <strong>a full day<\/strong> focusing on Concurrent Programming. This subject stretches from a brief introduction of the basic implementation of low level Threads, lingering <\/em><em>over the Executor Framework, with its vast number of concepts, to the enhancements provided by the introduction of lambda expressions and the Streams API in Java.<\/em><\/p>\n<p><strong>The second day<\/strong> of the course will cover numerous Design Patterns used heavily in the core Java APIs and of course frequent in complex applications. We will cover main parts of the<br \/>\nclassical Design Patterns catalogue, but also introduce some new additions such as DRY, SOLID etc. Some patterns have gained considerably from the introduction of generics and the support of functional programming in modern Java. We will check out these possibilities!<\/p>\n<p>State Machines are gaining more and more interest as digitalization moves on into almost every electronic device in our lives. In Java, state machines can easily be designed following a robust pattern implemented using modern Java technology.<\/p>\n<p><strong>Day three<\/strong> will cover some of the latest additions to the Java programming language. Modules in Java offer a new level of packaging and supports customization of deliverables needed for running an application.<\/p>\n<p>Performance issues will always be important for complex applications. W will have a look at the Java Flight Recorder and Java Mission Control that now are fully available measuring<br \/>\nbehavior of your applications.<\/p>\n<p>Both the aforementioned parts are crucial when you set out to build a library. Apart from the pure technical aspects there are some other issues you have to address in order to deliver a library to please your potential clients.<\/p>\n<p>Finally we take a look into the crystal ball, checking up what lies in the near future in the Java evolution, revealing features that will appear in upcoming Java releases.<\/p>\n<h3>Hands-On<\/h3>\n<p>Every chapter is backed by complete examples that are ready to run. In addition there are a number of exercises that will be addressed and discussed during the course.<\/p>\n<h3>Documentation<\/h3>\n<ul>\n<li>Digital copy of course slides<\/li>\n<li>Complete code for all examples\/exercises<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h2>Contents:<\/h2>\n<p><strong>1. Threads<\/strong><br \/>\n\uf0b7 Sequential vs. parallel processing of data<br \/>\no Utilizing available resources efficiently<br \/>\no Order of output may differ from order of output<br \/>\n\uf0b7 Introduction to basic Thread programming<br \/>\no Interface Runnable and class Thread<br \/>\no synchronized code<br \/>\no Thread Lifecycle<br \/>\no Concurrent programming pitfalls<br \/>\n\uf0b7 Case Study \u2013 A Storage<br \/>\no Consumer-Producer using low level Thread interaction<\/p>\n<p><strong>2. Concurrent Collections<\/strong><br \/>\n\uf0b7 Concurrent Collections in Java<br \/>\no CopyOnWriteArrayList<br \/>\no ConcurrentHashMap<br \/>\no BlockingQueue<br \/>\no CountDownLatch<br \/>\n\uf0b7 Case Study \u2013 A Blocking Storage<br \/>\no Consumer-Producer using a BlockingQueue<\/p>\n<p><strong>3. Executor Framework<\/strong><br \/>\n\uf0b7 Executor Framework<br \/>\no Callable, Future<br \/>\n\uf0b7 Replacing Runnable<br \/>\no Executors<br \/>\n\uf0b7 SingleThreadExecutor<br \/>\n\uf0b7 FixedThreadPool<br \/>\n\uf0b7 CachedThreadPool<br \/>\n\uf0b7 Asynchronous signaling<br \/>\no CompletionService<\/p>\n<p><strong>4. Concurrent Streams<\/strong><br \/>\n\uf0b7 Concurrency in the Streams API<br \/>\no stream() vs. parallelStream()<br \/>\no Interface Spliterator<br \/>\n\uf0b7 CompletableFuture<br \/>\no Supporting Executors using Supplier and Consumer<br \/>\n\uf0b7 Concurrency support for aggregates<br \/>\no Arrays supporting parallelism<br \/>\no ConcurrentHashMap improvements<\/p>\n<p><strong>5. Modern Software Patterns<\/strong><br \/>\n\uf0b7 Object Oriented Development<br \/>\no Design Patterns \u2013 The Catalogue<br \/>\no MVC \u2013 Model View Controller<br \/>\n\uf0b7 General Advice Patterns<br \/>\no SOLID<br \/>\no Dependency Injection<br \/>\no DRY<\/p>\n<p><strong>6. Modern Java Design Patterns<\/strong><br \/>\n\uf0b7 Modern Java Creational Patterns<br \/>\no Singleton<br \/>\no Builder<br \/>\no Factory Method<br \/>\n\uf0b7 Modern Java Structural Patterns<br \/>\no Adapter<br \/>\no Composite<br \/>\no Case Study \u2013 Library using Generic Composite<br \/>\n\uf0b7 Enhanced pattern using Generics<br \/>\no Decorator<br \/>\n\uf0b7 Modern Java Behavioral Patterns<\/p>\n<p><strong>7. State Machines<\/strong><br \/>\n\uf0b7 FSM \u2013 Finite State Machine<br \/>\no Supporting fixed number of states<br \/>\no Separating Context from FSM<br \/>\no Supporting multiple parallel FSMs<br \/>\n\uf0b7 Implementing FSM using Design Pattern State<br \/>\no FSM as a shallow inheritance hierarchy<br \/>\n\uf0b7 Abstract top class defines common behavior<br \/>\n\uf0b7 Defining events as Enums<br \/>\n\uf0b7 Derived classes model individual states<br \/>\n\uf0b7 Singleton pattern applied<br \/>\n\uf0b7 Modeling support<br \/>\no State Table covering all combinations of Events and States<br \/>\no UML State Diagram, Class Diagram, Object Diagram<br \/>\n\uf0b7 Case Study \u2013 Construction Elevator<br \/>\no Expanding existing FSM with new states\/events<br \/>\n\uf0b7 HSM \u2013 Hierarchical State Machine<br \/>\no Defining layers of state machines<br \/>\no Dependent state machine designed as a pluggable component<br \/>\n\uf0b7 Case study \u2013 ATM<br \/>\no Basic states of the ATM has a connection to dependent FSM<br \/>\no PINFSM used as an independent component<\/p>\n<p><strong>8. Performance<\/strong><br \/>\n\uf0b7 General aspects of performance tuning<br \/>\no Footprint vs. execution speed<br \/>\n\uf0b7 G1 GC \u2013 The new default Java Garbage Collector<br \/>\no Configuration and behavior<br \/>\n\uf0b7 JFR \u2013 Java Flight Recorder<br \/>\no Setting up a JFR session<br \/>\n\uf0b7 JMC \u2013 Java Mission Control<br \/>\no Presenting recordings produced by the JFR<\/p>\n<p><strong>9. Modules<\/strong><br \/>\n\uf0b7 What are Modules?<br \/>\no A new packaging level in Java<br \/>\n\uf0b7 Why Modules?<br \/>\no Packaging limitations in classic Java<br \/>\no JAR problems<br \/>\n\uf0b7 Modules grammar<br \/>\no Special keywords reserved for use in module declarations<br \/>\n\uf0b7 module<br \/>\n\uf0b7 open, require, transitive, exports, opens, to uses, provides, with<br \/>\no Observable modules<br \/>\n\uf0b7 Available for other parts of Java code to use and call<br \/>\no Internal modules<br \/>\n\uf0b7 Required by module parts but not accessible for other code<\/p>\n<p><strong>10. Building a Library<\/strong><br \/>\n\uf0b7 Types of libraries<br \/>\no Broad and Shallow vs. Narrow and Deep<br \/>\n\uf0b7 Library technical design<br \/>\no Internal Modules<br \/>\no Observable Modules<br \/>\n\uf0b7 The Library API<br \/>\no Documentation<\/p>\n<p><strong>11. Java in the Future<\/strong><br \/>\n\uf0b7 Project Amber<br \/>\no Small syntax feature enhancements in Java<br \/>\n\uf0b7 Project Valhalla<br \/>\no Supporting value types in Java<br \/>\n\uf0b7 Project Panama<br \/>\no Supporting native code calls<br \/>\n\uf0b7 Project Loom<br \/>\no Introducing Fibers for enhanced concurrency performance<\/p>\n","protected":false},"excerpt":{"rendered":"<p><strong>Advanced Modern Java dives deep into complex software constructs and specialized tools used in order to produce modern Java applications.<\/strong><\/p>\n<p>This course is directed at Java programmers who want to take the next step in their career now embracing the concepts in modern Java, getting a deeper knowledge in modern Java techniques<\/p>\n","protected":false},"featured_media":5593,"comment_status":"open","ping_status":"closed","template":"","meta":{"wds_primary_product_brand":0,"wds_primary_product_cat":0},"product_brand":[],"product_cat":[73,29],"product_tag":[],"class_list":["post-6526","product","type-product","status-publish","has-post-thumbnail","product_cat-java","product_cat-technical","first","instock","taxable","shipping-taxable","purchasable","product-type-simple"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/republify.se\/index.php\/wp-json\/wp\/v2\/product\/6526","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/republify.se\/index.php\/wp-json\/wp\/v2\/product"}],"about":[{"href":"https:\/\/republify.se\/index.php\/wp-json\/wp\/v2\/types\/product"}],"replies":[{"embeddable":true,"href":"https:\/\/republify.se\/index.php\/wp-json\/wp\/v2\/comments?post=6526"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/republify.se\/index.php\/wp-json\/wp\/v2\/media\/5593"}],"wp:attachment":[{"href":"https:\/\/republify.se\/index.php\/wp-json\/wp\/v2\/media?parent=6526"}],"wp:term":[{"taxonomy":"product_brand","embeddable":true,"href":"https:\/\/republify.se\/index.php\/wp-json\/wp\/v2\/product_brand?post=6526"},{"taxonomy":"product_cat","embeddable":true,"href":"https:\/\/republify.se\/index.php\/wp-json\/wp\/v2\/product_cat?post=6526"},{"taxonomy":"product_tag","embeddable":true,"href":"https:\/\/republify.se\/index.php\/wp-json\/wp\/v2\/product_tag?post=6526"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}