ReviewStudy

    이팩티브 자바-인터페이스

    🤦‍♂️1. 추상 클래스보다는 인터페이스를 우선하라설명자바가 제공하는 다중 구현 메커니즘추상 클래스인터페이스추상 클래스가 정의한 타입을 구현하는 클래스는 반드시 추상 클래스의 하위 클래스가 되어야 한다. 자바는 단일 상속만 지원하기 때문에 추상 클래스 방식은 새로운 타입을 정의하는데 큰 제약이 된다. 인터페이스가 선언한 메서드를 모두 정의하고 그 일반 규약을 잘 지킨 클래스는 다른 어떤 클래스를 상속했든 같은 타입으로 취급된다.기존 클래스 위에 새로운 추상 클래스를 끼워넣기는 어렵다. (하위 클래스들이 공동 상속을 해야하기 때문에) 기존 클래스에도 손쉽게 새로운 인터페이스를 구현할 수 있다.Mixin 정의에 맞지않다 클래스는 두 부모를 섬길 수 없고, 클래스 계층구조에는 믹스인을 삽입하기에 합리적인 위치..

    JVM 조사 : ClassLoader

    🤦‍♂️1. 클래스로더란?자바 클래스들은 시작시 한번에 로드되지 않고, 애플리케이션에서 필요할 때 로드된다.클래스로더 : JRE의 일부로써 런타임에 클래스를 동적으로 JVM에 로드하는 역할을 수행하는 모듈자바의 클래스들은 자바 프로세스가 새로 초기화되면 클래스로더가 차례로 로딩되며 작동2. 계층구조부트스트랩 클래스로더(Bootstrap classloader)최상위 우선순위를 갖는 클래스 로더jre/lib/rt.jar를 로드네이티브 코드로 구현되어있다확장 클래스 로더(Extension classloader)jre/lib/ext에 포함된 클래스 파일을 로드java.ext.dirs 환경 변수로 지정된 폴더에 있는 클래스 파일을 로딩Java로 구현되어 있으며, sun.misc.Launcher 클래스 안에 정적 ..