maquina virtual java

13
 Maquina virtual java La máquina virtual de Java (en inglés Java Virtual Machine, JVM) es un programa gratuito, ejecutable en una plataforma específica, capaz de interpretar y ejecutar instrucciones expresadas en un código binario especial(el Java bytecode), el cual es generado por el compilador del lenguaje Java.  Actualmente la mayoría de las plataformas de ejecución d e Java son máquinas virtuales. La máquina virtual es un programa normal solamente ejecutable en un sistema operativo particular (por ejemplo, Windows) Esta JVM es la que le permite a Java ser multiplataforma debido a que cuando se compila el código de Java, este queda compilado en bytecode que es lo que reconoce la JVM instalada en cualquier plataforma Windows, Linux o MacOS. En particular, nos interesa, por que las herramientas interactivas que incluye WebCT, como son el Chat o la pizarra virtual, están desarrolladas en el lenguaje de programación Java. Luego es indispensable tener instalada la máquina virtual para su correcto funcionamiento. Qué es el JDK (Java Development Kit) y Se trata de un conjunto de herramientas (programas y librerías) que permiten desarrollar (compilar, ejecutar, generar documentación, etc.) programas en lenguaje Java. y Existen versiones del JDK para prácticamente todos los Sistemas Operativos y existen también distintos programas comerciales y Sun distribuye gratuitamente el JDK ³oficial´ para los siguientes sistemas operativos: Windows 95/98/NT, Solaris y Linux o Se pueden conseguir en Internet (http://www.javas oft.com/) o Los profesores de la asignatura los facilitarán a los alumnos que lo deseen en un CD-ROM prestado para la instalación. y Los JDK incorporan una herramienta de Debugger (detener la ejecución de un programa en l a línea que se desee y poder conocer el valor de las variables en ese momento) y La versión JDK1.2 se ha empezado a denominar también Java 2 ¿que es un IDE? Un entorno de desarrollo integrado, llamado también IDE (sigla en inglés de integrated development environment ), es un programa informático compuesto por un conjunto de herramientas de programación. Puede dedicarse en exclusiva a un solo lenguaje de programacióno bien poder utilizarse para varios. Un IDE es un entorno de programación que ha sido empaquetado como un programa de aplicación, es decir, consiste en un editor de código, un compilador, un depurador y un constructor de interfaz gráfica (GUI). Los IDEs pueden ser aplicaciones por sí solas o pueden ser parte de aplicaciones existentes. El lenguajeVisual Basic, por ejemplo, puede ser usado dentro de las aplicaciones de Microsoft Office, lo que hace posible escribir sentencias Visual Basic en forma de macrospara Microsoft Word. Los IDE proveen un marco de trabajo amigable para la mayoría de los lenguajes de pro gramación tales como C++, PHP, Python, Java, C#, Delphi, Visual Basic, etc. En algunos lenguajes, un IDE puede funcionar como un sistema en tiempo de ejecución, en donde se permite utilizar el lenguaje de programación en forma interactiva, sin necesidad de trabajo orientado a archivos de texto, como es el caso de Smalltalk u Objective- C.

Upload: stevepetter

Post on 15-Jul-2015

32 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Maquina Virtual Java

5/13/2018 Maquina Virtual Java - slidepdf.com

http://slidepdf.com/reader/full/maquina-virtual-java 1/13

Maquina virtual javaLa máquina virtual de Java (en inglés Java Virtual Machine, JVM) es un programagratuito, ejecutable en una plataforma específica, capaz de interpretar y ejecutar instruccionesexpresadas en un código binario especial(el Java bytecode), el cual es generado por el compilador del lenguaje Java.

 Actualmente la mayoría de las plataformas de ejecución de Java son máquinas virtuales. Lamáquina virtual es un programa normal solamente ejecutable en un sistema operativo particular 

(por ejemplo, Windows) Esta JVM es la que le permite a Java ser multiplataforma debido a quecuando se compila el código de Java, este queda compilado en bytecode que es lo que reconoce laJVM instalada en cualquier plataforma Windows, Linux o MacOS.En particular, nos interesa, por que las herramientas interactivas que incluye WebCT, comoson el Chat o la pizarra virtual, están desarrolladas en el lenguaje de programación Java. Luego esindispensable tener instalada la máquina virtual para su correcto funcionamiento.

Qué es el JDK (Java Development Kit)

y  Se trata de un conjunto de herramientas (programas y librerías) que permiten desarrollar (compilar,ejecutar, generar documentación, etc.) programas en lenguaje Java.

y  Existen versiones del JDK para prácticamente todos los Sistemas Operativos y existen tambiéndistintos programas comerciales

y  Sun distribuye gratuitamente el JDK ³oficial´ para los siguientes sistemas operativos: Windows95/98/NT, Solaris y Linux

o  Se pueden conseguir en Internet (http://www.javasoft.com/)o  Los profesores de la asignatura los facilitarán a los alumnos que lo deseen en un CD-ROM

prestado para la instalación.

y  Los JDK incorporan una herramienta de Debugger (detener la ejecución de un programa en la líneaque se desee y poder conocer el valor de las variables en ese momento)

y  La versión JDK1.2 se ha empezado a denominar también Java 2

¿que es un IDE?

Un entorno de desarrollo integrado, llamado también IDE (sigla en inglés de integrated development environment ), es un programa informático compuesto por un conjunto de herramientas de programación.Puede dedicarse en exclusiva a un solo lenguaje de programacióno bien poder utilizarse para varios.

Un IDE es un entorno de programación que ha sido empaquetado como un programa de aplicación, es decir,consiste en un editor de código, un compilador, un depurador y un constructor de interfaz gráfica (GUI). Los

IDEs pueden ser aplicaciones por sí solas o pueden ser parte de aplicaciones existentes. El lenguajeVisualBasic, por ejemplo, puede ser usado dentro de las aplicaciones de Microsoft Office, lo que hace posibleescribir sentencias Visual Basic en forma de macrospara Microsoft Word.

Los IDE proveen un marco de trabajo amigable para la mayoría de los lenguajes de programación talescomo C++, PHP, Python, Java, C#, Delphi, Visual Basic, etc. En algunos lenguajes, un IDE puede funcionar como un sistema en tiempo de ejecución, en donde se permite utilizar el lenguaje de programación en formainteractiva, sin necesidad de trabajo orientado a archivos de texto, como es el caso de Smalltalk u Objective-C.

Page 2: Maquina Virtual Java

5/13/2018 Maquina Virtual Java - slidepdf.com

http://slidepdf.com/reader/full/maquina-virtual-java 2/13

BIBLIOTECAS DE LA API DE JAVA

Con cada una de las versiones que Sun lanza del JDK, se acompaña de una serie de bibliotecas con clasesestándar que valen como referencia para todos los programadores en Java.

Estas clases se pueden incluir en los programas Java, sin temor a fallos de portabilidad. Además, están biendocumentadas (mediante páginas Web), y organizadas en paquetes y en un gran árbol de herencia.

 A este conjunto de paquetes (o bibliotecas) se le conoce como la API de Java (Application ProgrammingInterface).

En este apartado explicaremos los paquetes básicos de la API de Java, aunque algunos de ellos tienensubpaquetes.

A. Paquetes de utilidades 

y   j ava.lang : Fundamental para el lenguaje. Incluye clases comoString o StringBuffer , que se tratanmás en detenimiento en el capítulo"III.2 Cadenas" de este tutorial.

y   j ava.io: Para la entrada y salida a través de flujos de datos, y ficheros del sistema. Se estudia en elcapítulo "III.3 Entrada/Salida" de este tutorial.

y   j ava.util : Contiene colecciones de datos y clases, el modelo de eventos, facilidades horarias,generación aleatoria de números, y otras clases de utilidad.

y   j ava.math: Clases para realizar aritmética con la precisión que se desee.y   j ava.text : Clases e interfaces para manejo de texto, fechas, números y mensajes de una manera

independiente a los lenguajes naturales.y   j ava.security : Clases e interfaces para seguridad en Java: Encriptación RSA...

B. Paquetes para el desarrollo gráfico

y   j ava.applet : Para crear applets y clases que las applets utilizan para comunicarse con su contexto.Se estudia en el capítulo "VI. Applets" de este tutorial.

y   j ava.awt : Para crear interfaces con el usuario, y para dibujar imágenes y gráficos. Se estudia en elcapítulo "IV. Bibliotecas gráficas" de este tutorial.

y   j avax.swing : Conjunto de componentes gráficos que funcionan igual en todas las plataformas queJava soporta. Se estudia en el capítulo"IV. Bibliotecas gráficas" de este tutorial.

y   j avax.accesibility : Da soporte a clases de accesibilidad para personas discapacitadas.y   j ava.beans: Para el desarrollo de JavaBeans.

C. Paquetes para el desarrollo en r ed

y   j ava.net : Clases para aplicaciones de red. Se estudia en el capítulo"V. Java e Internet" de estetutorial.

y   j ava.sql : Paquete que contiene el JDBC, para conexión de programas Java con Bases de datos.y   j ava.rmi : Paquete RMI, para localizar objetos remotos, comunicarse con ellos e incluso enviar objetos

como parámetros de un objeto a otro.y  org.omg.CORBA: Facilita la posibilidad de utilizar OMG CORBA, para la conexión entre objetos

distribuidos, aunque esté codificados en distintos lenguajes.y  org.omb.CosNaming : Da servicio al IDL de Java, similar al RMI pero en CORBA

Page 3: Maquina Virtual Java

5/13/2018 Maquina Virtual Java - slidepdf.com

http://slidepdf.com/reader/full/maquina-virtual-java 3/13

biblioteca AWT 

 AWT es un conjunto de herramientas GUI (Interfaz Gráfica con el Usuario) diseñadas para trabajar conmúltiples plataformas.

Este paquete viene incluido en la API de Java como j ava.awt ya desde su primera versión, con lo que lasinterfaces generadas con esta biblioteca funcionan en todos los entornos Java disponibles (incluyendonavegadores, lo que les hace especialmente eficientes para la creación deapplets Java).

Component

Esta clase representa a cualquier objeto que puede ser parte de una interfaz gráfica de usuario. Es la clasepadre de muchas de las clases del AWT.

Su propósito principal es representar algo que tiene una posición y un tamaño, que puede ser dibujado en lapantalla y que pueda recibir eventos de entrada (que responda a las interacciones con el usuario).

La clase Component presenta diversos métodos, organizados para cubrir varios propósitos.

 A continuación se explican algunos de ellos.

a.) T amaño y posición d el  com ponente 

y  Dimension getSize(); Devuelve la anchura y altura del componente como un objeto de laclase Dimension, que tiene como campos:width (anchura) y heigth(altura).

y  void setSize(int ancho, int largo); Establece la anchura y altura del componente.y  Dimension getPreferredSize(); Devuelve el tamaño que este componente debería tener.y  void setPreferredSize(); Establece el tamaño que este componente debería tener.y  Dimension getMinimumSize(); Devuelve el tamaño mínimo que este componente debería tener.y  void setMinimumSize(int ancho, int largo); Establece el tamaño mínimo que este componente debería

tener.y  Rectangle getBounds(); Devuelve las coordenadas de este componente como un objeto de la

clase Rectangle, que tiene como campos: x, y, width y heigth.y  void setBounds(int x, int y, int ancho, int largo); Establece las coordenadas de este componente.

b.) Acciones sobre el  com ponente 

