코드를 작성할 때 무조건 지나쳐야 하는 메서드가 있다. 그건 바로 main()
메서드인데, 우리는 무슨 법처럼 public static void main(String[] args)
를 사용한다. 도대체 어떻게 실행되는 걸꽈?
Java 프로그램을 실행하는 첫 시작이 main()
메서드이다. JVM이나 컴파일러는 Java 프로그램이 실행되기 시작할 때 main 메서드를 관찰한다. 그렇기에 main 메서드는 그것이 시작이라는 표시로 JVM이 인식하게끔 하는 시그니쳐가 필요하다. 그래서 고정된 형식으로 main 메서드를 사용하는 것이다. 만약 그 시그니쳐가 바뀐다면, 프로그램은 컴파일 되지만 실행은 되지 않을 것이다.
java의 실행 파일인 java.exe
가 불리면, 이는 Java Native Interface
를 만들고, JVM에 싣는다. 이때 java.exe
는 실행문을 파싱하여(아마도 띄어쓰기 기준으로..?) 새로운 문자배열을 만들어내고, main()
을 호출한다. 프로그램이 실행을 멈출 때까지 작동하는 데몬 스레드가 이 메인 메서드에 접근한다.
Public
: 접근 지정자
Static
: 키워드 (클래스의 생성과 관계없이 JVM이 메인 메서드를 호출시킬 수 있도록 함)
Void
: 키워드
Java 프로그램은 JVM에서 메인 스레드
로 실행된다. 또한 프로그램과 운영 체제 간에는 직접적인 상호작용이 없기 때문에 종료 상태를 반환할 상대가 없어 void로 설계되었다.
main 메서드가 없이 자바 프로그램을 실행할 순 있다. static 블럭을 활용하면 된다.
https://www.geeksforgeeks.org/java-main-method-public-static-void-main-string-args/