JAVA 21 - VirtualThread 기능 살펴보기

Virtual Thread (Java 21) Java 21에 추가된 Virtual Thread 는 처리량이 높은 동시 어플리케이션을 작성 할 수 있는 경량 스레드 이다. 기존에 사용 하던 Thread 는 OS Thread 를 랩핑 해서 사용 하는 형태로 OS의 총 스레드 개수에 따라 최대 Thread 의 생성 갯수가 정해지며 생성 비용이 높다. 신규로 추가된...

우아한테크세미나 - 우아한 스프링 배치 기록

우아한 스프링 배치 테크 세미나 소식에 고민 1도 없이 신청서를 작성 해서 신청 했는데 운좋게 참석 할 수 있어서 다녀 왔다. 개발 하면서 매우 도움을 많이 받았던 블로그의 주인인 jojoldu 님 께서 발표를 해주셨고 기본편 & 활용편으로 나누어 진행 되었다. 잊어버리기 전에 빨리 기록을 남긴다. 전반전 : 기본편 배치 어플리케이션이란?...

JDK 12 features

JDK 12 features (Switch Expressions) JEP 325 : Switch Expressions (Preview) 자바의 오래된 스위치 식은 여러 가지 문제점을 가지고 있습니다. 장황한 break 문, 시각적인 노이즈 발생, 디버깅의 어려운점을 예로 들 수 있습니다. JDK 12 에서는 이러한 전통적인 스위치 식을 개선하여 개발자의 코딩을 향상 시킵니다. 어떤 부분이 향상 되었는지 알아보도록 하겠습니다....

일반적인 프로그래밍 원칙(JAVA)

Effective Java E/3 학습을 하며 정리 하는 글입니다. 지역변수를 최소화 하라. 지역변수의 유효 범위를 최소로 줄이면 코드 가독성과 유지보수성이 높아지고 오류 가능성은 낮아진다. 지역변수의 볌위를 줄이는 방법 가장 처음 쓰일 때 선언 하라. 선언과 동시에 초기화 하라. 메서드를 작게 유지하고 한 가지 기능에 집중 하라. 전통적인 for 문보다 for-each 문을...

Java 문자열을 연결하는 방법(StringJoining.class and String.join())

StringJoining.class and String.join() 여러 문자열 리터럴 또는 객체를 연결 하는 것은 프로그래밍에서 일반적인 요구 사항이다. 오랫동안 JDK API에서는 여러 문자열 리터럴 또는 객체를 연결 하는 방법이 없었기 때문에 별도로 개발을 해야 했다. 아래와 같은 요건이 주어졌을 경우를 생각해보자. 요건 1 : {“hello”, “java”, “World”}의 문자열 배열이 있다. 이 문자열 배열을...

생성자를 관리 하는 여러가지 방법

