Sie sind auf Seite 1von 38

TECNOLOGAS DE LA INFORMACIN Y COMUNICACIN

REA SISTEMAS INFORMTICOS

DESARROLLO DE APLICACIONES I

TUTORIAL

MAYO AGOSTO, 2011.

INDICE

HOJA DE ASIGNATURA CON DESGLOSE DE UNIDADES TEMTICAS ............ 3 Paradigmas de la programacin.............................................................................. 3 Ambiente de desarrollo ........................................................................................... 3 Diseo y desarrollo de aplicaciones ........................................................................ 3 Desarrollo de aplicaciones con conexin a base de datos local ............................. 3 UNIDAD I. Paradigmas de la programacin. ........................................................... 4 Objetivo................................................................................................................ 4 Introduccin ......................................................................................................... 4 1.1 Programacin Estructurada. .......................................................................... 5 1.2 Paradigma de Programacin Orientada a Objetos. ....................................... 6 UNIDAD II. AMBIENTE DE DESARROLLO. ........................................................... 8 2.1 Requerimientos de Software .......................................................................... 9 2.2 Opciones de Descarga del Instalador ............................................................ 9 2.3 Personalizar la Instalacin ............................................................................. 9 2.4 Comenzar la Descarga ................................................................................ 10 2.5 Instalar el Software ...................................................................................... 11 2.6 Para instalar el software: ............................................................................. 11 2.7 Crear una aplicacin. ................................................................................... 12 UNIDAD III. DISEO Y DESARROLLO DE APLICACIONES. .............................. 22 3.1 Diseo de Interfaces Grficas. ..................................................................... 22 3.2 Estructura de una aplicacin........................................................................ 23 3.3 Manejadores de Eventos ............................................................................. 24 3.4 Componente Swing...................................................................................... 27 IV. Conexin a Base de Datos. ............................................................................. 32

HOJA DE ASIGNATURA TEMTICAS

CON

DESGLOSE

DE

UNIDADES

1. Nombre de la asignatura 2. Competencias

3. 4. 5. 6. 7.

Cuatrimestre Horas Prcticas Horas Tericas Horas Totales Horas Totales por Semana Cuatrimestre 8. Objetivo de la Asignatura

Desarrollo de aplicaciones I Implementar sistemas de informacin de calidad, a travs de tcnicas avanzadas de desarrollo de software para eficientar los procesos de las organizaciones. Implementar y administrar sistemas manejadores de bases de datos acorde a los requerimientos de informacin de la organizacin. Tercero 73 17 90 6 El alumno desarrollar aplicaciones visuales con acceso a una BD local para administrar la informacin.

Horas Prcticas Tericas 2 2 Paradigmas de la programacin 4 2 Ambiente de desarrollo 40 6 Diseo y desarrollo de aplicaciones 27 7 Desarrollo de aplicaciones con Unidades Temticas

Totales 4 6 46 34 90

conexin a base de datos local


Totales 73 17

UNIDAD I. Paradigmas de la programacin.

Objetivo.

El alumno identificar los principales paradigmas de la programacin para diferenciar su mbito de aplicacin.
Introduccin. La programacin estructurada y la orientacin a objetos constituyen los pasos finales de este camino, ya que permiten a los programadores escribir cdigo sin necesidad de conocer los detalles de la implementacin de funciones de una librera y objetos respectivamente. Su implementacin permanece oculta a los programadores, liberndoles de los condicionantes que esto impona. De ese modo, un programador no necesita saber cmo se representan internamente los datos de un tablero de ajedrez. Tan slo necesitar saber cmo mover, iniciar una partida o validar un determinado movimiento. Lo realmente complicado de ambos paradigmas de programacin es encontrar los modelos o patrones conceptuales correctos para el problema y no la implementacin de los mismos. Realmente, el diseo adquiere la mxima importancia que no tena en la programacin tradicional. La propuesta de la moderna programacin estructurada y de la orientacin a objetos consiste principalmente en intentar superar la complejidad inherente a los problemas del mundo real gracias a la abstraccin de nuestro conocimiento sobre tales problemas y su encapsulacin dentro de mdulos o libreras y objetos respectivamente. Se utiliza el trmino encapsular porque los objetos y las libreras pueden verse como "cpsulas" a modo de barrera conceptual que separa un conjunto de valores y operaciones, que poseen un substrato conceptual idntico, del resto del sistema. As, en el ejemplo nmero 2 hemos encapsulado los datos del tablero (piezas y posiciones) y las operaciones (iniciar, mover, validar y dibujar) dentro de la misma barrera conceptual que ha surgido de la abstraccin de la idea de tablero. As, tanto objetos como libreras tienen dos partes bien diferenciadas: la declaracin y la implementacin. La declaracin o interfaz es de dominio pblico, conocido por las dems partes del programa. En la implementacin se explicitan y codifican los elementos necesarios para responder a lo especificado en la declaracin. Esta separacin permite que cada objeto definido en nuestro sistema pueda ocultar su implementacin y hacer pblica su interfaz de comunicacin.

La ocultacin de la informacin permite aislar una parte del programa del resto, y que el cdigo de una parte sea revisado o extendido sin afectar a la integridad de las dems partes. En este sentido, es interesante resaltar que la opcin de encapsular datos y operaciones en libreras y objetos facilita enormemente que se puedan utilizar en una aplicacin ajena. 1.1 Programacin Estructurada. La programacin estructurada se basa en una metodologa de desarrollo de programas llamada refinamiento sucesivos es decir, se plantea una operacin como un todo y se divide en segmentos ms sencillos o de menor complejidad. Una vez terminado todos los segmentos del programa, se procede a unificar las aplicaciones realizadas por el pool de programadores. Si se ha utilizado adecuadamente la programacin estructurada, esta integracin debe ser sencilla y no presentar problemas al integrar la misma, y de presentar algn problema, ser rpidamente detectable para su correccin. La representacin grafica de la programacin estructurada se realiza a travs de diagramas de flujo, el cual representa el programa con sus entradas, procesos y salidas (Ver figura 1).

Figura 1. Diagrama de Flujo Fuente: Elaboracin propia

La programacin estructurada propone segregar los procesos en estructuras lo ms simple posibles, las cuales se conocen como secuencia, seleccin e interaccin. Ellas estn disponibles en todos los lenguajes modernos de programacin imperativa en forma de sentencias. Combinando esquemas

sencillos se pueden llegar a construir sistemas amplios y complejos pero de fcil entendimiento.
#include <iostream.h> void funcin(); main() { funcion(); funcion(); system(pause); } void funcin(){ cout<<Bienvenidos al canal de futoritos <<endl; }

