Publicado el 5 de Julio del 2017
637 visualizaciones desde el 5 de Julio del 2017
73,2 KB
17 paginas
Creado hace 17a (29/10/2007)
Laboratorio de Redes de Comunicaciones
Recursos de Sistema en Java
Properties
System
Runtime
Swing
UNIVERSIDADE DA CORUÑA
Properties (I)
UNIVERSIDADE DA CORUÑA
• Un “property” define atributos de forma persistente.
– Son adecuados cuando los valores de los atributos deben de
mantenerse en varias invocaciones de un programa.
• Un atributo tiene dos partes:
– Un nombre y un valor.
– La clase java.util.Properties gestiona un conjunto de pares
clave/valor.
• Un par clave/valor es como una entrada de un diccionario.
– La clave es la palabra
– El valor es la definición.
• Cada clave contiene el nombre de un atributo del sistema; como valor
posee el valor actual del atributo.
Octubre 2007
Laboratorio de Redes de Comunicaciones
2
Properties (II)
UNIVERSIDADE DA CORUÑA
• Cualquier programa Java puede
utilizar un objeto Properties
para gestionar sus atributos.
• Proporciona métodos para:
– Cargar pares clave/valor en un
objeto Properties desde un
“stream”.
– Recuperar un valor a partir de
su clave
– Listar las claves y sus valores
– Obtener una enumeración de
sus claves
– Guardar las propiedades en un
“stream”.
• Y hereda todos los métodos de
java.util.Hashtable.
• Métodos de properties:
– String getProperty(String key)
– String getProperty(String key,
String defaultValue)
– void list(PrintStream out)
– void list(PrintWriter out)
– void load(InputStream
inStream)
– Enumeration propertyNames()
– void save(OutputStream out,
String comments)
– Object setProperty(String key,
String value)
– void store(OutputStream out,
String comments)
Octubre 2007
Laboratorio de Redes de Comunicaciones
3
System
UNIVERSIDADE DA CORUÑA
• La plataforma Java permite a los programas acceder a los
recursos del sistema a través de una API relativamente
independiente del sistema implementada por la clase
java.lang.System y por la clase java.lang.Runtime.
• La clase System permite a programas Java utilizar recursos
del sistema aislándolos de detalles específicos de entorno.
– por ejemplo, acceder a recursos del sistema
• Flujos de I/O estándar y de error: System.in, System.out, System.err.
Octubre 2007
Laboratorio de Redes de Comunicaciones
4
Runtime (I)
UNIVERSIDADE DA CORUÑA
• Toda aplicación java tiene una única instancia de la clase
java.lang.Runtime que permite a la aplicación interactuar
con el entorno en el que la aplicación se ejecuta.
• No se puede crear una instancia de Runtime, sin embargo,
se puede obtener una referencia al objeto Runtime que se
está ejecutando actualmente llamando al método estático
Runtime.getRuntime().
• El objeto Runtime permite:
– Comunicarse con los componentes de entorno de ejecución
• Obtener información (Por ejemplo, la cantidad de memoria total
utilizada por la JVM)
• Invocar funciones
– Actuar de interfaz con las capacidades dependientes del sistema.
Octubre 2007
Laboratorio de Redes de Comunicaciones
5
Runtime (II)
UNIVERSIDADE DA CORUÑA
• Métodos (java.lang.Process):
–
–
–
–
–
abstract void destroy()
•
Finaliza/destruye los subprocesos.
abstract int exitValue()
• Devuelve el valor de retorno para el
subproceso.
abstract InputStream getErrorStream()
• Devuelve el flujo de error del
subproceso.
abstract InputStream getInputStream()
• Obtiene el flujo de entrada del
subproceso.
abstract OutputStream
getOutputStream()
• Obtiene el flujo de salida del
subproceso.
–
abstract int waitFor()
• Hace que el thread actual espere, si es
necesario, hasta que el proceso
representado por este objeto haya
terminado.
•
La clase Runtime permite crear un proceso
nativo del sistema operativo, y se representa
con el objeto java.lang.Process
– Los métodos de creación de procesos pueden
no funcionar bien para procesos especiales en
determinadas plataformas nativas, como
procesos de ventanas, demonios, procesos
Win16/DOS en Windows o scripts basados en
shells.
– Los subprocesos creados no tienen su propia
terminal o consola. Todas sus I/O estándar
(stdin, stdout, stderr) se redirigen al proceso
padre a través de tres flujos: getOutputStream,
getInputStream y getErrorStream.
– El proceso padre utiliza estos flujos para
comunicarse con el subproceso.
– Con algunas plataformas nativas que poseen
limitaciones en buffers de entrada/salida,
pueden producirse problemas al leer/escribir,
incluso pudiendo bloquear el subproceso.
– El subproceso no se destruye cuando no
quedan más referencias a él; continúa
ejecutándose de forma asíncrona.
Octubre 2007
Laboratorio de Redes de Comunicaciones
6
Runtime (III)
UNIVERSIDADE DA CORUÑA
•
java.lang.Runtime
– Process exec(String command)
– Process exec(String command, String[] envp)
– Process exec(String command, String[] envp, File dir)
• Ejecuta el comando especificado en un proceso diferente, pudiendo
especificar
– Argumentos
– Un entorno determinado [(cada string tiene la forma nombre=valor). Si
envp=null el proceso hereda el proceso del padre]
– Un directorio de ejecución.
try {
String[] cmdarray = new String[1];
cmdarray[0] = “script.bat”;
Process p = Runtime.getRuntime().exec(cmdarray);
int exitValue = p.waitFor();
System.out.println(“ExitValue: “ + exitValue);
} catch (Exception e) {
e.printStackTrace();
}
Octubre 2007
Laboratorio de Redes de Comunicaciones
7
Runtime (IV)
UNIVERSIDADE DA CORUÑA
•
java.lang.ProcessBuilder (jdk5.0)
– Alternativa para la creación de procesos del sistema operativo
nativo.
• Process p = new ProcessBuilder("myCommand", "myArg").start();
Octubre 2007
Laboratorio de Redes de Comunicaciones
8
Interfaces gráficas en JAVA
UNIVERSIDADE DA CORUÑA
• Hay dos formas fundamentales de crear interfaces gráficas
con JAVA:
– Abstract Window Toolkit (AWT).
• La primera en aparecer.
• Aspecto dependiente del Sistema Operativo.
• Al requerir recursos de la interfaz de ventanas del Sistema Operativo,
se suelen denominar componentes pesados.
– Swing.
• Complementa y extiende AWT.
• Aspecto independiente del Sistema Operativo.
• Componentes más ligeros.
• Es la utilizada mayoritariamente hoy en día.
Octubre 2007
Laboratorio de Redes de Comunicaciones
9
Componentes en Java Swing (I)
• Las Interfaces gráficas en swing se crean combinando
diversos componentes gráficos predefinidos (y que pueden
ser extendidos).
• Cada componente define un aspecto gráfico determinado y
UNIVERSIDADE DA CORUÑA
tiene una serie de propiedades.
– Ejemplo:
• El componente JFrame sirve para crear una ventana de un tipo
determinado.
• Al crearlo, se puede indicar un título para el mismo.
• Un componente es un contenedor para otros componentes.
– Ejemplo:
• Al componente JFrame pueden añadirse, entre otros, componentes
JLabel (para añadir etiquetas de texto), JButton (para añadir un botón
que, al ser pulsado, desencadena una acción determinada), JMenuBar
(para añadirle una barra de menús...).
Octubre 2007
Laboratorio de Redes de Comunicaciones
10
Componentes en Java Swing (II)
UNIVERSIDADE DA CORUÑA
• Los componentes Swing descienden de la clase
java.awt.Container.
• La mayoría (excepto los contenedores de primer nivel)
también descienden de java.swing.Jcomponent.
Octubre 2007
Laboratorio de Redes de Comunicaciones
11
Hello World ! (II)
UNIVERSIDADE DA CORUÑA
import javax.swing.JFrame;
import javax.swing.JLabel;
public class HelloWorldFrame extends JFrame{
new HelloWorldFrame();
public static void main(String args[]){
}
HelloWorldFrame(){
JLabel jlbHelloWorld = new JLabel("Hello World");
add(jlbHelloWorld);
this.setSize(100, 100);
pack();
setVisible(true);
//
}
}
Octubre 2007
Laboratorio de Redes de Comunicaciones
12
Hello World ! (II)
UNIVERSIDADE DA CORUÑA
• Creamos una clase que extiende de JFrame para crear
nuestro contenedor de primer nivel.
• Creamos un componente JLabel con el texto que queremos
mostrar.
• Se lo añadimos a nuestro JFrame.
• Fijamos el tamaño deseado para el JFrame usando setSize.
• Una alternativa para fijar el tamaño de la ventana es hacer
que se ajuste al de sus subcomponentes llamando al
método pack().
– Nótese que en el ejemplo esta llamada aparece comentada. Puede
comentarse setSize y descomentar pack() para ver la diferencia.
• Hacemos visible el componente.
Octubre 2007
Laboratorio de Redes de Comunicaciones
13
Algunos Componentes Típicos
UNIVERSIDADE DA CORUÑA
• JPanel. Contenedor común de contenido.
• JFrame. Tipo común de ventana. Puede mostrar un Panel.
• JTabbedPane. Múltiples pestañas dentro de una ventana.
• JLabel. Etiquetas de texto.
• JTextField. Permite editar una línea de texto.
• JTextArea. Permite editar múltiples líneas de texto.
• JCheckBox. Casilla de verificación.
• JRadioButton. Escoger una de entre varias opciones.
• JList. Listas de selección
• JButton. Botones.
• JMenuBar. Barra de menú.
• …
Octubre 2007
Laboratorio de Redes de Comunicaciones
14
Layouts
UNIVERSIDADE DA CORUÑA
• ¿Cómo organizar en una ventana los diferentes elementos
que se añaden?
• Algunos elementos tienen lugares predefinidos
(JMenuBar,…).
– JFrame tiene un método setMenuBar.
• En general, podemos aplicar distintos tipos de layout a una
ventana:
– FlowLayout. Los componentes se van situando de izquierda a
derecha y de arriba abajo.
– BorderLayout. Divide la ventana en 5 regiones: NORTH, SOUTH,
EAST, WEST y CENTER.
– GridLayout. Divide la ventana en una serie de celdas de igual
tamaño. Cada componente puede ir en una celda.
– GridBagLayout. Similar al anterior pero cada componente puede
ocupar varias celdas.
Octubre 2007
Laboratorio de Redes de Comunicaciones
15
Acciones
UNIVERSIDADE DA CORUÑA
• ¿Cómo asignar acciones a eventos producidos sobre la
interfaz (e.g. pulsar un botón)?
• Pueden añadirse escuchadores de eventos a los
componentes:
JButton jbnButton = new JButton("Send Message");
jbnButton.addActionListener(listener);
• El objeto listener debe implementar
Comentarios de: Recursos de Sistema en Java - Laboratorio de Redes de Comunicaciones (0)
No hay comentarios