Primeros pasos con el lenguaje Java

Creando tu primer programa Java

Cree un nuevo archivo en su editor de texto o IDE llamado HelloWorld.java. Luego pegue este bloque de código en el archivo y guárdelo:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

[Ejecutar en vivo en Ideone] (https://ideone.com/rbWs4M)

Nota: Para que Java reconozca esto como una clase pública (y no arroje un [error de tiempo de compilación][3]), el nombre del archivo debe ser el mismo que el nombre de la clase (HelloWorld en este ejemplo) con una extensión .java. También debe haber un modificador de acceso “público” antes.

[Convenciones de nomenclatura][4] recomiendan que las clases de Java comiencen con un carácter en mayúscula y estén en formato camel case (en el que la primera letra de cada palabra está en mayúscula). Las convenciones recomiendan no usar guiones bajos (_) ni signos de dólar ($).

Para compilar, abra una ventana de terminal y navegue hasta el directorio de HelloWorld.java:

cd /path/to/containing/folder/

Nota: cd es el comando de terminal para cambiar de directorio.

Ingrese javac seguido del nombre del archivo y la extensión de la siguiente manera:

$ javac HelloWorld.java

Es bastante común obtener el error 'javac' no se reconoce como un comando interno o externo, un programa operable o un archivo por lotes, incluso cuando ha instalado JDK y puede ejecutar el programa desde IDE, por ejemplo. eclipse etc. Dado que la ruta no se agrega al entorno de forma predeterminada.

En caso de que obtenga esto en Windows, para resolverlo, primero intente buscar su ruta javac.exe, lo más probable es que esté en su C:\Archivos de programa\Java\jdk(número de versión)\bin. Luego intente ejecutarlo con a continuación.

$ C:\Program Files\Java\jdk(version number)\bin\javac HelloWorld.java

Anteriormente, cuando llamábamos a javac, era lo mismo que el comando anterior. Solo en ese caso, su ‘OS’ sabía dónde residía ‘javac’. Así que vamos a contarlo ahora, de esta manera no tienes que escribir la ruta completa cada vez. Tendríamos que añadir esto a nuestro RUTA

Para editar la variable de entorno RUTA en Windows XP/Vista/7/8/10:

  • Panel de control ⇒ Sistema ⇒ Configuración avanzada del sistema
  • Cambiar a la pestaña “Avanzado” ⇒ Variables de entorno
  • En “Variables del sistema”, desplácese hacia abajo para seleccionar “RUTA” ⇒ Editar

No puedes deshacer esto así que ten cuidado. Primero copie su ruta existente al bloc de notas. Luego, para obtener la RUTA exacta a su javac, navegue manualmente hasta la carpeta donde reside javac y haga clic en la barra de direcciones y luego cópielo. Debería verse como c:\Program Files\Java\jdk1.8.0_xx\bin

En el campo “Valor de la variable”, pegue este EN FRENTE de todos los directorios existentes, seguido de un punto y coma (;). NO ELIMINAR ninguna entrada existente.

Variable name  : PATH
Variable value : c:\Program Files\Java\jdk1.8.0_xx\bin;[Existing Entries...]

Ahora esto debería resolverse.

Para sistemas basados ​​en Linux [pruebe aquí][10].

Nota: El comando [javac][5] invoca el compilador de Java.

Luego, el compilador generará un archivo bytecode llamado HelloWorld.class que se puede ejecutar en la [Java Virtual Machine (JVM)][6]. El compilador del lenguaje de programación Java, javac, lee los archivos fuente escritos en el lenguaje de programación Java y los compila en archivos de clase bytecode. Opcionalmente, el compilador también puede procesar las anotaciones que se encuentran en los archivos fuente y de clase utilizando la API de procesamiento de anotaciones Pluggable. El compilador es una herramienta de línea de comandos, pero también se puede invocar mediante la API del compilador de Java.

Para ejecutar su programa, ingrese java seguido del nombre de la clase que contiene el método main (HelloWorld en nuestro ejemplo). Observe cómo se omite .class:

$ java HelloWorld

Nota: El comando [java][7] ejecuta una aplicación Java.

Esto saldrá a su consola:

¡Hola, mundo!

¡Ha codificado y creado con éxito su primer programa Java!

Nota: Para que los comandos de Java (java, javac, etc.) sean reconocidos, deberá asegurarse de lo siguiente:

  • Se instala un JDK (por ejemplo, [Oracle][8], [OpenJDK][9] y otras fuentes)
  • Sus variables de entorno están correctamente [configuradas][10]

Deberá utilizar un compilador (javac) y un ejecutor (java) proporcionados por su JVM. Para averiguar qué versiones ha instalado, ingrese java -version y javac -version en la línea de comando. El número de versión de su programa se imprimirá en la terminal (por ejemplo, 1.8.0_73).


Una mirada más cercana al programa Hola Mundo

El programa “Hello World” contiene un solo archivo, que consta de una definición de clase HelloWorld, un método main y una declaración dentro del método main.

public class HelloWorld {

La palabra clave clase comienza la definición de clase para una clase llamada HelloWorld. Cada aplicación Java contiene al menos una definición de clase ([Más información sobre las clases][11]).

    public static void main(String[] args)  {

Este es un método de punto de entrada (definido por su nombre y firma de public static void main(String[])) desde el cual JVM puede ejecutar su programa. Cada programa Java debería tener uno. Está:

  • público: lo que significa que el método se puede llamar desde cualquier lugar, también desde fuera del programa. Consulte [Visibilidad][12] para obtener más información al respecto.
  • static: significa que existe y puede ejecutarse por sí mismo (a nivel de clase sin crear un objeto).
  • void: lo que significa que no devuelve ningún valor. Nota: Esto es diferente a C y C++ donde se espera un código de retorno como int (la forma de Java es [System.exit()][13]).

Este método principal acepta:

  • Una [matriz][14] (típicamente llamada args) de Strings pasados ​​como argumentos a la función principal (por ejemplo, de [argumentos de línea de comando][15]).

Casi todo esto es necesario para un método de punto de entrada de Java.

Partes no requeridas:

  • El nombre args es un nombre de variable, por lo que puede llamarse como quieras, aunque normalmente se llama args.
  • Si su tipo de parámetro es una matriz (String[] args) o [Varargs][varargs-documentation] (String... args) no importa porque las matrices se pueden pasar a varargs.

Nota: Una sola aplicación puede tener varias clases que contengan un método de punto de entrada (“principal”). El punto de entrada de la aplicación está determinado por el nombre de la clase pasado como argumento al comando java.

Dentro del método principal, vemos la siguiente declaración:

        System.out.println("Hello, World!");

Analicemos esta declaración elemento por elemento:

Elemento Propósito
Sistema esto indica que la siguiente expresión llamará a la clase System, del paquete java.lang.
. este es un “operador de punto”. Los operadores de puntos le brindan acceso a una clase de miembros1; es decir, sus campos (variables) y sus métodos. En este caso, este operador de punto le permite hacer referencia al campo estático out dentro de la clase System.
fuera este es el nombre del campo estático de tipo PrintStream dentro de la clase System que contiene la funcionalidad de salida estándar.
. este es otro operador de punto. Este operador de punto proporciona acceso al método println dentro de la variable out.
imprimir este es el nombre de un método dentro de la clase PrintStream. Este método en particular imprime el contenido de los parámetros en la consola e inserta una nueva línea después.
( este paréntesis indica que se está accediendo a un método (y no a un campo) y comienza a pasar los parámetros al método println.
"¡Hola, mundo!" este es el literal [String][16] que se pasa como parámetro al método println. Las comillas dobles en cada extremo delimitan el texto como una Cadena.
) este paréntesis significa el cierre de los parámetros que se pasan al método println.
; este punto y coma marca el final de la declaración.
Nota: Cada declaración en Java debe terminar con un punto y coma (;).

A continuación, se cierran el cuerpo del método y el cuerpo de la clase.

    }  // end of main function scope
}      // end of class HelloWorld scope 

Aquí hay otro ejemplo que demuestra el paradigma OO. Modelemos un equipo de fútbol con un (¡sí, uno!) miembro. Puede haber más, pero lo discutiremos cuando lleguemos a las matrices.

Primero, definamos nuestra clase Equipo:

public class Team {
    Member member;
    public Team(Member member) {  // who is in this Team?
        this.member = member;  //  one 'member' is in this Team!
    }
}

Ahora, definamos nuestra clase Member:

class Member {
    private String name;
    private String type;
    private int level; // note the data type here
    private int rank; // note the data type here as well

    public Member(String name, String type, int level, int rank) {
        this.name = name; 
        this.type = type;
        this.level = level;
        this.rank = rank;
    }
}

¿Por qué usamos privado aquí? Bueno, si alguien quisiera saber su nombre, debería preguntárselo directamente, en lugar de meter la mano en su bolsillo y sacar su tarjeta de Seguro Social. Este privado hace algo así: evita que entidades externas accedan a sus variables. Solo puede devolver miembros privados a través de funciones getter (que se muestran a continuación).

Después de ponerlo todo junto y agregar los captadores y el método principal como se discutió anteriormente, tenemos:

public class Team {
    Member member;
    public Team(Member member) {  
        this.member = member;  
    }

    // here's our main method
    public static void main(String[] args) {
       Member myMember = new Member("Aurieel", "light", 10, 1); 
       Team myTeam = new Team(myMember); 
       System.out.println(myTeam.member.getName());
       System.out.println(myTeam.member.getType());
       System.out.println(myTeam.member.getLevel());
       System.out.println(myTeam.member.getRank());
    }
}

class Member {
    private String name;
    private String type;
    private int level;
    private int rank;

    public Member(String name, String type, int level, int rank) {
        this.name = name; 
        this.type = type;
        this.level = level;
        this.rank = rank;
    }
    
    /* let's define our getter functions here */
    public String getName() { // what is your name?
        return this.name; // my name is ...
    }
   
    public String getType() { // what is your type?
        return this.type; // my type is ...
    }
    
    public int getLevel() { // what is your level?
        return this.level; // my level is ...
    }
    
    public int getRank() { // what is your rank?
        return this.rank; // my rank is
    }
}

Producción:

Aurieel
light
10
1

Ejecutar en ideone

Una vez más, el método main dentro de la clase Test es el punto de entrada a nuestro programa. Sin el método principal, no podemos decirle a la Máquina Virtual Java (JVM) desde dónde comenzar la ejecución del programa.


1 - Debido a que la clase HelloWorld tiene poca relación con la clase System, solo puede acceder a datos públicos.

[3]: http://stackoverflow.com/questions/1841847/can-i-compile-a-java-file-with-a- different-name-than-the-class [4]: https://www.wikiod.com/es/java/estandar-de-codigo-oficial-de-oracle#Convenciones de nombres [5]: https://www.wikiod.com/es/java/compilador-java—javac [6]: https://en.wikipedia.org/wiki/Java_virtual_machine [7]: http://docs.oracle.com/javase/8/docs/technotes/tools/windows/java.html [8]: http://docs.oracle.com/javase/8/docs/technotes/guides/install/install_overview.html [9]: http://openjdk.java.net/install/ [10]: https://docs.oracle.com/javase/tutorial/essential/environment/paths.html [11]: https://www.wikiod.com/es/java/clases-y-objetos [12]: https://www.wikiod.com/es/java/visibilidad-controlar-el-acceso-a-los-miembros-de-una-clase [13]: https://docs.oracle.com/javase/8/docs/api/java/lang/System.html#exit-int- [14]: https://www.wikiod.com/es/java/arreglos#Creación e inicialización de matrices [15]: https://www.wikiod.com/es/java/primeros-pasos-con-el-lenguaje-java [16]: https://www.wikiod.com/es/java/instrumentos-de-cuerda