Annotation Processor란? Annotation Processor는 컴파일 단계에서 Annotation에 정의된 일렬의 프로세스를 동작하게 하는 것을 의미합니다. 컴파일 단계에서 실행되기 때문에, 빌드 단계에서 에러를 출력하게 할..
인터페이스란? 클래스들이 구현해야 하는 동작들을 추상적으로 선언하는 추상 자료형입니다. Interface라는 키워드를 사용하여 선언합니다. 강제적으로 구현해야 하는 추상 메소드가 있으며, static과 final이 둘..
프록시 패턴이란? 리얼 서브젝트는 자신이 해야 할 일만 하면서 프록시를 사용하여 부가적인 기능을 제공할 때 쓰는 패턴입니다. 프록시와 리얼 서브젝트가 공유하는 인터페이스(서브젝트)가 있고, 클라이언트가..
지난 리플렉션 시간에 이어서 리플렉션을 활용하여 Spring의 DI(Dependency Injection)을 약간 비슷하게 따라 해 보겠습니다. 일단 DI를 쓸 때, 주로 Annotation을 사용합니다. 그래서 이 애노테이션을 활용하여,..
리플렉션(Reflection)이란? 리플렉션은 구체적인 클래스 타입을 알지 못하여도, 해당 클래스의 메소드, 타입, 필드(변수)들을 접근할 수 있도록 해주는 자바 API 입니다. https://docs.oracle.com/javase/8/docs/a..
JVM 구조에 대한 글에서 살펴보았듯이 .java 파일을 자바가 컴파일하여, .class 파일로 변환하고 .class 파일을 JVM이 클래스 로더에 의해서 로딩 -> 링크 -> 초기화 작업을 통하여 메모리(Runtime Data Area)에..
일단 바이트 코드 조작의 대표적인 예를 보면서 차근차근 살펴보겠습니다. 코드 커버리지(Code Coverage)는 어떻게 측정하는 걸까? 코드 커버리지란? 소프트웨어의 테스트 케이스가 얼마나 충족되었는지를 나타내..
위 사진은 JVM의 전체적인 구조입니다. 클래스 로더(Class Loader) 자바 바이트 코드를 읽어서 JVM의 실행 엔진이 사용할 수 있도록 메모리의 메소드 영역에 적재하는 역할을 합니다. 로딩 -> 링크 -> 초기화 순..
JVM (Java Virtual Machine) 자바 가상 머신으로 자바 바이트 코드(.class)를 운영체제(OS)가 실행할 수 있는 네이티브 코드로 변환(Interpreter, JIT Compiler) 하여 실행 합니다. 해당 운영체제에 맞는 네이티브..