epelpad

Java para programadores en C++ III - Codear y Compilar

Java para programadores en C++ III - Codear y Compilar

Java para programadores en C++


<< Volver al índice >>

Parte III: Codear y Compilar.
Mostrar datos en la consola.



Java está basado en C++, por lo que verán que la mayoría de las cosas son similares sino idénticas. Por esto, la metodología de estos post va a ser empezar asumiendo que las cosas se hacen igual que en C++, e ir marcando las diferencias.

Empecemos con una de ellas: En Java no se hace una separación prototipo-implementación. Por esto, tampoco se separa un mismo código en dos archivos (como en C++ .h y .cpp). Hay una forma de seguir obteniendo el beneficio de brindar una interfaz sin que el cliente/usuario tenga acceso al código fuente, pero es tema para más adelante.

La estructura de un código de Java es mucho más restrictiva que en C++. En un código de Java solamente puede haber clases. Es decir, no hay "espacio global", no hay funciones, no hay variables globales, etc. Todo código debe estar encapsulado adentro de una clase. Las únicas dos excepciones son los includes (que en java son imports) y la declaración de paquetes (de los que hablo más adelante).

java

Archivos

- Los archivos de código fuente tienen extención ".java".

- Los archivos de clases compiladas tienen extención ".class" y vendrían a ser los análogos en C++ a los archivos ".o" y a las librerías. Los ".class" se pueden ejecutar escribiendo en la consola
java NombreArchivo
(sin la extension).

- Los archivos de código fuente ".java" se compilan a ".class" escribiendo en la consola
javac NombreArchivo.java
- Los ejecutables finales de los programas compilados tienen extención ".jar". Se ejecutan ingresando en consola
java -jar NombreArchivo.jar
Java no genera archivos .exe . Para crearlos pueden hacer un programa en C++ que tenga simplemente un main con la línea
system( "java -jar NombreArchivo.jar" );
o como se les ocurra.

Programacion

Estructura de un programa

Un programa es una clase. En java, las clases pueden tener nivel de accesibilidad como los métodos (public, private). Las clases públicas deben tener el mismo nombre que el archivo de código fuente en el que se declaran y definen. Así, por ejemplo, una clase pública definida en el archivo fuente "MiPrograma.java" se llamara "MiPrograma" y viceversa. Cabe aclarar que por esta característica solamente puede haber una clase pública por archivo de código fuente.

La estructura básica de un programa es una clase principal del mismo nombre que el programa que tiene un método main (en Java no hay funciones, así que main es un método). Su declaración es:

public class NombrePrograma {

    public static void main( String[] args ) {

        // Acciones del programa.

    }

}

En el post sobre clases de la serie hay más información sobre esta sintaxis.

tutoriales

Comentarios

Los comentarios son iguales a C++. La forma de comentar propia de java se denomina Javadoc y su estructura es /** comentario */ Es utilizada para generar documentación en html mediante el javadoc utility program (incluido en el JDK). Es similar a generar documentación con Doxygen en C++.

lenguajes

Punteros en Java

Este tema es algo peculiar. En Java hay dos grandes grupos de tipos: los tipos de datos primitivos (char, float, int, etc) y las clases. TODA VARIABLE QUE NO CORRESPONDE A UN TIPO DE DATO PRIMITIVO ES UN PUNTERO. Dicho esto, no podemos elegir cuándo trabajar con punteros y cuándo no, porque siempre trabajaremos con punteros cuando empleemos una clase, el lenguaje está hecho así . Los objetos se van a instanciar entonces con el operador new.

A razón de que no hay distinción entre objeto y puntero, el operador de acceso de miembro mendiante punteros ( -> ) no existe. Para acceder a los miembros siempre se utiliza el operador punto.

codigo

Escribiendo en la pantalla

Para mostrar datos en la pantalla mediante la consola se utilizan los métodos (recordar que no hay funciones) de la clase System definida en el paquete java.lang de la API de Java. System tiene 3 objetos miembros static llamados in, out y err, y corresponden a lo que en C++ son cin, cout y cerr respectivamente. Cada uno de estos objetos tiene a su vez los métodos de entrada/salida que vamos a utilizar. Como son objetos miembro de la clase System, y a su vez necesitamos acceder a los métodos de cada uno, los invocaremos con la sintaxis:
System.nombreObjeto.nombreMetodo();
(En Java se accede a los miembros static mediante el operador punto y no mediante el operador de resolución de ámbito ( :: ) como en C++).

- Para mostrar una cadena en pantalla y ubicar el cursor al final se utiliza:
 System.out.print( "cadena" ); 

- Para mostrar una cadena en pantalla y pasar a la linea de abajo se utiliza:
 System.out.println( "cadena" ); 

- Para mostrar una cadena con formato se utiliza:
 System.out.printf( "cadena de formato", arg_1, ..., arg_n ); 

Cada método print de System.out se utiliza y funciona de la misma forma que las funciones de mismo nombre de C.
out es una instancia de la clase PrintStream (del paquete java.io). Pueden ver sus otros métodos consultado su documentación: http://docs.oracle.com/javase/6/docs/api/java/io/PrintStream.html

Guias

Creando nuestro primer programa

Ya tenemos los recursos para crear nuestro primer programa en Java. Si están en un IDE crean un nuevo proyecto y dentro del mismo una nueva clase. Si utilizan un editor, creen el archivo PrimerPrograma.java.

Dentro de él escribimos, como no podía ser de otra forma :
public class PrimerPrograma {
    
    public static void main( String[] args ) {
        
        System.out.println( "Hola mundo!" );
        
    }
    
}


Corren el programa en el IDE o, si crearon la fuente con un editor, abran la consola, ubíquense en el directorio del archivo fuente y compilen la fuente a un archivo .class como se indicó más arriba escribiendo:
javac PrimerPrograma.java
y luego lo ejecutan con
java PrimerPrograma
Obtenemos así nuestra primera salida
Hola mundo!


programadores

<< Volver al índice >>

2 comentarios - Java para programadores en C++ III - Codear y Compilar

rrnum7 +1
Muy buen post. Me gustó lo de los punteros. La mayoría de los tutoriales se saltan esa parte, que sí considero importante. Y aunque en terminología de Java los llamen referencias, realmente son (casi) equivalentes a los punteros de C++, como bien mencionas.
elwear
Fue uno de mis primeros shock de Java ese tema junto con el sólo-clases, el recolector de basura y la no herencia múltiple.
Proto_usuario +1
muy buena guía para los que no están muy al tanto de como funciona la estructura java, me gusto la comparación de c++ para un mayor entendimiento gracias
elwear
Gracias me alegro que te sirva

Hay muchas guías/tutoriales de Java por la web pero no he visto nada sobre hacer el pasaje desde otro lenguaje, por eso quería encaminarlo por ese lado, ya que si sos programador de C++ hay mucha info sobre programación en general y cuestiones que son iguales o parecidas en Java que no te sirve y aumenta sin sentido el caudal de información que tenés que leer.