Java desde 0: Hola Mundo
Tags: tutorial, java, beginners, spanish
Published: 2021-01-12 20:57:17

Última actualización: 27/1/2020

## ¿Qué haremos?

* [¿Cómo funciona Java?](#section-1) — Teoría
* [¿Qué es la consola Linux y cómo se usa?](#section-2) — Teoría
* [Comandos básicos de Linux](#section-3) — Práctica
* [¿Cómo mostrar texto en la consola?](#section-4) — Práctica

## Tutorial

### ¿Cómo funciona Java? <a name="section-1"></a>

1. Escribes tu código fuente. Es un archivo con la extensión `.java`.

2. Compilas el código. El compilador revisa por errores, y si hay no compilará el código escrito sino arrojará un error.
 
3. Este genera un archivo llamado “*Java bytecode*” y termina con la extensión `.class`, se puede correr en cualquier máquina que tenga el **JVM** (Java Virtual Machine).

![](https://dev-to-uploads.s3.amazonaws.com/i/dunjx6d6g0dllpwhwt8m.png)
  
> Java es especial ya que corre en cualquier aparato electrónico que contenga el JVM, otros lenguajes como C o C++ no funcionan en otras máquinas cuando se compilan.

<br>Así que con Java la ventaja es que donde sea que hay un **JVM**... ¡Funciona!<br><br>

![gif](https://media.giphy.com/media/tsvaf3Bt038MHMOnQQ/giphy.gif)

<br>Para este tutorial usaremos [Gitpod.io](https://www.gitpod.io/) ya que instalar y preparar un entorno de desarrollo es una tarea complicada para algunas personas, necesitas una cuenta de [Github](https://github.com/) para poder usar esta app. Una vez creada tu cuenta de Github haz click [aquí](https://www.gitpod.io/#/https://github.com/CodeWithClassyBear/java-desde-0/tree/master/Hola%20Mundo) para comenzar. Te pedirá iniciar sesión en Github, cuando lo hagas estarás listo para empezar.<br>

### ¿Qué es Linux, la consola y cómo se usa? <a name="section-2"></a>

> Es una familia de sistemas operativos tipo [Unix](https://es.wikipedia.org/wiki/Unix) basados en código abierto en el kernel de [Linux](https://es.wikipedia.org/wiki/GNU/Linux), un kernel de sistema operativo lanzado por primera vez el 17 de septiembre de 1991 por [Linus Torvalds](https://es.wikipedia.org/wiki/Linus_Torvalds). - Wikipedia

<br>Entonces una [dristribución de Linux](https://es.wikipedia.org/wiki/Distribuci%C3%B3n_Linux) es un sistema operativo. Usaremos este para desarrollar.<br>

<br>**Tengo Windows / MacOS. ¿Es esto un problema?**<br>

<br>**No**. Una de las ventajas de usar una distribución de Linux es una terminal basado en UNIX, con Windows puedes descargar sub-sistemas como [Debian](https://www.microsoft.com/en-us/p/debian/9msvkqc78pk6?activetab=pivot:overviewtab), como MacOS ya está basado en [Unix(Darwin)](https://en.wikipedia.org/wiki/Darwin_%28operating_system%29) podemos usar una de sus terminales, no te preocupes mucho por esto por el momento, el entorno de desarrollo Gitpod que usarás tiene una terminal de UNIX es todo lo que tienes que saber.<br>

### Comandos básicos de Linux. <a name="section-3"></a>

Asumiendo que haz iniciado sesión con Github y ya tienes tu entorno en Gitpod empezaremos de una vez.

1. Si ves estás alertas, puedes descartarlas por el momento.

    ![](https://cdn-images-1.medium.com/max/800/1*ak5rzMuvFamSx3c6cN-L_g.png)

2. Escribe `ls` en la pantalla negra más abajo. Está será la terminal, aquí escribimos los comandos que usaremos para controlar el entorno de desarrollo, este entorno es una máquina virtual, es una computadora que tiene ya instalado todo lo que necesitamos, no la tienes de manera física pero si virtual. `ls` es el comando para listar todo los archivos y directorios del entorno

    ![](https://cdn-images-1.medium.com/max/800/1*IehDNsmHNKzwuHWCgyYRaA.png)

    Aquí se ven los archivos del entorno. Estos pueden variar dependiendo del directorio que estés. Comprueba que estés en la ruta “/workspace/java-desde-0”, la letra en color azul.<br><br>

3. Escribe `cd` + *BARRA ESPACIADORA* + ‘Hola Mundo’. Se verá así: `cd ‘Hola Mundo’`, no olvides las **comillas**. `cd` es el comando para cambiar de directorio. Si te haz equivocado de directorio utiliza: `cd ..`.

    ![](https://cdn-images-1.medium.com/max/800/1*Z2zidKzTpzEPalvwhZwUAw.png)

    Comprueba que estés en la ruta “/workspace/java-desde-0/Hola Mundo”, la letra en color azul.<br><br>

4. Una vez cambiado el directorio escribe `ls` nuevamente para ver cuales archivos hay, compilaremos `HolaMundo.java`. Escribe `javac HolaMundo.java` para crear el ejecutable, el comando `javac` revisará el código y si no hay errores creará un ejecutable.

    ![](https://cdn-images-1.medium.com/max/800/1*HVFQytQFUPcN99uuT4r3lQ.png)

    Si la consola no imprime nada o imprime “Picked up JAVA_TOOL_OPTIONS” entonces se ha creado el ejecutable.<br><br>

5. Una vez creado el ejecutable, lo puedes ejecutar usando el comando `java HolaMundo` para ver el resultado de este, **NOTA:** no utilizes `java HolaMundo.class` sino `java HolaMundo`, sin la extensión.

    ![](https://cdn-images-1.medium.com/max/800/1*nLr5VamKzOxjzcf3X3DhSA.png)

6. Se ha imprimido ‘Hola Mundo’, hasta aquí hemos llegado…. No espera veremos código java dentro de poco no desesperes. Al parecer el programa funciona, echemos un vistazo al archivo `HolaMundo.java`. Puedes encontrar la paleta de archivos a tu izquierda, haz click en `HolaMundo.java` para abrirlo.

    ![](https://cdn-images-1.medium.com/max/800/1*Se-R5-_jcbXAoq-LhqN0Ng.png)

7. Verás algo así… Descuida explicaremos todo esto o la mayoría…

    ![](https://cdn-images-1.medium.com/max/800/1*n3hghYc05JlhdNWzngEunQ.png)

Las palabras en verdes oscuro con comentarios, no tienen ninguna función en nuestro programa pero están ahí para explicar al programador que está pasando o alguna nota que quiera dejar.<br>

```java
/*
 * Comentario de
 * varias líneas.
 */
```

Estos se llaman comentarios de bloque, se utiliza cuando el comentario será de múltiples líneas.

```java
/**
 * Comentario para documentar.
 */
```

Estos son iguales a los anteriores pero son para documentar código o sea para escribir explicaciones de como funciona el programa, si notas la diferencia solo tiene una (`*`) más al comienzo.

```java
// Comentarios de una sola línea
```

Estos son un poco diferentes en vez de comenzar con (`/**`) o (`/*`), comienzan con (`//`), estos son de una línea así que si sigues escribiendo en otra línea esta no te será tomada como comentario.

Si escribes palabras sin sentido en el editor de texto se subrayan de rojo indicando que no se entiende las palabras que están ahí, para saber que son comentarios y que no, en el editor se marca de un verde oscuro los comentarios.

![](https://dev-to-uploads.s3.amazonaws.com/i/c2xic8j0of6x9s7b5wi2.png)

![](https://dev-to-uploads.s3.amazonaws.com/i/ura4tfx2i4mm5s2u4a0l.png)
  
    
### ¿Cómo mostrar texto en la consola? <a name="section-4"></a>

La única línea que nos interesa en el momento es la línea 8, se ve así:

![](https://dev-to-uploads.s3.amazonaws.com/i/0g6e0q4rvfthpapho8lu.png)

Si le pasas por arriba al mouse a las palabras (asumiendo que sigues en Gitpod):

* `System`
* `out`
* `println`

El editor de texto dará las explicaciones de este pero yo las resumiré por ti, está línea funciona para plasmar/imprimir cualquier cosa en pantalla. La palabra `System` indica una función del sistema, este producirá una salida (`out`) la cual será imprimir (`println`) lo que sea que este en paréntesis `”Hola Mundo!”` y termina con (`;`), el (`;`) se debe escribir al hacer un comando/enunciado en java, es como escribir (`.`) al final de cada oración. Entonces en resumen `System.out.println(“Hola Mundo”)` significa:<br><br>

*“Querido programa imprime está línea: “Hola Mundo”.”*<br><br>

Bueno tampoco así… pero eso hace esa línea, le dice al programa que debe imprimir, anda cambia “Hola Mundo!” por lo que tu quieras, recuerda que debe esta entre doble comillas.

<br>*¡No olvides guardar el archivo!*<br><br>

![](https://cdn-images-1.medium.com/max/800/1*gtY3yd4-91dRLlP7r_HC5w.png) 

Si le pasas el mouse a la opción “File” te despliega una lista de opciones, presiona “Save” para guardar.

<br>**Bueno, ¿Qué pasa con las otras palabras en el programa? Como estas…**<br><br>

![](https://dev-to-uploads.s3.amazonaws.com/i/5r25dewo1ggldl9x8487.png)

Estas son muchas palabras lo sé, este es el método principal de Java, aquí está el código que solo se va a correr. Te explicaré todas estas palabras en el próximo tutorial y sus importancias. No cambies nada de esto por ahora solo concentrate en cambiar la línea 8 (La que imprime en pantalla).

<br>**Esta bien, pero ¿Qué pasa en esta línea?**<br><br>

![](https://dev-to-uploads.s3.amazonaws.com/i/5rvzrrczk7lzjg0eyhic.png)
  
Aquí declaramos algo que se llama clase o por su nombre en java una `class`. Las clases en java empiezan con la palabra `class` luego le sigue el nombre de la clase. Las clases se usan para organizar el código, digamos que es un estante de libros.

![alfons-morales-YLSwjSy7stw-unsplash](https://dev-to-uploads.s3.amazonaws.com/i/fqred60g772g5u7ieswl.jpg)
 
<br>**Entonces, ¿Un libro sería un método principal?**<br><br>

¡Si! Así es, y podemos tener varios libros o mejor dicho métodos en una clase, en lo que avanzamos veremos más métodos de Java, te recuerdo que ya conoces el método principal.

**Entiendo, pero olvidaste algo ¿Qué son todas estás llaves?**

Bueno te lo explicaré, las llaves indican donde comienza y termina un fragmento de código, así como los libreros que se ven de arriba a abajo y los libros se leen de izquierda a derecha o a menos así me enseñaron.

![](https://dev-to-uploads.s3.amazonaws.com/i/sc0km15zrgvmes9erth7.png) 
 
Ves como comienza la llave al final de escribir el nombre de la clase, cerramos con una llave para decirle al código que la clase termina ahí.<br><br>

![](https://dev-to-uploads.s3.amazonaws.com/i/6p8p2mdr7db5hc8kzz9a.png)

Lo mismo con el método principal.<br><br>

![](https://dev-to-uploads.s3.amazonaws.com/i/m26fl9kyobz37ycmmw8q.png)

Hasta llegar aquí<br><br>

![](https://dev-to-uploads.s3.amazonaws.com/i/63ko7tid0urxg95vqdt4.png)
 
Esta sería la estructura sin código Java.<br><br>

## Ejercicio

Abre el archivo `PeliculasDeStarWars.java` e imprime las películas que más te gusten de la franquicia, y sino haz visto una ¿Qué haces con tu vida? vete abre el Netflix y míralas, te mereces algo por haber llegado hasta aquí no te arrepentirás ;).

En `PeliculasDeStarWars.java` puse una de las que me gustan como ejemplo, mi respuesta está en `PeliculasDeStarWarsRespuesta.java` por si te preguntas.

Gracias por haber llegado hasta aquí, si tienes preguntas o quieres que aclare algo házmelo saber en los comentarios :)

## Para saber más…

* Usa `cd ..` para retroceder un directorio en la terminal.
* Usa `pwd` para imprimir en el lugar en el cual estás en el momento de la terminal, esta será la ruta al directorio actual.
* Al usar `System.out.println` muchas veces puedes ver que el programa salta una línea al imprimir cada oración, utiliza `print` en vez de `println` a ver que pasa.
* Cuando se crea un ejecutable, este siempre tendrá el nombre de la clase por predeterminado, no el nombre del archivo en el que creaste la clase.<br>

---

Si tienes preguntas o alguna sugerencia me puedes dejar un comentario :)<br>

Me encuentro también en [Medium](https://classy-bear.medium.com) haciendo tutoriales.<br>

Donaciones:
* Bitcoin — `bc1qhr9jhlj5wvrkah5v4kkdvf6ggskjpf8m82f5cj`
* BAT o Brave Rewards — `0x391b5DAe375ca6a20fACd0f7afc461fAc56d1864`
* Patreon — [classyBear](https://www.patreon.com/classyBear)

Recursos:
<span>Photo by <a href="https://unsplash.com/@alfonsmc10?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Alfons Morales</a> on <a href="https://unsplash.com/?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></span>
<span>Photo by <a href="https://unsplash.com/@_imkiran?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Sai Kiran Anagani</a> on <a href="https://unsplash.com/@_imkiran?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></span>