1. 스프링)기술면접질문
1)JVM 이란 무엇이고 왜 필요한지 설명해주실 수 있을까요?
JVM(Java Virtual Machine)은 자바 애플리케이션을 실행하기 위한 가상의 컴퓨터 환경을 제공합니다. 자바로 작성된 프로그램은 어떤 운영체제에서도 실행될 수 있도록, JVM이 중간에서 자바 바이트 코드를 해당 운영체제가 이해할 수 있는 코드로 변환해주는 역할을 합니다. 이러한 특성 덕분에 "한 번 작성하면 어디서든 실행된다(Write Once, Run Anywhere)"는 자바의 가장 큰 장점 중 하나를 실현할 수 있습니다.
JVM의 주요 기능과 필요성
이식성: JVM 덕분에 자바 애플리케이션은 다양한 운영체제에서 실행될 수 있습니다. 이는 자바 프로그램이 운영체제에 종속되지 않고, JVM이 설치된 모든 환경에서 실행될 수 있음을 의미합니다.
보안: JVM은 자바 코드를 검증하고 실행하기 전에 보안 검사를 수행합니다. 이로써 악성 코드의 실행을 방지하고 안전한 실행 환경을 제공합니다.
메모리 관리: JVM은 시스템 메모리를 효율적으로 관리하면서 자바 기반 애플리케이션을 위한 이식 가능한 실행 환경을 제공합니다.
이는 개발자가 메모리 관리에 대해 신경 쓰지 않아도 되게 해주며, 애플리케이션의 성능을 최적화하는 데 도움을 줍니다.
JVM은 자바 애플리케이션의 이식성, 보안, 메모리 관리 등을 향상시키는 핵심적인 역할을 합니다. 이러한 이유로 자바 개발자들에게 필수적인 요소로 여겨지며, 자바의 강력한 기능을 실현하는 데 중요한 역할을 담당하고 있습니다.
2)Java가 컴파일되는 과정은 어떻게 되는지 설명해주실 수 있을까요?
Java 프로그램이 컴파일되는 과정은 자바 소스 코드가 실행 가능한 프로그램으로 변환되기까지 여러 단계를 거칩니다. 이 과정은 자바의 플랫폼 독립적인 특성과 밀접한 관련이 있으며, JVM(Java Virtual Machine)의 역할이 중요합니다.
Java 컴파일 과정의 주요 단계
자바 소스 코드 작성: 개발자가 .java 확장자를 가진 파일로 자바 소스 코드를 작성합니다.
컴파일: 자바 컴파일러(javac)가 자바 소스 파일을 읽어들여 바이트 코드(.class파일)로 컴파일합니다. 이 바이트 코드는 아직 컴퓨터가 직접 실행할 수 없는, JVM이 읽을 수 있는 중간 형태의 코드입니다.
클래스 로딩: 컴파일된 바이트 코드를 JVM의 클래스 로더(Class Loader)에게 전달합니다. 클래스 로더는 동적 로딩을 통해 필요한 클래스들을 로딩 및 링크하여 JVM의 메모리 영역인 메소드 영역(Method Area)에 올립니다.
실행: 실행 엔진(Execution Engine)은 메모리에 올라온 바이트 코드를 명령어 단위로 가져와 실행합니다. 이때, 인터프리터 방식과 JIT 컴파일러 방식을 사용할 수 있습니다. 인터프리터 방식은 바이트 코드를 한 줄씩 읽어 실행하지만, 전체적인 실행 속도가 느립니다. JIT 컴파일러는 바이트 코드 전체를 컴파일하여 바이너리 코드로 변환한 후 실행하여, 전체적인 실행 속도를 향상시킵니다.
Java 컴파일 과정은 자바 코드가 다양한 플랫폼에서 실행될 수 있도록 하는 중요한 단계입니다. 이 과정을 통해 자바는 "한 번 작성하면 어디서든 실행된다(Write Once, Run Anywhere)"는 강력한 이점을 제공합니다.
'개발일지' 카테고리의 다른 글
| 2024.03.26 TIL (1) | 2024.03.26 |
|---|---|
| 2024.03.25 TIL (0) | 2024.03.25 |
| 2024.03.21TIL (0) | 2024.03.21 |
| 2024.03.20 TIL (0) | 2024.03.20 |
| 2024.03.19 TIL (0) | 2024.03.19 |