jueves, 4 de junio de 2015

Java swing, ejemplo sobre paneles.

Aquí tenemos un ejemplo de los distintos tipos de paneles que podemos añadir a un contenedor principal o JFrame.   Este ejemplo ha sido realizado con Netbeans como IDE y Ubuntu como sistema operativo.


lunes, 1 de junio de 2015

Java Swing, comparando el código de una ventana modal y una no modal.

Para la ventana modal.

import javax.swing.JDialog;
import javax.swing.JFrame;
public class VentanaModal {
    public static void main(String[] args){
        JFrame ventanaModal = new JFrame("¡ Intenta Cerrar esta ventana !.");
        ventanaModal.setAlwaysOnTop(true);
        ventanaModal.setSize(300,300);
        ventanaModal.setVisible(true);
        JDialog dialogoModal= new JDialog(ventanaModal,"DIALOGO MODAL", true);
        dialogoModal.setSize(300,300);
        dialogoModal.setLocationRelativeTo(null);
        dialogoModal.setVisible(true);
             
    }  
}

Para la ventana no modal.

import javax.swing.JDialog;
import javax.swing.JFrame;


public class VentanaNoModal {
    public static void main(String[] args){
        JFrame ventanaNoModal = new JFrame("¡ Intenta Cerrar esta ventana !");
        ventanaNoModal.setAlwaysOnTop(true);
        ventanaNoModal.setSize(400,400);
        ventanaNoModal.setVisible(true);
        JDialog dialogoNoModal = new JDialog(ventanaNoModal, "DIALOGO NO MODAL", false);
        dialogoNoModal.setSize(300,300);
        dialogoNoModal.setLocationRelativeTo(null);
        dialogoNoModal.setVisible(true);
    }  

}






Java Swing, evento para un botón que cierra la ventana actual.

private void BotonCerrarVentanActionPerformed(java.awt.event.ActionEvent evt) {                                                
        dispose();
        this.setVisible(false);
    }                                              


Java Swing, evento para un botón que abre una ventana.



private void BotonAbrirVentanaActionPerformed(java.awt.event.ActionEvent evt) {                                                
        new VentanaQueSeAbre(this, true).setVisible(true);
    }        


sábado, 23 de mayo de 2015

La importancia de las pruebas de software

Nuestro entorno social está íntimamente relacionado con la tecnología hasta el más mínimo detalle. Más allá de los nuevos dispositivos de hardware que constantemente invaden el mercado, hay una especie de alma que controlan y determina el devenir de esos dispositivos y de nuestra propia existencia, nuestro bienestar y seguridad : el software.

No vamos a entrar en detalles de que es el software, ni de cómo se realizan las pruebas de software; esos, son cuestiones tan extensas que necesitaríamos dos o tres temas de ingeniería informática para explicarlos.  Hablemos llanamente de la importancia de las pruebas de software.

Los objetivos de las pruebas de software.




En la anterior presentación podemos ver cuáles son los principales objetivos de las pruebas de software, pero más allá de los objetivos teóricos, veamos algunos ejemplos de la vida real, en algunos casos ejemplos de consecuencias trágicas, como el ocurrido hace poco en nuestro país.






Si quieres, con una rápida búsqueda en Internet puedes encontrar  otros fallos de software que causaron graves problemas.  Aquí te dejo un enlace.

Evidentemente, todos los ejemplos de fallos en el software , no son achacables a que no se realicen las necesarias pruebas en el desarrollo del mismo y, es que, ni siquiera llevando a cabo las más estrictas pruebas y planificaciones de software, se puede garantizar que esté libre de fallos.  Tratándose de software, el conjunto completo de casos de prueba es teóricamente infinito y por lo tanto, el número de pruebas a realizar implicará la búsqueda de un equilibrio entre recursos y tiempo. 

Tanto el desarrollador de software, como el cliente que encarga el desarrollo, se han de exigir que se realice una estricta planificación de las estrategias de prueba.  Según diversos estudios el coste económico relativo a un error se multiplica por un factor de 1 si se comete en la fase de análisis de requisitos, por 3-6 si es en la fase de diseño, por 10 si es en la codificación y por 40-50 si es en la fase de pruebas.

Finalmente  debemos de tener claro que "el cliente siempre lleva la razón" y, por esta razón, después de un cierto tiempo en el que el cliente haya estando usando nuestra aplicación y descubra defectos, o que la aplicación no realice lo que se esperaba de ella o en la forma en que se esperaba, debemos revisar la aplicación y corregir esas taras.








miércoles, 26 de noviembre de 2014

Instalar QtJambi en Ubuntu 12.04 LTS 64 bits.

La verdad que instalar QTJambi, (el binding de QT para Java),  es un auténtico quebradero de cabeza. Más aún si la instalación es para un sistema operativo de 64 bits.

Después de muchos intentos lo logré, pero instalando previamente una serie de librerías, que en diferentes foros se  mencionaban como necesarias.

El que a mí me funcionase, no quiere decir que le funcione a todo el mundo, de hecho si algo he aprendido usando Linux es que cada instalación es un mundo y cada uno conoce mejor que nadie su Linux.  Yo uso Ubuntu 12.04 LTS de 64 bits, con escritorio Gnome, (esto último debería ser indiferente).  

