Documentación visual de Java
Aprende Java viendo qué pasa por dentro.
Diagramas animados, bytecode paso a paso y la máquina virtual explicada sin humo. Todo lo que ocurre entre tu código y la salida.
javac HelloWorld.javajava HelloWorld¡Hola, mundo!
javap -c es la etapa 3 de la rutaVer la ruta
La ruta
Del código a la pantalla, sin cajas negras
Cinco etapas. La misma ruta que sigue tu programa cada vez que ejecutas java.
Abre una etapa para ver el detalle. También funciona con Enter.
Escribes una clase con un método main y un mensaje.
Escribes una clase con un método main y un mensaje.
public class HelloWorld { public static void main(String[] args) { … } }Revisa los tipos y traduce tu código a bytecode.
Revisa tipos, resuelve imports y traduce tu código a bytecode. Si algo no cuadra, falla aquí.
Instrucciones portables que cualquier JVM entiende.
Instrucciones portables que cualquier JVM entiende. Mira lo que hay dentro:
0: getstatic #7 // Field java/lang/System.out 3: ldc #13 // String ¡Hola, mundo! 5: invokevirtual #15 // Method java/io/PrintStream.println 8: returnCarga la clase, verifica el bytecode y lo ejecuta.
Carga la clase, verifica el bytecode y lo interpreta o lo compila a nativo con JIT.
El programa escribe el resultado en la salida estándar.
El programa escribe en la salida estándar y termina.
El camino
Un recorrido progresivo, de cero a concurrencia
Cada etapa se apoya en la anterior. Puedes leerlo de corrido o ir directo a lo que necesitas hoy.
Fundamentos
La JVM, los tipos y el control de flujo. Empiezas con un Hola, mundo y ves qué hace javac por ti.
8 capítulosProgramación Orientada a Objetos
Clases, encapsulamiento, herencia e interfaces, con diagramas de memoria que se leen de un vistazo.
6 capítulosCollections y Streams
Listas, mapas y conjuntos, más el pipeline funcional de Stream: qué colección usar y cuándo.
6 capítulosConcurrencia
Hilos, estados, locks y memoria compartida. Lo que rompe en producción, explicado igual de claro.
6 capítulos
Visualizaciones
Los estados de un hilo, paso a paso
El ciclo de vida de un Thread. El diagrama se entiende completo sin JavaScript; con los controles puedes probar cada transición y ver cuáles acepta la máquina virtual.
- NEWEl hilo existe, pero todavía nadie llamó a start().
- RUNNABLEEstá en la cola del planificador esperando su turno de CPU.
- BLOCKEDOtro hilo tiene el monitor y este se quedó esperando el lock.
- WAITINGHizo wait() o join(): aguarda que otro hilo lo despierte.
- TERMINATEDEl run() volvió o lanzó una excepción: ya no vuelve.
Estado actual: NEW
NEW: El hilo existe, pero todavía nadie llamó a start().
Todo Java, explicado como se ve.
Sin anuncios, sin registro y sin cookies. Un sitio estático generado en el build, sin backend ni base de datos.
- Estático
- Sin cookies
- Sin cuentas