1.2 Paradigma de Programacin Orientada a Objetos. La P.O.O. (tambin conocida como O.O.P., por sus siglas en ingls) es lo que se conoce como un paradigma o modelo de programacin. Esto significa que no es un lenguaje especfico, o una tecnologa, sino una forma de programar, una manera de plantearse la programacin. No es la nica (o necesariamente mejor o peor que otras), pero se ha constituido en una de las formas de programar ms populares e incluso muchos de los lenguajes que usamos hoy da lo soportan o estn diseados bajo ese modelo (PHP, AS2, AS3,). Lo que caracteriza a la POO es que intenta llevar al mundo del cdigo lo mismo que encontramos en El Mundo Real. Cuando miramos a nuestro alrededor qu vemos? pues, cosas, objetos, pero podemos reconocer estos objetos porque cada objeto pertenece a una clase, eso nos permite distinguir, por ejemplo, un perro de un auto (porque son de clases diferentes) y tambin un TV de otro (porque, aunque sean iguales, cada uno es un objeto distinto). ste es el modelo que la POO intenta seguir para estructurar un sistema. Es importante recalcar nuevamente que la POO no es un lenguaje de programacin, es una forma de enfrentarse a ella. Esto significa que la POO le servir para desarrollar en muchos de los lenguajes comunes de hoy en da (incluso en ASP) manteniendo un mismo esquema mental. Caractersticas de la P.O.O.: No hay un acuerdo aceptado por todo el mundo respecto a cules son las caractersticas que definen la POO, pero al menos todos concuerdan en estas tres: 1. Abstraccin.

2. Encapsulacin. 3. Herencia. Abstraccin: Cada vez que pronunciamos una palabra, realmente lo que hacemos es asociar ese sonido (o ese conjunto de garabatos al escribir) con una serie de cosas. Decimos que una ave es tal cosa, que una silla es tal otra, etc. Cuando vamos a aplicar la POO, lo primero que debemos hacer es cumplir con una vieja mxima de guerra: Divide y Vencers. Es decir, lo que hacemos es seccionar nuestro cdigo en grupos de cdigo ms pequeo que, al unirlos, hacen el trabajo. Un buen ejemplo de abstraccin es el cuerpo humano, aunque el cuerpo es una unidad, est dividido en lo que conocemos por sistemas (el sistema respiratorio, el sistema linftico, cardiovascular, etc., etc.). Estos sistemas, a su vez estn compuestos por otros ms pequeos: los rganos, y as sucesivamente. La abstraccin nos permite dividir nuestro programa en distintos objetos que se agrupan para formar cosas ms complejas. Bsicamente es la capacidad de separar los elementos (al menos mentalmente) para poder verlos de forma singular. Como cuando describimos el cuerpo humano y decimos cabeza, brazo(s), pierna(s), etc. Encapsulacin: Tambin conocida como ocultamiento. Cuando me acuesto a ver televisin no me preocupo del modo como ste funciona, o lo que hace para cambiar de canal o aumentar el volumen. A menos que seas experto en electrnica o tcnico en televisores, te pasar lo mismo: no lo sabes y no te importa; slo sabes que al presionar un botn ocurre la magia. La encapsulacin se encarga de mantener ocultos los procesos internos que necesita para hacer lo que sea que haga, dndole al programador acceso slo a lo que necesita. Esto da dos ventajas iniciales: Lo que hace el usuario puede ser controlado internamente (incluso sus errores), evitando que todo colapse por una intervencin indeseada (t no quieres que tu mam, que no tiene ni idea de electrnica, abra tu televisor y empiece a jugar con los circuitos para cambiar los canales manualmente verdad?). La segunda ventaja es que, al hacer que la mayor parte del cdigo est oculto, puedes hacer cambios y/o mejoras sin que eso afecte el modo como los usuarios van a utilizar tu cdigo. Slo tienes que mantener igual la forma de acceder a l (en el caso del control de la tele, que los botones sigan siendo los mismos y que el botn de apagado no cambie el volumen). Por cierto, estas puertas de acceso que das a los usuarios son lo que se conoce como interfaz. Herencia: Uno de los elementos (a mi modo de ver) ms interesantes de la P.O.O. La herencia es la capacidad que tiene una clase de derivar las propiedades y mtodos de otra (suena a chino no? Calma, lo veremos luego con paciencia ). Tratemos de explicarlo con un ejemplo:

Decimos que una gallina es un ave; esto quiere decir que las gallinas tienen caractersticas comunes con otras aves (pico, plumas, etc.), es decir que la gallina hereda las caractersticas comunes de todas las aves. Pero adems, resulta que un ave es un animal, lo que significa que tambin comparte caractersticas comunes al caballo, el perro, el hombre (seeee, somos animales) y cualquier otra cosa que pueda ser clasificada como animal. La herencia nos permite, entre otras cosas, evitar tener que escribir el mismo cdigo una y otra vez, puesto que al definir que una categora (que en programacin llamaremos clase) pertenece a otra, automticamente estamos atribuyndoles las caractersticas generales de la primera, sin tener que definirlas de nuevo.

UNIDAD II. AMBIENTE DE DESARROLLO.


NetBeans IDE es un entorno de desarrollo visual de cdigo abierto para aplicaciones programadas mediante Java, uno de los lenguajes de programacin ms poderosos del momento. Su aprendizaje se ha convertido en fundamental para quienes estn interesados en el desarrollo de aplicaciones multiplataforma. No importa que la mquina donde se instale sea un Linux, un Mac o un Windows, pues el funcionamiento del programa creado ser igual. Mediante NetBeans es posible disear aplicaciones con solo arrastrar y soltar objetos sobre la interfaz de un formulario. Si ya te familiarizaste con entornos como .NET no te costar trabajo aprender los nuevos JLabels, JButtons o JTextFields. Con NetBeans IDE no solo es posible elaborar potentes aplicaciones para el Escritorio, tambin para la Web y para dispositivos porttiles, como mviles o Pocket PC, sin que cambie la forma de programar. La programacin mediante NetBeans se realiza a travs de componentes de software modulares, tambin llamados mdulos. NetBeans pone a disposicin de los usuarios decenas de mdulos a travs de su pgina web, que podrs integrar en l para conseguir mejores aplicaciones. NOTA: Para poder instalar el NetBeans debe estar instalado en tu equipo la plataforma de desarrollo Java Development Kit (JDK).