y  boolean getEnabled(); Comprueba si el componente está o no activo.y  void setEnabled(boolean); Establece el componente a activo o inactivo.y  boolean getVisible(); Comprueba si el componente está o no visible.y  void setVisible(boolean); Establece si el componente está visible o invisible.y  void paint(Graphics g); Indica al AWT que ha de dibujar el componenteg .y  void repaint(); Indica al AWT que ha de volver a dibujar el componente.y  void update(Graphics g); Es llamado por AWT cuando se invoca el métodorepaint(). Por defecto

llama a paint().

c.) Ev entos d e interacción con el u su ario 

 A su vez hay tres tipos de métodos, para la gestión de eventos mediante el nuevo modelo de eventos de AWT(desde la versión 1.1).

Hay tres tipos de métodos:

y  void add_Tipo_Listener(_Tipo_Listener l); Añade un oyente a la espera de algún tipo de eventossobre este componente.

Page 4: Maquina Virtual Java

5/13/2018 Maquina Virtual Java - slidepdf.com

http://slidepdf.com/reader/full/maquina-virtual-java 4/13

y  void remove_Tipo_Listener(_Tipo_Listener l); Elimina algún oyente que estaba a la espera de algúntipo de eventos sobre este componente.

y  void process_Tipo_Event(_Tipo_Event e); Procesa eventos del tipo _ Tipo_Event enviándolos acualquier objeto _ Tipo_Listener que estuviera escuchando.

