Java for Android™ Training Course
The Java™ for Android course serves as an introduction to the Java language and object oriented programming (OOP) in Java, specifically designed for folks that wish to get into Android development. The course provides students with the skills for analyzing, designing, developing, and troubleshooting Android application witten in Java language.
The participants learn the syntax and the constructs of the Java programming language, the concepts behind object-oriented programming (OOP) with Java, packaging, Java documentation, exception handling, Java libraries (I/O, utilities, networking), and concurrent programming with Java threads.
Upon completion of this course, the students will be able to:
- Explain what Java is, what it is composed of, how it compares to other programming environments, what its advantages are, and how to install and configure the Eclipse development environment.
- Read as well as write Java syntax, including declarations, assignments, operators, flow-control structures, generics, annotations, enumerations, naming conventions, etc.
- Understand object oriented programming principles, explain how OOP differs from structural programming, and discuss the advantages of OOP
- Utilize OOP in Java by designing and writing Java classes, encapsulating logic, reusing existing code through inheritance/polymorphism and composition, and modeling real-world relationships between objects
- Package and organize Java code into classes and libraries (JARs)
- Read, understand, and write Java code documentation (JavaDoc)
- Define and handle error conditions in Java through the use of exceptions
- Leverage Java libraries (I/O, Utilities, Collections, Networking)
- Analyze and troubleshot complex Java programs
- Use best-practice design patterns when developing Java code
Java™ for Android course is intended for individuals who wish to learn how to design, build, debug, and support Android applications written in Java language.
This course is designed for software developers who have background in either procedural or object oriented programming languages. To get the full value from this course, the participants should be able to:
- Define common computer terminology
- Solve basic mathematical or technical computer problems
- Understand the concept of a variable, flow control constructs, and functions
- Execute commands using a command-line interface
For twelve years, Dan has been doing his best to write and help others write some damn fine code. Dan is author of Marakana's Scala Fundamentals course, the latest addition the the Marakana course catalog. Before joining Marakana, he worked as a Developer Advocate at Atlassian, teaching developers how to write plugins for Atlassian's collaboration and development tools. Prior to Atlassian, Dan worked in both engineering and sales for Coverity, helping developers maintain code quality using Coverity's sophisticated static and dynamic analysis tools.
Between Coverity, Atlassian and Marakana, his tutorials have covered C/C++ best practices, Java web development (including Maven, Spring, OSGi, Guava, and RESTful web services using Jersey and Jackson), front-end development using jQuery, and functional programming with Scala.
Dan's latest hobby is lurking on StackOverflow as user "mergeconflict," waiting for tricky Haskell and Scala language questions to jump on. More about Dan Rosen...
About Java (1/8 day)
- History of Java
- What is Java?
- Why Java?
- State of Java today
HelloWorld in Java (1/4 day)
- Installing and configuring Java Virtual Machine
- Implementing HelloWorld in Java (lab)
- Java class/file structure and naming conventions
- Java keywords and identifiers
- Compiling and running Java programs
- Comments in Java code
- The main() method
- Installing, configuring, and using the Eclipse IDE
Data Types (1/8 day)
- Declaring and assigning variables
- Primitive Java types
- Conversion between types
- Introduction to arrays and strings
- Typesafe enums
Operators (1/8 day)
- Arithmetic operators - including shortcut operators
- Relational operators
- Logical-boolean operators
- Bitwise operators
- Assignment operators
- Additional operators
- Operator precedence
Flow Control (1/4 day)
- Local variable storage: stack
- Branching statements: if-else and switch
- Loop statements: while, for, for-each
- Break and continue statements - including labeled
- Return statement
Object Oriented Programming (5/8 day)
- What is OOP?
- Why OOP?
- Class vs. Object
- OOP in Java: classes, fields, objects, methods
- Java memory model and garbage collection
- Static vs. instance data and methods
- Constructors - including constructor and method overloading
- Encapsulation through access modifiers
- Inheritance / in Java
- Types and subtypes
- Interfaces and abstract classes / in Java
- Annotations (metadata)
- java.lang.Object: super class of them all
- Object Equality: equals() and hashCode() methods
- Converting objects to strings: toString() method
Packaging (1/8 day)
- Reasons for packaging code
- Packages and sub-packages in Java
- Protecting package namespace
- Using packaged code
- Protecting packaged code
- Java Archive (JAR)
- Static imports
JavaDoc (1/8 day)
- Overview of JavaDoc
- Reading Java APIs
- Defining and generating JavaDoc
Exception Handling (1/4 day)
- What are exceptions?
- Why exceptions?
- Built-in exceptions
- Exception life-cycle
- Handling exceptions
- Throwing exceptions
- Exception types: checked vs. unchecked
- Creating new exceptions
- Grouping and nesting exceptions
Core Java library: java.lang package (3/8 day)
- Primitive wrappers
- Auto boxing and unboxing
- String and StringBuffer/StringBuilder
- Multi-threaded programming in Java
Java I/O library: java.io package (1/8 day)
- Managing files
- Byte and character streams
- Filtered streams
- Object serialization
Java Collections and Utilities library: java.util package (1/4 day)
- Collections Framework
- Java 5 Generics
- PRNG in Java: java.util.Random
- String parsing and matching - including java.util.regex
- Date, Calendar, TimeZone
Java Networking library: java.net package (1/4 day)
- Using java.net.URL connections
- Client-socket programming with java.net.Socket
- Going beyond java.net.HttpURLConnection with Apache's HTTP Client