2.1 Requerimientos de Software Antes de instalar el IDE, el Kid de Desarrollo Java SE (JDK) 5 Actualizacin 14 (versin 1.5.0_14) o posterior (incluyendo JDK 6 Actualizacin 4) debe estar instalado en su sistema. Si no tienes una instalacin de JDK 5 Actualizacin 14 o posterior, no podrs continuar con la instalacin. 2.2 Opciones de Descarga del Instalador En la Pgina de Descarga de NetBeans IDE 7, puedes descargar uno de varios instaladores, cada uno contiene el IDE base y herramientas adicionales. Los siguientes instaladores estn disponibles: Web & Java EE. Provee herramientas para desarrollar aplicaciones Java SE, Java EE y aplicaciones web. Esta opcin de descarga tambin incluye el servidor GlassFish V2 UR2 y el software Apache Tomcat. Mobility. Soporta el desarrollo de aplicaciones Java ME e incluye el paquete Mobility para ciertas aplicaciones MIDP para aparatos mbiles. Notese que algunas caractersticas de Mobility, tales como al asistente para Conecin Inalmbrica (Wireless Connection), requiere caractersticas que estn disponibles en el paquete Web & Java EE. Si planeas usar estas caractersticas, descarga la opcin de instalacin "All". Java SE. Provee todas las caractersticas estndares para el desarrollo Java SE. El soporte para Desarrollo de Extensiones NetBeans (NetBeans Plugin Development) tambin est includo. Ruby. Provee herramientas para el desarrollo Ruby y soporta Rails y JRuby. PHP. Provee herramientas para el desarrollo PHP. La opcin de descarga PHP est disponible en Acceso Reciente (Early Access). C/C++. Soporta el desarrollo en lenguaje C/C++. All. Esta es la opcin de descarga completa para NetBeans IDE 7. Contiene todos los paquetes y rutinas disponibles para el IDE. Incluye herramientas para el desarrollo de Arquitectura de Servicio Orientado (Service Oriented Architecture) y construccin de diagramas de Modelado Unificado de Lenguaje (Unified Modeling Language). 2.3 Personalizar la Instalacin Si eliges la opcin de descarga Web & Java EE o "All", puedes seleccionar exactamente cuales herramientas y rutinas deseas instalar.

Para la opcin de descarga Web & Java EE, en la pgina de bienvenida selecciona los servidores que quieres usar. Para la opcin de descarga "All", haz click en Personalizar (Customize) en la pgina de bienvenida y seleccione las caractersticas que quiera utilizar. Para ms informacin. Si quieres agregar funcionalidad a su configuracin NetBeans IDE, use el Administrador de Extensiones (Plugin Manager) de NetBeans. Por ejemplo, asume que comenzaste descargando e instalando el paquete Ruby. Entonces decides que quieres probar la funcionalidad C/C++. Para hacer esto, ve al Administrador de Extensiones en el IDE (seleccione Tools > Plugins) y agrega el paquete C/C++ a su instalacin existente. Existen varias notas importantes acerca de la instalacin y configuracin de algunas caractersticas de NetBeans IDE: Apache Tomcat 6.0.16 est includo en las opciones de descarga "Web & Java EE" y "All" pero est predeterminado solamente en la opcin "Web & Java EE". Para instalar Apache Tomcat desde la opcin de descarga "All", ejecute el instalador y seleccione Apache Tomcat 6.0.16 en el cuadro de dilogo de Instalacin Personalizada (Customize Installation). Para el desarrollo C/C++ (aplicable solo para las opciones de descarga C/C++ y "All"), necesitas instalar adicionalmente los compiladores y las herramientas. Si quieres usar el Administrador de Acceso del Sistema Sun Java (Sun Java System Access Manager), adems de la opcin de descarga "All" para IDE, necesitas instalar la Plataforma de Aplicacin Java SDK Actualizacin 4 o posterior desde http://java.sun.com/javaee/downloads/index.jsp. Asegrese de descargar la versin que incluye el Administrador de Acceso (Access Manager). Para desarrollar aplicaciones Mobility para aparatos CDC necesitas descargar e instalar Sun Java Toolkit 1.0 para CDC. Despus de la instalacin debes registrar la plataforma CDC en el IDE.

2.4 Comenzar la Descarga Para comenzar con la descarga, debes ingresa a la Pgina de Descarga de NetBeans IDE 7. En el rea superior derecha de la pgina, seleccione su plataforma desde la lista desplegable. Haz click en el botn Download para las opciones de descarga que usted quiera instalar. Guarda el archivo de instalacin en t sistema.

2.5 Instalar el Software Para llevar a cabo la instalacin adecuada, sigue las instrucciones que a continuacin se describirn. Estas instrucciones de instalacin se aplican a todas las plataformas soportadas.

2.6 Para instalar el software: Despus de completarse la descarga, ejecute el instalador. Para Windows, el archivo ejecutable de instalacin tiene extensin .exe. Haz doble click en el archivo de instalacin para ejecutarlo. Para plataformas Solaris y Linux, el archivo de instalacin tiene extensin .sh. Para estas plataformas, usted necesita convertir los archivos de instalacin en archivos ejecutables usando el siguiente comando: chmod +x ./<nombre-dearchivo-instalador> Para seleccionar las herramientas y rutinas a instalar, realiza los siguientes pasos en la pgina de Bienvenida (Welcome) del asistente de instalacin: Haz click en Personalizar (Customize). En el cuadro de dilogo Personalizar, realiza tus selecciones. Da click en OK. en la pgina de Bienvenida (Welcome) del asistente de instalacin, da click en Next. En la pgina de Acuerdo de Licencia (License Agreement), revisa el acuerdo de licencia, chequee la casilla de aceptacin y haga click en Next. En la pgina de instalacin de NetBeans IDE, haga lo siguiente: Acepte el directorio de instalacin predeterminado para NetBeans IDE o especifique otro directorio. Nota: El directorio de instalacin debe estar vaco, y el perfil de usuario que usted est usando debe tener permiso de lectura/escritura para este directorio. Acepte la instalacin predeterminada JDK para utilizar con NetBeans IDE o seleccione una instalacin diferente desde la lista desplegable. Si el asistente de instalacin no halla una instalacin JDK compatible para su uso con NetBeans IDE, su JDK no se encuentra instalado en el directorio por defecto. En ese caso, especifique el directorio de instalacin JDK o cancele la instalacin en curso e instale la versin JDK necesaria y reinicie la instalacin de NetBeans IDE. Haga click en Next. Si se abre la pgina de instalacin del servidor GlassFish, haga lo siguiente: Acepte el directorio de instalacin predeterminado para el servidor o especifique otro directorio de instalacin. Nota: El directorio de instalacin que usted especifique debe estar vaco, y el perfil

de usuario que usted est usando debe tener permiso de lectura/escritura para este directorio. Desde la lista de instalaciones compatibles JDK, elija la JDK que quiera que su servidor utilice o haga click en el botn Explorar (Browse) para especificar otra instalacin JDK. Cambie el nombre de usuario y contrasea para el dominio del servidor o acepte los que aparecen por defecto y haga click en Next. El nombre de usuario y la contrasea que aparecen por defecto son admin y adminadmin respectivamente. Verifique los valores predeterminados de los puertos (HTTP, HTTPS y Admin) para el servidor o cambielos si es necesario. Haga click en Next. Si se abre la pgina de instalacin de la aplicacin Apache Tomcat, acepte el directorio de instalacin predeterminado o especifique otro directorio de instalacin. En la pgina Resumen (Summary), verifique que la lista de componentes a ser instalados es correcta y que usted tienen espacio suficiente en su sistema para la instalacin. Haga click en Install para comenzar la instalacin. Cuando se complete la intalacin: Si la aplicacin GlassFish ha sido instalada, para registrarla seleccione la casilla de verificacin Register the Sun Java System Application Server and NetBeans IDE despus de finalizar la instalacin. Si la aplicacin GlassFish no ha sido instalada, seleccione la casilla de verificacin Register the NetBeans IDE despus de finalizar la instalacin para registrar su NetBeans IDE. Haga click en Finish para salir del asistente. Si usted seleccion la casilla de verificacin de Registro en el paso previo, la pgina de Registro se abre en el navegador predeterminado. Haga click en Registrar (Register).

