Angelika Langer - Training & Consulting
HOME | COURSES | TALKS | ARTICLES | GENERICS | LAMBDAS | IOSTREAMS | ABOUT | NEWSLETTER | CONTACT | Twitter | Lanyrd | Linkedin
Course Curriculum Angelika LangerCourse Curriculum Angelika Langer  
HOME

  GENERAL INFO
  SCHEDULE
  REGISTRATION
  
  JAVA
    EFFECTIVE JAVA
    CONCURRENCY
    PERFORMANCE
    LAMBDAS
    JAVA 8
    GC TUNING
    MEMORY MODEL 
    JAVA INTRO

  C++
    RELIABLE C++
    EFFECTIVE STL
    TEMPLATES
    IOSTREAMS
    C++ INTRO   
 

GENERICS 
LAMBDAS 
IOSTREAMS 
ABOUT 
NEWSLETTER 
CONTACT 
Effective Java

Effective Java
COURSE DESCRIPTION

This is a best-practice seminar for Java programmers who want to explore Java in greater depth. It is best attended after some initial exposition to Java. 

Java was marketed to the software development community as a simple and easy-to-use programming language.  In practice it turned out that even this supposedly easy language has its traps and pitfalls, has less commonly known advanced language features, and has Java-specific programming idioms that are not evident from just the language features. 

