»
S
I
D
E
B
A
R
«
Recordando el pasado, agradeciendo el presente I
Agosto 4th, 2009 by Escuela de Ingenieria de Sistemas


Simbiotica


Creative Commons License



www.simbiotica.com.co


Contáctenos…

Esta sitio y todo su contenido  está protegida por
licencia de Creative Commons

La era del Blog de Notas.

Tiempos muy difíciles los del ayer, codificar, probar, codificar, probar…

Saludos…

Esta es la primera de una serie de artículos que escribiré con el fin de exponer un poco de historia y presente con respecto al desarrollo de software utilizando Java como lenguaje de programación.

La Era del Bloc de Notas(Parte I).

Un proyecto con un patrón de arquitectura, un patrón de diseño y un poco de procesos concurrentes (Parte II).

Un clásico Editor de segunda generación Libre para código Java (Parte III)

Para desarrollar software utilizando cualquiera de los lenguajes de programación que existe y los que han dejado de existiré,

Necesitas:

  • Un PC que cumpla los requerimientos mínimos del lenguaje.
  • Una buena y cómoda silla.
  • En lo posible estar conectado a internet.
  • El SDK (herramientas  de desarrollo estándar) del lenguaje de programación utilizado, que para el caso del lenguaje Java se llama JSDK, la J (jota) no necesita explicación, esta letra  que esta se ha convertido en el eslogan característico de este lenguaje de programación.
  • Un buen edito de texto plano (ASCII estándar de codificación Americano para el intercambio de Información).
  • Una pasión exageradamente grande por programar software.

En esta ocasión voy a intentar explicarles el proceso básico que realizábamos hace unos 20 años aproximadamente, en los primeros años del lenguaje Java, para poder construir un programa sencillo.

Instalación y configuración

  1. Instalar y configurar el JSDK ya sea en plataformas (Sistema Operativo o SO) Windows o GNU/Linux.
  2. Configurar las variables de entorno del SO para poder ejecutar y compilar programas java, java utiliza al menos 3 variables de entorno, una propia del SO llamada PATH, la cual es utilizada para almacenar las rutas de disco completa (absoluta) donde se encuentran almacenados los programas a los que se desea tener acceso desde la línea de comando o DOS, para el caso de java estos programas se encuentran en la carpeta BIN, ubicada en la carpeta donde se instalo el JSDK, las otras dos variables son propias de Java, una llamada JAVA_HOME y la otra CLASSPATH, en JAVA_HOME se debe almacenar la ruta de disco absoluta de la carpeta donde se instalo el JSDK, mientras que la variable CLASSPATH es utilizada para almacenar la ruta de disco absoluta donde se encuentran los archivos de código compilado (código obtenido al depurar el código fuente), que para el caso de java estos archivos pueden terminar en extensión .class o .jar, este último es solo un repositorio o contenedor de varios archivos .class y otros archivos necesarios por el programa en construcción.

La configuraciones de estas variables se puede hacer por línea de comandos ya se digitando directamente las instrucciones necesarias por consola (pantalla DOS) o bien, almacenándolas en un fichero con extensión .bat (archivo con instrucciones ejecutables por consola)

Las instrucciones son:

Para Windows 95, 98 o NT, editar el archivo autoexe.bat y recibir el PC después de escribir y guardar las siguientes lianas:

1
2
3
SET PATH = %PATH%; C:\Program Files\Java\jdk1.6.0_14\bin;
SET JAVA_HOME = C:\Program Files\Java\jdk1.6.0_14;
SET CLASSPATH = C:\Program Files\Java\jdk1.6.0_14\lib; C:\Users\John Arrieta Arrieta\agendajava\mislib;

Para GNU/Linux, editar el archivo  .bashrc que se encuentra en la carpeta del usuario actual.

1
2
3
4
5
6
JAVA_HOME="/usr/local/jdk"
CLASSPATH="/usr/local/lib:/home/john/proyectojava/mislib"
PATH="$PATH:/usr/local/jdk/bin"
export JAVA_HOME
export CLASSPATH
export PATH

Llegan las mejoras

