JVM
[Java] 바이트코드 조작
[Java] 바이트코드 조작
2023.03.22코드 커버리지 측정 코드 커버리지는 테스트 코드가 프로덕션 코드를 얼마나 실행했는지를 백분율로 나타내는 지표이다. 즉, 테스트 코드가 실제로 프로덕션 코드를 얼마나 검증하고 있는지를 나타낸다. 코드 커버리지를 통해 현재 작성된 테스트 코드의 수가 충분한 것인지 논의할 수 있다. 그럼 코드 커버리지 툴을 사용해서 코드 커버리지를 측정해보자. 대표적으로 JaCoCo가 있다. 여기선 JaCoCo를 통해 측정해보도록 하자. Jacoco 먼저 JaCoCo 플러그인을 추가하고 task를 설정해보자. plugins { id 'jacoco' } jacoco { toolVersion = '0.8.5' } JaCoCo Gradle 플러그인에는 다음과 같은 task가 있다. jacocoTestReport: 바이너리 커버리지..
[Java] JVM
[Java] JVM
2023.03.20JVM, JRE, JDK? 자바 프로그램을 개발하기 위해 이런 것들을 설치하는 과정을 거쳤을 것이다. 일단 검색한대로 설치하긴 했는데, 이것들은 전부 무엇이고 어떤 역할을 할까? 한 번 살펴보자. JVM(Java Virtual Machine) JVM(Java Virtual Machine)은 자바 가상 머신으로 자바 프로그램 실행 환경을 만들어주는 소프트웨어이다. JVM은 자바 바이트코드(.class)를 OS에 특화된 코드로 변환(interpreter, JIT compiler)하여 실행시켜준다. 이 때문에 JVM을 사용하면 모든 플랫폼에서 동작하도록 할 수 있다. 즉, 플랫폼에 영향을 받지 않는다는 말이다. 여기서 주의할 점은 Java는 어떠한 JVM에서도 동작시킬 수 있기 때문에 플랫폼에 의존적이지 않지..
[Java] "" vs new String("")
[Java] "" vs new String("")
2023.03.19String Java에는 문자열을 쉽게 다룰 수 있는 String Class가 존재한다. 아마 객체 중에서 제일 많이 사용한 것이 무엇일까 생각해보면 거의 당연히 String 일거라 생각한다. 이렇게 많이 사용하는 만큼 사용법도 잘 알고 사용하면 금상첨화가 될 것이다. 먼저, String은 다음과 같은 방식들로 선언할 수 있다. public class Main { public static void main(String[] args) { String s1 = ""; String s2 = new String(""); } } 분명 딱 봐도 선언하는 방식이 다르다. 그런데 둘에게 차이가 없을까? 분명 어떠한 차이라도 있지 않을까? 그럼 이제부터 그 차이를 한 번 살펴보자 "" vs new String("") 위..