객체지향과 Java
Computer Science/Java
객체지향(Object-Oriented Programming)이란?객체지향은 상태와 행동을 묶은 객체들이 메시지를 주고받으며 협력하게 설계하는 방법이다. 이렇게 작성하면 하나도 와닿지 않으니... 핵심 개념에 대해서 알아보자. 1. 캡슐화(Encapsulation)상태는 감추고, 행동으로만 조작하게 한다. 외부에서 상태를 직접 접근하지 못하도록 숨기는 것2. 추상화(Abstraction)복잡한 구현은 감추고 ‘무엇을 하는지’에 초점을 둔다. 객체가 갖는 공통 특성을 뽑아내어 인터페이스/추상 클래스로 표현사용자는 필요한 기능만 이해하면 되고, 내부 구현은 몰라도 됨 -> 역할과 구현을 분리할 수 있다.요즘엔 구성(Composition)으로 변경되는 추세라고 한다!3. 상속(Inheritance)기존 클래스(..
Java의 값 복사와 JVM 구조
Computer Science/Java
Java와 JVMJava라는 언어는 JVM 위에서 실행되는 언어이다. C, C++, Rust 등의 언어들은 네이티브 컴파일되어 바이트 코드를 거치지 않고 즉시 OS/CPU가 읽을 수 있는 바이너리(기계어)로 컴파일된다. 하지만 Java는 javac(JDK에 포함)라는 자바 컴파일러에 의해 바이트코드(.class 파일)로 컴파일되고 이 바이트코드가 JVM에 의해 네이티브로 변환해 실행되는 것이다.여기서 자바의 중요한 장점이 하나 드러나는데, 바로 플랫폼 독립성이다. 앞서 말한 것처럼 바로 네이티브 컴파일되는 언어들은 컴파일된 결과물이 CPU/OS에 종속된다. 하지만 Java는 CPU/OS에 종속되지 않는 바이트코드를 거쳐 JVM에 의해 실행되기 때문에 한 번 빌드한 바이트코드를 여러 플랫폼에서 실행할 수 ..
Java 21 Virtual Thread
Computer Science/Java
Java 21에서 새롭게 추가된 Virtual Thread에 대해 알아봅니다.GOALVirtual Thread(가상 스레드)의 동작을 이해한다.Virtual Thread와 Platform Thread 간 차이를 이해한다.Virtual Thread의 Pin 현상에 대해 이해한다.Virtual Thread란?Java 21부터 JEP 444 Virtual Thread(가상 스레드)가 정식 도입되었다. 가상 스레드란 사실 JVM이 만드는 Thread 객체이다. 핵심 아이디어는 다음과 같다.실행할 때만 Platform Thread에 올라타서 CPU를 쓰고, 대기(I/O 등)에 들어가면 JVM이 그 실행 문맥을 떼어 힙에 보관하고 준비되면 다시 Platform Thread에 붙여 이어서 실행한다. 또한, Java ..
Gradle 알아보기
Computer Science/Java
Gradle에 대해서 알아봅니다.GOALGradle의 구조와 하는 일을 이해한다.Gradle의 작동 방식을 이해한다. Gradle이란?Spring Boot를 이용하여 개발하다보면 꼭 함께 보이는 것들이 있다. 바로 Gradle인데, build.gradle 파일로 프로젝트의 의존성을 관리하거나 ./gradlew 명령어로 build, compile, bootRun 등 프로젝트를 실행, 빌드하곤 했을 것이다. 이런 Gradle은 무엇일까? Gradle은 간단하게 말하자면 빌드 자동화 도구이다. DSL(Groovy / Kotlin)로 빌드 과정을 스크립트처럼 작성하고 Task 단위로 실행하는 것이다. build.gradle와 settings.gradle에 의존성, 플러그인, 작업 순서 등을 코드처럼 작성하고 ..