En estos métodos _Tipo_ puede ser cualquiera de los siguientes:

Component, Focus, InputMethod , Key , Mouse, MouseMotion.

Container 

La clase Container sabe cómo mostrar componentes embebidos (que a su vez pueden ser instancias de laclase Container ).

 Algunos de los métodos de la claseContainer son:

y  Component add(Component c); Añade un componente al contenedor.y  void print(Graphics g); Imprime el contenedor.y  void printComponents(Graphics g); Imprime cada uno de los componentes de este contenedor.

y  LayoutManager getLayout(); Devuelve el gestor de impresión (LayoutManager ) asociado a estecontenedor, que es el responsable de colocar los componentes dentro del contenedor.

y  void setLayout(LayoutManager 1); Establece un gestor de impresión para este componente.

Estos objetos Container tienen un LayoutManager asociado que define la manera en que van a posicionarselos objetos componentes en su interior.

Gestor es de impr esión

LayoutManager y LayoutManager2 son dos interfaces encargadas de la representación y posicionamiento enpantalla de componentes AWT.

De estas interfaces se proporcionan cinco implementaciones en AWT. Cada una de ellas reparte los objetos

de una forma particular:

y  BorderLayout : En cinco lugares: Norte, Sur, Este, Oeste y Centro (North, South, East,West y Center ).

