Herramienta de Formato Java
¿Qué es el Formato Java?
El formateador Java reorganiza código Java con indentación, saltos de línea y estructura coherentes para que clases, métodos, bloques, genéricos, anotaciones y flujo de control sean más fáciles de leer. Es útil con fragmentos pegados, código generado, preparación de revisiones, ejemplos de aprendizaje y archivos inconsistentes por ajustes distintos de editor. El formateo mejora legibilidad y colaboración, pero no corrige automáticamente lógica, errores de compilación, imports faltantes, mal uso de APIs ni reglas de estilo propias del proyecto. En repositorios productivos conviene comparar la salida con el formateador del equipo, la herramienta de build o la convención de CI para evitar ruido en los diffs.
Uso
Cómo usar
- Pega o escribe código Java en el cuadro de entrada izquierdo
- Selecciona el tamaño de sangría (2 espacios, 4 espacios o tabulador)
- Pulsa 'Formatear' para embellecer el código, o 'Minimizar' para comprimirlo
- Consulta los resultados a la derecha (con resaltado de sintaxis)
- Pulsa 'Copiar' para llevarlo al portapapeles
Descripción de opciones
Consejos de código
- El formateo mejora la legibilidad, pero no compila ni comprueba los tipos del código Java. Ejecuta tu compilación habitual o las verificaciones del IDE después de editar.
- Minimizar el código fuente Java rara vez es útil en compilaciones de producción; mantén un formato legible para revisiones, seguimientos de pila y mantenimiento futuro.
Casos de uso
Principio técnico
El formateo Java se basa en análisis léxico y construcción de AST. El analizador léxico escanea el fuente carácter por carácter y produce tokens: palabras clave (class, public, static, y las demás palabras reservadas), identificadores (nombres de variables y clases), literales (números, cadenas, caracteres), operadores (+, -, ==, &&, ...), separadores ({ } ( ) ; ,) y comentarios (//, /* */). El parser convierte el flujo de tokens en un árbol de sintaxis abstracta (AST) siguiendo la Especificación del Lenguaje Java, reconociendo definiciones de clases, cuerpos de métodos, bloques de sentencias, estructuras de flujo de control, anotaciones y otras unidades sintácticas. El formateador recorre el AST y regenera el código siguiendo una guía de estilo como Google Java Style: la indentación aumenta con la profundidad del bloque, el ancho de línea se limita a 100 columnas, los operadores llevan espacios a ambos lados, las comas van seguidas de un espacio y las llaves de apertura permanecen en la misma línea (estilo K&R). El manejo de anotaciones es un caso especial en el formateo Java: una sola anotación permanece en la misma línea que el método; listas de anotaciones más largas se dividen en líneas alineadas en los parámetros, con cada anotación en su propia línea.
- Análisis léxico: reconoce las 50 palabras clave de Java, identificadores, literales, operadores y comentarios, y produce un flujo de tokens.
- Construcción del AST: construye el AST según las reglas del JLS, manejando correctamente clases, métodos, flujo de control, lambdas y try-with-resources.
- Reglas de indentación: el estilo Google usa 4 espacios por nivel por defecto, con un ancho de línea de 100 columnas; las líneas que exceden el límite se ajustan automáticamente.
- Estrategia de saltos de línea: las cadenas de métodos largas, listas de parámetros y anotaciones se ajustan en comas o puntos, con líneas de continuación alineadas al primer carácter de la línea anterior.
- Manejo de anotaciones: una sola anotación permanece en la misma línea; múltiples anotaciones pueden estar en una línea o una por línea, decidido por la longitud y las reglas de alineación de parámetros.
- Preservación de comentarios: mantiene los comentarios // y /* */ en sus posiciones originales; la eliminación es una opción durante la minificación.
Ejemplos
Formatear una definición de clase
Entrada: public class User{private Long id;private String name;public User(Long id,String name){this.id=id;this.name=name;}}
Salida:
public class User {
private Long id;
private String name;
public User(Long id, String name) {
this.id = id;
this.name = name;
}
}Formatear una cadena de métodos
Entrada: List<String> result=list.stream().filter(s->s.startsWith("a")).map(String::toUpperCase).sorted().collect(Collectors.toList());
Salida:
List<String> result = list.stream()
.filter(s -> s.startsWith("a"))
.map(String::toUpperCase)
.sorted()
.collect(Collectors.toList());Ajustar anotaciones en varias líneas
Entrada: @Override public ResponseEntity<User> getUser(@PathVariable Long id,@RequestParam(defaultValue="10") int size){...}
Salida:
@Override
public ResponseEntity<User> getUser(
@PathVariable Long id,
@RequestParam(defaultValue = "10") int size) {
...
}Preguntas frecuentes
¿Qué estilo de Java utiliza?
Los valores predeterminados habituales son Google Java Style o las convenciones de Sun/Oracle: indentación de 4 espacios, llaves al estilo K&R, ancho de línea de 100 columnas. Algunas builds exponen opciones para cambiar de estilo. Las reglas exactas de cualquier guía de estilo son sutiles: ejecuta el formateador, lee la salida y fija una configuración.
¿El formateador entiende Java moderno?
Depende de la versión del parser. Records, sealed classes, switch expressions, text blocks y pattern matching son incorporaciones recientes; los parsers antiguos pueden no manejarlos. Prueba con un fragmento: si se formatea limpiamente, vas bien; si lanza un error, comprueba la versión del parser.
¿Arreglará los imports o las variables no usadas?
No. El formateado solo cambia los espacios en blanco y la colocación de las llaves. El análisis estático (organizar imports, eliminar lo no usado) requiere un IDE real o una herramienta como google-java-format con --skip-removing-unused-imports desactivado.
¿Se sube mi código fuente?
No. El formateado se ejecuta en tu navegador a través de un parser de Java basado en JS. El código no se transmite. Aun así, evita pegar código propietario si tu política de seguridad prohíbe cualquier exposición a herramientas web.
¿Coincidirá con lo que produce IntelliJ o Eclipse?
Probablemente no exactamente. Cada IDE tiene su propio formateador con miles de opciones. Usa este para formateo puntual; para consistencia de equipo, utiliza una herramienta forzada en CI como google-java-format o Spotless integrada en tu build.
¿Puede minificar Java?
Java es un lenguaje compilado: la minificación no se aplica como en JS. La optimización de archivos .class la hacen los compiladores y ProGuard en tiempo de build. Esta página solo formatea a nivel de código fuente.
¿Por qué se añaden líneas en blanco extra a mi código?
Muchas guías de estilo exigen una línea en blanco entre miembros de clase o entre métodos. El formateador las inserta para cumplirlas. Si prefieres código compacto, sobrescribe las opciones de estilo correspondientes.