[ 자바의 신 ] 자바 버전별 차이 / JVM / GC

Do_It·2023년 12월 6일

자바의 신을 가지고 공부 기록 남기기

모든 프로그래밍 언어에는 예약어라는 것이 있음

예악아(reserved word)는 예약되어 있으니깐 쓰지 못하는 단어
예악어 public , class , int , return 등이 있으며 클래스,메소드,변수의 이름으로 사용할 수 없다

자바 버전별 차이

JDK 1.0

  • 가장 최초의 버전

JDK 1.1에서 추가된 것들

  • AWT(Abstract Window Toolkit) 자바를 이용하여 UI 구성할 때 사용되는 기술
  • JavaBeans : 자바에서 제공하는 컴포넌트 모델 중 하나
  • jDBC : 데이터베이스에 데이터를 담기 위한 API
  • RMI : 같은 JVM에 있는 메소드를 호출하는게 아니라 원격 JVM에 있는 메소드를 호출하기 위한 기술

JDK 1.2

  • JIT : Just-In-Time의 약자로 어떤 메소드의 일부 혹은 전체 코드를 네이트코드로 변환하여 JVM에서 번역하지 않도록 함으로써 보다 빠른 성능을 제공하는 기술

JDK 1.3

  • JNDI : 어떤 객체를 쉽게 찾을 수 있도록 도와주는 이름을 지정한 후, 나중에 그 이름으로 객체를 찾아가는 것을 의미함

JDK 1.4

  • 정규표현식 : 어떤 문자열에서 특정 조건에 맞는 값이 있는지를 확인 , 예를 들어 어떤 문자열이 이메일 주소의 조건에 맞는지, 웹 페이지의 주소를 나타내는 URL 조건에 맞는지 등을 확인하는 데 사용
  • NIO : IO를 처리할 때 사용한 java.io 패키지에서 제공하는 기능의 단점을 보완하기 위함

java 5

  • 매우 많은 변화가 있었음 이 전 버전을 사용하는 시스템을 구분 짓는 중요한 계기가 됨
  • 보다 안전하게 컬렉션 데이터를 처리할 수 있는 제네릭 추가
  • 어노테이션이라고 불리는 메타데이터 기능 추가
  • 상수 타입을 나타내는 enum 추가

java 6

  • java 5에 비하면 많은 기능이 추가되거나 변화가 일어나지 않았음
  • 스크립팅 언어가 JVM 위에서 수행 가능하게 됨

java 7

  • java 6가 나오고 5년만에 출시된됨 추가된 부분들이 매우 많음

java 8

  • 람다 표현식 가능

JIT 컴파일러란?

  • 동적 변환이라고 보면 됨
  • 만들어진 이유는 프로그램 실행을 보다 빠르게 하기 위함

컴퓨터 프로그램을 실행하는 방식은 두 가지
1. 인터프리트 방식(interpret) : 프로그램을 실행할 때마다 컴퓨터가 알아 들을 수 있는 언어로 변환하는 작업을 수행, 간편하지만 성능이 매우 느림
2. 정적 방식(static) : 프로그램 실행하기 전 컴퓨터가 알아 들을 수 있는 언어로 변환하는 작업을 미리 실행하는 것

텍스트로 만든 java 파일 -> 자바 컴파일러 -> 컴파일된 바이트코드 -> JVM -> 기계 코드 -> 하드웨어 및 OS

"JVM -> 기계 코드" 이 부분을 JIT가 하는 것임

JVM(Java Virtual Machine) : 자바 가상 머신

내가 작성한 자바 프로그램이 수행되는 프로세스
java라는 명령어를 통해서 애플리케이션이 수행되면, 이 JVM 위에서 애플리케이션이 동작함
메모리 관리를 JVM 내에서 가비지 컬렉터가 함

GC(Garbage Collection) : 가비지 컬렉션

자바에서 GC를 수행하는 방식은 여러가지가 있음
객체가 가진 메모리상에서 지워버리는 것인데 이 작업을 GC가 해주는 것이다.

profile
오늘의 노력이 내일의 성장으로 이어지고 있음을

0개의 댓글