y  CardLayout : Permite gestionar varios componentes de los que sólo uno se visualiza a la vez,permaneciendo los demás invisibles debajo.

y  FlowLayout : De izquierda a derecha horizontalmente en cada línea. Cuando sobrepasan una línea secomienza a la izquierda de la siguiente.

y  GridLayout : En una tabla en la que todas las casillas tienen el mismo tamaño.y  GridBagLayout : En una tabla, pero las casillas no tienen que tener el mismo tamaño.

Otras clases 

Por supuesto AWT no se limita a estas clases. Dentro de esta biblioteca podemos encontrar multitud declases prefabricadas para facilitar el diseño gráfico.

 A continuación explicamos algunas de ellas.

a.) C lases contened oras (hijas d e C ontainer  

y  Panel : Permite hacer una presentación más avanzada queContainer mediante la combinación consubpaneles o subclases para crear contenedores personalizados. La clase Applet que sirve paracrear applets Java, hereda de esta clasePanel .

Page 5: Maquina Virtual Java

5/13/2018 Maquina Virtual Java - slidepdf.com

http://slidepdf.com/reader/full/maquina-virtual-java 5/13

y  ScrollPane: Una barra de desplazamiento, horizontal o vertical.y  Window : Una ventana sin borde.y  Frame: Una ventana que no tiene borde. Puede tener asociado un objetoMenubar (una barra de

herramientas o barra de menú personalizada).y  Dialog : Una ventana usada para crear diálogos. Tiene la capacidad de ser modal con lo que sólo este

contenedor recibiría entradas del usuario.y  Filedialog : Un diálogo que usa el selector de archivos nativo del sistema operativo.

b.) C lases com ponentes (hijas d irectas d e C om ponent) 

y  Button: Un botón gráfico para el que se puede definir una acción que sucederá cuando se presione elbotón.

y  Canvas: Permite pintar o capturar eventos del usuario. Se puede usar para crear gráficos o comoclase base para crear una jerarquía de componentes personalizados.

y  Checkbox : Soporta dos estados: on y off . Se pueden asociar acciones que se ejecuten (triggers)cuando el estado cambie.

y  Choice: Menú desplegable de opciones.y  Label : Cadena de etiqueta en una localización dada.y  List : Una lista desplegable de cadenas.y  Scrollbar : Desplegable de objetosCanvas.y  TextComponent : Cualquier componente que permita editar cadenas de texto.Tiene dos clases hijas:y  TextField : Componente de texto consistente en una línea que puede ser usada para construir 

formularios.y  TextArea: Componente para edición de texto de tamaño variable.

Eventos de AWT 

 AWT tiene sus propios eventos, que se explican a continuación.

a.) Ev entos fí sicos 

Son todos hijos del eventoComponentEvent , que indica algún cambio en un objetoComponent :

y  InputEvent : Se ha producido una entrada del usuario. Tiene como eventos hijosKeyEvent (pulsaciónde una tecla) y MouseEvent (acción sobre el ratón).

y  FocusEvent : Avisa al programa de que el componente ha ganado o perdido laatención (enfoque) delusuario. Esto se deduce de la actividad del usuario (ratón y teclado).

y  WindowEvent : Avisa al programa de que el usuario ha utilizado uno de los controles de ventana anivel del sistema operativo, como los controles de minimizar o cerrar.

y  ContainerEvent : Se envía cuando se añaden o eliminan componentes a un contenedor.y  PaintEvent : Evento especial que señala que el sistema operativo quiere dibujar de nuevo una parte

de la interfaz. Un componente debe sobreescribir el método paint() o el método update() paragestionar este evento.

Biblioteca Swins

Arquitectura

Es un framework Modelo Vista Controlador para desarrollar interfaces gráficas para Java con independenciade la plataforma. Sigue un simple modelo de programación por hilos, y posee las siguientes característicasprincipales:

Page 6: Maquina Virtual Java

5/13/2018 Maquina Virtual Java - slidepdf.com

http://slidepdf.com/reader/full/maquina-virtual-java 6/13

  Independencia de plataforma.  Extensibilidad: es una arquitectura altamente particionada: los usuarios pueden proveer sus propias

implementaciones modificadas para sobrescribir las implementaciones por defecto. Se puede extender clases existentes proveyendo alternativas de implementación para elementos esenciales.

  Personalizable: dado el modelo de representación programático del framework de swing, el controlpermite representar diferentes estilos de apariencia "look and feel" (desde apariencia MacOS hastaapariencia Windows XP pasando por apariencia GTK+, IBM UNIX o HP UXentre otros). Además, los

