Está en la página 1de 12

Politécnico Grancolombiano

Herramientas de
Desarrollo
El SDK, herramienta del desarrollador
Diego A. Cabra

2010
Herramientas de desarrollo

EL SDK, HERRAMIENTAS DEL


DESARROLLADOR

El grado de complejidad de una tarea depende en gran medida del uso de una
herramienta, y de la calidad de la misma. El nivel de dificultad que supone realizar
alguna tarea sin herramienta alguna, llega incluso a imposibilitar la consecución de
la misma, no solamente en trabajos mecánicos como inicialmente se asocia al
hablar de herramientas, sino también en el campo profesional de muchas
disciplinas, en donde el concepto de herramienta ha cobrado un nuevo significado,
como en el caso de las herramientas de gestión, informáticas, administrativas, y
en nuestro caso concreto de estudio, de programación de computadores.

La tarea de programar un computador se basa finalmente en la capacidad que


tengamos de ordenarle a su centro de procesamiento, que ejecute las
instrucciones necesarias para completar el algoritmo que deseamos. La unidad
central de procesamiento de un computador es su microprocesador; este,
fundamenta su capacidad de procesamiento en un conjunto de instrucciones con
las que fue construido y que son las únicas que puede entender. Si se necesita
darle alguna orden, tendrá que ser por medio de estas instrucciones, las cuales, al
tratarse de un componente electrónico están representadas con códigos
numéricos almacenados por medio de circuitos digitales. Estos circuitos
almacenan información codificándola en base a los dos posibles estados que
pueden tomar sus componentes, representados como 1 y 0, por tanto para
ordenarle a un microprocesador en términos de sus instrucciones hay que conocer
su estructura interna de registros e instrucciones, y hablarle en el único lenguaje
que conoce, los códigos binarios.

Programar entonces a este nivel no es una tarea intuitiva; sin el uso de alguna
herramienta que facilite esta labor, la programación estaría restringida para
aquellos que conozcan la electrónica interna de los microprocesadores,
afortunadamente la evolución en este campo ha llevado al desarrollo de formas de
codificar las instrucciones para que sean más comprensibles para las personas
utilizando lenguajes mas humanos, los llamados lenguajes de programación de
alto nivel. De forma que si los programadores escriben instrucciones en lenguajes
de alto nivel, debe existir algún tipo de traductor para que los computadores
entiendan estas instrucciones como un código binario. De esta necesidad surge
una de las principales herramientas en la construcción de software, el compilador.
El compilador hace parte de un conjunto de herramientas que facilitan y en
muchos casos posibilitan la programación y procesos relacionados, permitiendo
acercar esta tarea a un número mucho más amplio de personas, convirtiendo la
programación en un proceso mucho más intuitivo y ágil que lo que fue en sus
inicios.

El siguiente documento le permitirá conocer un poco más a fondo los procesos


que se llevan a cabo al momento de construir una aplicación, y que se han vuelto
transparentes para muchos de los programadores gracias al uso de herramientas
de desarrollo. Concretamente para nuestro caso de estudio, en la tecnología Java.

JAVA, TECNOLOGÍA DE SOFTWARE


Java, es una tecnología que no puede relacionarse únicamente como un lenguaje
de programación. Java es tanto un lenguaje como una plataforma de desarrollo y
ejecución de programas. Para comprender finalmente la utilidad e importancia de
las herramientas que se trabajarán, es importante conocer internamente esta
tecnología como punto de partida para los desarrollos temáticos del modulo.

EL LENGUAJE DE PROGRAMACIÓN JAVA


Java, como lenguaje de programación es un lenguaje de alto nivel que puede
caracterizarse por ser:

Simple
Orientado a objetos
Distribuido
Multitarea
Dinámico
Independiente de la arquitectura
Portable
De alto rendimiento
Robusto
Seguro

En Java, todos los códigos fuente se escriben primero en archivos de texto plano
con la extensión .java. Estos archivos de código fuente son compilados dentro de
archivos .class por el compilador javac. Para lograr que los códigos Java
compilados puedan ser ejecutados sobre diferentes plataformas, los archivos
.class no dependen del sistema operativo o la arquitectura de hardware, pues el
compilador traduce el código fuente a un código binario especial con instrucciones
para una máquina virtual que no depende del hardware, pues es un componente
de software y no electrónico. El código binario especial que produce el compilador
de Java se conoce como bytecodes y será interpretado posteriormente por la
máquina virtual de Java (Java VM o JVM) que no es más que un programa. La
herramienta de lanzamiento de programas Java entonces corre la aplicación con
una instancia de la Java VM.

