Java
-
JVM 클래스로더 알아보기Java 2025. 1. 11. 02:34
JVM 클래스로더를 알아보자.Goal클래스로더의 역할 및 개요에 대한 학습클래스로더가 클래스를 로딩하는 과정 알아보기클래스로더JVM이 클래스 로딩을 하는 과정은 크게 로딩 - 링크 - 초기화 단계로 이루어진다.클래스 로더는 로딩 과정에서 클래스파일을 JVM 내부로 읽어들이는 역할을 한다. 클래스 로더의 종류는 크게 다음과 같다.부트스트랩 클래스로더(Bootstrap ClassLoader)확장 클래스로더(Extension ClassLoader)애플리케이션 클래스로더 또는 시스템 클래스 로더(System ClassLoader)클래스 로더의 특징은 다음과 같다.유일성같은 클래스라도 클래스로더 마다 로드한 결과는 다르다.하나의 클래스를 두개의 서로 다른 클래스로더로 로딩을 하면 결과 값은 동일한 결과가 아니게 ..
-
JVM 클래스 로딩 과정 알아보기Java 2025. 1. 9. 03:50
JVM 클래스 로딩 과정은 어떤 식으로 진행되는 지 살펴보자GoalJVM 의 클래스 로딩 과정을 알아보며 동작 원리를 이해하기얕게 알고 있던 동작 과정을 정확히 설명할 수 있는 수준으로 이해하기클래스 로딩 과정로딩클래스로더가 클래스의 이름으로 바이트 코드를 찾고 해당 바이트 코드의 내용을 읽어 바이트 스트림으로 가져온다.다양한 위치에서 바이트 코드를 읽어올 수 있다. (jar, 네트워크, 동적 생성 등)바이트 코드를 JVM 메모리의 Method 영역에 런타임 데이터 구조로 변환하여 저장한다.Method 영역에 저장을 한 뒤java.lang.Class 객체를 생성하여 힙 메모리에 저장한다.힙 메모리에 저장된 이 Class 타입을 통해 리플렉션을 사용할 수 있다.링크링크는 검증(Verify), 준비(Prep..
-
JVM 바이트코드 알아보기Java 2025. 1. 4. 02:35
바이트코드자바는 익히 알려진대로 자바 가상 머신(JVM) 위에서 실행되는 프로그래밍 언어이다.동작 구조는 다음과 같다. 1. 자바 소스 코드를 작성2. 컴파일하여 바이트 코드로 변환3. 바이트 코드를 JVM에 로딩4. 로드된 바이트 코드를 인터프리터 혹은 JIT 컴파일러를 통해 실행 개발자가 작성하는 자바 코드는 컴파일된 .class 파일, 바이트코드가 되어 JVM에게 전달된다.JVM이 이해하는 바이트코드는 어떤 구조로 되어있는 지 살펴보며, 간략한 동작 과정들을 이해해보았다. 바이트코드는 특정한 구조를 가진 이진 스트림 형태로 자바 가상 머신 명세에 ClassFile 이라는 구조로 정의되어 있다.ClassFile.java 파일을 자바 컴파일러로 컴파일한 .class 파일의 구조JVM(자바 가상 머신)이..
-
자바와 코틀린Java 2024. 8. 29. 21:49
최근 코틀린의 Kotest 로 작성된 테스트 코드를 보고 코드가 간결하고 깔끔하다고 생각되어 한번 공부해보고 싶단 생각이 들었습니다.https://developers.hyundaimotorgroup.com/blog/137 Kotest를 통한 Kotlin Spring에서의 테스트 코드 작성Kotest를 통한 Kotlin Spring에서의 테스트 코드 작성developers.hyundaimotorgroup.com 그래서 코틀린 공식문서를 참고하여 자바와 코틀린 문법의 차이를 위주로 정리했습니다.컴파일Java와 Kotiln 은 각각의 컴파일러가 .java, .kt 파일을 JVM 이 실행할 수 있는 .class 파일로 만든다.Java, Kotiln 같이 사용한 프로젝트를 컴파일 한다면 다음과 같은 과정이 일어난..
-
커스텀 어노테이션Java 2024. 2. 13. 23:10
어노테이션을 만드는 설정 방법 스프링 어노테이션에 대한 소스코드를 보면 @Documented, @Target, @Retention이란 어노테이션을 볼 수 있다. 아래는 다음에 대한 설명들이다. 1. @Retention - @Retention은 크게 source, class, runtime 세가지로 설정하여 나의 어노테이션을 유지할 수 있다. 이 말은 무엇이냐면 source 까지만 나의 어노테이션을 유지한다면 source파일 즉 컴파일하기 전이라면 나의 어노테이션이 유지되어 있고, 컴파일이 되는 시점엔 나의 어노테이션에 대한 정보는 사라진다. class로 설정하게 되면 나의 어노테이션에 대한 정보는 .class 파일이 되어서도 여전히 유지된다. 그러나 런타임 시에는 어노테이션에 대한 정보가 사라진다. ru..
-
OpenAPI 데이터베이스 저장Java 2023. 5. 2. 16:54
나이스 대국민 서비스 openAPI에서 제공하는 학원, 교습소 정보를 로컬 pc에 있는 mariadb에 저장하는 데에는 크게 나눠보면 1. API를 호출할 것인지, 데이터베이스에 저장 후 사용할 것인지 본인은 학교 프로젝트로 오픈 API를 활용한 서비스를 만들고 싶었기에 아무래도 매번 API를 호출하는 것 보단 데이터베이스에 저장하여 사용하는 게 좋을 것 같다고 판단되어서 나이스 대국민서비스에서 csv파일을 다운로드 받았습니다. 2. csv파일을 읽고 파싱하여 vo객체로 저장하는 과정 BufferedReader로 FileReader(csv파일경로)를 읽습니다. csv 파일은 컬럼을 기준으로 ',' 로 구분되기에 String의 split메서드를 사용해 ','로 구분지어 데이터를 읽고 원하는 부분만 파싱하..