2.7 Crear una aplicacin. Para crear un nuevo proyecto, seleccionamos java Desktop Apclication

Figura 2. Nuevo proyecto en NetBeans

Luego pasamos a la siguiente ventana del asistente donde le damos un nombre a nuestro proyecto y seleccionamos el tipo de aplicacin ya sea una aplicacin bsica o una aplicacin de base de datos, para este ejemplo se seleccion Basic Application.

Figura 3. Ttulo del proyecto

A continuacin Netbeans crea automticamente las clases necesarias para la aplicacin as como los correspondientes resources que vamos a utilizar en la aplicacin.

Figura 4. Proyecto generado

para el siguiente paso vamos a las propiedades de nuestro proyecto

Figura 5. Ttulo del proyecto

A continuacin seleccionamos la opcin Application donde vamos a editar la informacin bsica de la aplicacin

Figura 6. Editar informacin bsica del proyecto

luego vamos a la opcin desktop App donde vamos a editar la informacin de la aplicaion y donde vamos a seleccionar el Look and feel en este caso utilizo Nimbus com.sun.java.swing.plaf.nimbus. NOTA: NimbusLookAndFeel (Para utliza Nimbus debes tener instalado el jdk update 10 o superior) luego presionamos Ok

Figura 7. Editor del proyecto

Ahora podemos ejecutar (F6) nuestra aplicacin la cual se vera de la siguiente forma

Figura 8. Proyecto editado

Donde nosotros podemos ingresar al About de la aplicacin y ya tenemos inclusive la informacin que editamos en propiedades del proyecto

Figura 9. Hacerca de...

A continuacin vamos a crear un dialogo para nuestra aplicacin

Figura 10. Cuadro de dilogo

Luego creamos la interface, utilizo varios componentes bsicos

Figura 11. Vista previa del proyecto

Luego abrmos Demoview, y en la barra de Menu aado un Jmenu y dentro de este un JmenuItem

Figura 12. Insertando submenu

dando clic derecho sobre el JmenuItem selecciona la opcin Set Action

Figura 13. Asignar acciones a un submen

Aqu vamos a seleccionar en Action Create New Action, luego escogemos Application : emo.DemoAPP para Actions class, damos un nombre a nuestra accion en Actions method DemoAction editamos el Texto, el tooltip y el acelerador de teclado, adicionalmente puedes seleccionar iconos para la accin

Figura 14. Asignar mtodos abreviados

Luego en la clase DemoApp se cre un mtodo el cual lo vamos a completar para que quede as

Figura 15. Agregar cdigo al mtodo del menu

Lugo al ejecutar la aplicacin y presionar dentro de esta Crtl+M (Acelerador para nuestro Dialog0) se muestra

Figura 16. Ejecucin del proyecto

y listo tenemos nuestra aplicacin un paso final ahora vamos a ponerle un SplashScreen a nuestra aplicacin, en el navegador de proyectos damos clic sobre files y abrimos el archivo manifest.mf el cual debe quedar asi: (El splash es la imagen que por defecto esta en nuestra aplicacin tu puedes editarla

Figura 17. Creacin del archivo flash

Lo que nos queda es construir la aplicacin que lo realizamos presionando Shift+F11 el cual creara una carpeta dist dentro de nuestro proyecto y dentro de la cual esta demo.jar la cual ya la podemos ejecutar

Figura 18. Ventana splash

y listo tenemos nuestra aplicacin lista.

UNIDAD III. DISEO Y DESARROLLO DE APLICACIONES.


3.1 Diseo de Interfaces Grficas. Para disear interfaces grficas, Java proporciona una biblioteca de clases denominada JFC (Java Fundation Classes clases base de java), de las cuales para el presente cuatrimestre se estudiarn sola la API Swing. Swing proporciona un conjunto de componentes escritos en Java para disear interfaces grficas de usuario que se ejecutan uniformemente en cualquier plataforma nativa que soporta la maquina virtual de Java, y AWT (Abstract Window Toolkit) proporciona un conjunto de componentes para disear interfaces grficas de usuario comn a todas las plataformas nativas. La gran diferencia entre los componentes Swing y los componentes AWT es que los primeros estn implementados absolutamente con cdigo nativo lo que los hace independientes de la plataforma, razn que justifica sobradamente su utilizacin. Adems proporcionan ms capacidades que los componentes AWT. Los componentes Swing se pueden identificar porque su nombre empieza por J; por ejemplo, el componente AWT Button tiene su correspondiente componente Swing JButton. Los componentes AWT se localizan en el paquete java.awt y los componentes Swing en el paquete javax.swing. Hay que destacar que todos los componentes Swing son subclases de la clase JComponent, la cual se describir ms adelante.

3.2 Estructura de una aplicacin. Una aplicacin grfica, est construida por una ventana, la cual tiene un men de control, un ttulo y los botones de maximizar, minimizar y cerrar. Una aplicacin que muestra una interfaz grfica cuando se ejecuta, no es ms que un objeto de una clase derivada de JFrame. Segn esto, el cdigo mostrado a continuacin puede ser una estructura vlida para la mayora de las aplicaciones que inician su ejecucin visualizando una ventana principal.

Generando el siguiente cdigo:


package Estructura; public class Estructura_Aplicacion extends javax.swing.JFrame { public Estructura_Aplicacion() { initComponents(); } private void initComponents() { setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); pack(); } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new Estructura_Aplicacion().setVisible(true); } }); } }

Analizando el cdigo, se puede observar que esta aplicacin es un objeto de una subclase de la clase JFrame del paquete javax.swing:

Clase Padre

JFrame
Aplicacin Atributos Mtodos

M E

Eventos

La clase Estructura_Aplicacin hereda todos los atributos y mtodos de su clase padre JFrame. Adems de los atributos y mtodos heredados, la clase Estructura_Aplicacin encapsula dos mtodos ms: el constructor Estructura_Aplicacin() e initComponents(). Por otra parte, el mtodo initComponents aade una sentencia que indica que cuando se produzca un evento cerrar la ventana, el manejador de evento (ME) busque el mtodo que se debe ejecutar para responder a tal evento. 3.3 Manejadores de Eventos Cuando sobre un componente ocurra algn evento se espera que suceda algo. Lgicamente ese algo hay que programarlo y para poder hacerlo, hay que saber cmo manejar ese evento, lo que significa que un manejador de evento es un objeto en el que un componente delega la tarea de manipular un tipo particular de eventos,