Así que cada cual  realice la instalación asumiendo sus propios riesgos, por lo que no me responsabilizo de que en otras instalaciones, mi forma de instalar QtJambi no sea la adecuada o incluso pudiese afectar al funcionamiento de su sistema operativo. 

Desde la terminal de Ubuntu:

sudo apt-get install openjdk-6-jdk ant-optional ant libxext-dev libgstreamer-plugins-base0.10-dev libgstreamer0.10-dev build-essential chrpath libgtk2.0-dev libexpat1-dev libfontconfig1-dev libfreetype6-dev libpng12-dev libcups2-dev libgtk2.0-dev libssl-dev libasound2-dev libdbus-qt-1-dev phonon-backend-gstreamer libqt4-dev libphonon-dev

Este fue el primer intento, pero la terminal me mandó el comando indicando que no encontraba la librería " libdus-qt-1-dev ", por lo cuál decidí quitarla, así que el comando me quedó de la siguiente manera:

sudo apt-get install openjdk-6-jdk ant-optional ant libxext-dev libgstreamer-plugins-base0.10-dev libgstreamer0.10-dev build-essential chrpath libgtk2.0-dev libexpat1-dev libfontconfig1-dev libfreetype6-dev libpng12-dev libcups2-dev libgtk2.0-dev libssl-dev libasound2-dev phonon-backend-gstreamer libqt4-dev libphonon-dev

A continuación nos descargamos la última versión para linux 64 bits, la 4.8.5-beta1:


Movemos el archivo que hemos descargado, desde descargas,  a nuestra carpeta personal y a continuación, descomprimimos el archivo. Lo podemos hacer desde la propia terminal:

tar -xvf qtjambi-4.8.5-linux64-beta1.tar.xz

Se crea un archivo llamado  qtjambi-4.8.5-linux64-beta1 .  Si queremos lo podemos cambiar de nombre, para que nos sea más fácil manejarlo, bien en modo gráfico ( pinchamos sobre el archivo con el botón secundario y elegimos renombrar), o bien desde la terminal de Ubuntu:

mv qtjambi-4.8.5-linux64-beta1.tar.xz qtjambi

Por último, para arrancar el Qtjambi, lo hacemos desde la terminal. Primero nos vamos a la carpeta que se ha creado, que si lo hemos renombrado será qtjambi : 

cd qtjambi 

Y aquí ejecutamos el designer.sh : 

./designer.sh

(tal como lo he puesto, con el punto y la barra).




Si no hemos tenido ningún problema, debería ejecutarse el designer de QtJambi.

Igualmente, si queremos acceder a los ejemplos de QtJambi, desde la terminal podemos ejecutar lo siguiente:


Un saludo.

domingo, 9 de noviembre de 2014

Diferencia entre Aplicación, Ejecutable y Proceso.

Cuando uno pretende profundizar en el mundo de la informática, se encuentra con términos técnicos que hasta ahora había venido utilizando de manera incorrecta o similar. Es muy importante para un técnico, o para alguien que pretenda serlo, usar de forma correcta estos términos e, incluso explicarlos cuando sea necesario, generando con ello una labor didáctica y de alfabetización digital que revierta en nuestro entorno.

Veamos hoy la diferencia entre tres términos que muy a menudo son confundidos: aplicación, ejecutable, y proceso.

Aplicación.

Una aplicación es un tipo de programa informático que ha sido creado como herramienta para que el usuario resuelva con él un problema específico.
Esto es lo que lo diferencia a la aplicación de otros programas informáticos, como pueden ser los sistemas operativos, que hacen funcionar al ordenador, las utilidades , que realizan tareas de mantenimiento o de uso general y los lenguajes de programación, con los que creamos los programas informáticos.
Por lo tanto, serían aplicaciones por ejemplo, una hoja de cálculo, un programa para enviar email, un navegador para internet, etc.


Ejecutable o binario.

Cuando el programador crea un programa escribe su código fuente. Luego con ayuda de un compilador obtiene su código binario o interpretado.  A este código binario o interpretado y que se guarda en un fichero, es a lo que se llama ejecutable o binario. Por tanto:


Un Ejecutable es un fichero que contiene el código binario o interpretado que será ejecutado en el ordenador.

Los ejecutables pueden ser ejecutables portables, si se pueden ejecutar en varias plataformas; serán ejecutables no portables, si solo  se pueden ejecutar en una plataforma concreta. Por ejemplo, un ejecutable Java es portable, ya que podemos ejecutarlo en múltiples plataformas.

Proceso.


Podemos decir que un proceso es un programa en ejecución.

De manera más estricta, definimos un proceso como "una unidad de actividad que se caracteriza por la ejecución de una secuencia de instrucciones, un estado actual, y un conjunto de recursos del sistema asociados",(Stallings 5º edición pag. 109).

Un proceso existirá mientras se esté ejecutando una aplicación y la ejecución de una aplicación puede implicar arranquen varios procesos en nuestro equipo.


Monitor de Sistema de Ubuntu, donde podemos ver varios procesos del navegador chrome.


Si queréis profundizar más en estos términos, lo podéis hacer desde estos enlaces a la wikipedia:




Saludos digitales.