<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE FL_Course SYSTEM "https://www.flane.de/dtd/fl_course095.dtd"><?xml-stylesheet type="text/xsl" href="https://portal.flane.ch/css/xml-course.xsl"?><course productid="14854" language="en" source="https://portal.flane.ch/swisscom/en/xml-course/oracle-d84838" lastchanged="2020-01-13T11:46:43+01:00" parent="https://portal.flane.ch/swisscom/en/xml-courses"><title>Java SE 8: Programming</title><productcode>D84838</productcode><vendorcode>OR</vendorcode><vendorname>Oracle</vendorname><fullproductcode>OR-D84838</fullproductcode><version>1.0</version><objective>&lt;ul&gt;
&lt;li&gt;Creating high-performing multi-threaded applications&lt;/li&gt;&lt;li&gt;Creating Java technology applications that leverage the object-oriented features of the Java language, such as encapsulation, inheritance, and polymorphism&lt;/li&gt;&lt;li&gt;Implementing input/output (I/O) functionality to read from and write to data and text files and understand advanced I/O streams&lt;/li&gt;&lt;li&gt;Executing a Java technology application from the command line&lt;/li&gt;&lt;li&gt;Manipulating files, directories and file systems using the JDK NIO.2 specification&lt;/li&gt;&lt;li&gt;Creating applications that use the Java Collections framework&lt;/li&gt;&lt;li&gt;Performing multiple operations on database tables, including creating, reading, updating and deleting using both JDBC and JPA technology&lt;/li&gt;&lt;li&gt;Searching and filter collections using Lambda Expressions&lt;/li&gt;&lt;li&gt;Implementing error-handling techniques using exception handling&lt;/li&gt;&lt;li&gt;Using Lambda Expression concurrency features&lt;/li&gt;&lt;/ul&gt;</objective><essentials>&lt;ul&gt;
&lt;li&gt;Java SE 8 Fundamentals&lt;/li&gt;&lt;li&gt;&lt;span class=&quot;cms-link-marked&quot;&gt;&lt;a class=&quot;fl-href-prod&quot; href=&quot;/swisscom/en/course/oracle-d83527&quot;&gt;&lt;svg role=&quot;img&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot; data-nosnippet class=&quot;cms-linkmark&quot;&gt;&lt;use xlink:href=&quot;/css/img/icnset-linkmarks.svg#linkmark&quot;&gt;&lt;/use&gt;&lt;/svg&gt;Java SE 8: Fundamentals &lt;span class=&quot;fl-prod-pcode&quot;&gt;(D83527)&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;</essentials><audience>&lt;ul&gt;
&lt;li&gt;Java EE Developers&lt;/li&gt;&lt;li&gt;Developer&lt;/li&gt;&lt;li&gt;Java Developers&lt;/li&gt;&lt;/ul&gt;</audience><outline>&lt;h5&gt;Java Platform Overview&lt;/h5&gt;&lt;ul&gt;
&lt;li&gt;Defining how the Java language achieves platform independence&lt;/li&gt;&lt;li&gt;Differentiating between the Java ME, Java SE, and Java EE Platforms&lt;/li&gt;&lt;li&gt;Evaluating Java libraries, middle-ware, and database options&lt;/li&gt;&lt;li&gt;Defining how the Java language continues to evolve&lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;Java Syntax and Class Review&lt;/h5&gt;&lt;ul&gt;
&lt;li&gt;Creating simple Java classes&lt;/li&gt;&lt;li&gt;Creating primitive variables&lt;/li&gt;&lt;li&gt;Using operators&lt;/li&gt;&lt;li&gt;Creating and manipulate strings&lt;/li&gt;&lt;li&gt;Using if-else and switch statements&lt;/li&gt;&lt;li&gt;Iterating with loops: while,do-while,for,enhanced for&lt;/li&gt;&lt;li&gt;Creating arrays&lt;/li&gt;&lt;li&gt;Using Java fields, constructors, and methods&lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;Encapsulation and Subclassing&lt;/h5&gt;&lt;ul&gt;
&lt;li&gt;Using encapsulation in Java class design&lt;/li&gt;&lt;li&gt;Modeling business problems using Java classes&lt;/li&gt;&lt;li&gt;Making classes immutable&lt;/li&gt;&lt;li&gt;Creating and use Java subclasses&lt;/li&gt;&lt;li&gt;Overloading methods&lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;Overriding Methods, Polymorphism, and Static Classes&lt;/h5&gt;&lt;ul&gt;
&lt;li&gt;Using access levels: private, protected, default, and public.&lt;/li&gt;&lt;li&gt;Overriding methods&lt;/li&gt;&lt;li&gt;Using virtual method invocation&lt;/li&gt;&lt;li&gt;Using varargs to specify variable arguments&lt;/li&gt;&lt;li&gt;Using the instanceof operator to compare object types&lt;/li&gt;&lt;li&gt;Using upward and downward casts&lt;/li&gt;&lt;li&gt;Modeling business problems by using the static keyword&lt;/li&gt;&lt;li&gt;Implementing the singleton design pattern&lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;Abstract and Nested Classes&lt;/h5&gt;&lt;ul&gt;
&lt;li&gt;Designing general-purpose base classes by using abstract classes&lt;/li&gt;&lt;li&gt;Constructing abstract Java classes and subclasses&lt;/li&gt;&lt;li&gt;Applying final keyword in Java&lt;/li&gt;&lt;li&gt;Distinguish between top-level and nested classes&lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;Interfaces and Lambda Expressions&lt;/h5&gt;&lt;ul&gt;
&lt;li&gt;Defining a Java interface&lt;/li&gt;&lt;li&gt;Choosing between interface inheritance and class inheritance&lt;/li&gt;&lt;li&gt;Extending an interface&lt;/li&gt;&lt;li&gt;Defaulting methods&lt;/li&gt;&lt;li&gt;Anonymous inner classes&lt;/li&gt;&lt;li&gt;Defining a Lambda Expression&lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;Collections and Generics&lt;/h5&gt;&lt;ul&gt;
&lt;li&gt;Creating a custom generic class&lt;/li&gt;&lt;li&gt;Using the type inference diamond to create an object&lt;/li&gt;&lt;li&gt;Creating a collection by using generics&lt;/li&gt;&lt;li&gt;Implementing an ArrayList&lt;/li&gt;&lt;li&gt;Implementing a TreeSet&lt;/li&gt;&lt;li&gt;Implementing a HashMap&lt;/li&gt;&lt;li&gt;Implementing a Deque&lt;/li&gt;&lt;li&gt;Ordering collections&lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;Collections Streams, and Filters&lt;/h5&gt;&lt;ul&gt;
&lt;li&gt;Describing the Builder pattern&lt;/li&gt;&lt;li&gt;Iterating through a collection using lambda syntax&lt;/li&gt;&lt;li&gt;Describing the Stream interface&lt;/li&gt;&lt;li&gt;Filtering a collection using lambda expressions&lt;/li&gt;&lt;li&gt;Calling an existing method using a method reference&lt;/li&gt;&lt;li&gt;Chaining multiple methods together&lt;/li&gt;&lt;li&gt;Defining pipelines in terms of lambdas and collections&lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;Lambda Built-in Functional Interfaces&lt;/h5&gt;&lt;ul&gt;
&lt;li&gt;Listing the built-in interfaces included in java.util.function&lt;/li&gt;&lt;li&gt;Core interfaces - Predicate, Consumer, Function, Supplier&lt;/li&gt;&lt;li&gt;Using primitive versions of base interfaces&lt;/li&gt;&lt;li&gt;Using binary versions of base interfaces&lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;Lambda Operations&lt;/h5&gt;&lt;ul&gt;
&lt;li&gt;Extracting data from an object using map&lt;/li&gt;&lt;li&gt;Describing the types of stream operations&lt;/li&gt;&lt;li&gt;Describing the Optional class&lt;/li&gt;&lt;li&gt;Describing lazy processing&lt;/li&gt;&lt;li&gt;Sorting a stream&lt;/li&gt;&lt;li&gt;Saving results to a collection using the collect method&lt;/li&gt;&lt;li&gt;Grouping and partition data using the Collectors class&lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;Exceptions and Assertions&lt;/h5&gt;&lt;ul&gt;
&lt;li&gt;Defining the purpose of Java exceptions&lt;/li&gt;&lt;li&gt;Using the try and throw statements&lt;/li&gt;&lt;li&gt;Using the catch, multi-catch, and finally clauses&lt;/li&gt;&lt;li&gt;Autoclose resources with a try-with-resources statement&lt;/li&gt;&lt;li&gt;Recognizing common exception classes and categories&lt;/li&gt;&lt;li&gt;Creating custom exceptions&lt;/li&gt;&lt;li&gt;Testing invariants by using assertions&lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;Java Date/Time API&lt;/h5&gt;&lt;ul&gt;
&lt;li&gt;Creating and manage date-based events&lt;/li&gt;&lt;li&gt;Creating and manage time-based events&lt;/li&gt;&lt;li&gt;Combining date and time into a single object&lt;/li&gt;&lt;li&gt;Working with dates and times across time zones&lt;/li&gt;&lt;li&gt;Managing changes resulting from daylight savings&lt;/li&gt;&lt;li&gt;Defining and create timestamps, periods and durations&lt;/li&gt;&lt;li&gt;Applying formatting to local and zoned dates and times&lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;I/O Fundamentals&lt;/h5&gt;&lt;ul&gt;
&lt;li&gt;Describing the basics of input and output in Java&lt;/li&gt;&lt;li&gt;Read and write data from the console&lt;/li&gt;&lt;li&gt;Using streams to read and write files&lt;/li&gt;&lt;li&gt;Writing and read objects using serialization&lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;File I/O (NIO.2)&lt;/h5&gt;&lt;ul&gt;
&lt;li&gt;Using the Path interface to operate on file and directory paths&lt;/li&gt;&lt;li&gt;Using the Files class to check, delete, copy, or move a file or directory&lt;/li&gt;&lt;li&gt;Using Stream API with NIO2&lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;Concurrency&lt;/h5&gt;&lt;ul&gt;
&lt;li&gt;Describing operating system task scheduling&lt;/li&gt;&lt;li&gt;Creating worker threads using Runnable and Callable&lt;/li&gt;&lt;li&gt;Using an ExecutorService to concurrently execute tasks&lt;/li&gt;&lt;li&gt;Identifying potential threading problems&lt;/li&gt;&lt;li&gt;Using synchronized and concurrent atomic to manage atomicity&lt;/li&gt;&lt;li&gt;Using monitor locks to control the order of thread execution&lt;/li&gt;&lt;li&gt;Using the java.util.concurrent collections&lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;The Fork-Join Framework&lt;/h5&gt;&lt;ul&gt;
&lt;li&gt;Parallelism&lt;/li&gt;&lt;li&gt;The need for Fork-Join&lt;/li&gt;&lt;li&gt;Work stealing&lt;/li&gt;&lt;li&gt;RecursiveTask&lt;/li&gt;&lt;li&gt;RecursiveTask&lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;Parallel Streams&lt;/h5&gt;&lt;ul&gt;
&lt;li&gt;Reviewing the key characteristics of streams&lt;/li&gt;&lt;li&gt;Describing how to make a stream pipeline execute in parallel&lt;/li&gt;&lt;li&gt;List the key assumptions needed to use a parallel pipeline&lt;/li&gt;&lt;li&gt;Defining reduction&lt;/li&gt;&lt;li&gt;Describing why reduction requires an associative function&lt;/li&gt;&lt;li&gt;Calculating a value using reduce&lt;/li&gt;&lt;li&gt;Describing the process for decomposing and then merging work&lt;/li&gt;&lt;li&gt;Listing the key performance considerations for parallel streams&lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;Database Applications with JDBC&lt;/h5&gt;&lt;ul&gt;
&lt;li&gt;Defining the layout of the JDBC API&lt;/li&gt;&lt;li&gt;Connecting to a database by using a JDBC driver&lt;/li&gt;&lt;li&gt;Submitting queries and get results from the database&lt;/li&gt;&lt;li&gt;Specifying JDBC driver information externally&lt;/li&gt;&lt;li&gt;Performing CRUD operations using the JDBC API&lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;Localization&lt;/h5&gt;&lt;ul&gt;
&lt;li&gt;Describing the advantages of localizing an application&lt;/li&gt;&lt;li&gt;Defining what a locale represents&lt;/li&gt;&lt;li&gt;Read and set the locale by using the Locale object&lt;/li&gt;&lt;li&gt;Building a resource bundle for each locale&lt;/li&gt;&lt;li&gt;Calling a resource bundle from an application&lt;/li&gt;&lt;li&gt;Changing the locale for a resource bundle&lt;/li&gt;&lt;/ul&gt;</outline><objective_plain>- Creating high-performing multi-threaded applications
- Creating Java technology applications that leverage the object-oriented features of the Java language, such as encapsulation, inheritance, and polymorphism
- Implementing input/output (I/O) functionality to read from and write to data and text files and understand advanced I/O streams
- Executing a Java technology application from the command line
- Manipulating files, directories and file systems using the JDK NIO.2 specification
- Creating applications that use the Java Collections framework
- Performing multiple operations on database tables, including creating, reading, updating and deleting using both JDBC and JPA technology
- Searching and filter collections using Lambda Expressions
- Implementing error-handling techniques using exception handling
- Using Lambda Expression concurrency features</objective_plain><essentials_plain>- Java SE 8 Fundamentals
- Java SE 8: Fundamentals (D83527)</essentials_plain><audience_plain>- Java EE Developers
- Developer
- Java Developers</audience_plain><outline_plain>Java Platform Overview


