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)
- Spark Java — Minimalista, liviano.
- Javalin — Simple, moderno.
- Spring Boot — Completo, enterprise.
🛠️ Instalación de Java en Ubuntu
sudo apt update
sudo apt install openjdk-21-jdk
Verificar instalación:
java --version
javac --version
🍺 Instalación con Homebrew
brew install openjdk
Agregar Java al PATH (si brew lo indica):
echo 'export PATH="/home/linuxbrew/.linuxbrew/opt/openjdk/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
📦 Gestor de Dependencias Estándar (Maven / Gradle)
Consultar versión de Maven:
mvn --version
Consultar versión de Gradle:
gradle --version
🔧 Instalación con ASDF
Dependencias del sistema
sudo apt update
sudo apt install -y curl git unzip zip
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
Ejemplo: .tool-versions
java openjdk-21.0.2
📝▶️ Crear y ejecutar un archivo Java
Crear archivo:
touch Hola.java
Contenido de Hola.java
public class Hola {
public static void main(String[] args) {
System.out.println("Hola Mundo desde Java!");
}
}
💻 Compilar y ejecutar:
javac Hola.java
java Hola
🟦 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:
- Define el nombre del parámetro de consulta (query parameter)
- Obtiene el valor desde la URL
- stripHtmlTags(text): elimina etiquetas HTML
- 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("<[^>]*>", "");
}
}
▶️ Compilar y ejecutar
javac WebServer.java
java WebServer
👉 visitar:
http://localhost:7000/?username=Homero
⚙️🧩 Json API Rest
Que Hace:
- Lee los datos desde un archivo
data.json - 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"
}
]
📝 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();
}
}
▶️ Compilar y ejecutar
javac ApiServer.java
java ApiServer
👉 visitar:
http://localhost:7001/characters
Para probar el endpoint por id:
http://localhost:7001/characters/1

Top comments (0)