본문 바로가기

Java13

코드 커버리지 측정하는 방법 코드 커버리지 테스트 코드가 내 소스 코드의 몇 퍼센트(%)를 커버하는지 확인하는 것입니다. JaCoCo pom.xml에 플러그인 추가 org.jacoco jacoco-maven-plugin 0.8.7 prepare-agent report prepare-package report prepare-agent: javaagent를 끼어넣는 것 report: report를 생성하는 것 메이븐 빌드 mvn clean verify 테스트 코드를 실행하고 jacoco 플러그인이 실행됩니다. target -> site -> jacoco -> index.html이 확인됩니다. index.html을 실행합니다. 결과 확인 어느 부분이 테스트가 안되었고, 일부만 되었는지 확인할 수 있습니다. 원리 간략하게 설명하면 바이트코.. 2021. 10. 27.
클래스 로더 클래스 로더 로딩, 링크, 초기화 순으로 진행됩니다. 로딩 클래스 로더가 .class 파일을 읽고 그 내용에 따라 적절한 바이너리 데이터를 만들고 "메소드" 영역에 저장. 이때 메소드 영역에 저장하는 데이터 FQCN 풀 패키지 경로를 포함한 클래스 이름 클래스 | 인터페이스 | 이늄 메소드와 변수 로딩이 끝나면 해당 클래스 타입의 Class 객체를 생성하여 "힙" 영역에 저장. 링크 Verify, Prepare, Resolve(optional) 세 단계로 나눠져 있습니다. 검증: .class 파일 형식이 유효한지 체크합니다. Preparation: 클래스 변수(static 변수)와 기본값에 필요한 메모리를 준비하는 과정 Resolve: 심볼릭 메모리 레퍼런스를 메소드 영역에 있는 실제 레퍼런스로 교체합니.. 2021. 10. 26.
JVM 구조 클래스 로더 시스템 .class에서 바이트코드를 읽고 메모리에 저장 로딩: 클래스 읽어오는 과정 링크: 레퍼런스를 연결하는 과정 초기화: static 값들 초기화 및 변수에 할당 public class App { static String myName; static { myName = "seongmin"; } ... } (static 변수 선언) public class Smpaaark { public void work() { System.out.println(App.myName); } } (위에 선언한 static 변수를 다른 클래스에서 사용) 클래스명.static변수명 형태로 사용합니다. (인텔리J를 통해 본 class 파일) 원래는 바이트코드 형태이지만 IDE에서 우리가 이해할 수 있을 수준으로 디컴파.. 2021. 10. 26.
자바, JVM, JDK, JRE JVM(Java Virtual Machine) 자바 가상 머신으로 자바 바이트 코드(.class 파일)를 OS에 특화된 코드로 변환(인터프리터와 JIT 컴파일러)하여 실행합니다. 바이트 코드를 실행하는 표준(JVM 자체는 표준)이자 구현체(특정 밴더가 구현한 JVM)입니다. JVM 밴더: 오라클, 아마존, Azul, … 특정 플랫폼에 종속적. (바이트코드 예시) JRE(Java Runtime Environment): JVM + 라이브러리 자바 애플리케이션을 실행할 수 있도록 구성된 배포판 JVM과 핵심 라이브러리 및 자바 런타임 환경에서 사용하는 프로퍼티 세팅이나 리소스 파일을 가지고 있습니다. 개발 관련 도구는 포함하지 않습니다. (그건 JDK에서 제공) (jre\bin 내부) java.exe는 존재하.. 2021. 10. 26.