- Defining how the Java language achieves platform independence
- Differentiating between the Java ME, Java SE, and Java EE Platforms
- Evaluating Java libraries, middle-ware, and database options
- Defining how the Java language continues to evolve
Java Syntax and Class Review


- Creating simple Java classes
- Creating primitive variables
- Using operators
- Creating and manipulate strings
- Using if-else and switch statements
- Iterating with loops: while,do-while,for,enhanced for
- Creating arrays
- Using Java fields, constructors, and methods
Encapsulation and Subclassing


- Using encapsulation in Java class design
- Modeling business problems using Java classes
- Making classes immutable
- Creating and use Java subclasses
- Overloading methods
Overriding Methods, Polymorphism, and Static Classes


- Using access levels: private, protected, default, and public.
- Overriding methods
- Using virtual method invocation
- Using varargs to specify variable arguments
- Using the instanceof operator to compare object types
- Using upward and downward casts
- Modeling business problems by using the static keyword
- Implementing the singleton design pattern
Abstract and Nested Classes


- Designing general-purpose base classes by using abstract classes
- Constructing abstract Java classes and subclasses
- Applying final keyword in Java
- Distinguish between top-level and nested classes
Interfaces and Lambda Expressions


- Defining a Java interface
- Choosing between interface inheritance and class inheritance
- Extending an interface
- Defaulting methods
- Anonymous inner classes
- Defining a Lambda Expression
Collections and Generics


