lunes, 31 de agosto de 2009

Preparándonos para la certificación SCJP 5.0

Saludos compañeros y bienvenidos a un nuevo artículo de Acerca de Java. Hoy solo quiero dar la información acerca de los nuevos temas que vendrán.

Como preparación para nuestra prueba de certificación java, discutiremos de ahora en adelante acerca de preguntas comunes que suelen aparecer en nuestra prueba de certificación SCJP 5.0, los temas abarcan desde herencia, control de flujo, alcance de variables y métodos, tipos genéricos, nuevo ciclo for, arreglos, hilos, importaciones estáticas y otros temas que han sido discutidos, que son tomado en cuenta en la evaluación, pero ahora, en un contexto distinto ya que están enfocados ahora en preguntas de ensayo.

En estas preguntas hay que estar muy enfocado en los detalles ya que no siempre es lo que parece, si vemos detalladamente el código fuente vemos como debe ser el flujo de información y de allí sacar la respuesta correcta.

Para cumplir este objetivo se presentarán preguntas con opciones de respuesta, algunas de selección simple (una sola respuesta, utilizando RadioButton), otras de selección múltiple (utilizando CheckBox, indicando cuantas opciones debe marcar, tal como lo hace la prueba de certificación), y al final de esa pregunta una pequeña explicación de la(s) respuesta(s) correcta(s) indicando porque es esa y no las demás.

Recordando que nosotros los egresados de la 6ta promoción de Desarrolladores de Software de Maracaibo tenemos hasta el 31 de Diciembre de 2009 para presentar dicha prueba. Espero que están en contacto para discutir acerca de java, y poder ayudar para que podamos obtener buenas calificaciones en dicha prueba.

Gracias por seguir en contacto, recuerden que la sección de comentarios está disponible para cualquier pregunta, aporte o cualquier tema de Java que quieran compartir. Nos vemos en la próxima... Chao.

miércoles, 26 de agosto de 2009

Sistema de Registros de Java.

    A partir de la versión 1.4 de java2SE Sun microsystem agregó una función o concepto que permite controlar, dar formato y publicar mensajes a través de los llamados registros (log), pertenecientes al paquete java.util.logging.

    Éstos pueden emplearse para dar mensajes de información, estados de los datos o la programática o inclusive errores ocurridos durante la ejecución.

    Pueden beneficiar a varios empleadores de la aplicación como programadores, personal a cargo de realizar pruebas y por otra parte también a usuarios del sistema inclusive sino está asociado al código fuente.

    Utilizar los registros de java es muy simple, primero debe crear una referencia a Logger mediante la sentencia:

Logger registrador = Logger.getLogger(“NombreRegistro”);

Y luego crear el mensaje que desea mostrarse, por ejemplo:

registrador.log(Level.INFO, “Esta es la cadena que muestra el mensaje”);

Si agrega estas dos líneas a un método main ya obtiene resultados: Ejemplo;

import java.util.logging.Level;
import java.util.logging.Logger;

public class Registrador {

   public static void main(String[] args) {
      Logger registrador = Logger.getLogger("Registrador");
      registrador.log(Level.INFO, "Mensaje de registro");
   }
}

Este programa emitirá algo parecido a esto:

26/08/2009 10:56:35 PM loggers.Registrador main
INFO: Mensaje de registro

Se puede notar acá que se ha creado un registro con nivel informativo (Level.INFO), esta es una constante de la clase Level que contiene además las siguientes:

SEVERE
Nivel de mayor prioridad, para indicar errores.
WARNING
Segundo nivel, indicados para advertencias
INFO
Indicados para mensajes con fines informativos
CONFIG
Para mensajes de configuración
FINE
Para información de la traza de la aplicación
FINER
Para información de rastreo de la traza de la aplicación
FINEST
Nivel más bajo y de menor prioridad

Además de estos 7 niveles, la clase Level contiene dos más para usos especiales como son:
OFF: para desactivar el sistema de registro (No muestra mensajes de ningún nivel)
ALL: Para activar o mostrar los mensajes de todos los niveles.

Existe una manera más directa de publicar un registro , ya que Logger posee un método por cada nivel de registro de tal forma que podremos hacer:

Logger registrador = Logger.getLogger("Nombre");
registrador.info("Mensaje informativo");
registrador.severe("Error grave");

Ahora veremos un ejemplo donde indicamos en el codigo fuente que sólo se muestren los registros a partir de cierto nivel, ejemplo, si escribo:

registrador.setLevel(Level.INFO);

Se mostrarán los registros a partir de info hasta los de mayor prioridad, es decir, info, warning y severe, o si colocamos Level.ALL, todos los registros o Level.OFF (desactiva loos registros). En conclusión, podemos utilizar setLevel para indicar desde que nivel mostraré los registros.

Ahora veamos un ejemplo completo de una clase que utiliza una referencia a los Registros:

import java.util.logging.Level;
import java.util.logging.Logger;

public class Registro {

   Logger logger;
   int nivel;

public Registro(String nombre){
   logger=Logger.getLogger(nombre);
}

public void setNivel(Level nivel){
   logger.setLevel(nivel);
}

public void dividir(){
   int num1 = 3, num2 = 0, division = 0;
   try{
      logger.log(Level.INFO, "Se va a dividir num1 y num2");
      division = num1 / num2;
   }catch (ArithmeticException e) {
      logger.log(Level.SEVERE, "Error. Division por cero");
   }catch (Exception e) {
      logger.severe("Excepcion ha sido lanzada");
}
}

public static void main(String[] args) {
   Registro registro = new Registro("Registrador");
   registro.setNivel(Level.ALL);
   registro.dividir();
}
}

Aquí se utiliza el método setNivel para cambiar el nivel para asignar a que se vean todos los registros a traves de setLevel(Level.ALL), si queremos desabilitar los registros colocariamos setLevel(Level.OFF). También se usaron los dos tipos de publicacion de registros como son logger.log(Level.SEVERE, "mensaje") y logger.severe("mensaje"). Si se ejecuta el codigo se verá como salida algo así:

26-ago-09 1:21:28 paquete.Registro mostrarRegistros
INFO: Se va a dividir num1 y num2
26-ago-09 1:21:28 paquete.Registro mostrarRegistros
SEVERE: Error. Division por cero

Bueno, eso es todo para la primera parte de registros en java. Nos vemos en una próxima edición.