Primul program: main simplificat

Subiect din roadmap-ul Java și Spring Boot · parte din „Introducere în Java”

Metoda main este punctul de intrare obligatoriu al oricărui program Java standard, fiind prima funcție executată de JVM (Java Virtual Machine). În practică, indiferent cât de complexă devine arhitectura aplicației tale cu Spring Boot sau microservicii, tot acest punct de start rămâne fundamental pentru debugging, deployment și înțelegerea fluxului de execuție. Stăpânirea sa corectă este esențială pentru a evita erori de compilare și pentru a scrie cod curat, ușor de testat.

Concepte cheie

  • Public: Specificatorul de acces permite ca metoda main să fie vizibilă și apelabilă din exteriorul clasei, fiind necesar pentru JVM.
  • Static: Indică faptul că metoda aparține clasei, nu unei instanțe, permițând rularea ei înainte de crearea oricărui obiect.
  • void: Semnifică absența unei valori returnate, deoarece main inițiază execuția, dar nu întoarce date către sistemul de operare în mod direct.
  • main: Este numele convențional impus de specificația Java; schimbarea lui duce la eroarea „Main method not found”.
  • String[] args: Permite transmiterea de argumente de linie de comandă către aplicație, utile pentru configurări rapide sau scripturi automate.
  • Clasa publică: Numele fișierului .java trebuie să coincidă exact cu numele clasei care conține main.
  • JVM Entry Point: Este contractul standard prin care mașina virtuală identifică unde începe logica de business principală.

Exemplu practic

Un scenariu real implică citirea unui parametru de configurare trimis la rulare. Iată cum arată o implementare robustă:

public class App {
    public static void main(String[] args) {
        // Verificăm dacă s-a primit un argument
        if (args.length > 0) {
            System.out.println("Salut, " + args[0] + "!");
        } else {
            System.out.println("Te rog să introduci un nume.");
        }
    }
}

La rulare cu java App Ion, output-ul va fi „Salut, Ion!”. Acest pattern simplu este baza pentru citirea configurațiilor în aplicațiile enterprise înainte de inițializarea containerului Spring.

Greșeli frecvente

  1. Modificatori lipsă sau extra: Scurtarea semnăturii la public void main(String[] args) sau adăugarea static lipsei cauzează erori de compilare majore.
  2. Nume incorect al clasei: Dacă clasa este public, fișierul trebuie să se numească exact NumeClasa.java. Orice discrepanță blochează build-ul.
  3. Ignorarea args: Multe aplicații producătoare au nevoie de parametri (port, URL DB). Ignorarea acestui array limitează flexibilitatea aplicației.
  4. Cod logic direct în main: Deși funcționează, punerea întregii logici de business în main face codul greu de testat unitar și de întreținut.

Întrebări de interviu

Întrebare: De ce metoda main trebuie să fie static? Răspuns: Pentru că JVM are nevoie să o apeleze înainte de a crea orice instanță a clasei. Dacă nu ar fi statică, ar trebui să instanțiem clasa mai întâi, ceea ce creează o buclă logică imposibil de rezolvat.

Întrebare: Ce se întâmplă dacă modifici public în private la main? Răspuns: Codul compilează, dar la rulare primești o eroare NoSuchMethodError. JVM caută explicit o metodă publică pentru a intra în aplicație.

Întrebare: Poți avea mai multe metode main într-un proiect? Răspuns: Da, poți avea mai multe clase cu câte un main, dar JVM va executa doar metoda main din clasa specificată la comanda de rulare (java NumeClasa).

Exercițiu

Scrie o clasă numită CalculatorSimple cu un main care primește doi parametri numerici de la linia de comandă (args[0] și args[1]). Converteste acești parametri din String în int folosind Integer.parseInt(). Afișează suma lor. Gestionează excepția NumberFormatException într-un bloc try-catch pentru a afișa un mesaj prietenos dacă utilizatorul introduce litere în loc de numere. Timp estimat: 45 minute.

Resurse gratuite

Alte subiecte din „Introducere în Java”