21 enero 2012

Java para C# - 01 - Hola Mundo

¿Por qué Java para C#?

Porque gente que ya ha programado en C# me ha preguntado si podía darles unas pautas básicas que les ayuden a ver rápidamente las diferencias entre ambos lenguajes.

¿Y por qué aprender C# antes que Java?

Porque me parece más razonable aprender a programar usando C# en vez de Java, porque C# tiene una curva de aprendizaje menos pronunciada. Ciertos detalles que son habituales para un programador novel resultan innecesariamente engorrosos en Java, especialmente la lectura de datos desde teclado, pero también, aunque en menos medida, otros detalles, como el manejo de cadenas de texto.

¿Cómo cambia un "Hola, Mundo" de C# a Java?

Escribir un texto en pantalla es el primer ejercicio que se suele realizar en casi cualquier lenguaje de programación cuando uno está comenzando a aprender. En C# se haría con


class HolaMundo {
    public static void Main()  {
        System.Console.WriteLine("Hola, Mundo");
    }
}


cuando en Java es


class HolaMundo {
  public static void main( String args[] ) {
    System.out.println( "Hola Mundo!" );
  }
}


Se parecen mucho. Pero vamos a echar un vistazo rápido a las diferencias:

  • El fichero se debe llamar exactamente "HolaMundo.java", es decir, igual que la clase, pero con la extensión ".java".
  • "main" se escribe con minúsculas.
  • Los parámetros de "main", que son un array de strings, deben indicarse siempre en Java, o el programa no compilará, al contrario que en C#, en que es opcional.
  • La palabra "String", para referirse a una cadena de texto, se escribe en mayúsculas, porque realmente no es un dato simple, sino una clase. Veremos que eso hace que el manejo de cadenas sea un poco más complicado que en C#.
  • Para escribir el texto en pantalla, no se usa "System.Console.WriteLine" sino "System.out.println". En Java no existe un "using System" que nos permita evitar escribir siempre "System."


¿Y para probar este programa que hemos creado en Java?

Como Windows tiende a ir funcionando cada vez más lento a medida que instalamos cosas, y suele ser incómodo para compilar desde línea de comandos, yo instalo muchas de mis herramientas de programación en máquinas virtuales creadas con VirtualBox. Para Java, yo trabajo en una máquina virtual de Linux (en mi caso, Mint 11). En Linux, es fácil usar Synaptic o el gestor de paquetes que incluya nuestra distribución para instalar cualquier software. Tenemos entorno de desarrollo en Java libres como el "OpenJDK", aunque también tenemos la opción de descargar el kit de desarrollo en Java (JDK) oficial desde la página de Oracle.

Como editor, podemos usar el incluido en el sistema (GEdit, por ejemplo), aunque a mí me gusta más Geany, que no sólo realza la sintaxis en colores, sino que además permite compilar con un clic y lanzar el programa resultante.


Si eres aguerrido/aguerrida, puedes compilar desde línea de comandos tecleando

javac HolaMundo.java

lo que crearía un fichero llamado "HolaMundo.class", que podríamos lanzar tecleando

java HolaMundo

Por el contrario, si eres miedoso/miedosa y prefieres usar Windows, puedes instalar el JDK oficial desde su página en oracle.com. Como entorno de desarrollo los dos más recomendables son Eclipse y NetBeans. Personalmente, NetBeans me parece más sencillo, más adecuado para proyectos pequeños. Aquí tienes instrucciones de cómo instalar NetBeans y aquí las necesarias para crear un proyecto usando este entorno. Con Eclipse también tendrás que crear un proyecto: aquí puedes ver cómo.

¿Todo claro hasta aquí?

Pues mañana hablaremos de variables, condiciones y bucles... Si hay dudas, a los comentarios o al foro de Java de AprendeAProgramar.