Gracias a que la Java VM está disponible para diferentes sistemas operativos, un


archivo .class sin cambio alguno, puede ser ejecutado en Microsoft Windows,
Solaris, Linux, o MAC OS.

LA PLATAFORMA JAVA
Una plataforma es el hardware o entorno de software en donde un programa se
ejecuta. Ya hemos mencionado algunas de las más populares plataformas, como
Windows, Linux, Solaris y MAC OS. La mayoría de las plataformas pueden ser
descritas como una combinación entre el sistema operativo y el hardware
subyacente. La plataforma Java difiere de la mayoría, en que esta es una
plataforma basada únicamente en software que se ejecuta sobre otras plataformas
basadas en hardware.

La plataforma Java tiene dos componentes:

La Máquina Virtual Java (Java VM)


La interfaz de programación de aplicaciones (Java Application Programming
Interface -API)

Ya vimos lo que es la máquina virtual de Java; esta es la base para que la


plataforma Java sea portable a varias plataformas basadas en hardware.

El API, es una gran colección de componentes de software que proveen muchas


funcionalidades útiles. Estas son agrupadas en librerías de clases e interfaces
relacionadas, estas librerías son conocidas como paquetes.
El API y la JVM aíslan el programa del hardware subyacente

Como es un entorno independiente de la plataforma, ejecutar programas sobre la


plataforma Java puede ser un poco más lento que ejecutarlos directamente en la
plataforma basada en el hardware, sin embargo los avances en la tecnología del
compilador y la máquina virtual han permitido lograr desempeños muy cercanos a
los que se logra al ejecutar directamente en la plataforma basada en hardware, y
además conservando las características de portabilidad.

EL ENTORNO DE EJECUCIÓN JAVA


Para ejecutar un programa escrito en Java se necesita entonces la adecuada
instalación y configuración de la plataforma Java, la cual se instalará sobre la
plataforma existente basada en hardware. Es la plataforma Java la que depende
de la plataforma base para ejecutar los programas, más específicamente la
máquina virtual, por esto se debe instalar y configurar el entorno de ejecución
adecuado según el SO y la arquitectura de hardware presente en la máquina.

El JRE (Java Runtime Environment), es un entorno de ejecución distribuido por


Sun Microsystems, el cual al ser instalado sobre la plataforma del sistema,
configura la plataforma Java brindando el soporte necesario para ejecutar los
programas Java. Una máquina virtual y una copia del API, estarán disponibles
para que el cargador de aplicaciones Java sea capaz de ejecutar los programas.
Instalando el JRE el sistema estará preparado para entender e interpretar los
bytecodes contenidos en los archivos .class, por tanto un usuario que solo
necesita ejecutar programas no necesitaría mas instalaciones; por otro lado, un
desarrollador se vería en problemas si quisiera desarrollar un programa para
ejecutar sobre el JRE instalado, tendría que conocer a fondo la forma como se
codifica un archivo de bytecodes para que la Java VM lo entienda, además de que
estos son archivos binarios, por tanto no podría escribirlo en palabras
comprensibles para un ser humano, sino en secuencias de 1 y 0, tarea que no
podría realizar en un editor de texto común, ya que en estos solo se puede
ingresar, obviamente texto, no bits.
EL JAVA DEVELOPMENT KIT JDK
Programar de esta forma no es imposible, pero requeriría un esfuerzo grande y
totalmente innecesario, ya que existen un conjunto de herramientas, creadas por
los mismos desarrolladores de Java, que fueron escritas para desentender al
programador de estas complicadas tareas y hacer estos procesos totalmente
automáticos y transparentes. El conjunto de herramientas que facilita, y posibilita
el proceso de creación de aplicaciones para un sistema concreto se conoce como
SDK (Software Development Kit), concretamente para la tecnología Java, existe el
JDK (Java Development Kit), el cual contiene además del entorno de ejecución
JRE (Java Runtime Environment), un compilador para crear los archivos de
bytecodes (.class), el cargador de aplicaciones, entre otras herramientas, de las
cuales las más relevantes en nuestro caso, se describirán a continuación (las
descripciones detalladas las abordaremos más adelante en el desarrollo del
modulo):

appletviewer, es una herramienta que permite visualizar y depurar applets sin


