JV-200: Advanced Java Programming – J2SE
About this Course
This hands-on course class is designed as a continuation of course JV-105 – Fundamentals of OO using Java. It quickly reviews object oriented programming and concentrates on building strength in advanced skills using J2SE and Eclipse.
Audience Profile
Anyone who has had some background in programming Java with J2SE but would like to brush up and learn new skills.
At Course Completion
Students will have an overview of Java’s libraries for handling special requirements and will build competency in J2SE Java programming.
Outline
OO Analysis & Design
- Coupling
- Cohesion
- Composition
- Composition vs. inheritance
- Inheritance
- Object layers
- Design patterns
Inheritance advanced
- Abstract vs. concrete
- Inheriting an abstract class
- Constructors & inheritance
- Construction process
- Object layers
- Chaining constructors with Eclipse
- Superclass references
- Casting back to subclass references
- Polymorphism
- Polymorphic methods
- Object oriented principles
Interfaces
- Definition
- Typical discovery
- Creating an interface
- Writing interface methods
- Implementing interfaces
- Eclipse and interfaces
Class organization
- Packages
- Declaring a package
- Nested packages
- Qualified class names
- Providing access to package classes
- Package access keywords
Exception Handling
- Old school
- OO school
- OO error handling
- try and catch
- Catching what?
- Two exception types
- Unchecked exceptions - Eclipse
- Checked exceptions - Eclipse
- Multiple catch blocks
- Defining your own error states
- Rethrowing
- finally
- Defer error handling
- Throwable
- Inheritance structure
- Try-with-resources
- Multi-catch
Programmer features
- varargs
- printf( )
- enhanced for loop
- Autoboxing / unboxing
- Static imports
Generics
- Definition
- Convenience
- Comparable interface
Collections
- Collection vs. array
- Architecture
- Other collections
- Four properties of data structures
- Collection superinterface
- List interface
- Iterators
- List Iterators
- Set interface
- SortedSet interface
- Comparator
- Map interface
- Map.Entry
- SortedMap interface
- Collections class
- Arrays class
- Properties and Preferences
- Early collections
Debugging
- Old school
- Better - System.err
- Better yet - redirect to file
- Redirect to file - Eclipse
- The best - Logger
- Assertions
- Debugger
- Debugger features
- Debugger flow control
- Debugger variables
- Debugger watch
Strings and Regex
- The String cache
- equals( )
- String methods
- Expensive concat( )
- Regex usage
- Regex syntax
- Pattern class
- Matcher class
Threads
- Concepts
- Definitions 1
- UML activity diagram
- Thread basics
- Threads with inheritance
- Definitions 2
- Running threads
- UML sequence diagram
- Four states
- Thread properties
- Threads by interface
- The target
- The target container
- Common thread pattern
- Enhancements
- UML class diagrams
- Timing threads
- Forks and joins
- Code locks (monitors)
- Synchronized blocks
- Wait / notify
- Stopping / interrupting
- Thread scheduling
- Thread scheduling by time
- volatile
- Thread groups
- Standard threads / priority
- Use need-to-know
- Deadlock
- Pipes
- Daemons
- Concurrency utilities
- Books
Nested classes
- Inner classes
- Nested or inner classes
- Creating an inner class object
- Accessing with inner classes
- Static inner class
- Static inner class syntax
- Local class
- Anonymous class
- Anonymous classes in Swing
Dates & Time
- java.util.Date
- java.text.DateFormat
- DateFormat methods
- DateFormat examples
- String --> Date
- java.text.SimpleDateFormat
- SimpleDateFormat patterns
- java.util.GregorianCalendar
Enumerations
- The enum
- Enum options
- syntax
- Enums in the APIs
I/O
- History
- Byte streams
- Character streams
- Predefinied streams
- Basic pattern
- Bytes to characters
- File class
- Scanner class
- Using Swing’s file chooser
- Text files
- PrintWriter class
- Write a text file 1
- Persist an entity
- Write a text file 2
- Read a file
- Binary files
- File input - binary
- File output - binary
- Object files
- Serialization
- Write objects
- Read objects
- Random access files
Networking
- java.net.Socket class
- A socket test
- InetAddress class
- java.net.ServerSocket class
- An echo server
- A client
URLConnection class
Prerequisites
Either Java 105 or experience within the last few years of programming Java at a basic level.