Effective Java E/3 학습을 하며 정리 하는 글입니다. 생성자를 관리 하는 여러가지 방법 private 생성자나 열거 타입으로 싱글턴임을 보증하라. 인스턴스를 오직 하나만 생성 할 경우 싱글턴 을 많이 사용 한다. 여러가지 싱글턴 생성 방식을 살펴보자. 예1) public static final 방식의 싱글턴 public class SingletonClass { public static final SingletonClass INSTANCE...

Builder Pattern

Effective Java E/3 학습을 하며 정리 하는 글입니다. 생성자에 매개변수가 많다면 빌더를 고려하라. 생성자에 매개 변수가 많을 경우 어떻게 하는가? 아래와 같이 점층적 생성자를 통해 생성 할 수 있다. public class MoonbucksCoffee { private String size; //필수 private int shot; //필수 private int water; //필수 private boolean syrup; //선택 private...

static factory method

Effective Java E/3 학습을 하며 정리 하는 글입니다. 생성자 대신 정적 팩터리 메서드를 고려하라. Effective Java 에서는 생성자 대신 정적 팩터리 메서드를 고려 하라고 설명한다. 정적 팩터리 메서드가 무엇인지 알아보자. 일반적으로 클라이언트가 클래스의 인스턴스를 생성 하기 위해서는 아래와 같은 방법으로 얻을 수 있다. SomeClass sc = new SomeClass(); .... 하지만...

자바 디자인 패턴의 종류

디자인 패턴이란? 디자인 패턴이란 프로그래밍 할때 문제를 해결하고자 코드의 구조들을 일정한 형태로 만들어 재이용 하기 편리하게 만든 일정한 패턴이다. 이 용어를 소프트웨어 개발 영역에서 구체적으로 처음 제시한 곳은, GoF(Gang of Four)라 불리는 네명의 컴퓨터 과학 연구자들이 쓴 서적 ‘Design Patterns : Elements of Reusable Object-Oriented Software’ (재이용이 가능한 객체지향 소프트웨어의...

Quartz 아키텍쳐를 활용 한 배치 업무 만들기

자바 Quartz 오픈 소스 예제 자바 어플리케이션에서 사용할 수 있는 유명한 오픈 소스 작업 스케쥴링 라이브러리인 Quartz 의 기본 설정 및 사용 방법에 대해 알아보자. 1. 프로젝트 환경 Java8 Quartz 2.3.0 SLF4J 1.7.7 Maven 3.3.3 Eclipse 4.10.0 2. Quartz 다운로드 Quartz Team github : Quartz GitHub Link 3. Maven 의존성...

TDD Example(Bowling Game)

이글은 백명석님의 강의를 학습하면서 정리 된 자료 입니다. 개요 볼링 게임 점수 계산을 하는 프로그램을 TDD로 작성 해보자. 볼링 게임 예제 소스 : (https://github.com/ParkHyeokJin/BowlingGame-Example.git) 규칙 볼링 게임은 10개의 프레임으로 구성된다. 각프레임은 대개 2 룰을 갖는다(10개의 핀을 쓰러뜨리기 위해 2번의 기회를 갖는다) Spare: 10 + next first roll 에서 쓰러 뜨린...

Java11의 새로운 기능

Java11의 새로운 기능 JAVA11 발표 및 라이센스 변경 오라클은 6개월마다 새로운 버전을 제공 한다고 발표를 했습니다. 그리고 라이센스 및 지원 모델을 변경 했습니다. Java11 은 더이상 상업용도로 무료가 아닙니다. 개발에서 사용 하는 것은 가능 하지만 상업적으로 사용 하려면 라이센스를 구매 해야 합니다. 2019년 1월 부터 Java8 지원을 중단 하고 추가...

자바 람다식 튜토리얼

자바 람다식 소개 이 포스팅에서는 Java Lambda Express 에 대해 소개 합니다. Lambda 기능은 Java8에서 소개 되었는데 Functional Programming 을 하기 위한 첫번째 단계로 볼 수 있습니다. 클래스 없이 함수를 만들 수 있고 매개변수로 전달도 가능 하며 필요에 따라 언제든지 실행 할 수 있습니다. Java Lambda expressions 는 전달할 수...

Java8의 8가지 새로운 기능

Java8의 8가지 새로운 기능 2014년 JDK 8 (Java SE 8, JDK 8, JRE 8) 발표 2014년 JDK 8 Lambda 추가 2011년 JDK 1.7이 나온 이후로 3년이 업데이트에 3년이 걸렸습니다. 하지만 1.7에서 구현하지 못했던 많은 변화들이 1.8에 담기게 됩니다. 변화된 기능 1) Lambda Expression 기본 구분 (argtype arg...) -> { return...

Java7의 10가지 새로운 기능

Java7의 10가지 새로운 기능 2011년 JDK 7 (Java SE 7, JDK 7, JRE 7) 발표 JDK 1.0에서 JDK 6까지 2년마다 업데이트가 되었지만 JDK 7은 5년만에 업데이트 되었습니다. JDK 7의코드 네임은 Dolphin입니다. 제품명은 아래와 같습니다. Java™ Platform Standard Edition 7 (Java™ SE 7) Java™ SE Development Kit 7 (JDK™ 7) Java™...