- Creating a custom generic class
- Using the type inference diamond to create an object
- Creating a collection by using generics
- Implementing an ArrayList
- Implementing a TreeSet
- Implementing a HashMap
- Implementing a Deque
- Ordering collections
Collections Streams, and Filters


- Describing the Builder pattern
- Iterating through a collection using lambda syntax
- Describing the Stream interface
- Filtering a collection using lambda expressions
- Calling an existing method using a method reference
- Chaining multiple methods together
- Defining pipelines in terms of lambdas and collections
Lambda Built-in Functional Interfaces


- Listing the built-in interfaces included in java.util.function
- Core interfaces - Predicate, Consumer, Function, Supplier
- Using primitive versions of base interfaces
- Using binary versions of base interfaces
Lambda Operations


- Extracting data from an object using map
- Describing the types of stream operations
- Describing the Optional class
- Describing lazy processing
- Sorting a stream
- Saving results to a collection using the collect method
- Grouping and partition data using the Collectors class
Exceptions and Assertions


- Defining the purpose of Java exceptions
- Using the try and throw statements
- Using the catch, multi-catch, and finally clauses
- Autoclose resources with a try-with-resources statement
- Recognizing common exception classes and categories
- Creating custom exceptions
- Testing invariants by using assertions
Java Date/Time API


