DEV Community

Cover image for Java - instalación y configuración en Ubuntu
Oscar Pincho
Oscar Pincho

Posted on

Java - instalación y configuración en Ubuntu

Logo - java

Recomiendo ver antes - instalacion de Homebrew y asdf en ubuntu ( es corto son 5 comandos)


📘 Documentación Oficial

Java - Documentación Oficial
Java - On DevDocs.io


⭐ Frameworks Populares (ordenado de menor a mayor curva)


🛠️ Instalación de Java en Ubuntu

sudo apt update
sudo apt install openjdk-21-jdk
Enter fullscreen mode Exit fullscreen mode

Verificar instalación:

java --version
javac --version
Enter fullscreen mode Exit fullscreen mode

🍺 Instalación con Homebrew

brew install openjdk
Enter fullscreen mode Exit fullscreen mode

Agregar Java al PATH (si brew lo indica):

echo 'export PATH="/home/linuxbrew/.linuxbrew/opt/openjdk/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
Enter fullscreen mode Exit fullscreen mode

📦 Gestor de Dependencias Estándar (Maven / Gradle)

Consultar versión de Maven:

mvn --version
Enter fullscreen mode Exit fullscreen mode

Consultar versión de Gradle:

gradle --version
Enter fullscreen mode Exit fullscreen mode

🔧 Instalación con ASDF

Dependencias del sistema

sudo apt update
sudo apt install -y curl git unzip zip
Enter fullscreen mode Exit fullscreen mode

Instalar plugin + versión

asdf plugin add java
asdf list-all java

# instalar distintas versiones
asdf install java openjdk-21.0.2
asdf install java temurin-17.0.10

# Configurar una version global
asdf global java openjdk-21.0.2

# Configurar una version local
asdf local java temurin-17.0.10
Enter fullscreen mode Exit fullscreen mode

Ejemplo: .tool-versions

java openjdk-21.0.2
Enter fullscreen mode Exit fullscreen mode

📝▶️ Crear y ejecutar un archivo Java

Crear archivo:

touch Hola.java
Enter fullscreen mode Exit fullscreen mode

Contenido de Hola.java

public class Hola {
    public static void main(String[] args) {
        System.out.println("Hola Mundo desde Java!");
    }
}
Enter fullscreen mode Exit fullscreen mode

💻 Compilar y ejecutar:

javac Hola.java
java Hola
Enter fullscreen mode Exit fullscreen mode

quieres saber mas?


🟦 Ejemplo básico en Java

🗂️🌐 Servidor Web de archivos estáticos.

*Nota: Java incluye un servidor HTTP básico (HttpServer). No necesitas frameworks.*

Que Hace:

  1. Define el nombre del parámetro de consulta (query parameter)
  2. Obtiene el valor desde la URL
  • stripHtmlTags(text): elimina etiquetas HTML
  1. Dibuja la variable recibida dentro de un <h1>

📝 Crear archivo: touch WebServer.java

📦 Contenido de WebServer.java

import com.sun.net.httpserver.HttpServer;
import com.sun.net.httpserver.HttpExchange;

import java.io.IOException;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;

public class WebServer {

    public static void main(String[] args) throws Exception {

        HttpServer server = HttpServer.create(new InetSocketAddress(7000), 0);

        server.createContext("/", (HttpExchange exchange) -> {

            String query = exchange.getRequestURI().getQuery();
            String username = "invitado";

            if (query != null && query.startsWith("username=")) {
                username = URLDecoder.decode(
                        query.replace("username=", ""),
                        StandardCharsets.UTF_8
                );
                username = stripHtmlTags(username);
            }

            String response = """
                <!DOCTYPE html>
                <html lang="es">
                <head>
                    <meta charset="UTF-8">
                    <title>Hola</title>
                </head>
                <body style="text-align:center">
                    <h1>Hola, %s</h1>
                </body>
                </html>
                """.formatted(username);

            exchange.getResponseHeaders().add("Content-Type", "text/html");
            exchange.sendResponseHeaders(200, response.getBytes().length);

            OutputStream os = exchange.getResponseBody();
            os.write(response.getBytes());
            os.close();
        });

        server.start();
        System.out.println("Servidor corriendo en http://localhost:7000");
        System.out.println("Prueva en http://localhost:7000?username=Homero");
    }

    private static String stripHtmlTags(String input) {
        return input.replaceAll("<[^>]*>", "");
    }
}
Enter fullscreen mode Exit fullscreen mode

▶️ Compilar y ejecutar

javac WebServer.java
java WebServer
Enter fullscreen mode Exit fullscreen mode

👉 visitar:
http://localhost:7000/?username=Homero


⚙️🧩 Json API Rest

Que Hace:

  1. Lee los datos desde un archivo data.json
  2. Expone 2 endpoints:
  • Lista de personajes en /characters
  • Personaje por id en /characters/:id

Ejemplo de archivo: data.json

[
  {
    "id": 1,
    "age": 39,
    "name": "Homer Tompson",
    "portrait_path": "https://cdn.thesimpsonsapi.com/500/character/1.webp"
  },
  {
    "id": 2,
    "age": 39,
    "name": "Marge Simpson",
    "portrait_path": "https://cdn.thesimpsonsapi.com/500/character/2.webp"
  }
]
Enter fullscreen mode Exit fullscreen mode

📝 Crear archivo: touch ApiServer.java

▶️ Contenido del archivo: ApiServer.java

import com.sun.net.httpserver.HttpServer;
import com.sun.net.httpserver.HttpExchange;

import java.io.IOException;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.nio.file.Files;
import java.nio.file.Path;

public class ApiServer {

    private static String jsonData;

    public static void main(String[] args) throws Exception {

        jsonData = Files.readString(Path.of("data.json"));

        HttpServer server = HttpServer.create(new InetSocketAddress(7001), 0);

        server.createContext("/characters", (HttpExchange exchange) -> {

            String path = exchange.getRequestURI().getPath();
            exchange.getResponseHeaders().add("Content-Type", "application/json");

            // GET /characters
            if (path.equals("/characters")) {
                send(exchange, 200, jsonData);
                return;
            }

            // GET /characters/:id
            if (path.startsWith("/characters/")) {
                String id = path.replace("/characters/", "");

                if (jsonData.contains("\"id\": " + id)) {
                    send(exchange, 200, jsonData);
                } else {
                    send(exchange, 404, "{\"error\":\"Personaje no encontrado\"}");
                }
                return;
            }

            send(exchange, 404, "{\"error\":\"Ruta no encontrada\"}");
        });

        server.start();
        System.out.println("Servidor corriendo en http://localhost:7001/characters");
    }

    private static void send(HttpExchange exchange, int status, String body) throws IOException {
        exchange.sendResponseHeaders(status, body.getBytes().length);
        OutputStream os = exchange.getResponseBody();
        os.write(body.getBytes());
        os.close();
    }
}
Enter fullscreen mode Exit fullscreen mode

▶️ Compilar y ejecutar

javac ApiServer.java
java ApiServer
Enter fullscreen mode Exit fullscreen mode

👉 visitar:
http://localhost:7001/characters

Para probar el endpoint por id:
http://localhost:7001/characters/1


Top comments (0)