En Windows desde Windows 2000 en adelante no hay necesidad de realizar el proceso de la variable JAVA_HOME, ya que el mismo JSDK lo realiza al momento de su instalación, por el contrario si se debe realizar el proceso de configuración de las variables PATH y CLASSPATH según nuestras conveniencias, esto se puede realizar de la forma anterior o bien de forma grafica, como explico a continuación:

Dando clic derecho sobre Mi PC en 2000, XP o 2003 y en clic derecho sobre Equipo en Vista.

image002

Seleccionamos la pestaña Opciones Avanzadas y luego pulsamos el botón Variables de Entrono.

image004

En la lista de Variables del Sistema debemos buscar la variable PATH, luego pulsamos el botón Editar.

image006

En la ventana que aparece debemos colocar ; y la ruta de la carpeta bin del JSDK y luego otro ; aceptamos y hora procedemos a crear la variable CLASSPATH, haciendo clic en el botón Nuevo de la lista de Variables de Entorno del Usuario

image008

En la ventana que aparece debemos escribir el nombre de la variable de entorno y en su valor la ruta donde se encuentran la librerías o clases o directorio de trabajo de nuestro proyecto java.

image010

Aceptamos todas las ventanas anteriores y listas.

Probando la intalación y configuración

Para realizar una prueba para verificar si el proceso anterior se efectuó satisfactoriamente, debemos abrir una ventana de líneas de comandos, en inicio >>> ejecutar >>> cmd, o en inicio >>> ejecutar >>> command, una vez abierta la consola de líneas de comandos, procedemos a digitar el siguiente comando

1
2
3
4
Microsoft Windows [Versión 6.0.6001]
Copyright (c) 2006 Microsoft Corporation.  Reservados todos los derechos.

C:\Users\John Arrieta Arrieta&gt;<strong>javac</strong>

Y la salida debe ser esta:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Microsoft Windows [Versión 6.0.6001]
Copyright (c) 2006 Microsoft Corporation.  Reservados todos los derechos.

C:\Users\John Arrieta Arrieta&gt;javac

Usage: javac &lt;options&gt; &lt;source files&gt;
where possible options include:
-g                         Generate all debugging info
-g:none                    Generate no debugging info
-g:{lines,vars,source}     Generate only some debugging info
-nowarn                    Generate no warnings
-verbose                   Output messages about what the compiler is doing
-deprecation               Output source locations where deprecated APIs are used
-classpath &lt;path&gt;          Specify where to find user class files and annotation processors
-cp &lt;path&gt;                 Specify where to find user class files and annotation processors
-sourcepath &lt;path&gt;         Specify where to find input source files
-bootclasspath &lt;path&gt;      Override location of bootstrap class files
-extdirs &lt;dirs&gt;            Override location of installed extensions
-endorseddirs &lt;dirs&gt;       Override location of endorsed standards path
-proc:{none,only}          Control whether annotation processing and/or compilation is done.
-processor &lt;class1&gt;[,&lt;class2&gt;,&lt;class3&gt;...]Names of the annotation processors to run; bypasses default discovery process
-processorpath &lt;path&gt;      Specify where to find annotation processors
-d &lt;directory&gt;             Specify where to place generated class files
-s &lt;directory&gt;             Specify where to place generated source files
-implicit:{none,class}     Specify whether or not to generate class files for implicitly referenced files
-encoding &lt;encoding&gt;       Specify character encoding used by source files
-source &lt;release&gt;          Provide source compatibility with specified release
-target &lt;release&gt;          Generate class files for specific VM version
-version                   Version information
-help                      Print a synopsis of standard options
-Akey[=value]              Options to pass to annotation processors
-X                         Print a synopsis of nonstandard options
-J&lt;flag&gt;                   Pass &lt;flag&gt; directly to the runtime system

C:\Users\John Arrieta Arrieta&gt;

Que corresponde a la ayuda del programa javac.exe que es el compilador interprete del lenguaje Java.

Por el contrario si aparece este mensaje:

1
2
3
4
5
6
7
Microsoft Windows [Versión 6.0.6001]
Copyright (c) 2006 Microsoft Corporation.  Reservados todos los derechos.