usuarios pueden proveer su propia implementación de apariencia, que permitirá cambios uniformes en laapariencia existente en las aplicaciones Swing sin efectuar ningún cambio al código de aplicación.

Nuevas características 

La arquitectura Swing presenta una serie de ventajas respecto a su antecedente AWT:

   Amplia variedad de componentes: En general las clases que comiencen por "J" son componentes que sepueden añadir a la aplicación. Por ejemplo: JButton.

   Aspecto modificable (look and feel): Se puede personalizar el aspecto de las interfaces o utilizar variosaspectos que existen por defecto (Metal Max, Basic Motif, Window Win32).

   Arquitectura Modelo-Vista-Controlador: Esta arquitectura da lugar a todo un enfoque de desarrollo muyarraigado en los entornos gráficos de usuario realizados con técnicas orientadas a objetos. Cadacomponente tiene asociado una clase de modelo de datos y una interfaz que utiliza. Se puede crear unmodelo de datos personalizado para cada componente, con sólo heredar de la clase Model.

  Gestión mejorada de la entrada del usuario: Se pueden gestionar combinaciones de teclas en un objetoKeyStroke y registrarlo como componente. El evento se activará cuando se pulse dicha combinación siestá siendo utilizado el componente, la ventana en que se encuentra o algún hijo del componente.

  Objetos de acción (action objects): Estos objetos cuando están activados (enabled) controlan las accionesde varios objetos componentes de la interfaz. Son hijos de ActionListener.

  Contenedores anidados: Cualquier componente puede estar anidado en otro. Por ejemplo, un gráfico sepuede anidar en una lista.

  Escritorios virtuales: Se pueden crear escritorios virtuales o "interfaz de múltiples documentos" mediantelas clases JDesktopPane y JInternalFrame.

  Bordes complejos: Los componentes pueden presentar nuevos tipos de bordes. Además el usuario puedecrear tipos de bordes personalizados.

  Diálogos personalizados: Se pueden crear multitud de formas de mensajes y opciones de diálogo con elusuario, mediante la clase JOptionPane.

  Clases para diálogos habituales: Se puede utilizar JFileChooser para elegir un fichero, y JColorChooser para elegir un color.

  Componentes para tablas y árboles de datos: Mediante las clases JTable y JTree.

  Potentes manipuladores de texto: Además de campos y áreas de texto, se presentan campos de sintaxisoculta JPassword, y texto con múltiples fuentes JTextPane. Además hay paquetes para utilizar ficherosen formato HTML o RTF.

  Capacidad para "deshacer": En gran variedad de situaciones se pueden deshacer las modificaciones quese realizaron.

Page 7: Maquina Virtual Java

5/13/2018 Maquina Virtual Java - slidepdf.com

http://slidepdf.com/reader/full/maquina-virtual-java 7/13

  Soporte a la accesibilidad: Se facilita la generación de interfaces que ayuden a la accesibilidad dediscapacitados, por ejemplo en Braille.

Nuevos gestor es de impr esión

Swing incorpora nuevos gestores de impresión, ampliando los cinco que AWT incorporaba. Entre ellosconviene destacar los siguientes:

  BoxLayout: Es similar al FlowLayout de AWT, con la diferencia de que con él se pueden especificar losejes (x o y). Viene incorporada en el componente Box, pero está disponible como una opción en otroscomponentes.

  OverlayLayout: Todos los componentes se añaden encima de cada componente previo.

  SpringLayout: El espacio se asigna en función de una serie de restricciones asociadas con cadacomponente.

  ScrollPaneLayout: Incorporado en el componente ScrollPane.

  ViewportLayout: Incorporado en el componente Viewport.

Principales clases 

Las clases de Swing se parecen mucho a las de AWT. Así la clase Panel de AWT tiene una clase JPanel enSwing. Esto se cumple para todas las clases menos para Choice, Canvas, FileDialgog y ScrollPane.

De hecho todas las clases componentes de Swing (clases hijas de JComponent), son hijas de la claseComponent de AWT.

  ButtonGroup: Muestra una lista de elementos (JRadioButton) con solo uno seleccionable. Cada elementotiene un círculo, que en caso del elemento seleccionado contendrá un "punto".

  JToggleButton: Es como un botón normal, pero al ser pinchado por el usuario queda activado.

  JProgressBar: Representa una barra de estado de progreso, mediante la que habitualmente se muestrael desarrollo de un proceso en desarrollo (ejemplo: la instalación de una aplicación).

  JTabbedPane: Es una ventana con solapas (la que utiliza Windows). Este componente había sido muysolicitado.

  JApplet: Aunque ya existía una clase Applet en AWT, esta nueva versión es necesaria para crear applets