la necesidad de un navegador web como Microsoft Internet Explorer o Mozilla
Firefox.
extcheck, comprueba un archivo JAR, verificando que no exista conflictos en
el titulo y la versión con extensiones previamente instaladas en el sistema.
htmlconverter, herramienta que permite convertir los archivos HTML con
applets empotrados, al formato de la nueva tecnología de applets Java-Plug-in.
jar, es una herramienta que empaqueta los archivos de un proyecto Java
(según configuración: archivos fuente y class, o solo archivos class) dentro de
un solo archivo con extensión JAR. En general esta herramienta permite
administrar todos los aspectos relacionados con los archivos JAR.
jarsigner, firma un archivo JAR para poder verificar la autenticidad del archivo
por medio de un sistema de llaves pública y privada, estas llaves se pueden
gestionar con la herramienta keytool. jarsigner también permite verificar la
autenticidad de un archivo JAR firmado.
java, es el cargador de aplicaciones Java. Esta herramienta es un intérprete
que trabaja con los archivos de bytecodes generados por el compilador javac.
La herramienta inicia un entorno de ejecución Java, carga los archivos .class
necesarios e invoca el método main correspondiente.
javac, es el compilador Java, el cual toma los archivos fuente .java, y los
compila traduciéndolos a archivos de bytecodes con extensión .class,
entendibles por la Java VM.
javadoc, se basa en un formato de comentarios escritos sobre el código fuente
para generar automáticamente páginas de documentación de los proyectos.
javap, desensambla archivos class imprimiendo una representación de la
estructura del archivo fuente originario cuando no se dispone de este.
javaw, su funcionamiento es idéntico al cargador de aplicaciones java, excepto
que con javaw, no se asocia ninguna ventana de consola de comandos del
sistema.
javaws, el Java Web Start, lanza aplicaciones Java hospedadas en una red sin
que el usuario se preocupe por la descarga o instalación. Ejemplo (siga el
hipervínculo): Ejemplo JavaWS
jconsole, es una herramienta que permite monitorear y administrar de forma
gráfica aplicaciones Java y Java VM.
jdb¸ es un depurador de clases Java, para ser usado por medio de una línea
de comandos.
jvisualvm, es una herramienta con una interfaz gráfica intuitiva, que provee
información detallada acerca de las aplicaciones Java mientras estas están
corriendo en una determinada máquina virtual.
keytool, es una herramienta que permite generar y administrar llaves y
certificados, para poder autenticar aplicaciones, por ejemplo a través de firmas
logradas con el uso de la herramienta jarsigner expuesta anteriormente.
native2ascii, es una herramienta que permite cambiar la codificación de
caracteres de un archivo. El compilador de Java, así como otras herramientas
del lenguaje solo entienden archivos que estén codificados bajo los estándares
LATIN-1 o UNICODE, esta herramienta convierte archivos que contengan otros
tipos de codificación de caracteres en archivos codificados bajo LATIN-1 o
UNICODE.
pack200, permite transformar un archivo JAR, en un archivo comprimido
pack200 usando el compresor de datos gzip. Los paquetes pack200 son
archivos altamente comprimidos que pueden desplegarse directamente,
ahorrando ancho de banda y tiempos de descarga.
serialver, permite consultar el serialVersionUID de una o más clases
serializables.
unpack200, es una herramienta para descomprimir archivos pack200 y
convertirlos en archivos JAR.

Una vez instalado el JDK, lo único que se necesitará además de unas cuantas
configuraciones adicionales, es un editor de texto en donde escribir el código
fuente de los programas.

En los contenidos de la semana actual se detallará el proceso de instalación y


configuración para habilitar la plataforma java y su entorno de ejecución a la hora
de escribir aplicaciones.
EL COMPILADOR JAVAC
El compilador javac, lee archivos de código fuente que definen clases o interfaces,
y los compila traduciéndolos al código binario intermedio bytecode que entiende la
máquina virtual de Java.

Existen principalmente dos formas de indicarle a javac los archivos de código


fuente que se quieren compilar: si el número de archivos a compilar no es muy
grande, se podrían listar como argumentos en la línea de comandos del sistema al
llamar a la aplicación. Si por el contrario el número de archivos es grande, se
puede construir un archivo en donde se listen todos los archivos que se quieren
compilar y referenciar este archivo a la hora de ejecutar la aplicación javac.

Javac puede recibir opcionalmente indicaciones adicionales por medio de los


argumentos de línea de comandos.

Uso:

Opciones principales:

-classpath rutaClases. Cambia la ruta de clases del usuario, sobrescribiendo la


ruta que se encuentra en la variable de entorno CLASSPATH. Si el classpath no
es configurado, la ruta de clases del usuario se establecerá como el directorio
actual. Esta ruta le indica al compilador donde puede encontrar las clases (que no
sean del API), que necesita para compilar los archivos fuente.