This advanced seminar takes an in-depth look at some of the core concepts of the Java programming language:

  • Implementing classes correctly, including supposedly trivial infrastructure such as equals() and clone()
  • Support for release of resources (other than memory); the seminar explains Java's support for initialization and finalization.
  • Advanced language features such as lambdas, generics, and weak & soft references. 
  • Java-specific programming idioms such as immutable types.
  • Dynamic programming with reflection and dynamic proxies.
  • Annotatations and annotation processing by means of compiler plugins.
  • Special interest topics such as class loading, serialization, and the Java Native Interface (JNI)
  • Based on several years of practical Java experience, this tutorial aims to shed some light on common misconceptions in Java and discusses best practice Java idioms and programming techniques.
    Prerequisite Courses 
    and Skills:
    Basic knowledge of Java; in-depth experience with Java not required. 
    Duration: 3-5 days

    This is a course for Java programmers who want to explore Java in greater depth and is best attended after some initial exposition to Java. In this advanced Java seminar we aim to provide in-depth information about the core of the Java programming language. For development of  industrial strength software semantic correctness of classes and methods, proper release of resources, and a sound knowledge of advanced Java programming idioms are important. The courses are designed to build on existing expertise as Java programmers and take your skills one step further. Prerequisite for these seminars is at least 1 year of experience with Java or equivalent knowledge. 
     

    If you want to stay ahead of your time and keep your knowledge above average, then this is the right course for you.


     
     

     

    COURSE OVERVIEW

    CONSTRUCTION AND FINALIZATION
    • Construction & Initialization
    • Finalization & Automatic Resource Management
    OBJECT INFRASTRUCTURE 
    • Object Equality (Implementing equals() )
    • Hashing Objects (Implementing hashCode() )
    • Comparing Objects (Implementing compareTo () )
    • Copying Objects (Implementing clone() )
    IMMUTABILITY
    • final vs. Constness
    • Immutability in Java
    • The Dual Class Idiom
    INNER CLASSES 
    • Nested Top-Level Classes and Interfaces
    • Member Classes
    • Local Classes
    • Anonymous Classes
    LAMBDAS AND STREAMS
    • A Brief Overview of Lambdas & Method References
    • A Brief Overview of Streams API
    GENERICS 
    • Syntax 
    • Byte Code Representation (Type Erasure)
    • Wildcards
    REFLECTION AND DYNAMIC PROXIES 
    • The Reflecion API
    • Dynamic Proxies
    SOFT AND WEAK REFERENCES
    • Soft References
    • Weak References
    • Reference Queues
    • Avoid Unwanted References
    • Implement Caches
    ENUMERATION TYPES  (optional)
    • Syntax and Byte Code Representation
    • Usage Patterns
    • Pitfalls With Static Initialization of Enums
    MINOR "NEW" LANGUAGE FEATURES (optional)
    • Java 5
      • Autoboxing and Related Pitfalls
      • Variable Argument Lists and Related Pitfalls
    • Java 7 
      • Improved Type Inference aka "Diamond Operator"
      • Varargs Warnings
      • Improved re-throw & Multi-Catch
      • Automatic Resource Management
      • Strings in Switch
      • Numeric Literals
    • Java 8
      • Default Interface Methods
      • Static Interface Methods
    FUNCTION REDEFINITION AND OVERLOAD RESOLUTION (optional)
    • Function Redefinition (final + polymorphism)
    • Principles of Method Overload Resolution
    • Pitfall: Mixing Overloading and Overriding
    EXCEPTION HANDLING IDIOMS (optional)
    • finally and the Control Flow
    • Problems With The throws Clause
    • Hiding of Exceptions
    • Object Integrity  and Resource Leaks
    • Re-Throw and Multi-Catch
      ANNOTATIONS AND COMPILER PLUGINS (optional)
    • Declaring Annotation Types
    • Annotating Program Elements
    • Standard and Meta-Annotations
    • Type Annotations (Java 8)
    • Processing Annotations Using Reflection
    • Compiler-Plugins for Annotation Processing
    SERIALIZATION (optional)
    • Default Serialization
    • Custom Serialization
    • Object Stream Support
    CLASS LOADING (optional)
    • Class Loader Basics
    • Class Loader Relationships
    • Custom Class Loader
    JNI -  JAVA NATIVE INTERFACE (optional)
    • Calling Native Functions from Java
      • Implementing native Methods
      • Function Names and Type Mapping
      • JNI Interface Functions
      • Parameter Passing and Field Access
    • Calling Java from Native Code
      • Java Exceptions in Native Code
      • Local and Global References
      • Starting a VM - The Invocation API
    PERFORMANCE OBJECTIVES
    Learn how to build industrial strength software in Java
    Know what to expect of Java
    Avoid common errors in Java
    Understand best-practice Java idioms

    BUSINESS OBJECTIVES
    Equip your software professionals with industrial-strength Java skills 
    Make your Java software more reliable
    Get the most out of Java

    AUTHOR & TRAINER

    The course is designed by Klaus Kreft & Angelika Langer and backed by years of experience in teaching and more than a decade of practical experience in industrial software development both in C++ and Java.
    Angelika Langer is a freelance trainer/consultant in the area of software development in C++ and Java, author of language reference material such as the Java Generics FAQs [ ], the Lambdas/Streams Tutorial & Reference  [ ], and countless articles on C++ and Java topics [ ]. 
    Klaus Kreft is a senior consultant for more than 25 years and has served as the lead architect and performance expert on several successful industry projects. He has been working in Java since its advent in 1995. 
    Both are recognized speakers at OO and Java conferences and author of numerous articles on C++ and Java topics in various computer magazines worldwide. Together they write a column for the German Java magazine JavaMagazin  [ ] and are authors of the  books "Standard C++ IOStreams and Locales" (2000) [ ] and "Java Core Programmierung" (2011) [ ], the Online FAQ on Java Generics [ ], and the Lambdas/Streams Tutorial & Reference  [ ].
     

    FURTHER READING

    To get an impression of some topics covered in this course check out the sample reading: 
    Really Understanding Java
    Myths and Truths Comparing C++ and Java
    White Paper
    Effective Java Programming
    OOP Conference Proceedings
    (only available in German)
    Secrets of Equals ( Part 1 & Part 2 )
    Articles published in Java Solutions
     
    Lambda & Streams Tutorial and Reference
    In-Depth Coverage of all aspects of lambdas & streams
    Lambdas in Java 8
    Conference Presentation at JFokus 2012 (slides)
    Lambdas in Java 8
    Conference Presentation at JavaZone 2012 (video)
     
     
    Java Generics FAQ
    Frequently Asked Questions related to Java Generics
    Effective Java Programming
    Type Erasure und das Java Typsystem
    Articles published in JavaMagazin
    (only available in German)
    Language Features of Java Generics
    Wildcard Instantiations of Parameterized Types
    Articles published in Java Pro Online
     

     
     
    TRAINING LOCATIONS

    Open Enrollment
    Public courses are conducted in collaboration with partner companies worldwide. Presentation language is English or German, depending on the location. For further information go to GENERAL INFO.
    On-Site Training
    Courses can be held at your company site. Duration and content will be tailored to your specific needs and prerequisites. Presentation language is English or German.  For further information go to GENERAL INFO.
    For information regarding training locations and the current schedule of public courses go to SCHEDULE. For further information or enrollment send me EMAIL or use the REGISTRATION form.
    Schedule
    To check for availability, price and other details send me EMAIL or use the REGISTRATION form.
      © Copyright 1995-2014 by Angelika Langer.  All Rights Reserved.    URL: < http://www.AngelikaLanger.com/Courses/EffectiveJava.htm  last update: 26 Nov 2014