| Java Training   Overview 
Intermediate Java and OO Development is a fast paced course suitable for programmers with some previous experience in working with Java and Object-Oriented (OO) programming (equivalent to taking our Gentle Java course). It includes a short review of basic Java concepts, and then moves on to a comprehensive coverage of more advanced topics in Java and OO programming to provide participants with a strong grounding in using Java in a sophisticated and productive manner.
 This course goes well beyond the basics of Java and OO programming and covers important topics such as composition, inheritance, polymorphism, interfaces and exceptions, which are all key to creating well-structured OO systems using Java. After coverage of these important areas, it moves on to more advanced topics such as JDBC (for database access), the Java Collections Framework - including the generics capabilties introduced in Java 5, Java I/O, assertions, inner classes, and the reflection API. Finally it covers useful tools for day-to-day programming such as ant, JUnit and various logging frameworks.
 
 This course covers far more than an introductory course, and provides participants with a comprehensive understanding of how to use Java's advanced capabilities in a more sophisticated manner. It teaches a number of useful techniques that enhance productivity and good system design - which Java programmers may otherwise take years to absorb on their own.
 
 This course is suitable for environments using Java 5, or Java 6. All labs are doable in any of the supported Java environments. The course may be done using JDK 1.4, by skipping the labs that use Java 5+ capabilities. The course is fast-paced and interesting. Be prepared to work hard and learn a great deal! The course can be held on-site & customized to fit your needs.
 
 Java Training   Skills Gained
 
  Hands-OnReview Java language basicsReview using composition and delegation to create objects from other objects Review inheritance and polymorphismUnderstand interfaces, their importance, and their usesUse interfaces to implement abstractionUnderstand & use exceptions for error handlingUnderstand the basics of using JDBC, and use it to access databases
    from JavaUse the Java 2 Collections Framework (including use of Java
  Generics)Understand and use basic I/O streamsUnderstand and use Java assertionsLearn how to write and use Inner ClassesBe familiar with and use Java reflectionUnderstand and use ant and ant buildfilesUnderstand test-driven development, and use JUnit for tesing Java
    programsBe familiar with Java logging (especially log4j) and use it in your
    programming 
50% hands-on, 50% lecture 
 Supported Platforms
 
Bare Sun JDK, IBM RAD, Eclipse
 Java Training   Course Duration
 
 5 Days
 
 Java Training   Course outline
 
 
 Java Review 
          Writing Java programsCreating classes with fields and methodsEncapsulation and access protectionCconstructorsFlow of ControlStrings and Arrays Review - More Advanced OO Concepts in Java 
          Using packages to organize codeUsing Composition to Create complex classesUsing Inheritance and Polymorphism to share commonality Interfaces and Abstract Classes 
          Programming by ContractUsing Interfaces to Define TypesInterfaces and Abstract ClassesLABS: 
            
              Using Interfaces to Remove Implementation Dependencies  Error Handling 
          ExceptionsException Hierarchytry and catchHandling ExceptionsProgram Flow with ExceptionsFinallyLABS: 
            
              Handle ExceptionsDefine Exception Class JDBC 
          JDBC basics JDBC ArchitectureUsing JDBC drivers & DriverManagerClass Connection and connecting to a database Class Statement and executing SQL statementsOther statement typesDriver typesLABS:  
            
              Interacting with an existing database using JDBC Java 2 Collections Framework 
          The Collections FrameworkCollection InterfacesCollection, Set, List, Map, IteratorGenerics  (Java 5)Processing Items With an Iteratorfor-each Loop (Java 5)Using ArrayListUsing HashMap LABS:  
            
              Using CollectionsIterating Over a Collection Additional Java Features
        (including Java 5) 
          AssertionsAutoboxingType-safe EnumsAnnotations I/O Streams 
          Readers and WritersFilter StreamsInputStreams and OutputStreamsConverting Between Streams and Readers/WritersNew I/O (NIO) APIsLABS: 
            
              Using Java I/O to Read and Write Inner Classes 
          Why Use Inner Classes?Named Inner ClassesStatic Inner ClassesAnonymous Inner ClassesLABS: 
            
              Using Named Inner ClassesUsing Anonymous Inner Classes Reflection 
          The class called ClassFinding Fields, Methods, and ConstructorsAccessing Fields, Invoking MethodsExamining ArraysLABS: 
            
              Examining Objects Using ReflectionAccessing Fields and Invoking Methods via Reflection ant: Basics 
          ant Overview, Installing and Running antBuildfiles, Projects, Targets, Tasks, PropertiesCreating Build FilesPaths(e.g. CLASSPATH, PATH)Resource Collections - FileSets, DirSets, Files,
          PatternSetsOther Resource Collections and SelectorsLABS:  
            
              Running antCreating and Using BuildfilesUsing Basic ant TasksWorking with PathsUsing Resource Collections ant: Tasks  
          Overview of ant Tasks<javac> and <java> Tasks in DepthCreating Java Archives - <jar>, <war>,
          <ear>File Related Tasks, Other Useful TasksLABS:  
            
              Working with <javac> and <java>Creating ArchivesWorking With File Tasks ant: Modularity 
          Properties FilesThe <ant> Task and SubProjectsThe <import> Task For Importing BuildfilesLABS:  
            
              Working With Properties FilesCreating Modular Buildfiles JUnit: Basics 
          JUnit Overview, Test Driven DevelopmentTests and AssertionsWorking With ExceptionsLABS: 
            
              Writing and Running TestsTesting Exceptions JUnit: Organizing Tests 
          Writing Fixtures - @Before, @AfterTest Suites, and Other CapabilitiesMock ObjectsLABS: 
            
              Using FixturesUsing Suites Logging: Basics 
          Logging Overviewlog4j OverviewLoggers, Appenders, LayoutsConfiguring log4jUsing log4jLABS: 
            
              Setting Up log4jUsing Basic log4j Logging  Logging: More On log4j 
          Logger HeirarchyLogging LevelsWorking With AppendersUsing PatternLayoutOther Logging Frameworks (Java Logging, Apache Commons
          Logging)LABS: 
            
              Working With LoggersWorking With AppendersUsing Layouts 
 |