C:\Users\John Arrieta Arrieta&gt;javac
"javac" no se reconoce como un comando interno o externo, programa o archivo por lotes ejecutable.

C:\Users\John Arrieta Arrieta&gt;

Fue que el SO busco pero no encontro la ruta del programa javac.exe en su variable de entorno PATH.

Utilizando el Bloc de Notas y comenzar a Programar

3.    Hecho esto, ya podemos realizar programas con Java, lo siguiente es crear una carpeta de trabajo donde se guardaran y organizaran los ficheros de código fuente (.java), los ficheros de utilidad (imágenes, páginas web, sonidos, etc.) y los de ficheros binarios generados por el compilador javac.exe (.class)

4.    Abrir un editor de texto limpio (plano sin formato) y utilizaba el BLOC DE NOTAS de Windows, hace 7 años cuando conocí a Java por puro accidente, escribir el código java deseado (clases, interfaces, anotaciones o enumeraciones) y guardar los cambios, siguiendo las reglas de codificado y almacenamiento de clases que define este lenguaje.

Por ejemplo:

Era casi que una regla muy recomendada que por cada archivo exista una y solo una clase, para evitar complicaciones, al momento de compilar y depurar errores, es mucho más fácil así hasta para escribir el cogido.

Este proceso se repetía por cada clase que se sedeara tener en el proyecto.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/**
* Principal.java
*
* Clase que activa e inicia la ejecucion del programa
*
* @autor John Carlos Arrieta Arrieta
*
*/


import javax.swing.*;
import java.awt.*;

public class Principal
{
    // metodo o funcion de inicio del programa

    public static void main(String argDeLineaDeComandos[])
    {
        JFrame miVentana = new JFrame();
        miVentana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        miVentana.setTitle(":: John Carlos Arrieta Arrieta ::");
        JPanel panelCentral = new JPanel();
        panelCentral.setPreferredSize(new Dimension(450,100));
        miVentana.setContentPane(panelCentral);
        JLabel mensaje = new JLabel("Ejemplo de Programacion con Java");
        mensaje.setFont(new Font("Arial",1,18));
        mensaje.setForeground(Color.BLUE);
        panelCentral.add(mensaje);
        mensaje = new JLabel("Utilizando solo El Bloc de Notas");
        mensaje.setFont(new Font("Arial",1,18));
        mensaje.setForeground(Color.GREEN);
        panelCentral.add(mensaje);
        mensaje = new JLabel("Recordando el Pasado y adorando el Presente");
        mensaje.setFont(new Font("Arial",1,18));
        mensaje.setForeground(Color.RED);
        panelCentral.add(mensaje);
        miVentana.setLocationRelativeTo(null);
        miVentana.pack();
        miVentana.setVisible(true);
       
    }
}


image011

Compilando el Programa

5.    Luego se creaba un archivo de texto y dentro de el se escribían estas líneas

1
2
javac Principal.java
pause;

Se guardaban los cambios y se renombraba el fichero de extinción .txt a extinción .bat, cuyo nombre comúnmente era compilar.bat,

compilar

Estas líneas de código lo que hacen es llamar el compilador de  Java el javac.exe  pasándole como parámetros el nombre del fichero que contiene el código fuente Java, una vez teníamos el archivo procedíamos a ejecutarlo dándole doble clic o llamándolo por la línea de comandos, este proceso mostraba el resultado de la compilación que se realizo.

image015

Comprendiendo el reporte de errores

Al compilar el código anterior el programa javac no muestra errores, pero si por el contrario llegásemos a tener un error de sintaxis o referencia de variable, el programa javac nos muestra un reporte bastante claro de cual pudo ser el motivo del error, para ver un ejemplo voy a cambiar la palabra String que se refiere a una clase de java incluida dentro del JSDK, por la palabra Cadena en minúscula que no es reservada de Java, al compilar se puede ver el reporte de error.

image017

Como se puede apreciar, marque en rojo las partes mas importantes del reporte de error, la primera es el nombre del archivo y la línea donde javac encontró un error, la segunda es el mensaje que explica la posible causa, el tercero es la palabra que relacionada con el problema y la cuarta parte muestra con una flechita la parte del código donde esta dicha palabra, en la línea del problema, que en este caso es la línea 14.

