백엔드

JAVA (1)

말감78 2024. 6. 5. 19:24
반응형

Java란?

Java는 널리 사용되는 객체지향 프로그래밍 언어

 

Java의 컴파일 과정

  1. 개발자가 자바 소스코드가 포함된 자바 파일 생성
  2. javac.exe 실행파일이 소스코드를 자바 바이트코드(.class)로 변환 => 컴파일 과정
  3. 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 버전이 있다.

출처 : https://www.java.com/releases/

위 자료를 보면 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 자바 버전에 대하여

반응형