본문 바로가기 메뉴 바로가기

왕초보개발자

프로필사진

왕초보개발자

왕초보개발자
검색하기 폼 Mountain View
  • 분류 전체보기 (105)
    • CHAT (11)
    • 테스트코드 (5)
    • Web (18)
    • 시스템 디자인 (11)
    • Spring (6)
    • Java & Kotlin (20)
    • Jpa (2)
    • 데이터베이스 (17)
    • DevOps (4)
    • OS (1)
    • 네트워크 (2)
    • 리뷰 (8)
  • GitHub
  • LinkedIn
  • GUESTBOOK
  • TAG
  • RSS

Java & Kotlin
[Java] JVM 버전별 특징

목차배경Java 진영에서는 꾸준히 LTS 버전을 출시하며 최신 트렌드와 기술적 요구사항을 준수하는 버전을 제공한다. 이번 글에서는 대표적인 Java LTS 버전인 Java 5, Java 8, Java 11, Java 17, Java 21에서 제공하는 대표적인 특징을 정리해본다. 간략히 정리해보자면 각 버전과 비교되는 대표적인 특징은 다음과 같다. Java 5: Generic, EnumJava 8: Lambda, Functioinal Interface, Stream API, OptionalJava 11: Lambda내 var 키워드 사용, HTTP Client API 표준화, ZGC 실험 도입Java 17: Record, Sealed ClassJava 21: Virtural Thread, Pattern M..

Java & Kotlin 2026. 3. 7. 13:16
[JVM] Garbage Collection(GC) 동작 원리와 알고리즘

목차배경Java 또는 Kotlin 환경에서 백엔드 개발 업무를 하면서 그 전체 동작 구조를 이해하는 것은 필수적이다. 장애 발생시 빠른 대응이나 기술적 문제를 개선하여 서비스 성장에 기여할 수 있기 때문이다. 이번 글에서는 그 중 JVM의 Heap 영역을 다루는 프로세스인 GC를 Garbage Collection(GC)를 다룬다.Garbage Collection(GC)Java의 메모리 관리 방법 중의 하나, JVM(자바 가상 머신)의 Heap 영역에서 동적으로 할당했던 메모리 중 필요 없게 된 메모리 객체(Garbage)를 모아 주기적으로 제거하는 프로세스이다. 주 목표는 개발자가 메모리 해제를 신경 쓰지 않으면서, 서비스에 방해가 안 되게, 서비스 영향 시간을 최소화하여 조용히 메모리를 관리하는 것이다..

Java & Kotlin 2026. 3. 4. 17:52
[Kotlin] 코틀린의 스코프 함수(Scope Funcion) apply, run, with, also, let