Al corregir el error volver a ejecutar el archivo compilar.bat, el compilador javac volverá a depurar el código fuente línea por línea para verificar que todo este correcto, al terminar con la depuración si todo esta correcto, el compilador genera una nuevo archivo con igual nombre que el archivo que fue compilado pero con extinción .class, para nuestro ejemplo, se genera el fichero Principal.class, este fichero contiene el código binario (código ilegible por la gran mayoría de humanos, solo es entendido por el computador), al menos que se indique explícitamente en el código fuente Java o en la línea de comandos como parámetro del programa javac.exe, este fichero de código binario es colocado justo en la misma carpeta donde se encuentra el código fuente Java de donde fue generado.

Ejecutando el Programa

6.    Por último se creaba un fichero igual que el del paso 5, pero en su interior se colocaban estas líneas

image019

Se guardaban los cambios y se renombraba el fichero de extinción .txt a extinción .bat, cuyo nombre comúnmente era ejecutar.bat, estas líneas de código lo que hacen es llamar el interprete  de  Java el java.exe  pasándole como parámetros el nombre del fichero que contiene el código binario compilado Java, una vez teníamos el archivo procedíamos a ejecutarlo dándole doble clic o llamándolo por la línea de comandos, como resulto podíamos ver nuestro programa ejecutandose.

image021

Empaquetando el Programa

7.    En este punto teníamos nuestro programa listo y en funcionamiento, solo nos faltaba empaquetarlo para poderlo distribuir como una cualquier otra aplicación, los programas hechos para Windows es común encontrarlos empaquetados en diferentes tipo de archivos pero los más comunes tienen extensiones .dll, .msi y .exe, en el caso de GNU/Linux,  es común encontrar los programas empaquetados en ficheros con extensión .bin,  .tar, .gz, .rpm o .deb cual sea la plataforma estos ficheros también conocidos como repositorios contienen en su interior todos los ficheros necesario para que el programa funcione y pueda ser ejecutado  con doble clic o por líneas de comandos,  como es el caso de los .exe o .bin

Cuándo construimos un programa  utilizando el lenguaje de programación Java, no estamos excepto de realizar estas tareas empaquetado que permiten distribuir el programa en un solo archivo, para ellos el JSDK nos ofrece otro programa utilitario llamado JAR.EXE, este programa nos permite empaquetar todos los ficheros de nuestro proyecto de programación necesarios para que nuestro software funcione bien, el resultado es un fichero con extensión .jar (la extensión puede ser zip o .jar), cuyo interior empaqueta todo lo que necesitamos, incluso contiene información sobre aspectos importantes de nuestro programa, como por ejemplo, el o los ficheros por donde inicia la ejecución del programa, esto es muy útil al momento de generar un fichero ejecutable de nuestro programa hecho con Java.

Los pasos para empaquetar los ficheros de nuestro programa en un solo archivo .jar son:

  • Crear un fichero de texto limpio (texto plano sin formato)
  • Colocar dentro de este fichero las siguiente líneas de código
1
2
3
4
Manifest-Version: 1.0
Main-Class: Principal
Name: Principal.class
Java-Bean: True

image034

La primera línea indica que el archivo es un fichero de manifiesto (meta-información o meta-datos) que contiene información sobre el proyecto.

La segunda línea indica cual es la clase que contiene el código que inicia nuestro programa.

La tercera línea indica la ubicación del archivo de dicha clase de arranque, en ambos casos, si el archivo esta anidado en subdirectorios que dependen del directorio superior donde se encuentra el fichero Manifiesto.MF, se debe especificar estos subdirectorios separados por punto, igual que la notación de paquete de Java.

La última línea indica que la clase es una clase ordinaria llamadas en java Clases Beans

  • Guardar el fichero en la misma carpeta donde se encuentran los ficheros de nuestro proyecto, en el nivel mas superior, su nombre puede ser Manifiesto.MF (el nombre no es relevante)
  • Crear un nuevo fichero de texto limpio
  • Colocar en su interior las siguientes líneas de código
