Courses — About Objects, Inc.
Java Programming
Course Outline
-
Overview
- Platform independence
- Byte code and JVMs
- Garbage collection
- Object-oriented features
- Compilers
- Hot spot
- JIT
- Libraries
- Java SE
- Java EE (J2EE)
-
The Java Ecosystem
- The Java Community Process (JCP)
- What is a JSR?
- Desktop GUIs: AWT, Swing, and SWT
- Java and XML
- Web technologies
- Servlets and JSP
- MVC frameworks
- Web services
- Persistence technologies
- JDBC
- JPA and object-relational frameworks
- EJB 2.0 vs. EJB 3.0
- Application Servers
- Lightweight containers
- Tooling
- Unit testing frameworks
- Build tools
- IDEs
- The Java Community Process (JCP)
-
Java Basics: the java.lang
- Statements
- Simple and compound statements
- Comments
- Operators
- Assignment
- Arithmetic
- Boolean
- Grouping
- String operations
- Variables and types
- Primitive types
- Object types
- Java 5 generics
- Declaring and de?ning variables
- Classes and instances
- String class
- Constructing an instance
- Method invocation
- Arrays
- Array declaration and de?nition
- Referencing elements
- The Arrays class
- System utility methods
- Control structures
- Branching
- Looping
- Exception handling
- Statements
-
Writing Java Classes
- Java packages
- Namespaces
- The default package
- Class and instance members
- Instance variables
- Instance methods
- Properties
- Constructors
- Finalization
- Static variables and methods
- Visibility modi?ers
- Inheritance
- Base classes
- Object and Class classes
- Overriding inherited methods
- Abstract classes and methods
- Interfaces
- Implementing an interface
- Marker interfaces (Serializable, Cloneable, etc.)
- Interface inheritance
- Inner classes
- Where and how to use
- Declaring and accessing
- Anonymous inner classes
- Exception handling
- try/catch blocks
- When to use finally
- Error and Exception classes
- Runtime vs. checked exceptions
- Object identity
- equals vs. ==
- Implementing hashcode
- Classloader issues
- Java 5 annotations
- Custom annotations
- Unit testing
- JUnit and TestNG
- Mock objects and test isolation
- Java packages
-
Java Types: the java.util and java.text Packages
- Localization (i18n) issues
- Format and its subclasses
- Working with properties ?les
- ResourceBundle
- Wrapper types
- Java 5 autoboxing
- Number class
- Byte, Character, Integer,
- NumberFormat
- Working with Dates
- Date classes
- Calendar classes
- DateFormat
- The java.math package
- BigDecimal and BigInteger
- Rounding modes
- Collections
- Iterators
- Set and HashSet
- List and ArrayList
- The Collections utility class
- Maps
- Map and HashMap
- Map entries
- Localization (i18n) issues
-
Object-Oriented Concepts
- Inheritance
- Class heirarchies
- Implementation inheritance
- Overriding methods
- Shadowing instance variables
- Polymorphism
- Inheritance-based
- Re?ection-based
- Encapsulation
- Information hiding
- Controlling visibility
- Coupling and cohesion
- Inheritance
-
Files and Streams
- Files and directories
- Working with streams
- Readers and Writers
- Buffering
- Serialization
-
Re?ection and Introspection
- Dynamic vs. compile-time binding
- Language-level support
- instanceof operator
- Dynamic instantiation
- newInstance method
- Dynamic invocation
- Method signatures
- Method lookups and caching
- Dynamic access
- Obtaining member values
- Modifying object state
-
Threads
- Thread safety
- Thread contention
- Avoiding deadlocks
- Current thread
- Obtaining classloader
- Accessing resources
- The ThreadLocal class
- Managing global state
- Thread safety
-
XML
- XML Documents
- Elements and attributes
- The concept of 'well-formedness'
- DTDs and XML Schema
- Parsers
- SAX (Simple API for XML)
- DOM (Document Object Model)
- StAX (Streaming Asynchronous XML)
- Transformations
- CSS, XSL and XSLT
- The XPath language
- XML Documents





