gentoo linux, java, software libre y otras hierbas
sep, 07 2006 - 6:57 pm

Compilando con GCJ

GCJ es el compilador GNU de Java, y una de las pocas opciones que tienes si deseas programar en Java, totalmente “libre”. Este lo recomienda Richard Stallman, para no caer en “La trampa de Java”.

Introducción

GCJ trabaja de tres maneras: Primero que todo GCJ puede tomar los archivos fuente *.java como entrada y compilarlos a archivos ejecutables de alguna arquitectura específica. Además, usando la opción -C, GCJ puede tomar los archivos fuente *.java como entrada, y generar archivos *.class. Y por último, GCJ puede tomar los archivos *.class como entrada para crear archivos ejecutables de alguna arquitectura específica.

GCJ ofrece dos soportes de librerias para el runtime, libgcj y libgcjgc. libgcj es simplemente una implementación del núcleo de librerías de Java. libgcjgc es el recolector de basura, que es el responsable de administrar la memoria consumida por un programa. Este recolector está basado sobre el colector Boehm-Weiser, pero escanea específicamente objetos de Java residentes en memoria, además de incluir algunos otros cambios.

Compilando programas en Java

Si estás trabajando con Java, se recomienda usar directamente el GCJ en lugar de usar el GCC.

Extensiones de Archivos

El GCJ maneja las siguientes extensiones de archivos utilizados comunmente por Java, y tu puedes especificar cualquiera de estos tipos de archivos como entrada para el GCJ:

.java
Un código fuente en Java, que consiste en una o más definiciones de clases.

.class
Un archivo binario que contiene las intrucciones bytecodes e información pertinente para una clase. Este puede ser cargado y ejecutado por una máquina virtual de Java (JVM, por sus siglas en inglés). Compilando un archivo fuente de Java (.java) se obtienen uno o más archivos de clase (.class), uno por cada definición de clase dentro del código fuente. Los archivos .class fueron designados como una presentación portable y segura de las clases de Java, pero también existen herramientas para compilar códigos fuentes de otros lenguajes (como Ada, Scheme, o XML) en archivos .class.

.zip
El formato ZIP es un tipo de archivo, muy famoso en el mundo de la computación, en el que se comprimen ficheros dentro de uno solo, con la extensión .zip. En el mundo de Java estos son utilizados principalmente para portar una colección de archivos de clases (.class) en un solo archivo. Cuando especificamos en la linea de comandos del GCJ que la salida va a ser un archivo .zip, el resultado es un archivo ensamblado, archivo objeto, o ejecutable, dependiendo de las opciones que especifiques.

.jar
Un archivo .jar (Java ARchive) no es más que un archivo .zip con la extensión renombrada, pero con algunas convenciones extras (que son obligatorias poner, como por ejemplo un archivo de manifiesto). GCJ actua sobre estos de igual manera que con un archivo ZIP.

Opciones en la linea de comandos del GCJ

Además de las opciones normales del GCC, GCJ reconoce las siguientes opciones:

-C
El/los archivo/s de entrada deben ser archivos fuente .java. Estos son compilados en archivos portables de clase (.class). Y no se genera ningún tipo de código máquina (o archivo ejecutable).

–output-class-dir=OUTPUTDIR
Cuando es usado con -C, especifica en que directorio se deben crear los archivos de clase.

-d OUTPUTDIR
Es un sinónimo o alias para el –output-class-directory, y se utiliza para que exista compatibilidad con el javac de Sun.

–bounds-check
Cuando compila a código máquina, emite instrucciones para verificar que los indices de arrays esten dentro de los límites, y lanza una excepción en caso contrario. Este comando está por defecto.

–no-bounds-check
Cuando compila a código máquina, NO emite instrucciones para verificar que los indices de arrays esten dentro de los límites.

-M
-MM
-MD
-MMD
Estas opciones trabajan como con el compilador de C. Para propósitos del GCJ, un sistema de cabezera es cualquier archivo .zip instalado como parte del sistema de compilación.