1
2
jar -cfm miejecutable.jar Manifiesto.mf *.class *.java
pause;

image036

La primera línea realiza una llamada por línea de comando DOS al programa JAR.EXE del JSDK, le pasa cuatro parámetros,  -c (Crear un ficeho) f (nombre del fichero a crear) m (incluya el siguiente fichero de Manifiesto) v (muestra por consola detalles del proceso de empaquetado).

miejecutable.jar corresponde al nombre del fichero repositorio o empaquetador que se debe generar

Manifiesto.MF corresponde al nombre del fichero que contiene los metadatos sobre el proyecto

*.class  *.java indican al JAR.EXE que debe incluir en el empaquetado todos los ficheros compilados (.class) y los ficheros de código fuente (.java), si se desea omitir los ficheros de código fuente, simplemente se quita esta opción *.java de la línea de comando

La segunda línea, realiza una pausa antes de cerrar la consola de DOS, de esta forma podemos apreciar si hay un error o si todo salió bien.

  • Guardar el fichero en la misma carpeta donde se encuentran los ficheros de nuestro proyecto, en el nivel mas superior, su nombre puede ser cualquiera que cuya extensión termina en.bat, lo más común es crear_ejecutable.bat
  • Ejecutamos el archivo crear_ejecutable.bat y esta será la salida

image039

Si observamos la estructura de ficheros que tenemos hasta este punto, podemos ver algo como esto:

image048

Distribuyendo el ejecutable

Ahora podemos copiar solamente el archivo miejecutable.jar en un medio de almacenamiento y enviarlo por correo electrónico, colocarlos en nuestro sitio de descarga favorito, ponerlo en el escritorio, etc…, recuerda que este fichero contiene todo los archivos necesario para que nuestro programa funcione y se ejecute.

Al darle doble clic,  podemos ver que desaparece la ventana de DOS que aparecía antes al momento de ejecutar el programa, solo tenemos la ventana de nuestro programa en funcionamiento.

image050

Los programas JAVAC.EXE (el compilador),  JAVA.EXE (el interprete) de código intermedio o bytecode y JAR.EXE que vienen incluidos con el JSDK,  ofrecen un numero amplio de parámetros, los cuales están relacionados con las tareas de compilación e interpretación de código java fuente y código java compilado respectivamente, la información sobre cada uno de los parámetro  disponibles se puede encontrar tecleando solo JAVAC.EXE o JAVA.EXE o JAR.EXE en la consola de líneas de comandos, cada uno de los programas emitirá como respuesta información de ayuda para su uso.

Descarga el Ejemplo de Bloc de Notas como IDE para Java

Seguimos recodando el pasado y alcanzado al presente

En el próximo artículo tratare de explicar el patrón de arquitectura para el desarrollo de software Modelo Vista Controlador o MVC, el cual se ha utilizado desde mucho antes de la Metodología de Programación Orientada a Objetos, pero que gracias a esta modalidad de programación, el MVC ha tomado mucha importancia en el desarrollo de software, vernos todo desde su conceptualización, beneficios, desventajas, varias formas de implementarlo, entre otras temas no menos importantes, esta ocasión seguiré recordando el pasado, pero subiendo un poco en el tiempo, utilizando herramientas que ofrecieron en su época un poco mas de funcionalidad que el legendario blog de notas, cuyos grandes ancestros aun se usan mucho para realizar tareas de mantenimiento de algunos sistemas operativos, tal es el caso de Edit de DOS y VI de GNU/Linux.

Enlaces relacionados

http://es.wikipedia.org/wiki/Software_development_kit
http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Java
http://es.wikipedia.org/wiki/Editor_de_texto
http://es.wikipedia.org/wiki/ASCII
http://java.sun.com/javase/downloads/index.jsp
http://es.wikipedia.org/wiki/Variable_de_entorno
http://es.kioskea.net/contents/systemes/variables-environnement.php3

420 Visitas hoy
Comparte en tu Web:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Blogplay
  • email
  • Reddit
  • RSS
  • StumbleUpon

Por favor deje sus Comentarios aquí:

© Gurpo de Investigacion DEARTICA