Componente

Evento ocurrido

Escuchador

Mtodo
(respuesta al evento)

Un componente tendr asociado tantos manejadores o escuchadores de eventos como tipos de eventos tenga que manejar.

Los manejadores de eventos que manipulan los tipos de eventos son objetos que sern implementados a partir de las interfaces que se exponen a continuacin. Todos los componentes swing soportan los siguientes manejadores de eventos: ComponentListener. Permite manejar los eventos de tipo ComponentEvent generados por los componentes cuando cambian su tamao, posicin o visibilidad. FocusListener. Permite manejar los eventos de tipo FocusEvent generados por los componentes cuando ganan o pierden el foco. Cuando un componente gana el foco est en condiciones de recibir entradas desde el teclado. KeyListener. Permite manejar los eventos de tipo KeyEvent generados por el componente que tiene el foco, cuando recibe entradas desde el teclado. MouseListener. Permite manejar los eventos de tipo MouseEvent generados por los componentes cuando el cursor del ratn entra en su rea o sale de ella, y cuando el usuario pulsa y suelta un botn del ratn. MouseMotionListener. Permite manejar los eventos tipo MouseEvent generados por un componente cuando el ratn se mueve sobre l (el adaptador MouseInputAdapter implementa tanto MouseListener como MouseMotionListener).

Otros manejadores de eventos soportados por slo algunos componentes son los siguientes: ActionListener. Permite manejar los eventos de accin en los componentes: JButton, JMenuItem, JCheckBoxMenuItem, JRadioButtonMenuItem, JToggleButton, JCheckBox, JRadioButton, JComboBox, JFileChooser y JPasswordField. Un evento de accin (eventos de tipo ActionEvent) ocurre cuando se hace clic sobre un botn en general, cuando se elige un componente de un men o cuando se pulsa la tecla Entrar en una caja de texto. AdjustmentListener. Permite a una barra de desplazamiento responder a los movimientos de su cuadro de desplazamiento (eventos de tipo AdjustmentEvent). Este manejador se puede asociar con JScrollBar invocando al mtodo addAdjustmentListener. CaretListener. Permite manejar los eventos relacionados con el punto de insercin en los componentes: JTextComponent, JEditorPane, JTextPane,

JTextArea, JTextField y JPasswordField. Un evento CaretEvent ocurre cuando se mueve el punto de insercin sobre uno de estos componentes o cuando cambia la seleccin del texto. DocumentListener. Permite manejar los eventos de tipo DocumentEvent que ocurren cuando el documento contenido en alguno de los componentes especificados en el prrafo anterior cambia. ContainerListener. Permite a un contenedor notificar que se le ha aadido o quitado un componente (eventos de tipo ContainerEvent). Este manejador se puede asociar con cualquier contenedor invocando al mtodo addContainerListener. UndoableEditListener. Permite manejar los eventos de tipo UndoableEditEvent que ocurren cuando una operacin realizada en el documento de alguno de los componentes especificados en el prrafo anterior puede ser deshecha. ChangeListener. Permite manejar los eventos relacionados con el cambio de estado de los componentes: JButton, JMenuItem, JCheckBoxMenuItem, JRadioButtonMenuItem, JToggleButton, JCheckBox, JRadioButton, JColorChooser, JProgressBar, JSlider, JTabbedPane y Niewport. Un evento ChangeEvent ocurre cuando un componente cambia de estado; por ejemplo, un botn cambia de estado cuando es pulsado o una barra con un tirador deslizable cambia de estado cada vez que se mueve la posicin del tirador. ItemListener. Permite manejar los eventos tipo ItemEvent generados como consecuencia de los cambios de estado en alguno de los componentes siguientes: JButton, JMenuItem, JCheckBoxMenuItem, JRadioButtonMenuItem, JToggleButton, JCheckBox, JRadioButton y JComboBox. Por ejemplo, cuando se selecciona una casilla de verificacin. ListSelectionListener. Permite manejar los eventos de seleccin, los cuales ocurren cuando el elemento seleccionado de un componente JList o JTable cambia o ha cambiado (eventos de tipo ListSelectionEvent). WindowListener. Permite manejar los eventos de ventana que son propios de componentes como JFrame y JDialog. Estos eventos se producen cada vez que la ventana se abre, se cierra, se minimiza, se restaura, se activa o se desactiva (eventos de tipo WindowEvent). Los eventos de tipo PaintEvent se generan cuando se pinta un componente Este tipo de eventos no ha sido diseado para ser utilizado con el modelo di manejadores de eventos, sino que deben ser los propios

programas los que SI encarguen de repintar sus interfaces grficas cuando sea necesario.

3.4 Componente Swing. Todos los componente Swing son objetos de clases derivadas de la clase JComponent, que a su vez se deriva de la clase java.awt.Component, lo que pone de manifiesto que Swing se deriva de AWT. Para combinar stos formando una interfaz grfica, swing provee adems los contenedores de nivel alto JWindow, JFrame, JDialog y JApplet. Contenedores. Son componentes Swing utilizados para ubicar otros componentes. Una ventana es un contenedor. Cada contenedor define un componente denominado panel raz. Se trata de un panel de contenido que permite ubicar, adems de controles, otros paneles, formando as una jerarqua de pneles. Para acceder al panel raz de una ventana, sta debe invocar a su mtodo getContentPane: getContentPane().add(jPnPanel,BorderLayout.CENTER); En general, un panel de contenido es un objeto de la clase JPanel. A diferencia del panel raz, un objeto JPanel se corresponde con un cotenedor de un nivel intermedio; su propsito es simplificar la colocacin de controles. Un panel de contenido puede incluir a su vez otros paneles de contenido formando as una jerarqua de paneles. Jpanel jPnPanel=new JPanel( ); Para aadir un componente a un panel, se utiliza el mtodo add. Por ejemplo, el siguiente cdigo aade una etiqueta (objeto de la clase JLabel) y un botn (objeto de la clase JButton) al panel referenciado por jPnPanel: jPnPanel.add(etiqueta); jPnPanel.add(botn);

MTODOS DESTACABLES add(Component cp). Aade un componente al contenedor. add(Component cp, int index). Aade el component al contenedor en la posicin especificada por index. setLayout(LayoutManager Im). Establece un gestor de organizacin en el contenedor.

Tipo de Retorno void void void