-d directorio. Cambia el directorio en donde se guardarán los archivos .class


resultantes. El directorio debe existir en el sistema, pues javac no creará el
directorio en caso de no existir. Si no se especifica esta opción, los archivos
compilados se guardan en el mismo directorio de los archivos fuente.

-deprecation. Muestra una descripción de cada uso o sobrescritura de un


miembro o clase depreciado. Sin esta opción, javac solo muestra el nombre de los
archivos fuente en donde se está usando o sobrescribiendo miembros o clases
depreciadas. Con la evolución del lenguaje y su API, algunos métodos y clases
van quedando obsoletos y el sistema los marca como depreciados. Estos métodos
no son eliminados del API en las versiones que los consideran depreciados, pues
esto ocasionaría que todas las aplicaciones que usan estos métodos o clases
dejaran de funcionar al actualizar la JVM a la última versión lo que supondría un
fallo en la estabilidad del lenguaje. Como solución los desarrolladores del API de
Java indican a los programadores que estos miembros o clases han quedado
obsoletas y no deberían usarse.

-encoding codificación. Si el código fuente contiene caracteres codificados bajo


un estándar diferente al configurado en la plataforma, se puede especificar el
estándar usado por medio de esta opción, para que el compilador no genere
errores. Esta opción se puede reemplazar si el archivo se convirtió primero usando
la herramienta native2ascii.

-sourcepath rutaFuentes. Con esta opción se le puede indicar al compilador


donde encontrar los códigos fuente de las definiciones de clases o interfaces
relacionadas con el archivo a compilar. Puede contener la ruta de un directorio, de
un archivo ZIP o un JAR. A diferencia de la opción classpath, por medio de
sourcepath se indica donde encontrar los archivos fuente, lo que permite a javac
compilar las clases relacionadas. Con classpath no sucede esto, pues solo se le
está indicando al compilador donde encontrar los archivos compilados que se
necesitan, sin indicarle en donde están los códigos fuentes, por tanto no podría
compilarlos de nuevo.

-verbose. Si se incluye esta opción al llamar a javac, se imprime un seguimiento


detallado de cada clase que se carga para compilar el o los archivos
seleccionados.

EL CARGADOR DE APLICACIONES
La herramienta java lanza aplicaciones Java. Para hacerlo, esta herramienta inicia
el entorno de ejecución, carga la clase especificada, e invoca el método main de
esta clase. Para que el método main sea reconocido por la máquina virtual debe
ser declarado estático y público, sin retornar ningún valor, y que reciba un arreglo
de Strings como argumento.

Uso:
java [ opciones ] clase [ argumentos ... ]
java [ opciones ] -jar archivo.jar [ argumentos ... ]
javaw [ opciones ] clase [ argumentos ... ]
javaw [ opciones ] -jar archivo.jar [ argumentos ... ]

El primer argumento que se utilice y no sea una opción, será interpretado como el
nombre de la clase que se cargará. El nombre de la clase debe contener toda la
definición de paquetes de la misma, por ejemplo si la clase pertenece al paquete
llamado “principal”, y se llama “ClasePrincipal”, el argumento debe ser
“principal.ClasePrincipal”.

Si se usa la opción –jar se debe suministrar el nombre del archivo JAR que se
desea ejecutar.

Los siguientes argumentos que no sean opciones, se recibirán en el programa por


medio del arreglo de Strings que declara el método main como parámetro.

El comando javaw es idéntico al comando java, excepto que con javaw no se


asocia ninguna ventana de consola de comandos a la ejecución de la clase. Si no
se desea ver la consola de comandos al ejecutar una aplicación, esta debe ser
cargada con la aplicación javaw.

La herramienta de empaquetado JAR


La herramienta jar combina varios archivos en un solo archivo JAR. Los archivos
JAR se usan para empaquetar y comprimir los archivos relacionados de un
proyecto Java, permitiendo distribuir clases y recursos. También pueden
estructurarse para construir JAR “ejecutables” que por medio del entorno de
ejecución sirvan como punto de partida para la ejecución de una aplicación.

Uso:

Crear un archivo jar


jar cf archivoJar [-C dir] archivosEntrada [-Joption]
jar cmf manifiesto archivoJar [-C dir] archivosEntrada [-Joption]
jar c [-C dir] archivosEntrada [-Joption]
jar cm manifiesto [-C dir] archivosEntrada [-Joption]
Actualizar un archivo jar
jar uf archivoJar [-C dir] archivosEntrada [-Joption]
jar umf manifiesto archivoJar [-C dir] archivosEntrada [-Joption]
jar u [-C dir] archivosEntrada [-Joption]
jar um manifiesto [-C dir] archivosEntrada [-Joption]
Extraer un archivo jar
jar xf archivoJar [archivosEntrada] [-Joption]
jar x [archivosEntrada] [-Joption]

