✔️ 메인 메소드(main method)의 역할
자바 이외에도 C언어 등 프로그래밍 언어에는 메인 메소드/메인 함수가 존재한다. 과연 이 메인의 역할이라는게 뭘까? 왜 존재하는걸까?
메인 메소드 및 함수는 프로그램 실행을 위한 시작 지점 역할을 한다.
프로그래밍이 시작되는 메모리 할당 시점부터 진입을 위한 함수가 필요하다.
그러나, 메인 메소드가 존재하지 않으면 프로그램은 도대체 어떤 코드부터 읽어서 어떻게 시작해야될지를 모른다. 그렇기에 이 메인 메소드가 존재해야 프로세스화 될 수 있고 실행이 될 수 있다.
메인 메소드가 반드시 있어야 프로그램으로써 가치를 만들어갈 수 있다.
✔️ 매개변수 String[] args
자바의 메인 메소드 코드를 살펴보자.
public static void main(String[] args) {}
매개 변수로 String[] args를 받는데 이게 과연 무엇일까?
The Java Virtual Machine starts execution by invoking the method main of some specified class, passing it a single argument, which is an array of strings.
(자바 가상 머신(JVM)은 특정 클래스의 메인 메서드를 호출함으로써 프로그램 실행을 시작하는데,이 때 String 배열 타입의 인자 하나를 전달합니다.)
─ Java Language Specification, 12.1. [Java Virtual Machine Startup]
우리가 메소드를 작성할때와 마찬가지로 매개변수명이 반드시 args일 필요는 없다. 무엇이든 상관 없다.
args는 어렵게 생각 할 필요 없다. 프로그램을 시작할때 가변적으로 변화하고 싶은 값을 넘기고 싶을 때마다 코드를 고쳐서 계속 컴파일 하는것보다는 외부 변수를 바인딩해서 그 변수를 그대로 출력하는것이 훨씬 유동적이다.
그렇기에 외부에서 변수를 input으로 받아들이기 위해서 존재한 command line arguments라고 이해하면 된다.
Eclipse와 같은 IDE로 자바를 이용하는 요즘, 실은 이 메인 메소드에 input을 전달할 일이 거의 없긴 하다. 그래서 이 String[] args의 의미가 뭔지 생각하지 않고 넘어가는 경우도 많을 것이다.
그러나 이런 프로그래밍 언어도 누군가 설계한 것이고 설계의 의도가 있다. 따라서, 간단한 내용도 의미를 한번 분석해보고 설계자의 의도를 파악하는 시간을 가져보면 좋겠다.
'Programming > Java,Back-end' 카테고리의 다른 글
[Java] 익명 클래스와 람다(Lambda) 정리 (0) | 2024.10.29 |
---|---|
[Gradle] runtimeOnly, implementation, compileOnly, api 차이 (0) | 2024.10.26 |
BCrypt matches 동작 방식 : 매번 다른 해싱에도 일치 검증 가능한 이유 (0) | 2024.10.25 |
ObjectMapper 싱글톤 빈으로 사용해도 될까? (1) | 2024.09.14 |
DAO와 Repository는 다른 개념일까?(차이를 구분할때의 장점) (2) | 2024.05.01 |