JComponent. Proporciona soporte a la mayora de los componentes swing, a excepcin de los contenedores JFrame, JDialog y JApplet. Esta clase hereda a su vez a java.awt.Containe.
MTODOS DESTACABLES getBackground( ). Devuelve el color de fondo del componente. getBounds( ). Devuelve un objeto Rectangle que contiene las dimensiones y posiciones del componente. getHeight( ). Devuelve el alto del componente en pixeles. getWidth( ). Devuelve el ancho del componente. getX( ). Devuelve la coordenada X de la esquina superior izquierda del componente. getY( ). Devuelve la coordenada Y de la esquina superior izquierda del componente. IsEnabled( ). Indica si el componente est o no habilitado. isVisible( ). Indica si el componente est o no visible. requesFocus( ). Reclama el foco para el componente. setBackground(Color c). Asigna un color de fondo al componente. setBounds(int x, int y ). Asigna una posicin y tamao al componente. setEnabled(boolean b). Permite habilitar/inhabilitar el componente. setLocation(int x, int y). Establece la posicin del componente, siendo x e y las coordenadas de la esquina superior izquierda del componente. setVisible(int w, int h). Permite visualizar/ocultar el component. setSize(int w, int h). Establece el tamao del component, siendo w y h el ancho y alto respectivamente, del component. Tipo de Retorno Color Rectangle int int int int boolean boolean void void void void void void void

Window. Es la superclase de todos los tipos de Ventana.


MTODOS DESTACABLES dispose( ). Libera todos los recursos de pantalla ocupados por la ventana y el resto de componentes grficos que hay en su interior. getFocusOwner( ). Devuelve el componente grfico e la ventana que est en posesin del foco. Si no hay ninguno con el foco, devolver null. hide( ). Oculta la ventana. isActive( ). Indica si se trata o no de la ventana activa. pack( ). Provoca que tanto la ventana como sus componentes ajusten su tamao al preferido de estos. Tipo de Retorno void Component void boolean void.

JFrame. Representa una ventana estndar de Window. En este tipo de objetos, la operacin asociada por defecto al botn de cierre es la ocultacin de la ventana.
CONSTRUCTORES JFrame( ). Crea una ventana sin ttulo JFrame (String ttulo). Crea una ventana con el ttulo especificado. Tipo de Retorno void void

MTODOS DESTACABLES setContentPAne(Container c). Establece el papel de contenido donde sern aadidos los controles grficos de la ventana. setDefaultCloseOperation(int operation). Establece la operacin asociada al botn de cierre. Los posibles valores que puede tomar el parmetro estn definidos en unas constantes incluidas en la interfaz javax.swing.WindowsConstants (DO_NOTHING_ON_CLOSE, HIDE_ON_CLOSE, DISPOSE_ON_CLOSE, EXIT_ON_CLOSE). getTitle( ). Devuelve el ttulo de la ventana. isResizable( ). Indica si el tamao de la ventana se puede o no modificar por parte del usuario. setTitle(String s). Asigna un nuevo ttulo a la ventana setResizable(boolean b). Permite establecer si la ventana podr ser o no modificada por el usuario.

String boolean void void

Previo a la colocacin de los componentes al panel, se debe colocar al JPanel, un administrador de diseo, el cual est pensado para mostrar varios componente a la vez en un orden preestablecido. De forma predeterminada cada contenedor tiene asignado un administrador de diseo. Por ejemplo, los contenedores del nivel superior tienen asignado de forma predeterminada el administrador de diseo BorderLayout. Swing proporciona seis administradores de diseo: 1. BorderLayout. Diseo con lmites. Divide un contenedor en cinco secciones denominadas: norte, sur, este, oeste y centro. Es el administrador de diseo que tiene asignado de forma predeterminada los contenedores del nivel superior. Los componentes se colocarn en una seccin u otra segn decidamos. 2. GridLayout. Diseo por rejilla. Coloca los componentes en el contenedor en filas y columnas. 3. GridBagLayout. Diseo tipo rejilla. Coloca los componentes en el contenedor en filas y columnas. A diferencia de GidLayout, permite que un componente pueda ocupar ms de una fila y/o columna. 4. CardLayout.

JLabel. Muestra un texto o imagen estticos.


CONSTRUCTORES JLabel( ). Crea una etiqueta vaca. JLabel (String t). Crea una ventana con el ttulo especificado. JLabel(Icon im). Crea una etiqueta con la imagen especificada. Tipo de Retorno Icon String void void

MTODOS DESTACABLES getIcon( ). Devuelve la imagen establecida en la etiqueta. getText( ). Devuelve el texto establecido en la etiqueta. setIcon(Icon imagen). Establece la imagen que ser visualizada en la etiqueta. setText(String t). Establece el texto que ser visualizado en la etiqueta.

JTextField. Hereda la clase javax.swing.TextJtextComponent que es la que da soporte a los controles de edicin swing.
CONSTRUCTORES JTextField( ). Crea una caja de texto vacia. JTextField (String t). Crea una caja de texto, inicializada con el texto indicado. Tipo de Retorno String

MTODOS DESTACABLES getSelectedText( ). Devuelve el texto seleccionado en el interior del

control. getSelectionEnd( ). Devuelve la posicin siguiente al ltimo carcter seleccionado. getSelectionStart( ). Devuelve la posicin del primer carcter seleccionado. getText( ). Devuelve el texto introducido en la caja. isEditable( ). Indica si se puede o no escribir en el interior del control. select(int start, int end). Provoca la seleccin de los caracteres que van desde la posicin indicada en start hasta la posicin end-1. selectAll( ). Provoca la seleccin de todo el texto contenido en el control. setEditable(boolean b). Establece la posibilidad o no de que se pueda escribir en el control setText(String s). Establece el texto especificado en el interior del control.

int int String boolean void void void void

JButton. Hereda AbstractButton. Representa un botn de pulsacin estndar.


CONSTRUCTORES JButton( ). Crea una caja de texto vacia. JButton(String s). Crea un botn con el texto especificado. JButton(Icon imagen). Crea un botn con una imagen.

JButtonGroup. Hereda Object. Representa un grupo de botones de radio swing.


CONSTRUCTOR JButtonGroup( ). Crea un grupo de botones de radio. MTODOS DESTACABLES Tipo de Retorno void

add(AbstractButton). Aade un nuevo botn de radio al grupo, a fin de que puedan ser excluyentes entre s. En realidad, permite agrupar cualquier tipo de botn que herede AbstractButton. getButtonCount( ). Devuelve el nmero de botones del grupo. int getSelection( ). Devuelve el botn seleccionado. ButtonModel es una ButtonModel subinterfaz de ItemSelectable, implementada por AbstractButton. La interfaz ButtonModel dispone del mtodo isSelected().. IsSelected(ButtonModel boton ). Nos indica si un determinado botn del boolean grupo est o no seleccionado.

JCheckBox. Hereda ToggleButton. Representa una casilla de verificacin.


CONSTRUCTORES JCheckBox( ). Crea una casilla de verificacin sin texto asociado. JCheckBox(String texto). Crea una casilla de verificacin con el texto asociado que se indica en el parmetro.

JCheckBox(String texto, boolean state). Crea una casilla de verificacin con el texto asociado y con el estado inicial especificado en state (true activado, false desactivado).

IV. Conexin a Base de Datos.


