자바(6)
-
빌드(Build)
빌드는 컴퓨터가 우리가 작성한 소스 코드를 실행 가능한 형태로 변환하는 과정을 의미합니다. 이 과정에서는 소스 코드를 컴파일하고, 필요한 리소스를 모아서 실행 가능한 프로그램이나 실행 파일로 만들어 줍니다.빌드의 분류빌드는 크게 3가지로 구분됩니다.Compile : 소스코드 전체를 기계어로 번역Interpreted : 소스코드를 한 줄씩 번역하면서 실행Hybrid : 소스코드 전체를 중간코드(바이트코드)로 번역한 뒤 가상머신(VM)에서 한 줄씩 실행함C 프로그램의 빌드과정 자바의 빌드 과정을 알아보기 전 우선 C/C++ 프로그램의 빌드과정에 대해서 알아봅시다.C/C++ 프로그램은 대표적인 Complie Language로 빌드는 전처리 - 컴파일 - 어셈블 - 링킹 단계로 이루어집니다.(C/C++의 빌드..
2024.06.17 -
Optional
업무를 할 때 데이터베이스에서 데이터를 조회 후, 반환된 데이터가 null인 경우에 대비해서 if문으로 null 체크를 수행하고, 이에 따른 로직을 처리해 왔습니다. 물론 그에 따른 테스트를 진행하지만, 이러한 방식은 가독성도 떨어지고 혹시 모를 실수에 대비가 안된다는 점이 불안했습니다. 그래서 대안을 찾아보던 중 Optional에 대해서 알게 되어 이를 적용하면서 알아본 내용을 정리하겠습니다. Optional이란? Optional은 Java 8에서 소개된 클래스로, 값이 존재하지 않을 수 있는 경우에 대해서 처리할 수 있는 클래스입니다. Optional은 NPE(NullPointerException)을 방지하고, 코드를 더 명확하게 만들어주는 Wrapper 클래스입니다. 적용 예시 // 데이터베이스에서..
2024.04.24 -
[JVM] Class Loader
Class Loader란 ? Java는 Runtime동안 필요한 클래스 파일을 동적으로 읽어오는데, Class Loader는 여기서 Java 클래스를 JVM에 동적으로 로드하는 역할을 합니다. JVM이 동작하다가 필요한 순간(클래스 파일을 참조하는 순간)에 클래스 파일을 읽어 메모리에 동적으로 로드합니다. Class Loader 덕분에 JVM은 Java 프로그램을 실행하기 위한 정보들을 모두 가지고 있을 필요가 없습니다. 내장 Class Loader의 종류 Bootstrap Class Loader 모든 Java 클래스는 Java.lang.ClassLoader에 의해서 로드됩니다. 하지만 ClassLoader 자체도 클래스입니다. ClassLoader 자체도 클래스라면 ClassLoader는 누가 로드할까..
2024.04.18 -
[JVM] Garbage Collector
GC(Garbage Collector)란 ? Java Application은 필요에 따라서 메모리에서 객체를 얻습니다. 애플리케이션이 작성된 로직을 따라 진행되면서 메모리에 계속해서 새로운 객체들의 정보가 올라갈 것이고, 애플리케이션에서 더 이상 사용하지 않는 객체에 대한 정보도 메모리에 올라가 있을 것입니다. 이처럼 애플리케이션의 메모리에 정보가 계속 올라가는데, 저장 공간은 무한하지 않기 때문에 메모리가 가득 차게 된다면 OOM Error(OutOfMemoryErrors)로 인해서 애플리케이션이 비정상적으로 종료가 될 것입니다. 이를 방지하기 위해서 GC가 애플리케이션에서 동작합니다. 애플리케이션에서 더이상 사용하지 않아 참조되지 않는 객체를 Garbage라고 합니다. GC는 메모리 관리를 위해 사용..
2024.04.18 -
[JVM] Runtime Data Area
Runtime Data Area란 자바 애플리케이션을 실행하면 JVM이 OS로부터 메모리 공간을 할당받고 JVM은 할당받은 메모리를 용도에 따라 여러 영역으로 나누어 관리하게 되는데, 이렇게 관리하는 전체 영역을 Runtime Data Area라고 부릅니다. 메모리 영역은 Method Area, Heap Area, Stack Area, PC register, Native Method Stack으로 나뉩니다. 위 사진에서 보이듯이 Method Area, Heap Area 영역은 모든 Thread가 공유하고 Stack Area, PC register, Native Method Stack 영역은 Thread 별로 생성됩니다. 쓰레드(Thread)와 프로세스 - 작성 예정 모든 Thread가 공유하는 Metho..
2024.04.18 -
[JVM] JVM 이란
JVM이란 JVM은 Java Vertual Machine의 약자로 ‘자바를 실행하기 위한 가상 기계’를 말합니다. JVM이 필요한 이유 JVM은 자바 애플리케이션을 운영체제와 상관없이 실행시킬 수 있도록 해주고 프로그램 메모리를 관리하고 최적화를 해줍니다. (정확하게는 Java라는 언어가 JVM으로 인해서 OS에 독립적이라는 것으로, JVM자체로는 OS마다 정의된 실행방법을 따르기 때문에 JVM 자체는 OS에 종속적입니다.) 추가로, 자바로 작성된 애플리케이션은 JVM을 통해 실행되기 때문에 반드시 JVM이 필요한데 위의 사진처럼 OS로 전달되기 전에 JVM을 거쳐 해석되고 실행되기 때문에 속도가 느리다는 단점이 있습니다. 하지만 최근에는 JIT 컴파일러의 성능 향상과 최적화 기술의 발달로 속도 저하가 ..
2024.04.18