본문 바로가기

전체 글29

[모던 자바 인 액션] 람다를 이용한 도메인 전용 언어 도메인 전용 언어(DSL)DSL은 특정 비지니스 도메인의 문제를 해결하려고 만든 언어이다. DSL은 특정 도메인에 국한되기 때문에 오직 눈 앞에 놓인 문제를 어떻게 해결할지에만 집중하면 된다. 이를 이용하면 특정 도메인의 복잡성을 더 잘 다룰 수 있고, 저수준 구현을 캡슐화하여 사용자 친화적인 DSL을 만들 수 있다. DSL의 장점?간결함, 가독성, 유지보수, 높은 수준의 추상화, 집중, 관심사의 분리 등이 있다. DSL의 단점?설계의 어려움, 개발 비용, 추가 우회 계층, 새로 배워야 하는 언어, 호스팅 언어 한계가 있다. 내부 DSL, 다중 DSL, 외부 DSL 1. 내부 DSL 내부 DSL이란 기존 호스팅 언러를 기반으로 구현하는 DSL을 말한다. 이 책에서는 java를 활용해서 구현한 DSL을.. 2025. 5. 2.
[모던 자바 인 액션] 리팩터링, 테스팅, 디버깅 코드 가독성, 코드 유연성일반적으로 코드가독성이 좋다는 것은 어떤 코드를 다른 사람이 쉽게 이해할 수 있음을 의미한다. 코드 가독성을 높이기 위해서는 코드 문서화를 잘하고, 표준 코딩 규칙을 잘 준수하는 것이 중요하다. 일반적으로 코드유연성은 변화하는 요구사항에 대응할 수 있음을 의미한다. 유연성을 높이기 위해서는 앞에서 살펴본 동작파라미터화 등을 사용할 수 있다. 리팩토링 1. 익명 클래스를 람다 표현식으로 리팩토링Runnable r1 = new Runnable() { pubilc void run() { System.out.println("Hello"); }}Runnable r2 = () -> System.out.println("Hello");위 코드를 보았을 때, 익명 클래스를 람다로 .. 2025. 5. 2.
[모던 자바 인 액션] 컬렉션 API 개선 앞에서 여러 컬렉션 API에 대해서 배웠지만, 더 쉽고 간단하게 사용할 수 있는 새로운 컬렉션 API에 대해서 소개한다. 리스트 컬렉션 팩토리List friends = new ArrayList();friends.add("Raphael");friends.add("Olivia");friends.add("Thibaut");우리가 자바에서 작은 요소를 포함하는 리스트를 만들고 싶을 때, 위처럼 작성하게 되면 간단한 동작임에도 불구하고 굉장히 많은 코드를 필요로 한다. List friends2 = Arrays.asList("Raphael", "Olivia");그러면 Arrays.asList를 사용해보자. 그러면 코드가 굉장히 간단해지는 것을 볼 수 있다. 하지만 Arrays.asList를 사용하게 되면 고정된 크.. 2025. 5. 2.
[모던 자바 인 액션] 병렬 데이터 처리와 성능 병렬 스트림 병렬스트림이란 각가의 스레드에서 처리할 수 있도록 스트림 요소를 여러 청크로 분할한 스트림이다. 병렬 스트림은 간단하게 parallelStream을 통해서 사용이 가능하다. 첫번째 예제는 순차 스트림이고, 두번째 예제는 병렬 스트림 예제이다. Stream.iterate(1L, (i) -> { return i + 1L;}).limit(n).reduce(Long::sum).get();Stream.iterate(1L, (i) -> { return i + 1L;}).limit(n).parallel().reduce(Long::sum).get(); 성능 측정 위 두개의 코드를 하니스를 통해서 성능을 측정하면 어떻게 될까? 책에서 제공되는 값 기준으로 첫번째 코드는 121.843, 두번째 .. 2025. 4. 25.