Java Standard Edition (Java SE 6) Training

Training Description:

Java Standard Edition covers the core language and developers with no exception should first be conversant with the core language to use higher level application environments like Java Enterprise Edition. Furthermore, Java is an object orientation programming (OOP) language and hence the developers are required to have a firm understanding of what OOP is and how to apply them correctly.

This training covers Java Standard Edition, Object Oriented Programming in Java (with OOP fundamentals), Eclipse IDE as a development platform, regression testing with JUnit and also is packed with development best practices.

While a reasonable introduction is given for the novice, the training focuses more on topics that bring higher values to real world Java software developers. And hence, this training should not be considered a fundamental training and does not cover the very basics of Java programming language. But, the content is developed in such a way so that even the participants with no prior experience in Java will not find any difficulties in following the training.

Training Objectives:

At the end of the training, participants will be able to
  1. Use Java Standard Edition (version 1.6) in enterprise class application development with best practices and describe the rational behind them.
  2. Define the meanings and purposes of Object Oriented Programming (OOP) fundamentals with sound clarity and apply them correctly with supplementary OO design best practices.
  3. Use Eclipse IDE with ease and compassion for development, testing, debugging and refactoring.
  4. Use JUnit regression testing framework to develop automated unit tests and hence improve the quality of development.

Target Groups:

  1. Fresh graduates (or undergraduates close to completion of their degree programs) in related fields seeking pragmatic development experience in Java Standard Edition.
  2. Software Developers in other fields (like PHP or Microsoft .NET) willing to learn Java Standard Edition.
  3. Java developers who seek the knowledge of pragmatic and advanced topics in Java as given below.

Prerequisites:

  1. Some level of computer programming ability

Communication Language:

English (With Sinhala explanations if requested)

Duration:

4 Days (32 hours)

Facilitator:

Kamal Wickramanayake (Profile)

Notes:

  1. The training offers hands-on lab experience packed with expert knowledge.
  2. Delivery of the training will be learner centric. Multiple delivery techniques will be used - not just lectures.
  3. Participants will go through an MCQ based quiz to assess their learnings.

Training Content:

  1. Getting Started With Object Oriented Programming (OOP)
    • History of programming language paradigms
    • Purpose of OOP fundamentals
    • Meaning of abstraction, encapsulation, inheritance, polymorphism
  2. Getting Started With Java
    • History of Java
    • The Java platform
    • Java evolution into various areas
    • Java Community Process (JCP)
    • Future of Java
    • Writing the first Java program
  3. Eclipse Integrated Development Environment (IDE) - I
    • Background of Eclipse Platform
    • Eclipse capabilities beyond an IDE
    • Concepts (Workbench, workspace, perspectives, editors, views)
    • Organization of a Java project
    • Compiling a project
    • Running a project
  4. Object Oriented Programming In Action (With Java)
    • Implementing Encapsulation
    • Implementing Abstraction
    • Implementing Inheritance (Class, Interface)
    • Implementing Polymorphism
  5. Error Handling with Exceptions
    • Overview (What & Why)
    • Catching/Handling Exceptions (try-catch-finally blocks)
    • Throwing Exceptions
    • Creating Own Exception Classes
    • Runtime Exceptions, checked exceptions, errors
    • Commonly encountered exceptions (ArrayIndexOutOfBoundsException, ClassCastException...)
  6. Assertions
    • What are assertions?
    • How to use assertions?
    • Proper and inappropriate use of assertions
  7. Enumerations
    • What are enumerations?
    • Using enumerations
  8. Annotations
    • Purpose of annotations
    • Using existing annotations
    • Defining new annotations
    • Annotation processing
  9. Garbage Collection/Memory Management
    • Overview of Garbage Collector
    • Different Garbage Collection Algorithms and Their Effect (Reference Counting, Mark and Sweep, Heap Compaction, Generational Garbage Collection, Train Collectors)
    • finalize() Method of java.lang.Object class
    • Forcing Finalization with System.gc()
  10. Fine Tuning JVM
    • Analyzing Garbage Collector operations
    • Selecting a suitable Garbage collector
    • Application Launcher Standard/Non-Standard Options
    • Controlling heap size
  11. Eclipse IDE - II
    • Refactoring features
    • Debugging features
  12. Programming Best Practices With A Focus On OOP
    • Tight encapsulation, loose coupling, and high cohesion in classes
    • Working with different forms of relationships between objects
    • What is an interface?
    • Design by contract
    • Open-Close Principle
  13. Test Infected Programming with JUnit
    • Overview of Unit Testing
    • Different Unit Testing Mechanisms and Role of JUnit
    • Writing TestCases and TestSuites
    • Testing for Exceptions
    • Best Practices of Using JUnit
    • Overview of JUnit Extensions
    • Using JUnit inside Eclipse
  14. I/O Manipulation
    • Overview of I/O Streams (Readers/Writers/Input Streams/Output Streams)
    • Using File Streams
    • Using Piped Streams
    • Wrapping Streams
    • Buffered Streams
    • Filtered Streams
    • Object serialization/de-serialization (ObjectInputStream, ObjectOutputStream, Serializable)
    • Brief Introduction to nio Package
  15. Collections Framework
    • Overview of Collections Framework
    • Collection/Set/List/Map Interfaces
    • Implementations available in Java SE API
    • Generics
    • Limitations of the non-generic Collections API
    • Comparable/Comparator interfaces
    • hashCode() and equals() methods
    • Difference between == operator and equals() method
    • Using java.util package facilities to manipulate collections
  16. Multi-Threading
    • Overview (Application/Process/Thread/Multi-Threading/Multi-Processing/Multi-Processor)
    • Thread Class
    • Runnable Interface
    • Thread Priority (Pre-Emptive and Time Slicing, Thread.yeild(), Thread.sleep())
    • Different Thread Synchronization Mechanisms (Synchronization blocks, Poling, wait and notify)
    • Thread Grouping
    • Inter-Thread Communication (Shared data, Pipes)
  17. Networking With Java
    • Overview of networking with Java
    • Using the Socket class
    • Using the ServerSocket class
    • Multi-threading considerations