[JSCODE] 모의면접으로 학습하는 자바 1주차 - 기본 (1~8)

동춘·2024년 10월 29일

[면접스터디] 자바

목록 보기
1/15

자바 기본 1주차

1. Java의 특징

  • 객체지향 원칙(OOP)을 기반으로 설계되어 캡슐화, 상속, 다형성 등의 개념으로 재사용성과 유지보수가 용이합니다.
  • Java는 바이트코드로 컴파일되어 JVM에서 실행되므로 OS에 구애받지 않습니다.
  • 메모리 관리를 자동화해주는 가비지 컬렉터가있어 불필요한 메모리 사용을 줄여줍니다.
  • 이외에도 다중스레드, 다양한 예외처리 기능이 있습니다.

2. Java의 단점

  • 가상 머신(JVM) 기반으로 동작하기 때문에 컴파일 언어보다 성능이 느립니다.
  • 메모리를 관리 : full gc로 인해한 stop-the-world 성능저하, 장애가 발생 할 수 있습니다.

- JVM이란 ?

Java Virtual Machine의 줄임말
JVM은 OS에 종속받지 않고 CPU가 Java를 인식, 실행할 수 있게 하는 가상 컴퓨터이다.

3. 자바 프로그램의 실행과정

자바의 바이트코드는 기계어가 아니기 때문에 OS에서 바로 실행되지 않는다.
이때 JVM이 OS가 바이트코드를 이해할 수 있도록 해석해준다.
따라서 Byte Code는 JVM위에서 OS 상관없이 실행될 수 있는 것이다.

- 실행 순서

  1. 자바 소스코드를 작성하고 .java로 저장합니다.
  2. 소스파일을 자바 컴파일러(javac)을 사용하여 바이트코드(.class) 파일로 변환합니다.
  3. 프로그램을 실행하면 JVM이 ClassLoader를 통해 .class파일을 메모리에 로딩 합니다.
  4. 로드된 바이트코드는 바이트코드 검증기에 의해 검증됩니다. (무결성 확인)
  5. JVM이 main메서드를 시작으로 프로그램을 시작합니다.
  6. 인터프리터와 JIT 컴파일러(Just-In-Time Compiler)에 의해 이루어집니다.

- 메모리 관리

가비지 콜렉터 (Garbage Collector)을 사용하여 더 이상 사용되지 않는 인스턴스를 찾아 메모리에서 삭제합니다.
마크앤 스윕 방식으로 사용하지 않은 변수들에 마크를 하여 가비지컬렉터가 삭제합니다.

4. JAVA Bytecode ?

자바의 바이트코드는 JVM이 이해할 수 있는 중간 코드입니다. 이를 통해 플랫폼 독립적으로 동작할 수 있으며, JVM이 실행 중에 바이트코드를 각 OS에 맞게 번역해줍니다.

5. 인터프리터와 JIT 컴파일러(Just-In-Time Compiler)

  • 인터프리터는 바이트코드를 한 줄씩 실행하여 빠른 시작을 가능하게 합니다.
  • JIT 컴파일러는 반복적으로 실행되는 코드를 기계어로 변환합니다.

    JAVA의 활용 : 인터프리터 방식으로 실행하다가 적절한 시점에 바이트 코드 전체를 컴파일하여 기계어로 변경하고 이후에는 더 이상 인터프리팅 하지 않고 기계어로 직접 실행하는 방식.

6. 사용해본 Java 버전과 이유

프로젝트 요구사항과 환경에 맞춰 선택하는데, 최신 spring boot 상위 버전과 호환이 되는 17 이상의 버전 중 현재 LTS버전인 21을 선택하였습니다.

7. Java 8, 11, 17 버전 특징

  • Java 8: 모던자바 Lambda, Stream API, 새로운 Date/Time API 등의 기능이 추가되었습니다.
  • Java 11: HTTP Client API 정식 출시, 지역 변수 타입 추론(var), 새로운 String 메서드 등이 추가되었습니다.
  • Java 17: 패턴 매칭, 새로운 Switch 표현식, 외부 API 향상 등이 추가되었습니다.
  • Java 21: 현재 LTS 버전, 가상 스레드 도입으로 운영 체제 스레드만으로 수백만개의 스레드 실행 가능, UTF-8이 기본값입니다.

    만약 spring boot 상위 버전과 호환이 되어야 한다면 17 이상의 버전을 선택

8. JDK와 JRE

  • JDK (Java Development Kit): Java 애플리케이션 개발을 위한 툴과 라이브러리 모음으로, JRE와 컴파일러, 디버거 등이 포함됩니다. (개발도구)
  • JRE (Java Runtime Environment): 자바 프로그램을 실행할 수 있는 환경을 제공하며, JVM과 표준 라이브러리가 포함됩니다. (실행도구)

    JAVA 프로그램의 소스코드를 만들기위해선 JDK가 필요하고, 컴파일된 JAVA 프로그램을 실행시키기 위해서는 JRE가 필요합니다.

profile
건강하개

0개의 댓글