Java que utilicen interfaces Swing.

Por supuesto Swing no se limita a estas clases, sino que posee muchas más con diversas funcionalidades.Para estudiarlas consulte la documentación del JDK 1.2 de Java.

Patrón de diseño Modelo-Vista-Controlador 

Muchos de los componentes Swing están basados en un patrón de diseño denominado "Modelo-Vista-Controlador".

Page 8: Maquina Virtual Java

5/13/2018 Maquina Virtual Java - slidepdf.com

http://slidepdf.com/reader/full/maquina-virtual-java 8/13

El concepto de este patrón de diseño se basa en tres elementos:

  Modelo: Almacena el estado interno en un conjunto de clases.

  Vista: Muestra la información del modelo

  Controlador: Cambia la información del modelo (delegado).

Ejemplo

Simple programa basado en Swing. Muestra una ventama (conteniendo una etiqueta y un botón) // Importa las clases necesarias de Swing and AWT import java.awt.EventQueue;import java.awt.FlowLayout;

import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;

public class SwingExample {

public static void main(String[] args) {

 // Asegúrese de que todas las instancias y accesos de Swing/AWT están hecha en la // Event Dispatch Thread (E DT) EventQueue.invokeLater(new Runnable() {

public void run() { // Crea un JFrame, es una Window con "decoraciones", o sea  // titulo, borde y botón JFrame f = new JFrame("Swing Example Window");f.setLayout(new FlowLayout());

 // Adiciona algunos Componentes f.add(new JLabel("Hello, world!"));f.add(new JButton("Press me!"));

f.pack();

f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

f.setVisible(true);}

});}

}Diferencia entra AWT y Swins

El interfaz de usuario es el aspecto más importante de cualquier aplicación. Una aplicación sin un interfazfácil, impide que los usuarios saquen el máximo rendimiento del programa. Java proporciona los elementosbásicos para construir decentes interfaces de usuario a través del AWT, y opciones para mejorarlas medianteSwing, que sí permite la creación de interfaces de usuario de gran impacto y sin demasiados quebraderos decabeza por parte del programador.

 Al nivel más bajo, el sistema operativo transmite información desde el ratón y el teclado como dispositivos deentrada al programa. El AWT fue diseñado pensando en que el programador no tuviese que preocuparse dedetalles como controlar el movimiento del ratón o leer el teclado, ni tampoco atender a detalles como laescritura en pantalla. El AWT constituye una librería de clases orientada a objeto para cubrir estos recursos yservicios de bajo nivel.

Cuando se empieza a utilizar Swing, se observa que JavaSoft ha dado un gran paso adelante respecto al AWT. Ahora los Componentes del interfaz gráfico son Beans y utilizan el nuevo modelo de Delegación deEventos de Java. Swing proporciona un conjunto completo de Componentes, todos ellos lightweight, es decir,

Page 9: Maquina Virtual Java

5/13/2018 Maquina Virtual Java - slidepdf.com

http://slidepdf.com/reader/full/maquina-virtual-java 9/13

ya no se usan componentes "peer" dependientes del sistema operativo, y además, Swing está totalmenteescrito en Java. Todo ello redunda en una mayor funcionalidad en manos del programador, y en la posibilidadde mejorar en gran medida la cosmética de los interfaces gráficos de usuario.

Son muchas las ventajas que ofrece el uso de Swing. Por ejemplo, la navegación con el teclado esautomática, cualquier aplicación Swing se puede utilizar sin ratón, sin tener que escribir ni una línea de códigoadicional. Las etiquetas de información, o "tool tips", se pueden crear con una sola línea de código. Además,

Swing aprovecha la circunstancia de que sus Componentes no están renderizados sobre la pantalla por elsistema operativo para soportar lo que llaman "pluggable look and feel", es decir, que la apariencia de laaplicación se adapta dinámicamente al sistema operativo y plataforma en que esté corriendo.

Cuadros de diálogo y mensajes de alerta

El uso de pequeñas ventanas auxiliares, bien sea para notificar al usuario o para solicitar informacionespuntuales, está sumamente extendido en todas las interfaces gráficas de usuario. Java ofrece doscomponentes, JOptionPane y JDialog, destinados a satisfacer este tipo de necesidades. Veamos en primer lugar un pequeño ejemplo de cuadro de diálogo que solicita una información y verifica la validez de larespuesta.

Ejemplo.- Construir un programa que solicite un valor numérico entero cuyo valor esté entre entre 1 y 10. Elprograma deberá seguir solicitando el número mientras el valor de este no satisfaga estos requisitos. Una vezinsertado un valor válido, el programa lo mostrará en pantalla con un tamaño mayor que el normal.

