Dedicado a aquellas personas con alguna experiencia en el uso de lenguajes de programación estructurada que quieren introducirse en el mundo de la programación orientada a objetos, o afianzar los conceptos propios de este paradigma. Aunque los conceptos basicos se presentan de forma general e independiente del lenguaje, estos se desarrollan en el lenguaje Java. Desde la version 5.0 de Java, se han introducido numerosas innovaciones en este lenguaje que lo mejoran sustancialmente, como la genericidad, boeing/unboxing automatico, etc., convirtiendolo en uno de los lenguajes orientados a objetos mas utilizados, elegantes y que mejor implementan los mecanismo de este paradigma de programacion. El presente libro se ha diseñado con un enfoque muy practico, con multiples ejemplos y ejercicios, con explicaciones claras y didacticas, y haciendo especial hincapie en los pilares basicos del lenguaje: reutilizacion de codigo, tratamiento de excepciones, uso de colecciones, diseño de interfaces graficas de usuario y gestion de entrada/salida.