원티드에서 이번에 백엔드 챌린지를 열어주었다!
JVM부터 GC, Thread에 대한 전반적이면서 디테일하게 알려주는 수업들로
구성이 되어있어서 보자마자 신청해버렸다!!
저녁시간 월,수 여서 부담도 없고 편하게 듣고 있다
자바는 1995년에 나온 프로그래밍 언어이다
write once, run anywhere => 즉 플랫폼에 구애받지 않고 사용가능한 언어다!
Class based로 되어있음
JVM으로 동작하며 순수 OOP는 아니다!!
순수 객체 지향 언어의 특징에는
추상화, 다형성, 캡슐화, 상속, 객체에 대한 모든 작업은 객체가 정해야함 등 여러 특징이 있다
이때 자바에는 primitive type이라는 int, char, boolean등의 기본 타입 변수가 존재한다!!
자바에서 객체는 String, Int, Character이 있는데 이거 말고 기본타입으로도 프로그래밍 하기에 완전 OOP는 아니다!
추가로 static메서드를 통해 인스턴스의 생성없이 메소드 호출이나 변수 호출이 가능해서 객체를 굳이 안만들고도 어느정도 프로그래밍이 가능해버린다!!
자바의 아키텍처를 검색하면 가장 많이 나오는 그림 중 하나다
JDK - 가장 큰 범주이면서, 자바 개발용 키트임
JRE - 자바 실행환경(JVM + Library) -> 현재는 jdk 내부에 그냥 포함되어서 굳이 따로 설치 안해도 된다!
JVM - 가장 중요!! 논리적 개념, 자바 바이트코드를 기계어로 번역하고 실행!!
차고로 자바는 JVM 덕분에 다양한 플랫폼에서 동작이 가능한 것이다! (이유는 아래서 설명)
Class Loader - 바이트 코트를 동적으로 로딩해서 메모리에 넣어준다!
Runtime Data Areas - 앱 실행을 위해 사용되는 OS로부터 할당받은 메모리 공간
Execution Engine - 메모리 영역에 있는 데이터를 가져와 해당 작업을 수행함!
메모리에 로딩된 클래스의 구조, 메서드 등의 일련 정보들을 JVM내부에 저장
인터프리터를 통해 해석과 동시에 실행!