–main=CLASSNAME
Cuando se enlaza una aplicación, genera un stub que la aplicación ejecuta al iniciar el programa con el método main de la clase. (Esta opción es ignorada si solamente estás compilando mas no enlazando).

Configurando los Paths

En tiempo de compilación, GCJ utiliza una lista de rutas para buscar clases y paquetes que necesite. Esta lista es llamada el classpath. Cada elemento del classpath puede ser un directorio o el nombre de un archivo .zip o .jar. En el segundo caso, GCJ busca el contenido del archivo para la información requerida. GCJ tiene incluido un classpath (built-in classpath), que incluye el directorio, y el archivo de sistema libgcj.zip, que contiene las clases del estándar de libreriás de Java, tal como java.lang. Estas son varias formas para configurar o aumentar el classpath:

-I directory
Un directorio (o archivo) especificado usando -I es añadido al final del classpath.

–classpath=path
-classpath path
Si especificas la opción –classpath (o la -classpath; son lo mismo) sobrescribres el built-in classpath, y eliminas el reconocimiento de la opción –CLASSPATH y de la variable de entorno CLASSPATH.

–CLASSPATH=path
-CLASSPATH path
Si especificas la opción –CLASSPATH (o la -CLASSPATH; son lo mismo) esta ruta es añadida en el built-in classpath, pero eliminas el reconocimiento la variable de entorno CLASSPATH.

CLASSPATH
La variable de entorno CLASSPATH puede ser configurada a una ruta. Esta ruta es añadida a la ruta del compilador. Estas son listas de nombres de directorios o archivos separadas por comas (en Windows separadas con punto y coma).

 

Basado en la version original de la página del GCJ: http://gcc.gnu.org/java/compile.html

Un comentario | deja el tuyo

sep, 03 2006 - 8:06 pm

Tutoriales y recursos en la Web

En la Wikipedia, por supuesto

En la Wikipedia puedes encontrar información de Java en cuanto a su historia y orígenes. No se te enseña la sintaxis del lenguaje ni se hablan de cosas por el estilo, ya que no es un tutorial, pero te servirá para iniciarte en el tema.

Java en Castellano

Java en castellano es una de las Web del dominio www.programacion.com. Esta es, sin duda, una de las mejores Web de programación en el mundo, de habla hispana. Allí podrás encontrar infinidad de tutoriales excelentes de diferentes tecnologías de Java. Recomendadísima. La lista de tutoriales desde allí:

JavaHispano

Esta es otra de las grandes páginas de Java en el mundo. javaHispano, o su idea nace el 8 de Noviembre de 2000 (mensaje en las news), ahí empieza a crearse un grupo de interés que acaba derivando en una lista en Yahoogroups el 21 de noviembre. El 15 de Enero de 2001 se pone online por primera vez, muy cutre, en base a un par de applets de Java, y el 1 de Marzo se convierte en lo que era la versión anterior. Y llegamos al 1 de Febrero de 2003, cuando se renuevan muchísimas cosas y se incluye la posibilidad de registrarse. El 16 de Febrero de 2004, con tan sólo tres años de vida, el número de usuarios registrados supera los 4000, a mediados del 2005 son más de 10.000.

A principio del 2005 javaHispano se convierte en una organización sin ánimo de lucro, y como tal ejerce labores de difusión de la tecnología Java, que incluyen la celebración del congreso javaHispano


Libre pero encadenado – La trampa de Java

Esto no es una Web dedicada a Java, simplemente uno de los artículos más leídos y polémicos de Internet, escrito por el famosísimo Richard Stallman, que habla sobre la ironía de Java con respecto a si es libre o no.

La Web del Programador
Esta es sin duda una de las mejores Web de programación; y a la fecha de hoy hay 75 tutoriales de Java. En lo personal no me gusta mucho bajar los tutoriales de allí, ya que al haber tantos tutoriales es muy difícil de mantener, y encuentras muchos links rotos, pero entre gustos…

Un comentario | deja el tuyo

Entradas recientes »