andreaprovaglio.com

Java Programming

Printed from http://andreaprovaglio.com. All rights reserved.

Track: Programming Languages
Platform: Java
Days: 5
Code: 211
Author: Andrea Provaglio

An intermediate course about programming on the Java platform. Targeted to programmers with a basic understanding of the OO principles.

Description

Java was publicly released in 1995 and today it's a very mature programming platform. On the other hand, many things have changed in Java since '95, partly with the intent of adding new features, partly to correct design flaws coming from early implementations.

This course is designed to teach the students not just the language syntax and libraries, but to give guidelines on what is considered today the proper way to write Java code, avoiding practices and idioms that were popular in the past but turned out to be generally bad ideas.

We start by defining Java as an OS-independent programming and execution platform, not made only of the language and the Virtual Machine, but one that includes other languages and diverse hardware platforms.

We proceed with describing the fundamental language constructs and how to apply the concepts of inheritance, composition, interfaces and polymorphism in Java. We also spend some time on explaining the proper use of Structured Exception Handling in Java (a topic that's been a bit controversial in the Java community). Once covered the OOP part, we start looking at some of the most commonly used Java packages and how to apply them to recurring programming problems.

The last part of the course is about "programming in the large" and it presents an overview networking, database access, multithreading and the use of Java Annotations for meta-programming (a technique that's becoming more and more common, especially for server-side applications).

Some topics we decided not to cover in this course: we don't talk about the Java libraries for graphical user interfaces (not everybody seems to be interested in those and they are not too hard to learn from a tutorial or a book once you have a solid foundation in Java); we also don't cover the OOP fundamentals – the student is expected to have a basic understanding of what classes and objects are before coming to this course.

About 30% of the time is on guided exercises.

Contents

  • The Java Platform: language and runtime environment
  • The Java type system: primitive types, interfaces and classes
  • Defining your classes in Java
  • Creating and using Java packages
  • Initializing objects
  • Applying composition, inheritance and polymorphism
  • Using interfaces and inner classes
  • Exception handling: definition, usage and guidelines
  • Collections and Generics
  • The Java I/O System
  • Fundamentals of Java concurrent programming
  • Fundamentals of network programming and DB access
  • Meta-programming with Java Annotations

Skills you'll learn

  • Java as a programming and execution platform
  • Design patterns in the Java libraries
  • Write modern Java code
  • Use exceptions to their best
  • Understand the implications of strong typing in Java
  • Program using interfaces for better code reusability and extensibility
  • Learn what features not to use in Java (and why)

Pre-requisites

To get the most out of this course, you should have attended the following courses or have equivalent practical experience:

Notes

Previous programming experience in C or C++ is not required, although some confidence with C will let the student focus more on the Java language design rather than the syntax.

For additional information, please contact us.

Get Connected!
Latest Updates
Speaking at Scandev on Tour 2011
I'll be giving my "Overcoming Self-organization Blocks" presentation at Scandev on Tour 2011, October 18 2011 in Stockholm, Sweden.
Speaking at Agile Prague 2011
I'll be giving my "Overcoming Self-organization Blocks" presentation at Agile Prague 2011, September 29-30 2011 in Prague, Czech Republic.
Speaking at Agile Eastern Europe 2011
I'll be giving my "Overcoming Self-organization Blocks" presentation at AgileEE 2011, September 23-24 2011 in Kiev, Ukraine.
Speaking at ALE2011
I'll be giving my "Overcoming Self-organization Blocks" presentation at ALE 2011, September 7-9 2011 in Berlin, Germany.
Speaking at Agile2011
I'm pleased and honored to give my talk "Overcoming Self-organization Blocks" at Agile2011, August 8-12 2011 in Salt Lake City, Utah.