Spring 은 객체지향 언어 Java 기반의 프레임워크
JAVA : Java 원리 / 구조 + Java 잘 잘성하는 방법
SPRING : Spring 프레임워크 원리 / 구조
자바의 예외는 크게 3가지로 나눈다.
에러
예외
체크 예외(Checked Exception)
체크 예외는 RuntimeException의 하위 클래스가 아니면서 Exception 클래스의 하위 클래스들입니다. 체크 예외의 특징은 반드시 에러 처리를 해야하는 특징(try/catch or throw)을 가지고 있습니다.
체크 예외의 예시는 이러한 것들이 있습니다.
언체크 예외(Unchecked Exception)
언체크 예외는 RuntimeException의 하위 클래스들을 의미합니다. 이것은 체크 예외와는 달리 에러 처리를 강제하지 않습니다.
말 그대로 실행 중에(runtime) 발생할 수 있는 예외를 의미합니다.
언체크 예외는 이러한 것들이 있습니다. 그냥 보아도 실행 중에 발생할 만한 이름들입니다. 그러면 언체크 예외는 예외처리를 강제하지 않는 이유는 무엇일까요?
만약 언체크 예외가 에러 처리를 강제해야 했다면 아래와 같은 상황이 발생할 것입니다.
public class ArrayTest {
public static void main(String[] args) {
try {
int[] list = {1, 2, 3, 4, 5};
System.out.println(list[0]);
} catch (ArrayIndexOutOfBoundsException e) {
e.printStackTrace();
}
}
}
자바 개발 환경(Java Development Kit)
컴파일러(javac), 역어셈블러(javap), 디버거(jdb), 의존관계 분석(jdeps) 등 개발에 필요한 도구를 제공한다.
자바 실행 환경(Java Runtime Enviornment)
자바 실행 명령, 프로그램 실행 실패 등이 발생할 경우 대화 상자를 표시하는 시작 프로그램 파일(javaw.exe),
클래스로더와 바이트코드의 실행(java.exe)에 필요한 기본 라이브러리(rt.jar)를 제공한다.
💡 rt는 RunTime를 의미한다. rt.jar는 자바 런타임 환경에서의 코어 자바 클래스 컬렉션이다.
JVM에서 rt.jar파일에 담긴 클래스 파일들을 런타임시에 메모리에 올린다.
아무렇지 않게 사용했던 String 클래스, System 클래스 같은 클래스가 rt.jar 안에 속해 있다.
💡 단, rt.jar는 Java 9부터 삭제됐는데
그 이유는 선택적인 사용과 메모리 로딩이 안되는 기존 모노리틱(Monolithic) 방식을 개선하여
모듈 지정 및 모듈별 버전 관리 기능이 추가됐고
필요한 모듈만 구동해서 크기와 성능 최적화가 가능해졌기 때문이다.
자바 가상 머신(Java Virtual Machine)
바이트코드 인터프리터, JIT 컴파일러, 링커, 명령어 세트, 가비지 컬렉터, 런타임 데이터 영역(메모리) 등
OS에 독립적으로 실행될 수 있는 추상층을 제공한다.