Una posible versión de este programa es la que puede verse en las imágenes siguientes:

El programa arranca con un marco centrado en pantalla, y sin visualizar número alguno. Elmenú archivo ofrece dos opciones, Ctrl-D para mostrar el cuadro de diálogo y Ctrl-Q parasalir de programa. Obsérvese que esta ventana es un JFrame del tipo empleadohabitualmente; no se ha utilizado todavía ningún JDialog.

En esta imagen se observa lo que ocurre cuando el usuario inserta una cadena alfanumérica en lugar de unnúmero entero y pulsa Intro. El resultado es un pitido y el progama pasa a mostrar el contenido del cuadro detexto seleccionado en su totalidad, para facilitar la introducción de un nuevo valor. El programa permaecerá enesta situación mientras el usuario no inserte un número entero que satisfaga los requisitos impuestos.

Page 10: Maquina Virtual Java

5/13/2018 Maquina Virtual Java - slidepdf.com

http://slidepdf.com/reader/full/maquina-virtual-java 10/13

 

Estas imágenes muestran lo que sucede cuando el usuario inserta un valor numéricocorrecto (el 7 en la imagen) y pulsa Intro. El programa admite el valor como válido,desaparece el cuadro de diálogo y pasa a mostrarse el valor introducido en la ventanaprincipal del programa. Para activar el cuadro de diálogo se puede seleccionar la primeraopción del menú Archivo, o se puede pulsar Ctrl-D.

El programa consta de los archivos siguientes:

  DemoInput.java  Finis.java  VerificadorCuadro.java

Administrador es de diseño (flow layout,grid layout, border layout)

"El Contenedor de los Componentes es el Frame. También es la ventana principal de la aplicación, lo quehace que para cambiar el icono o el cursor de la aplicación no sea necesario crear métodos nativos; al ser la

ventana un Frame, ya contiene el entorno básico para la funcionalidad de la ventana principal.Vamos a empezar a crear una aplicación básica, a la que iremos incorporando Componentes. Quizásvayamos un poco de prisa en las explicaciones que siguen; no preocuparse, ya que lo que no quede claroahora, lo estará más tarde. El problema es que para poder profundizar sobre algunos aspectos de Java,necesitamos conocer otros previos, así que proporcionaremos un ligero conocimiento sobre algunascaracterísticas de Java y del AWT, para que nos permitan entrar a fondo en otras; y ya conociendo estasúltimas, volveremos sobre las primeras. Un poco lioso, pero imprescindible.En el archivo AplicacionAWT.java, se encuentra el código completo de la aplicación que vamos ir construyendo a lo largo de este repaso general por las características de que dispone el AWT.Comenzaremos el desarrollo de nuestra aplicación básica con AWT a partir del código que mostramos acontinuación:import java.awt.*;

public class AplicacionAWT extends Frame {static final int HOR_TAMANO = 1600;static final int VER_TAMANO = 1600;

public AplicacionAWT() {super( "S.A.A.C:" );

pack();resize( HOR_TAMANO,VER_TAMANO );show();}

public static void main( String args[] ) {new AplicacionAWT();}}

La clase anterior es un Frame, ya que extiende esa clase y hereda todas sus características. Tiene unmétodo, el constructor, que no admite parámetros. Además, se hace una llamada explícita al constructor super, es decir, al constructor de la clase padre, parapasarle como parámetro la cadena que figurará como el título de la ventana.La llamada a show() es necesaria, ya que por defecto, los Contenedores del AWT se crean ocultos y hay quemostrarlos explícitamente. La llamada a pack() hace que los Componentes se ajusten a sus tamañoscorrectos en función del Contenedor en que se encuentren situados.La ejecución de la aplicación mostrará la siguiente ventana en pantalla:

Page 11: Maquina Virtual Java

5/13/2018 Maquina Virtual Java - slidepdf.com

http://slidepdf.com/reader/full/maquina-virtual-java 11/13

Los atributos fundamentales de la ventana anterior son:

Marco de 300x200 pixelsNo tiene barra de menúNo tiene ningún ComponenteTítulo "Aplicación Java con AWT"Color de fondo por defecto

Layout por defectoFondo de la ventana vacío ""

¿Q ué es u n ad ministrad or d e d iseño?  Los administradores nos ahorran el trabajo de dar a cada elemento su posición (x,y). En vez de ello, unadministrador define una disposicíón u orden para todo el conjunto de elementos. Imaginemos unasituación cotidiana: si tienes que organizar un grupo de personas en una habitación supón que tienes dosopciones: la primera es la más usual, decir a cada persona la posición exacta que debe ocupar. La segundaopción es más "abstracta" y más interesante, les digo a todos quese or ganicen en función de un ciertoorden, por ejemplo, en filas paralelas empezando desde la izquierda, o en diagonal, etc. En la segundaopción lo único que tienes que hacer es ordenar a todos los elementos que se organicen de una formadeterminada y suponemos que todos los elementos tienen la suficiente "inteligencia" como para adoptar eseorden. Esto es algo muy semejante a lo que hacen nuestros administradores de diseño.

