![]() |
Por mucho que se piense en todos los casos, siempre aparece un usuario que hace algo que nadie imaginó. Por eso conviene validar todo lo que llega de fuera.

Por si las dudas…
Una forma exagerada de decir algo muy serio: escribe código pensando en quien lo leerá después. Muchas veces esa persona eres tú mismo, seis meses más tarde.
![]() |
Linus Torvalds empezó Linux como un hobby, «por diversión», como tituló después su autobiografía. Contamos su historia en Linus Torvalds, la mente detrás de Linux.
Evita los problemas de instalación
Nunca instales una versión nueva de Eclipse sobre una versión antigua. Renombra la instalación antigua para quitarla del camino y descomprime la versión nueva en un directorio limpio.
Recupera tu workspace dañado
Un workspace dañado es una causa común de problemas entre muchos desarrolladores. Si tu instalación de
eclipse comienza a tener errores o un comportamiento inestable, puede que sea tiempo de darle un nuevo comienzo. Ejecuta
eclipse con la opción -clean y todo los datos en cache y de ejecución serán eliminados. Esto a menudo ayuda a resolver algunos problemas con plug-ins y mejora la estabilidad en general.
Incrementa el espacio de memoria
Cuando se agregan nuevos plugins al nucleo de funcionalidad de
eclipse o cuando se necesita usar plug-ins de terceros, los requerimientos de memoria de eclipse se incrementan. La memoria default configurada para eclipse deja de ser suficiente para muchos proyectos de tipo empresarial y eso causa una respuesta lenta por parte del IDE. Si comienzas a tener errores de falta de memoria o respuesta lenta, quizá debas incrementar los valores por default establecidos en el archivo eclipse.ini en el directorio de instalación. En particular, si llegas a tener un error del tipo «PermGem» (permanent generation), debes incluir esta línea al final del archivo y reiniciar eclipse
XX:MaxPermSize=256m
Usa la menor cantidad de memoria menor que puedas pero que sea suficiente para ejecutar bien tus proyectos.
Edicion Side by side
Puedes editar un mismo archivo desde dos puntos diferentes usando el comando Window>New Editor. Es mas cómodo y mejora la productividad.
Deja que mejore tu código automáticamente
Configura Eclipse para que formatee el código automáticamente y organice los «imports» cada vez que salvas. Usa la opción en Window>Preferences>Java Editor>Save Actions para habilirtar estas opciones. Esta ventana de dialogo te permitirá configurar acciones como la de remover «casts» incesarios o agregar notaciones faltantes. Configura tu eclipse para optimizar la compilación, formateo y estilo de código.
Utiliza los teclas de aceso directo
Esto mas productivo y conveniente usar las teclas de acceso directo para ejecutar algunas tareas en eclipse en lugar de buscar las opciones que hacen lo mismo en los menús de navegación. Por ejemplo al buscar las referencias de una variable, método o una clase pueden ser mas fácilmente encontradas mediante el acceso directo Ctrl+Shif+g. Busca alguna ficha tácnica con todos los accesos directos de la IDE, son muy comunes y fáciles de encontrar.
via: javacodegeeks.com
Durante casi treinta años, todo programa de Java empezó por public static void main(String[] args). ¿Por qué cada una de esas palabras? ¿Qué pasa si lo declaras privado? Y una novedad: desde Java 25 ya no hace falta escribirlo así.
También te puede interesar
public class Privado {
private static void main(String[] args) {
System.out.println("hola");
}
}javac Privado.java java Privado
salidaError: Main method not found in class Privado, please define the main method as: public static void main(String[] args) or a JavaFX application class must extend javafx.application.Application [código 1]
Compila sin protestar, porque para el compilador es un método privado más. El que falla es el lanzador, el programa java, al buscar por dónde empezar: no encuentra un main que pueda llamar y termina con código 1. Es el mismo mensaje en Java 21 y en Java 25.
| Palabra | Por qué |
|---|---|
public | Quien llama al método es el lanzador, desde fuera de la clase y del paquete. Necesita poder verlo. |
static | Al arrancar no existe ningún objeto de la clase. Un método estático se puede llamar sin crear uno. |
void | El programa no devuelve su resultado con return. El código de salida que ve el sistema operativo se fija con System.exit(n). |
String[] args | Los argumentos de la línea de órdenes, ya separados. args[0] es el primero, no el nombre del programa. |
El void es el que más se explica mal. No tiene que ver con que Java sea multiplataforma: un int es igual en todas partes. Es una decisión de diseño. En Java el programa puede tener varios hilos, y terminar main no tiene por qué terminar el programa, así que no tendría sentido que su return fuera el código de salida. Para eso está System.exit:
public class Codigo {
public static void main(String[] args) {
if (args.length == 0) {
System.err.println("falta el nombre del archivo");
System.exit(2);
}
System.out.println("procesando " + args[0]);
}
}java Codigo / java Codigo datos.csvfalta el nombre del archivo [código 2] procesando datos.csv [código 0]
Si main termina con normalidad, el código es 0. Si se escapa una excepción, el programa termina con código 1, sin necesidad de llamar a nada:
java Fallaantes del error Exception in thread "main" java.lang.NumberFormatException: For input string: "doce" at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67) at java.base/java.lang.Integer.parseInt(Integer.java:565) at java.base/java.lang.Integer.parseInt(Integer.java:662) at Falla.main(Falla.java:4) [código 1]
Java 25 incorpora de forma definitiva los archivos fuente compactos y los main de instancia. Para un programa pequeño basta con esto:
void main() {
IO.println("hola desde un main de Java 25");
}java Moderno.javahola desde un main de Java 25
Sin clase, sin public, sin static y sin args. El compilador envuelve el archivo en una clase implícita, e IO.println es un atajo nuevo para escribir en la consola. Dentro de una clase normal, el main también puede ser de instancia:
public class Instancia {
private final String saludo = "hola desde un main de instancia";
void main() {
System.out.println(saludo);
}
}java Instanciahola desde un main de instancia
Si el main no es estático, el lanzador crea primero un objeto con el constructor sin parámetros y después llama al método. Por eso aquí se puede usar el campo saludo directamente.
En Java 21 nada de esto funciona sin activar las funciones en pruebas: el archivo compacto no compila, y la clase Instancia da el mismo «Main method not found» que la de antes.
javac Moderno.java — Java 21Moderno.java:1: error: unnamed classes are a preview feature and are disabled by default.
void main() {
^
(use --enable-preview to enable unnamed classes)| Forma | Java 21 | Java 25 |
|---|---|---|
public static void main(String[] args) | Sí | Sí |
static void main(), sin public ni parámetros | No | Sí |
void main() de instancia, en una clase | No | Sí |
void main() suelto, sin clase | No | Sí |
private static void main(String[] args) | No | No |
El main puede ser público, protegido o de paquete, pero nunca privado. Y si una clase tiene dos main válidos, gana el que recibe String[] args:
public class Ambos {
public static void main(String[] args) {
System.out.println("el de String[] args");
}
static void main() {
System.out.println("el que no tiene parámetros");
}
}java Ambosel de String[] args
La forma clásica sigue funcionando igual, y es la que encontrarás en casi todo el código existente. Las nuevas están pensadas para empezar y para programas cortos, como los de nuestro curso de Java.
Entrada publicada en 2012 y revisada en octubre de 2026. Todo el código se compiló y se ejecutó con Java 25 LTS en un contenedor limpio; las salidas están copiadas de esa ejecución.