본문 바로가기
코딩테스트/자바 Java

자바 Java | 자바 프로그램 개발과 실행: 소스코드 작성부터 main 메소드, 클래스파일 생성, 실행과정까지 상세히 알아보기

by YUNI Heo 2023. 1. 9.
반응형

 

✅ 자바 프로그램 개발 과정

  • 자바 프로그램 코드가 포함된 소스파일(.java)을 작성한다.
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

  • 소스파일(.java)을 컴파일하여 클래스파일(.class)을 생성하기 위해서 자바 컴파일러(javac.exe)를 실행한다.
javac HelloWorld.java

  • 생성된 클래스파일(.class)을 실행하기 위해 자바 인터프리터(java.exe)를 실행한다.
java HelloWorld

 

✅ 자바 프로그램 실행 과정

  • 프로그램의 실행에 필요한 클래스파일(.class)을 로드한다.
    • MyProgram은 실행하고자 하는 클래스의 이름을 나타내고 forName() 메서드를 사용하여 클래스를 동적으로 로드한다.
Class<?> clazz = Class.forName("com.example.MyProgram");

  • 클래스파일(.class)을 검사한다.
    •  getDeclaredMethod() 메서드를 사용하여 MyProgram 클래스에 선언된 main() 메서드를 검사한다. 
    • main() 메서드는 자바 프로그램의 시작점이며, String[] 형식의 인수를 받는다.
Method mainMethod = clazz.getDeclaredMethod("main", String[].class);

  • 지정된 클래스 class에서 main(String[] args)을 호출한다.
    • invoke() 메서드를 사용하여 MyProgram 클래스에 선언된 main() 메소드를 호출한다. 
    • 첫 번째 인수로는 메서드를 호출할 객체를 지정하며, static 메서드인 main()의 경우 객체가 필요하지 않으므로 null을 지정한다. 
    • 두 번째 인수로는 main() 메서드에 전달할 인수를 지정하며, String[] 형식의 인수를 전달하기 위해 빈 배열을 생성하여 전달한다.
mainMethod.invoke(null, (Object) new String[0]);

  • main 메서드의 첫 줄부터 코드가 실행되고 마지막 코드까지 실행한다.
public static void main(String[] args) {
    System.out.println("Hello, World!");
}

  • 프로그램이 실행되는 도중 예외가 발생하지 않고, main() 메서드가 정상적으로 실행을 마치면 프로그램은 종료된다.

  • 파일이나 네트워크 연결 등의 자원들은 프로그램이 종료될 때 자동으로 반환된다.

 

💡 main 메소드

자바의 main 메서드는 자바 프로그램을 실행하기 위해 반드시 작성해야 하는 특별한 메서드이다.

 

  • main 메서드가 클래스 외부에서 호출되기 때문에 반드시 public static으로 선언되어야 한다.
  • main 메서드는 반환값이 없어야 하므로 void를 사용한다.
  • 자바 가상 머신이 프로그램을 실행할 때 찾기 위해 메소드 이름이 main이어야 한다.
  • main 메서드는 매개변수로 String 배열을 받는다.
public static void main(String[] args) {
    // 실행 코드 작성
}
반응형