Java란?
Java는 널리 사용되는 객체지향 프로그래밍 언어
Java의 컴파일 과정
- 개발자가 자바 소스코드가 포함된 자바 파일 생성
- javac.exe 실행파일이 소스코드를 자바 바이트코드(.class)로 변환 => 컴파일 과정
- java.exe(JVM) 실행파일이 .class를 한줄씩 기계어로 변환
자바 바이트코드란?
자바 가상 머신이 이해할 수 있는 언어로 변환된 자바 소스 코드
확장자는 .class를 쓴다
- 자바 인터프리터(interpreter) : 자바 바이트 코드를 읽고 해석
- JIT 컴파일러 : 최종적인 기계어로의 번역 담당
컴파일 과정에서는 소스코드 문법적인 오류를 잡아내고
런타임 과정에서는 숫자를 0 으로 나누는 실행과정에서의 오류를 잡아낸다
JVM(자바 가상 머신)이란?
Java Virtual Machine의 약자로 '자바를 실행시키기 위한 가상의 기계'이다.
Java는 OS에 종속적이지 않다는 특징이 있는데 JVM이 그 역할을 한다.
모든 자바 코드는 JVM위에서 돌아가고 자바 바이트 코드를 각 OS에 맞게 해석해주는 역할을하며,
가비지컬렉션을 통해 자동으로 메모리 관리를 해줍니다.
Scanner는 개발자가 직접 close() 메서드를 호출해 종료해주는 경우가 있는데,
그 이유는 Scanner 는 자바에서 입력을 도와주는 클래스인데, 자바에서 직접 지원하는 자원이 아니라 입력을 받기 위해 OS의 자원을 빌려와 사용하는 것이므로 가비지컬렉션이 자동으로 관리를 해주지 못한다.
이런 자원이 쌓이면 성능저하가 발생할 수 있으므로 직접 정리해주는 것.
Java 버전
java에는 여러 버전이 있는데 그 중 가장 많이 사용되는 8, 11, 17 버전이 있다.
위 자료를 보면 LTS가 붙은것이 있는데
Long Term Support의 약자로 오랜 기간 지원한다는 의미이다.
아래는 각 버전별 지원기간이다.
나는 현재 11 버전을 배우고 있는데 남은 지원기간이 약 2년 정도로 얼마남지 않았다.
프로젝트를 진행할 때는 17을 써볼까 생각중이다.
Java 8 주요 특징
- 오라클이 java를 인수한 후 첫번째 LTS 출시 버전
- 32비트를 지원하는 공식적인 마지막 버전
- 유료버전(Oracle JDK)과 무료버전(Open JDK)으로 나뉨
- LocalDateTime과 같은 새로운 날짜,시간 API제공
- Unsigned Integer 계산
- 람다식 제공
- Stream API제공
- PermGem 영역 삭제
- Static Link JNI Library 제공
Java 11 주요 특징
- Open JDK와 Oracle JDK 통합
- Oracle JDK가 구독형 유료모델로 전환
- G1 GC가 기본 GC로 설정 (GC : Garbage Collection)
- 람다 지역변수 var 키워드 사용 가능
- 컬렉션, 스트림 등에 메소드 추가
Java 17 주요 특징
- recode class 키워드 사용 가능
- 애플 M1 및 이후 프로세서 탑재 제품군에 대한 정식 지원
- 난수 생성 API 추가
- 봉인 클래스(Sealed Class) 정식 추가
- String 여러줄 사용시 텍스트 블록 기능 사용 가능
- NumberFormat,DateTimeFormatter 기능 향상
- Stream.toList() 사용 가능
참고 : https://cheerup313.tistory.com/86#Java%20%EB%B2%84%EC%A0%84%20%EC%82%AC%EC%9A%A9%EB%B9%84%EC%9C%A8-1 자바 버전에 대하여
'백엔드' 카테고리의 다른 글
ORM을 사용하는 이유 (3) | 2025.04.23 |
---|---|
N+1 문제란 무엇일까? (1) | 2025.03.06 |
[Kafka] 실시간 채팅에 카프카 적용하기 (0) | 2025.02.28 |
Spring Gradle Error - Cause: zip END header not found (0) | 2024.07.18 |