Rispetto a C/C++ main() deve sempre restituire un numero intero (zero per indicare il successo e non zero per indicare un errore). Posso capire che mentre il programma viene eseguito diventa un processo e ogni processo dovrebbe avere uno stato di uscita, che otteniamo facendo echo $? dalla shell dopo che il processo è finito.non restituisce nulla. Perché?
Ora non capisco perché il metodo principale non restituisce nulla in Java? Ha qualcosa a che fare con il fatto che il programma viene eseguito su JVM e il processo JVM è ripristinabile per il ritorno dello stato di uscita?
Si prega di chiarire.
Grazie,
Roger
Intendi dire se non ho un System.exit() nel mio programma, JVM lo aggiungerà con 0. E se il mio programma ha una chiamata esplicita con valore diverso da zero, verrà usato come uscita stato? – gameover
Il processo Java non termina necessariamente se il metodo principale termina, rendendolo irragionevole (come fa notare kai1968) per restituire il codice di uscita del processo dal metodo principale. – jarnbjo
Ancora sbagliato. Non è necessario utilizzare strumenti come kill o System.exit per interrompere l'applicazione Java multithread. Suggerimento: anche la più semplice applicazione Java "Hello world" è mutlithreaded (la Java VM inizia i propri thread per problemi di gestione diversi) e termina quando viene eseguito il metodo principale. – jarnbjo