모던 자바 인 액션 21장 : 결론 그리고 자바의 미래

Adam·2024년 7월 21일
0

모던 자바 인 액션

목록 보기
20/20
post-thumbnail

자바 8의 기능 리뷰

동적 파라미터화

메서드나 메서드 참도를 인수로 전달하는 것이 가능해졌다

스트림

스트림 API의 파이프라인은 연산을 게으른 형식으로 처리하여 큰 데이터 집합일수록 데이터 처리 방식이 효율적

parallel 메서드를 사용해 병렬처리 역시 가능

CompletableFuture 클래스

Future을 이용하면 여러 작업이 동시에 실행될 수 있도록 다른 스레드나 코어로 작업을 할당할 수 있다

Optional 클래스

계산을 수행하면서 값이 없을 때 에러를 발생시킬 수 있는 null대신 정해진 데이터 형식을 제공할 수 있다

Flow API

리액티브 스트림과 리액티브 당김 기반 억압력 프로토콜을 표준화 했는데, Flow API는 호환성을 높일 수 있도록 라이브러리가 구현할 수 있는 네 개의 인터페이스 Publisher, Subscriber, Subscription, Processor을 포함

디폴트 메서드

인터페이스 설계자는 메서드의 기본 구현을 제공하는 것이 가능

인터페이스에 변경이 생겨도 사용자는 신경을 쓸 필요가 없어졌다

자바 9 모듈 시스템

자바 9는 다른 릴리스에 비해 과거 호환성을 해침

  1. 자바의 가시성 접근자는 메서드와 클래스 간의 캡슐화를 정의하는 용도일 뿐 패키지 간에는 모든 접근성이 공개 됐기 때문에 모듈화 하는 것이 어려웠다
  2. 모듈 시스템이 부재하여 같은 환경에서 실행되는 모든 코드의 보안과 관련된 기능을 노출하는 것을 막을 방법이 없었다
  3. 새로운 모듈 시스템 덕분에 자바 런타임이 작은 부분으로 나눠질 수 있게 되었다

자바 모듈 시스템이 제공하는 장점

  1. 안정적 설정: 모듈 요구사항을 명시적으로 선언함으로 의존성 빠짐, 충돌, 순환 등의 문제를 빌드 과정에서 확인
  2. 강한 캡슐화: 특정 패키지만 노출한 다음 각 모듈에서 공개할 부분과 내부 구현의 영역 접근을 분리
  3. 보안성 개선: 사용자가 모듈의 특정 부분을 사용할 수 없도록 함으로 해커가 보안 제어를 뚫기 어려워졌다
  4. 성능 개선: 클래스가 런타임이 로드된 다른 클래스를 참조하는 상황보다는 적은 수의 컴포넌트를 참조할 때 최적화 기술이 더 효과를 발휘
  5. 확장성: 실행중인 애플리케이션에서 필요한 부분만 사용하는 것이 가능

자바 10 지역 변수형 추론

형식이 생략되면 컴파일러가 생량된 형식을 추론

형식 추론 장점

  1. 편집 작업이 줄어듬
  2. 가독성이 좋아짐

지역변수형 추론

지역 변수의 형식을 var 키워드로 대체하는 것이 가능

var MyMap = new HashMap<String, List<String>>();

자바의 미래

이후 버전의 자바에서 추가되면 좋을 것 같은 부분

선언 사이트 변종

선언 사이트 변종을 이용하면 제네릭 클래스를 정의할 때 프로그래머가 변종을 지정할 수 있다

패턴 매칭

복잡한 switch, if-else문을 간결하게 하는 것이 가능

풍부한 형식의 제네릭

가비지 컬랙션 때문에 제네릭 형식의 파라미터로 객체만 사용할 수 있게 되었다

이는 비용을 수반한다

더 빠르게 발전하는 자바

짧은 개발 주기 덕에 자바는 적당한 속도로 진화할 수 있고 개발에 유용하고 적절한 언어가 될 수 있을 것이다

profile
Keep going하는 개발자

0개의 댓글