Vamos a ver los administradores de diseño más comunes en AWT: FlowLayout, BorderLayout y GridLayout..

¿Cómo se define el administrador de diseño? Por medio de la llamada a la funciónsetLayout.

Esta llamada se realiza desde jbInit:

setLayout( new TIPO_DE_ADMINISTRADOR_DE_DISEÑO() );Donde TIPO_DE_ADMINISTRADOR_DE_DISEÑO es cualquiera de los tipos antes señalados: FlowLayout,BorderLayout, GridLayout y GridBagLayout.

F low Lay ou t  Por defecto un applet tiene como administrador de diseño aFlowLaout, que organiza los elementos deizquierda a derecha y de arriba hacia abajo. Por defecto la alineación es centrada. En el siguiente ejemplo

hemos puesto unFlowLayout con una alineación a la izquierda (LEFT):

private void jbInit() throws Exception {setLayout( new FlowLayout( FlowLayout.LEFT ) );....

}Las versiones del constructor deFlowLayout son:

y  FlowLayout( ) y  FlowLayout( int align ): El parámetro debe ser una constante static de la clase FlowLayout que

indica el alineamiento horizontal: FlowLayout.LEFT, FlowLayout.RIGHT o FlowLayout.CENTER. .y  FlowLayout( int align, int hgap, int vgap ): el segundo y tercer parámetro indican la separación

horizontal y vertical en píxeles.

En el siguiente ejemplo hemos usadosetLayout( new FlowLayout( FlowLayout.LEFT, 20, 10 ) ):

Page 12: Maquina Virtual Java

5/13/2018 Maquina Virtual Java - slidepdf.com

http://slidepdf.com/reader/full/maquina-virtual-java 12/13

 

Bor d er Lay ou t  Este administrador organiza los elementos por zonas: Norte, Sur, Este, Oeste y Centro. Veamos el siguienteejemplo, en el que la zona se indica en el segundo argumento de la llamada a aadd():

private void jbInit() throws Exception {this.setLayout( newBorderLayout( ) );b_juan.setText("Juan");b_pedro.setText("Pedro");b_pablo.setText("Pablo");b_santiago.setText("Santiago");b_mateo.setText("Mateo");

add(b_juan,BorderLayout.NORTH);add(b_pedro,BorderLayout.CENTER);add(b_pablo,BorderLayout.SOUTH);add(b_santiago,BorderLayout.EAST);add(b_mateo,BorderLayout.WEST);

}El aspecto final es:

Observe dos características importantes:cada elemento (en este caso botones) se expande sobr e la zonaasignada. Además el último elemento de una zona oculta a los anterior es elementos de esa zona. Paraentender esto, supongamos que incluimos un botón, denominadob_judas, y lo añadimos a la misma zona(NORTH) que b_juan:

private void jbInit() throws Exception {....add(b_juan, BorderLayout.NORTH);add(b_judas, BorderLayout.NORTH);....

}¿Cuál es el botón que se observa?¿Cuál se oculta?

Las versiones del constructor deBorderLayout son:

y  BorderLayout( ) y  BorderLayout( int hgap, int vgap ): para indicar la separación horizontal y vertical en píxeles.

Page 13: Maquina Virtual Java

5/13/2018 Maquina Virtual Java - slidepdf.com

http://slidepdf.com/reader/full/maquina-virtual-java 13/13

G ri dLay ou t  La disposición o aspecto que indica este administrador de diseño es la típica un eje cartesiano, como una hojade cálculo estructurada en filas y columnas. Proseguimos con nuestro ejemplo de los botones aplicando estenuevo administrador:

Para usar GridLayout debe especificar las filas y columnas a la hora de construirlo. Los elementos se añadenal applet con el orden izquierda-derecha y arriba-abajo:

private void jbInit() throws Exception {this.setLayout( new GridLayout( 2, 3 ) ); // Dos filas y tres columnas

b_juan.setText("Juan");b_pedro.setText("Pedro");b_pablo.setText("Pablo");b_santiago.setText("Santiago");b_mateo.setText("Mateo");

add(b_juan);add(b_pedro);add(b_pablo);add(b_santiago);add(b_mateo);

}Existe un segundo tipo de constructor que permite especificar la distancia horizontal y vertical de loselementos:

GridLayout(int rows, int cols, int hgap, int vgap)