-c. Indica que se quiere crea un nuevo archivo JAR.

-f. Especifica que la salida de la herramienta se va a guardar en un archivo, si esta


opción no se define la salida de la herramienta imprime el resultado en la consola.

-m. Indica que se va a modificar el archivo manifiesto.


-u. Indica que la salida de la herramienta va a actualizar un archivo JAR.

-x. Extrae el contenido de un archivo JAR.

archivoJar, es el archivo que será creado (c), actualizado (u), o extraído (x).

archivosEntrada, son los archivos o directorios, separados por espacios, que van
a ser empaquetados dentro del archivo jar.

manifiesto, es un archivo manifiesto, cuyo contenido será incluido dentro del


MANIFEST.MF en el archivo jar. Este archivo contiene información relativa a
distintos atributos del archivo JAR. Un manifiesto es un archivo especial que
contiene información sobre otros archivos empaquetados en un archivo JAR.

Un ejemplo de uso de esta herramienta podría ser:

C:\Ejemplo> jar cf primerJar.jar *

Con este comando, se crea un archivo JAR llamado “primerJar” que incluirá todos
los archivos del directorio actual. (*)

Si se desea crear el JAR configurando ciertos aspectos en el MANIFEST.MF, se


puede crear un archivo que incluya los valores de los atributos que se desean
establecer. Para que la aplicación reciba esta instrucción se podría insertar el
siguiente comando:

C:\Ejemplo> jar cmf primerJar.jar MiManifiesto.txt *.class

Para extraer el contenido de un archivo JAR, se usa la opción x, como en:

C:\Ejemplo> jar xf primerJar.jar

Para actualizar un JAR, adicionando ciertos elementos sin necesidad de volver a


crear el archivo se usa la opción u:

C:\Ejemplo> jar uf primerJar.jar OtraClase.class

Los archivos JAR pueden ser configurados para funcionar como una especie de
archivo ejecutable para Java. Ya que las aplicaciones en Java son independientes
de la plataforma, no existe como tal el concepto de archivo ejecutable “exe” por
ejemplo para sistemas Windows. Para esto se puede utilizar los archivos JAR, que
al instalar el entorno de ejecución de Java, se reconocerán automáticamente para
ser cargados y ejecutados sobre la plataforma Java. Para configurar un JAR de
esta forma, se debe modificar el atributo “Main-Class” del archivo de manifiesto del
JAR, utilizando la opción “m”. Con esta opción se puede indicar a la herramienta
un archivo que contenga los atributos y valores que se desean añadir al
MANIFEST.MF.

Una vez creado el JAR, la aplicación puede ser ejecutada en cualquier directorio y
sobre cualquier plataforma; si el programa necesita usar la entrada y salida
estándar del sistema, se debe ejecutar desde una consola de comandos del
sistema, si es en ambiente grafico, se puede ejecutar directamente con un doble
clic sobre el archivo JAR como cualquier otro ejecutable de la plataforma.

El visor de applets
Los applets son componentes destinados a sustentar pequeñas aplicaciones que
están disponibles en un servidor web; estos se transportan por la red instalándose
automáticamente y ejecutándose de forma transparente para el usuario que solo lo
percibe como un elemento más de su página web. Por esto los applets no poseen
un método main en donde inicia su ejecución, sino que están destinados a ser
parte de un documento más amplio que lo contendrá, típicamente una página
HTML. El encargado entonces de iniciar su descarga, instalación y ejecución es el
navegador web o browser que carga la pagina que contiene al applet. Para
visualizar un applet necesitaríamos entonces un navegador web, pero en un
ambiente de desarrollo esto puede suponer trabajo adicional; por esto el JDK
incluye una herramienta que permite ejecutar applets sin la necesidad de usar un
browser.

Uso:

appletviewer [ opciones ] urls ...

La herramienta appletviewer se conecta con los documentos o recursos indicados


en urls y despliega cada applet referenciado en el documento en una ventana
independiente. Los documentos, comúnmente HTML, pueden encontrarse
localmente en la máquina que ejecuta la herramienta, o publicados en internet.

Estas herramientas brindan un soporte primario para el desarrollo de aplicaciones


con Java. Las demás que mencionamos como relevantes del JDK, serán
trabajadas durante el desarrollo del modulo en posteriores unidades.

También podría gustarte