이 서평은 제이펍의 <IT 전문서 리뷰어 3기> 활동의 일환으로 출판사로부터 책을 제공받아 작성되었습니다.
이 책은 처음에 레벨업을 원하는 자바 개발자를 위한 자료를 만들기 위해 이 책을 작업하게 되었다고 한다.
10년 전 자바 7이 개발되고 있을 때 이 책의 초판이 아래와 같은 목표로 작성되었다.
- 다중 언어 프로그래밍
- 의존성 주입
- 멀티스레드 프로그래밍
- 안정된 빌드 및 CI 사례
- 자바 7의 새로운 기능
2판을 집필하게 되었을 때 아래와 같은 여러 가지의 변경점이 필요하다는 것을 알게 되었다고 한다.
- 다중 언어 프로그래밍 간소화
- 함수형 프로그래밍에 대한 새로운 강조점 추가
- 멀티스레딩에 대한 논의 강화
- 빌드 및 디플로이먼트에 대한 다른 관점 제시
- 자바 11 및 17의 새로운 기능 소개
이 책은 백과사전식 학습이 아닌 관광 여행에 가깝다. 이렇게 작성된 의도는 읽기 시작하게 한 다음 상상력을 자극하는 주제에 대해 후속적으로 찾아볼 수 있도록 하기 위한 것이다.
동시성, 성능, 바이트코드, 클래스 로딩 등의 기술들을 소개하고, JVM에서 새로운 비자바 언어에 대해 이야기한다.
기본기가 탄탄한 자바 개발자가 되면 개발에 대한 참여와 통제력을 유지하고, 변화하는 자바 세계와 이를 둘러싼 에코 시스템에 대해 더 많이 배울 수 있을 것이다.
실습을 통한 학습을 강력히 권장하므로 테스트를 읽는 동안 책에 포함된 코드들을 실행해보는 것을 추천한다.
소스코드는 아래 페이지에서 다운로드 받을 수 있다.
https://github.com/well-grounded-java/resources
버전 8에서 11 그리고 그 이후
첫 장은 자바 17로 업그레이드하는 방법에 대한 내용이다.
자바 11에 포함된 몇 가지 편의성 향상에 대한 내용으로 시작해서, 자바 8 이후 자바 생태계와 릴리스 주기가 어떻게 변화했는지 살펴볼 것이다.
모던 자바 소개
이 책의 첫 부분에서는 자바 11과 17에서 도입된 일부 새로운 기능을 소개한다.
자바라는 용어는 여러 가지 관련된 개념 중 하나를 지칭하거나, 사람이 읽을 수 있는 프로그래밍 언어 또는 훨씬 더 광범위한 ‘자바 플랫폼’을 의미한다.
자바 언어와 자바 플랫폼 단어에 대해 명확하게 구분해보자.
- 자바 언어
- 정적 타입의 객체지향 언어
- 사람이 읽을 수 있음
- 자바 플랫폼
- 플랫폼은 소프트웨어가 실행될 수 있는 환경을 제공하는 것임
- 사람이 읽을 수 없는 클래스 파일 형태로 제공된 코드를 링크하고 실행하는 JVM
이 책에서 다루는 많은 주제에 대한 핵심을 관통하는 개념이기 때문에 잘 알아두자.
자바 17
자바 17에는 사용자가 확인할 수 있는 주요 언어 업그레이드 뿐만 아니라, 많은 내부적인 개선 사항이 포함되어 있다. 특히 성능이 업그레이드 되었다.
이 장의 주요 내용은 Text
블록, switch
표현식, record
, sealed
타입이다.
- 여러 줄 문자열을 위한
Text
블록 - 더욱 모던한
switch
사용을 위한switch
표현식 - 투명한 데이터를 담은 그릇으로서의 records
- 중요한 새로운 객체지향 모델링 개념인
sealed
타입 - 향후 버전에서 언어가 나아갈 방향을 명확하게 보여주는 패턴 매칭
한 발 더 들어가기
2부에서는 JVM이 실제로 어떻게 작동하는지 살펴본다.
많은 자바 개발자는 JVM이 실제로 클래스를 로드, 링크, 검증하는 방법을 잘 이해하지 못 한다.
이로 인한 일종의 클래스로 더 충돌로 인해 일부 클래스의 잘못된 버전이 실행될 때 좌절감에 부딪히고 시간 낭비를 초래한다.
2부가 끝나게 될 때는 더 이상 IDE에 있는 소스 코드만 생각하는 개발자가 되지는 않을 것이다.
자바와 JVM이 내부에서 어떻게 작동하는지 알게 될 것이고, 가장 강력한 범융 가상머신을 최대한 활용할 수 있게 될 것이다.
자바 동시성 기초
자바는 주로 두 가지 동시성$_{concurrency}$API를 가지고 있다.
동기화 기반 동시성이라 불리는 오래된 API와 java.util.concurrent
라는 패키지 이름으로 알려져 있는 최신 API다.
이 책에서는 두 가지 접근 방식에 대해 모두 이야기 할 것이다. ‘5장 - 자바 동시성 기초’와 ‘6장 - JDK 동시성 라이브러리’에 걸쳐 살펴본다.
16장에서 다시 동시성 주제로 돌아가서 고급 기법, 자바 외의 JVM 언어에서의 동시성, 동시성과 함수형 프로그래밍 사이의 상호작용에 대해 이야기한다.
자바의 새 영역
맵, 필터, 리듀스의 기본을 넘어 함수형 프로그래밍에 대해 자세히 살펴본다.
자바의 설계와 역사가 함수형 스타일에 몇 가지 장벽을 제시하는 이유를 상세히 살펴볼 것이다.
그 다음 함수형 언어의 고급 기술이 코드를 간소화하고 기능을 강화하기 위해 코틀린과 클로저에 어떻게 나타나는지 자세히 살펴본다.
2부의 동시성 주제를 기반으로 안전하고 성능이 뛰어난 애플리케이션을 빌드할 수 있는 다른 가능성도 살펴볼 것이다.
Fork/Join 같은 최근 자바에 도입된 기능부터 코틀린의 코루틴, 클로저의 에이전트에 이르기까지 최신 컴퓨팅의 멀티코어, 멀티스레드 환경을 관리할 수 있는 더 많은 옵션에 대해 알게 될 것이다.
고급 함수형 프로그래밍
업계에서 함수형 프로그래밍$_{function \space programming, \space FP}$에 대한 많은 이야기가 있지만, 아직 잘 정의되지 않은 개념으로 남아있다.
유일하게 합의된 사항은 함수형 프로그래밍 언어에서 코드는 일급 데이터 항목으로 표현할 수 있다는 것이다.
즉, 지연된 계산의 일부를 변수에 할당할 수 있는 값으로 표현할 수 있어야 한다.
객체지향과 마찬가지로 함수형 프로그래밍 언어
가 무엇인지에 대한 근본적으로 합의된 정의는 존재하지 않는다.
단순히 다른 언어보다 더 함수적이거나 덜 함수적인 것이지, 절대적인 척도로 평가하면 안 된다.
총평
훌륭한 자바 개발자가 되기 위해서는 단단한 기본기가 필수적이다.
이 책은 단순히 기본만을 다루는 책들과 다르다.
자바 8 이후 생태계 변화와 릴리스 주기의 변화를 살펴보고, 자바 11 및 17에 추가된 새로운 기능들을 상세하게 설명한다.
또한, 다음과 같은 다양한 주제를 깊게 다룬다.
- 자바 모듈 시스템과 동시성 모델, 클래스 로딩 메커니즘 등의 강력한 기능
- 성능 최적화 기법과 바이트코드 조작을 위한 고급 기술
- 테스트 주도 개발(TDD)과 컨테이너 기반 배포 등 현대적인 개발 방법론
더불어, 코틀린 및 클로저 같은 다른 JVM 언어들도 소개해 자바 기술을 한층 더 업그레이드하고 탄탄한 기반을 다질 수 있도록 도와준다.
'Life > 독서 기록' 카테고리의 다른 글
[서평] 중요한 내용만 빠르게 - 컴퓨터 구조와 운영체제 핵심 노트 (2) | 2024.09.29 |
---|---|
[서평] CS 익힘책 - 이것이 취업을 위한 컴퓨터 과학이다 (11) | 2024.09.28 |
[서평] 인공지능 시대의 경제 - 금융 AI의 이해 (3) | 2024.09.04 |
[서평] 실무로 통하는 타입스크립트 (1) | 2024.07.28 |
[서평] 문제와 해설을 한 번에 - 이기적 정보처리기사 실기 핵심 600제 (0) | 2024.07.19 |
컴퓨터 전공 관련, 프론트엔드 개발 지식들을 공유합니다. React, Javascript를 다룰 줄 알며 요즘에는 Typescript에도 관심이 생겨 공부하고 있습니다. 서로 소통하면서 프로젝트 하는 것을 즐기며 많은 대외활동으로 개발 능력과 소프트 스킬을 다듬어나가고 있습니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!