Java SE 8 Programming, New Horizons Bulgaria

Разработен и проведен персонализиран ускорен обучителен курс за хора с достатъчно опит в програмирането на други платформи и езици, нуждаещи се от задълбочено въведение в Java SE 8 технологиите. Главните теми обхващат:

  • Java Platform Overview
    • Defining how the Java language achieves platform independence
    • Defining how the Java language continues to evolve
    • Differentiating between the Java ME, Java SE, and Java EE Platforms
    • Evaluating Java libraries, middle-ware, and database options
  • Java Syntax and Class Review
    • Using operators
    • Creating primitive variables
    • Creating simple Java classes
    • Using if-else and switch statements
    • Creating and manipulate strings
    • Iterating with loops: while, do-while, for, enhanced for
    • Creating arrays
    • Using Java fields, constructors, and methods
  • Encapsulation and Subclassing
    • Creating and use Java subclasses
    • Using encapsulation in Java class design
    • Overloading methods
    • Making classes immutable
    • Modeling business problems using Java classes
  • Overriding Methods, Polymorphism, and Static Classes
    • Using the instanceof operator to compare object types
    • Using varargs to specify variable arguments
    • Using access levels: private, protected, default, and public.
    • Overriding methods
    • Implementing the singleton and factory design patterns
    • Modeling business problems by using the static keyword
    • Using upward and downward casts
    • Using virtual method invocation
  • Abstract and Nested classes
    • Constructing abstract Java classes and subclasses
    • Designing general-purpose base classes by using abstract classes
    • Applying final keyword in Java
    • Distinguish between top-level and nested classes
  • Interfaces and Lambda expressions
    • Defaulting methods
    • Defining a Java interface
    • Anonymous inner classes
    • Defining a Lambda Expression
    • Extending an interface
    • Choosing between interface inheritance and class inheritance
  • Collections and Generics
    • Creating a collection by using generics
    • Implementing an ArrayList
    • Implementing a HashMap
    • Implementing a Deque
    • Using the type inference diamond to create an object
    • Creating a custom generic class
    • Implementing a TreeSet
    • Ordering collections
  • Collections Streams and Filters
    • Describing the Stream interface
    • Calling an existing method using a method reference
    • Chaining multiple methods together
    • Filtering a collection using lambda expressions
    • Defining pipelines in terms of lambdas and collections
    • Iterating through a collection using lambda syntax
    • Describing the Builder pattern
  • Lambda Build-in Functional Interfaces
    • Using primitive versions of base interfaces
    • Using binary versions of base interfaces
    • Listing the built-in interfaces included in java.util.function
    • Core interfaces – Predicate, Consumer, Function, Supplier
  • Lambda Operations
    • Extracting data from an object using map
    • Describing the Optional class
    • Sorting a stream
    • Describing lazy processing
    • Describing the types of stream operations
    • Grouping and partition data using the Collectors class
    • Saving results to a collection using the collect method
  • Expressions and Assertions
    • Recognizing common exception classes and categories
    • Autoclose resources with a try-with-resources statement
    • Creating custom exceptions
    • Using the catch, multi-catch, and finally clauses
    • Defining the purpose of Java exceptions
    • Using the try and throw statements
    • Testing invariants by using assertions
  • Java Date-Time API
    • Working with dates and times across time zones
    • Combining date and time into a single object
    • Creating and manage date-based events
    • Applying formatting to local and zoned dates and times
    • Creating and manage time-based events
    • Managing changes resulting from daylight savings
    • Defining and create timestamps, periods and durations
  • I/O Fundamentals
    • Writing and read objects using serialization
    • Using streams to read and write files
    • Read and write data from the console
    • Describing the basics of input and output in Java
  • File I/O (NIO.2)
    • Using the Files class to check, delete, copy, or move a file or directory
    • Using the Path interface to operate on file and directory paths
    • Using Stream API with NIO2
  • Concurrency
    • Creating worker threads using Runnable and Callable
    • Describing operating system task scheduling
    • Using an ExecutorService to concurrently execute tasks
    • Using the java.util.concurrent collections
    • Identifying potential threading problems
    • Using monitor locks to control the order of thread execution
    • Using synchronized and concurrent atomic to manage atomicity
  • The Fork-Join Frameworks
    • The need for Fork-Join
    • RecursiveTask
    • Work stealing
    • Parallelism
  • Parallel Streams
    • Listing the key performance considerations for parallel streams
    • Reviewing the key characteristics of streams
    • Defining reduction
    • List the key assumptions needed to use a parallel pipeline
    • Calculating a value using reduce
    • Describing the process for decomposing and then merging work
    • Describing how to make a stream pipeline execute in parallel
    • Describing why reduction requires an associative function
  • Database Applications with JPA using Hibernate
    • Connecting to a database by using a JDBC driver
    • Specifying persistence unit information externally
    • Defining mapped superclass, entity, mapping, inheritance strategy, fetching
    • Performing CRUD operations using entity manager
    • Submitting queries and get results from the database