- Creating and manage date-based events
- Creating and manage time-based events
- Combining date and time into a single object
- Working with dates and times across time zones
- Managing changes resulting from daylight savings
- Defining and create timestamps, periods and durations
- Applying formatting to local and zoned dates and times
I/O Fundamentals


- Describing the basics of input and output in Java
- Read and write data from the console
- Using streams to read and write files
- Writing and read objects using serialization
File I/O (NIO.2)


- Using the Path interface to operate on file and directory paths
- Using the Files class to check, delete, copy, or move a file or directory
- Using Stream API with NIO2
Concurrency


- Describing operating system task scheduling
- Creating worker threads using Runnable and Callable
- Using an ExecutorService to concurrently execute tasks
- Identifying potential threading problems
- Using synchronized and concurrent atomic to manage atomicity
- Using monitor locks to control the order of thread execution
- Using the java.util.concurrent collections
The Fork-Join Framework


- Parallelism
- The need for Fork-Join
- Work stealing
- RecursiveTask
- RecursiveTask
Parallel Streams


- Reviewing the key characteristics of streams
- Describing how to make a stream pipeline execute in parallel
- List the key assumptions needed to use a parallel pipeline
- Defining reduction
- Describing why reduction requires an associative function
- Calculating a value using reduce
- Describing the process for decomposing and then merging work
- Listing the key performance considerations for parallel streams
Database Applications with JDBC


- Defining the layout of the JDBC API
- Connecting to a database by using a JDBC driver
- Submitting queries and get results from the database
- Specifying JDBC driver information externally
- Performing CRUD operations using the JDBC API
Localization


- Describing the advantages of localizing an application
- Defining what a locale represents
- Read and set the locale by using the Locale object
- Building a resource bundle for each locale
- Calling a resource bundle from an application
- Changing the locale for a resource bundle</outline_plain><duration unit="d" days="5">5 days</duration><pricelist><price country="CH" currency="EUR">2390.00</price><price country="AT" currency="EUR">2390.00</price></pricelist><miles/></course>