목차배경코틀린(Kotlin)의 대표적인 언어적 특징으로 스코프 함수(Scope Funcion)가 있다. 스코프 함수(Scope Funcion)는 람다 표현식(Lambda Expression)을 활용해 객체의 컨텍스트 내에서 일시적인 영역을 만드는 기능을 제공하는데, 스코프 함수를 통해 메서드 체이닝(Method Chaining)을 활용하고, 코드를 더욱 안전하고 간결하게 작성할 수 있다. 코틀린에서 제공하는 스코프 함수로는 apply, run, with, also, let가 있다.예시 설명을 위해 다음과 같은 User 클래스가 있다고 가정한다. User 클래스는 나이를 1 증가하는 growOlder() 메서드, User 정보를 반환하는 getInfo() 메서드를 제공한다.class User( val id..

Java & Kotlin 2025. 6. 26. 07:34
[Java] Sealed Class로 객체지향 코드 작성하기

목차배경Java 17버전부터는 Sealed Class와 Sealed Ineface를 제공한다. Sealed Class와 Sealed Interface는 상속과 구현할 클래스를 제한하여 구현 가능한 타입을 명확히 지정할 수 있다. 또한 문법적으로 상속/구현 가능한 클래스를 제한하여 의도치않은 상속과 구현을 방지할 수 있다. 이러한 특징으로 컴파일 시점에 올바르게 클래스를 상속 또는 인터페이스를 구현했는지 검증할 수 있다. 또한 Sealed Class를 활용하여 객체지향적 설계와 코드를 작성하고, Mocking을 통해 테스트 코드로 여러 케이스에 대한 검증을 할 수 있다. 예시 - Sealed Class를 활용한 API 응답 처리예를 들어 API 요청과 응답에 따른 처리가 필요하다고 가정해보자. API 응답..

Java & Kotlin 2025. 3. 2. 14:59
[Kotlin] 코틀린의 인라인 클래스 (Inline value classes)

💡 넥스트 스탭의 TDD, 클린 코드 with Kotlin 8기 강의를 수강하며 정리한 내용입니다. 목차Wrapping Class객체 지향 설계를 따르다보면, 때로는 도메인별 특정 유형을 만들기 위해 값을 클래스로 래핑하는 것이 유용하다. 예를 들어 영화 제목과 티켓 가격을 나타내는 Movie 클래스를 가정해보자.class Movie( val name: String, val ticketPrice: Long,)이 때 도메인에 특화된 설계를 위해서 영화 표 가격 타이블 Long으로 두는 것 대신 이를 래핑(Wrapping)하는 Price 클래스를 둘 수 있다.class Movie( val name: String, val ticketPrice: Price,)class Price( val price: Long..

Java & Kotlin 2024. 12. 9. 17:16
[Kotlin] check()와 require(), 코틀린 람다 표현식 {}

목차배경코틀린은 개발자의 편의를 위해 자주 쓰이는 로직(단순 조건 체크과 예외 throw 등)을 매번 구현할 필요없이 손쉽게 사용할 수 있는 간편한 많은 기능을 제공한다. 이번에는 그 중 구문에 대한 체크와 예외 처리를 간편하게 할 수 있는 check(), require(), checkNotNull(), requireNotNull()를 살펴본다.check()안에 있는 구문이 false라면 IllegalStateException를 던진다.  해당 메서드의 구현을 살펴보면 다음과 같다. Boolean 타입의 체크할 조건을 value를 매개변수로 받고 조건을 만족하지 않으면 전달받은 함수 lazyMessage를 실행하여 예외 메시지(message)를 생성한다. 생성한 예외 메시지를 통해 IllegalState..

Java & Kotlin 2024. 12. 1. 00:38
[JVM] JVM 기반언어, 자바와 코틀린의 빌드 과정과 실행 원리

목차배경최근 많은 국내 IT 회사에서는 점차 JVM 기반 언어인 Kotlin을 도입하고 있다. 이번에는 Java가 처음 등장한 배경을 빌드 과정과 실행 방식을 통해 살펴보고, JVM 기반 언어란 무엇인지, 이를 배경으로 Kotlin의 동작 방식과 실행 원리는 어떠한지 살펴본다. C++의 빌드 과정Java의 빌드과정과 실행 원리를 살펴보기 위해서, C++의 빌드 과정을 먼저 살펴보자.Java가 등장하기 전, C++는 각 환경별로 실행되는 컴파일러가 각각 존재했다. 운영 체제별로 서로 다른 컴파일러가 소스 코드를 읽어들이고, 운영체제에 최적화된 바이너리를 만들어 냈다. 즉, 윈도우에서는 윈도우 C++ 컴파일러인 MSVC 컴파일러가 윈도우에 최적화된 바이너리를 만든다. 리눅스에서는 리눅스 C++ 컴파일러인 G..

Java & Kotlin 2024. 11. 24. 15:19
[Java] 자바의 두가지 정렬 방법(Comparable, Comparator)

목차 배경자바의 두가지 정렬 방법에 대해 알아본다. 정렬 메커니즘 중에 호출하게되는 compareTo()와 compare() 메서드를 이용한 객체 값 비교는 실무에서도 유용하고 미묘한 차이로 다르게 동작하는 케이스도 있어 정리하고 숙지해두면 매우 유용할 것 같다.Comparable 인터페이스와 compareTo() 메서드Comparable을 상속받는 클래스 내부에 compareTo() 메서드를 구현한다. Comparable은 java.lang.Comparable 패키지에 선언되어있다. Comparable 인터페이스의 추상 메서드인 compareTo()에 정렬 기준을 작성한다. Comparable 인터페이스와 compareTo()의 메서드 시그니쳐는 다음과 같다.public interface Compara..

Java & Kotlin 2024. 8. 1. 22:24
[Java] 주요 함수형 인터페이스(Function Interface) (2/2)

목차 글 목록[Java] 함수형 프로그래밍(Functional Programming)과 람다식(Lambda Expression) (1/2)[Java] 주요 함수형 인터페이스(Function Interface) (2/2)배경(지난 [Java] 함수형 프로그래밍(Functional Programming)과 람다식(Lambda Expression) (1/2) 글에 이어 작성한 내용입니다.) 최근 회사에서 리팩토링 중에 다음과 같은 코드 중복을 함수형 인터페이스를 활용하여 개선한 적이 있다.public class ServiceA { private final ServiceC serviceC; private final RepositoryA repositoryA; public void methodA(){ List o..

Java & Kotlin 2024. 3. 19. 21:43
[Java] 함수형 프로그래밍(Functional Programming)과 람다식(Lambda Expression) (1/2)

목차 글 목록 [Java] 함수형 프로그래밍(Functional Programming)과 람다식(Lambda Expression) (1/2) [Java] 주요 함수형 인터페이스(Function Interface) (2/2) 배경 최근에 회사에서 내가 개발했던 코드를 리팩토링하며 중복을 개선하려했었는데, 다음과 같은 중복이 여전히 남아있었던 적이 있다. 코드를 직접적으로 작성할 수 없어 예시로 풀어보자면, 전체적인 로직 자체는 거의 유사하지만 결국 호출하는 메서드와 참조하는 객체(repositoryA.save(), repositoryB.save())가 달라 중복 코드가 발생했던 케이스다. public class ServiceA { private final ServiceC serviceC; private f..

Java & Kotlin 2024. 3. 10. 22:47
[Java] 변수 선언과 할당을 나눠야하는 경우와 그렇지 않은 경우

목차 배경 이번 글에서는 변수 선언과 할당을 나눠야하는 경우와 그렇지 않은 경우를 다뤄보려고 한다. 사실, 특별한 이유가 없다면 변수 선언과 할당을 나누지 않는 것이 좋다. 변수 선언과 할당을 나누는 것을 권장하지 않는 이유 먼저 가독성을 저해하고 코드 이해의 어려움을 초래한다. 코드의 가독성은 항상 중요하다. 내가 작성한 코드는 나 혼자만 보는 것이 아니라 다른사람이 함께 보는 코드이며 결국 개발을 하다보면 코드를 기반으로 의사소통, 문제해결 등 모든 주요 업무를 진행하기 때문이다. 이런 점에서 변수 선언과 할당을 나누면 코드의 흐름을 이해하기 어려워진다. 즉, 다른 사람이 작성한 코드를 읽을 때 해당 변수가 언제 어떻게 초기화되었는지 명확하게 파악하기 어려워진다. 변수 선언과 할당을 나눈다는 것은 결..

Java & Kotlin 2023. 12. 31. 18:14
[Java] 메서드 및 필드 선언 순서 컨벤션(in 자바)

목차 배경 코드리뷰 중에 다음과 같은 의견을 들은 적이 있다. '로직이 들어가는 메소드가 toString() 보다 상단으로 올라가면 더 좋을 것 같아요', '보통 static 변수를 먼저 선언하는 것 같아요 😅' 사실 평소에는 습관적으로 클래스 -> 변수 -> 생성자 -> 메서드 순으로 메서드와 필드를 선언하고 있었고, 다른 코드를 참고하더라도 비슷한 형태로 선언하고 있어서 이를 당연하게 여겼었다. 하지만 코드리뷰 중에 위와 같은 의견들을 듣기 시작하면서 어떤 순서로 선언하는 게 좋을지 궁금증이 생겨 관련 문서와 글들을 찾아보았고, 이러한 컨벤션을 준수하는 것만으로도 서로 이해하기 쉬운 코드를 작성하는데 큰 도움이 될 것 같아 블로그에도 기록해 두었다. java 메서드 및 필드 선언 순서 컨벤션 이러한 ..

Java & Kotlin 2023. 12. 31. 17:52
이전 1 2 다음
이전 다음
TAG
  • 코딩테스트
  • 서버개발
  • 더 맵게
  • 완전탐색
  • ✔
  • 오블완
  • 참고한코드
  • 티스토리챌린지
  • 알고리즘
  • 최소힙
  • 자바9
  • 도커
  • ✔️
  • 강의리뷰
  • Python
  • 최대힙
  • 자바
  • 멀티모듈
  • heapq
  • 프로그래머스
  • 추상클래스와 인터페이스의 차이
  • 파이썬3
  • 파이썬 가상환경
  • 추상메서드
  • 브루트포스
  • 파일탐색
  • 파이썬
  • Java
  • Java9
  • java8
more
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday

Powered by Tistory / Designed by INJE

티스토리툴바