Introduccin a los Drivers JDBC Una inspeccin casual del API JDBC muestra rpidamente la dominacin de los interfaces dentro del API, lo que podra llevar al usuario a preguntarse dnde se realiza el trabajo. Realmente esta es slo una aproximacin que tocan los desarrolladores JDBC porque la implementacin real es la proporcionada por los vendedores de Drivers JDBC, que a su vez proporcionan las clases que implementan los interfaces necesarios. Esta aproximacin presenta la competicin que proporciona al consumidor ms opciones, y para la mayor parte, produce mejor software. Con todos los drivers disponibles. elegir uno puede ser difcil. Aforturnadamente, Sun Microsystems mantiene una base de datos con ms de 150 drivers JDBC de una amplia variedad de vendedores. Esta debera ser la primera parada despus de seleccionar una base de datos. Desde una perspectiva de programacin, hay dos clases principales responsables para el establecimiento de una conexin con una base de datos. La primera clase es DriverManager , que es una de las clases que realmente proporciona el API JDBC. DriverManager es responsable de manejar un almacn de drivers registrados, esencialmente abstrayendo los detalles del uso de un driver para que el programador no tenga que tratar con ellos directamente. La segunda clase es la clase real del Driver JDBC. Estas son proporcionadas por vendedores independientes. La clase Driver JDBC es la responsable de establecer la conexin con la base de datos y de manejar todas las comunicaciones con la base de datos. Los drivers JDBC vienen en cuatro tipos diferentes. El primer paso en el proceso de crear una conexin entre una aplicacin Java y una base de datos es el registro de un driver JDBC con la Mquina Virtual Java (JVM) en la que se est ejecutando la aplicacin Java. En el mecanimso de conexin tradicional (en oposicin al mecanismo de conexin del DataSource ) la conexin y todas las comunicacin con la base de datos son controladas por un objeto DriverManager . Para establecer una conexin, se debe registrar un driver JDBC adecuado para la base de datos objetivo con el objeto DriverManager . La especificacin JDBC, dice que se supone que los dirvers JDBC se registran automticamente a s mismos con el objeto DriverManager cuando se cargan en la JVM. Por ejemplo, el siguiente fragmento de cdigo usa un inicializador esttico para primero crear un ejemplar del driver JDBC persistentjava y luego resgistrarlo con el DriverManager: static { java.sql.DriverManager.registerDriver(new com.persistentjava.JdbcDriver()) ; }

Registrar un driver es tan simple como cargar la clase del driver en la JVM, lo que puede hacerse de muchas maneras. Una forma es con el ClassLoader Class.forName(com.persistentjava.JdbcDriver) . Otro mtodo, que no es tan bien conocido, usa la propidad del sistema jdbc.drivers . Este mtodo se puede usar de tres formas distintas: Desde la lnea de comandos: java -Djdbc.drivers=com.persistentjava.JdbcDriver Connect Dentro de la palicacin Java: System.setProperty("jdbc.drivers","com.persistentjava.JdbcDriver") ; Seleccionando la propiedad jdbc.drivers en el fichero de propiedades del sistema, que generalmente depende del sistema. Separando los drivers con una coma, se pueden registrar varios drivers usando la tcnica de la propiedad del sistema mostrada arriba. Uno de los beneficios de usar la tcnica de la propiedad del sistema es que se los drivers se pueden intercambiar fcilmente sin modificar ningn cdigo (o al menos con unos mnimos cambios). Si se registran varios drivers, su orden de precedencia es: Drivers JDBC registrados por la propiedad jdbc.drivers en la inicializacin de la JVM, y Drivers JDBC cargados dinmicamente. Como la propiedad jdbc.drivers slo se chequea una vez durante la primera invocacin del mtodo DriverManager() , es importante asegurarse de que todos los drivers estn registrados correctamente antes de establecer la conexin con la base de datos. Sin embargo, no todas las JVM estn creadas igual, y algunas de ellas no siguen la especificacin JVM. Como resultado, los inicializadores estticos no siempre funcionan como hemos dibujado. Esto resulta en mltiples formas de registrar un driver JDBC, incluyendo: Class.forName("com.persistentjava.JdbcDriver").newInstance(); DriverManager.registerDriver(new com.persistentjava.JdbcDriver()) ; Estas alternativas deberan funcionar bien en todas las JVMs, por eso deberamos sentirnos agusto usndolas a lo largo del amplio conjunto de JVM disponibles. Un problema final es que Class.forname() puede lanzar una ClassNotFoundException, por eso debemos envolver el cdigo de registro en un manejador de excepcin apropiado. URLs de Drivers JDBC Una vez que un Driver JDBC se ha registrado con el DriverManager, puede usarse para establecer una conexin a una base de datos. Pero cmo selecciona DriverManager el driver correcto, dado que puede haber realmente rigstrados cualquier nmero de drivers? (Recuerda, una sla JVM podra soportar mltiples aplicaciones concurrentes, que podran conectarse con diferentes bases de datos con diferentes drivers). La tcnica es bastante simple: cada driver JDBC usa una

URL JDBC especfica (que tiene el mismo formato que una direccin Web) como un significado de auto-identificacin. El formato de la URL es correcto y probablemente parece familiar: jdbc:sub-protocol:database locator . El subprotocol es especfico del driver JDBC y puede ser odbc , oracle , db2 , etc., dependiendo del vendedor del driver real. El localizador de la base de datos es un indicador especfico del driver para especficar de forma nica la base de datos con la que una aplicacin quiere interactar. Dependiendo del tipo de driver, este localizador incluye un nombre de host, un puerto, y un nombre de sistema de base de datos. Cuando se presenta con una URL especfica, el DriverManager itera sobre la coleccin de drivers registrados hasta que uno de ellos reconoce la URL especficada. Si no se encuentra ningn driver adecuado, se lanza una SQLException . La siguiente lista presenta varios ejemplos especficos de URLs JDBC reales: jdbc:odbc:jdbc jdbc:oracle:thin:@persistentjava.com:1521:jdbc"; jdbc:db2:jdbc Muchos drivers, incluyendo el driver puente JDBC-ODBC , acepta parmetros adicionales al final de la URL como un nombre de usuario y una password. El mtodo para obtener una conexin a una base de datos, dando una URL JDBC especfica, es llamar a getConnection() sobre el objeto DriverManager . Este mtodo tiene varias formas: DriverManager.getConnection(url) ; DriverManager.getConnection(url, username, password) ; DriverManager.getConnection(url, dbproperties) ; Aqu url es un objeto String que es la URL JDBC, username y password son objetos String que representan el nombre de usuario y la password que la aplicacin JDBC debera usar para conectar con la fuente de datos; y dbproperties es un objeto Properties de Java que encapsula todos los parmetros (posiblemente incluyendo nombre de usuario y la password) que requiere un driver JDBC para hacer una conexin con xito. Ahora que tenemos el driver bsico en la mano, podemos examinar los tipos de drivers individuales con ms detalle:

