-
Learning by doing
-
Trainers with practical experience
-
Classroom training
-
Detailed course material
-
Clear content description
-
Tailormade content possible
-
Training that proceeds
-
Small groups
In the course Advanced Java Programming a series of advanced aspects of Java are discussed. The course covers the topics that are asked for on the Oracle Certified Java Professional or OCP exam and is a good preparation to pass this exam.
In the first place attention is paid to aspects of Advanced Class Design such as the implementation of inheritance and composition, the use of polymorphism, interfaces, inner and anonymous classes and the singleton pattern.
Next multithreaded applications are discussed and the synchronization between threads when accessing shared data. During the treatment of the concurrency package advanced synchronization mechanisms such as cyclic barriers and countdown latches are discussed.
Also the functional language constructs introduced in recent Java versions are discussed with lambdas and functional interfaces.
Next generics are on the course program with which classes and methods can be parameterized, strong typing is imposed and the chance of runtime errors is limited. Generics are used a lot in the Collection Framework and the most important container classes in this Framework are discussed.
Next attention is paid to the Stream API that enables transformations on data collections to be performed by a combination of successive simpler methods like map and reduce.
The various possibilities for dealing with errors and exceptions are also on the program and attention is paid to file I/O and new I/O when accessing files and directories.
Database access with Java Database Connectivity (JDBC) is treated and queries, prepared statements and transactions are part of that.
Finally, if time permits, reflection is optionally on the course program, with which compiled Java classes can be analyzed by means of software, and optionally various aspects of enhancing the Java performance are discussed.
The course Advanced Java Programming is intended for experienced Java developers who want to gain more in depth knowledge of Java.
Knowledge of the Java language and syntax and basic experience in Java programming is required to participate in this course.
The theory is treated on the basis of presentations and is interspersed with exercises. Demos are used to clarify the theory. The course material is in English. The course times are from 9.30 up and to 16.30.
Participants receive an official certificate Advanced Java Programming after successful completion of the course.
Module 1 : Advanced Class Design |
Module 2 : Multiple Threads |
Module 3 : Concurrency |
Encapsulation and Inheritance Implementing Composition Polymorphism Singleton Patterns Abstract Classes Final Classes Inner Classes Static Inner Classes Anonymous Inner Classes Autonomous Classes Enumerated Types Implementing hashCode and equals |
Java Thread Model Extending Thread Class Implementing Runnable Daemon Threads Thread Alive States Sleeping and Yielding Control Using join and interrupt Synchronized Statement Locking and Statics Deadlock Condition Synchronization Using wait and notify |
Concurrency Package Task Scheduling Framework Executor Interface ExecutorService Callables and Futures Synchronizers Semaphores and Exchanger CountdownLatch and CyclicBarrier Concurrent Collections Lock Interface Reentrant Locks Atomic Variables |
Module 4 : Lambda's |
Module 5 : Generics |
Module 6 : Streams |
Passing Functionality Lambda Expressions Lambda Variable Access Lambda Scoping Rules Functional Interfaces Predicate Interface Consumer Interface Supplier Interface Function Interface UnaryOperator Interface BinaryOperator Interface Method References User Defined Functional Interfaces |
Type Erasure and Raw Types Generics and Subtyping Bounded Type Parameters Wildcards Generics in Collections ArrayList and LinkedList TreeSet and Hash Set HashMap and TreeMap Comparable and Comparator Collections Streams and Filters Iteration using forEach Filtering using Lambda's Stream Pipeline |
What are Streams? Lazy Evaluation and Parallelization forEach, Map and Filter findFirst and findAny toArray and collect Optional Class Limiting Stream Size allMatch and anyMatch Number Specialized Streams Parallel and Infinite Streams collect Method Grouping with Collectors class Using flatMap Method |
Module 7 : Exception Handling |
Module 8 : Java IO and NIO |
Module 9 : Database Access |
Errors and Exceptions Checked and Unchecked Exceptions Exception Hierarchy Multiple Catch Clauses finally Clause try with Resources Auto Closeable Resources Common Exceptions Throwing Exceptions User Defined Exceptions Chained Exceptions and Stack Traces Assertions |
Standard I/O Streams Reading and Writing Files Buffered Streams Data Conversion Streams Serialization Object Streams NIO and Asynchronous I/O Processing IO Channels Stream API with NIO.2 Using Path Class Directory Traversing PathMatcher class |
JDBC Architecture JDBC Drivers and URL's Database Connections Executing Statements Retrieving Results Handling Errors Prepared Statements Database Metadata Transactions Commit and Rollback Rowset Interfaces Using RowsetProvider |
Module 10 : Localization |
Optional Module 11 : Reflection |
Optional Module 12 : Performance |
LocalDate Class LocalTime and LocalDateTime Instant and Period Duration and TemporalUnit Defining Properties Reading Property Files Creating Resource Bundles Formatting Date and Times Locale Class Localizing Dates Localizing Numbers Localizing Currencies |
What is Reflection? Reflection Classes Class Loading The Class Class Creating Objects Reflection Methods in Class Field Class Constructor Class Method Class AccessibleObject Class Dynamic Proxies Invocation Handler |
Influences on Performance JIT Compilation and Hotspot JVM Garbage Collection String Types Buffered and New I/O Synchronization and Concurrency Primitives versus Wrappers Collections Exception Handling Serialization Native methods Lazy Loading and Object Reuse |
All our courses are classroom courses in which the students are guided through the material on the basis of an experienced trainer with in-depth material knowledge. Theory is always interspersed with exercises.
We also do custom classes and then adjust the course content to your wishes. On request we will also discuss your practical cases.
The course times are from 9.30 to 16.30. But we are flexible in this. Sometimes people have to bring children to the daycare and other times are more convenient for them. In good consultation we can then agree on different course times.
We take care of the computers on which the course can be held. The software required for the course has already been installed on these computers. You do not have to bring a laptop to participate in the course. If you prefer to work on your own laptop, you can take it with you if you wish. The required software is then installed at the start of the course.
Our courses are generally given with Open Source software such as Eclipse, IntelliJ, Tomcat, Pycharm, Anaconda and Netbeans. You will receive the digital course material to take home after the course.
The course includes lunch that we use in a restaurant within walking distance of the course room.
The courses are planned at various places in the country. A course takes place at a location if at least 3 people register for that location. If there are registrations for different locations, the course will take place at our main location, Houten which is just below Utrecht. A course at our main location also takes place with 2 registrations and regularly with 1 registration. And we also do courses at the customer’s location if they appreciate that.
At the end of each course, participants are requested to evaluate the course in terms of course content, course material, trainer and location. The evaluation form can be found at https://www.klantenvertellen.nl/reviews/1039545/spiraltrain?lang=en. The evaluations of previous participants and previous courses can also be found there.
The intellectual property rights of the published course content, also referred to as an information sheet, belong to SpiralTrain. It is not allowed to publish the course information, the information sheet, in written or digital form without the explicit permission of SpiralTrain. The course content is to be understood as the description of the course content in sentences as well as the division of the course into modules and topics in the modules.