Figura 19. Drivers Tipo 1

Los drivers del tipo uno tienen algo en comn: todos usan el puente JDBC-ODBC , que est incluido como parte estndard del JDK. Los drivers del tipo uno son diferentes al driver ODBC (Open DataBase Connectivity) adjunto al puente JDBCODBC . Para conectar con una fuente de datos diferente, simplemente tenemos que registrar (o unir efectivamente) una fuente de datos ODBC diferente, usando el Administrador ODBC, al nombre de la fuente de datos apropiada. Como ODBC se ha estado utilizando desde hace bastante tiempo (ms que el lenguaje Java), los drivers ODBC son ubicuos. Esto hace de este tipo de drivers una buena eleccin para aprender cmo conectar programas Java a bases de datos. De hecho, incluso hay drivers ODBC que nos permiten asignar fuentes de datos ODBC a una aplicacin Microsoft Excel o ficheros de texto plano. Sin embargo, el nivel extra de indireccin, puede resultar en una prdida de rendimiento ya que el JDBC es transferido dentro de ODBC, que luego es transferido en el protocolo especfico de la base de datos. Otro problema potencial de los drivers del tipo uno es su utilizacin en aplicaciones distribuidas. Como el propio puente no soporta comunicacin distribuida, la nica forma de que los drivers del tipo uno puedan trabajar a travs de la red es si el propio driver ODBC soporta interaccin remota. Para drivers ODBC sencillos, esta no es una opcin, y mientras que las grandes bases de datos tienen drivers ODBC que pueden trabajar de forma remota, no pueden competir con el mejor rendimiento de los drivers JDBC puro Java. Codificacin para Drivers del Tipo 1 El nombre de clase para el driver puente JDBC-ODBC es sun.jdbc.odbc.JdbcOdbcDriver y al URL JDBC toma la forma jdbc:odbc:dsn , donde dsn es el Data Source Name (nombre de la fuente de datos) usado para registrar la base de datos con el Administrador ADBC. Por ejemplo, si una base de datos se registra con una fuente de datos ODBC llamada jdbc ; un nombre de usuario de java y una password de sun , se puede usar el siguiente fragmento de cdigo para establecer una conexin.

Nota: En inters de la claridad y la brevedad, se ha eliminado del listado el chequeo y manejo de errores. Posteriores ejemplos, demostrarn la importancia de estos mecanismos (especficamente, la captura de errores encadenando sentencias SQLException ). String url = "jdbc:odbc:jdbc" ; Connection con ; try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") ; } catch(java.lang.ClassNotFoundException e) { System.err.print("ClassNotFoundException: ") ; System.err.println(e.getMessage()) ; return ; } try { con = DriverManager.getConnection(url, "java", "sun"); } catch(SQLException ex) { System.err.println("SQLException: " + ex.getMessage()); } finally { try{ con.close ; } catch(SQLException ex) { System.err.println(SQLException: " + ex.getMessage()) ; } }

Figura 20. Drivers Tipo 2

Los drivers del tipo dos tambin son conocidos como drivers Java parciales, porque traducen directamente el API JDBC en un API especfico de la base de datos. La aplicacin cliente de base de datos (para el propstio de este tutorial, el host que est ejecutando la JVM) debe tener las libreras cliente apropiadas para la base de datos, que podran incluir cdigo binario instalado y posiblemente ejecutndose. Para una aplicacin distribuida, este requerimietno puede introducir problemas extra con las licencias, as como posibles pesadillas con los problemas

de distribucin de cdigo. Por ejemplo, usar un modelo del tipo dos restringe a los desarrolladores a utilizar plataformas y sistemas operativos soportados por la librera cliente de la base de datos. Sin embargo, este modelo puede funcionar eficientemente, cuando la base cliente est fuertemente controlada.. Esto ocurre tpicamente en LANs corporativas. Un ejemplo de driver del tipo dos es el driver de aplicacin JDBC para DB2. El siguiente ejemplo demuestra cmo establecer una conexin usando un driver DB2: String url = "jdbc:db2:jdbc" ; try { Class.forName("COM.ibm.db2.jdbc.app.DB2Driver") ; } catch(java.lang.ClassNotFoundException e) { System.err.print("ClassNotFoundException: ") ; System.err.println(e.getMessage()) ; return ; } ... Observa la similitud que tiene este fragmento de cdigo con el del ejemplo 1. Esta es la principal caracterstica del modelo del tipo 2: la curva de aprendizaje para un programador que se mueve de un modelo a otro es prcticamente inexistente. Los dos ltimos tipos de drivers son drivers puro Java. El beneficio de los drivers puro Java es su fcil despliegue en entonos altamente distribuidos.

Figura 21. Drivers Tipo 3

Los drivers del tipo tres son drivers puro Java que transforman el API JDBC en un protocolo independiente de la base de datos. El driver JDBC no comunica directamente con la base de datos; comunica con un servidor de capa media, que a su vez comunica con la base de datos. Este nivel extra de indireccin proporciona flexibilidad en que se puede acceder a diferentes bases de datos desde el mismo cdigo porque el servidor de la capa media oculta las especificidades a la aplicacin Java. Para cambiar a una base de datos diferente, slo necesitamos cambiar los parmetros en el servidor de la capa media. (Un

punto a observar: el formato de la base de datos a la que estamos accediendo debe ser soportado por el servidor de la capa media). El lado negativo de los drivers del tipo tres es que el nivel extra de indireccin puede perjudicar el rendimiento general del sistema. Por otro lado, si una aplicacin necesita interactar con una variedad de formatos de bases de datos, un driver del tipo tres en una aproximacin adecuada debido al hecho de que se usa el mismo driver JDBC sin importar la base de datos subyacente. Adems, como el servidor de la capa media se puede instalar sobre una plataforma hardware especfica, se pueden realizar ciertas optimizaciones para capitalizar los resultados perfilados.

Figura 22. Driver TIpo 4

Los drivers del tipo cuatro son drivers puro Java que se comunican directamente con la base de datos. Muchos programadores consideran ste el mejor tipo de driver, ya que normalmente proporciona un rendimiento ptimo y permite al desarrollador utilizar las funcionalidades especficas de la base de datos. Por supuesto este acoplamiento puede reducir la flexibilidad, especialmente si necesitamos cambiar la base de datos subyacente en una aplicacin. Este tipo de driver se usa frecuentemente en applets y otras aplicaciones altamente distribuidas. El siguiente fragmento de cdigo muestra cmo usar un driver DB2 del tipo cuatro: String url = "jdbc:db2://persistentjava.com:50000/jdbc" ; try { Class.forName("COM.ibm.db2.jdbc.net.DB2Driver") ; } catch(java.lang.ClassNotFoundException e) { System.err.print("ClassNotFoundException: ") ; System.err.println(e.getMessage()) ; return ; } ...

Das könnte Ihnen auch gefallen