본문 바로가기
자바

[모던 자바 인 액션] 결론 그리고 자바의 미래

by __Minnie_ 2025. 5. 29.
자바8 변화의 이유

 

1. 멀티코어 프로세스의 활용

2. 선언형으로 데이터를 처리하는 방식

 

자바 8의 변화 요약

 

1. 동작 파라미터화: 함수를 일급값으로 사용. 동작을 파라미터화. 

2. 스트림: 선언형으로 데이터 처리

3. CompletableFuture: 비동기 처리. 병렬 처리

4. Optional: null 처리

5. Flow API: 리액티브 스트림 처리

6. 디폴트 메서드: 인터페이스에서 메서드 기본 구현 제공

7. 자바 모듈 시스템(자바 9): 안정적 설정(모듈 요구사항 명시), 캡슐화, 보안성 등

8. 지역 변수형 추론(자바 10): var 키워드 사용. 타입을 추론 

 

 

미래

 

1. 선언 사이트 변종

자바에서는 현재 제네릭의 서브형식을 와일드카드로 지정하는 사용 사이트 변종이라는 개념을 사용한다. 하지만 c#, 스칼라 같은 언어는 선언 사이트 변종 기능을 제공하고, 본질적으로 선언 사이트 변종인 것에 적용하기 위해서는 이 기능이 추가되면 좋을 것이다.

 

2. 패턴 매칭

자바 21에서 기능 제공

 

🔍 Java 패턴 매칭(Pattern Matching)이란? 쉽게 이해하는 가이드

💡 **Java의 패턴 매칭(Pattern Matching)**은 객체의 타입을 검사하고 해당 타입에 맞게 변수를 선언하는 기능입니다.Java 21에서는 switch 문에서도 패턴 매칭을 사용할 수 있게 되면서 코드를 더 간결하

kimseungjae.tistory.com

 

3. 구체화된 제네릭

구체화된 제네릭이란 타입 정보가 런타임에도 유지되고 사용할 수 있는 것을 의미합니다. 자바에서는 제네릭에 타입 소거 방식을 적용하기 때문에 제네릭을 컴파일 타임에서만 인식하고, 실행 시점에는 타입 정보를 제거합니다. 그래서 자바에서는 런타임에 구체적인 타입 정보를 알 수 없습니다. 코틀린에서는 구체화된 제네릭을 지원하는데, 코틀린에서는 런타임에 타입 정보를 활용할 수 있습니다. 

 

4. 불변성

자바에서는 현재 불변성을 위해서 final을 제공하지만 final은 필드값의 갱신만을 막기 때문에 근본적으로 불변성을 제공하기 어렵다. 따라서, 필드값이든 객체 참조든 직간접적으로 모든 값의 변경을 막는 transitively_final같은 키워드가 필요하다. 

 

5. 값 형식

값 형식이란 데이터를 직접 저장하는 개념을 의미한다. 따라서 기본형도 값 형식에 포함될 수 있다. 기본형과 값 형식이 동일한 개념이 아닌가 라는 생각이 들 수 있지만, 값 형식이 더 큰 개념으로 c++의 struct도 값 형식에 포함된다. 값 형식은 참조 식별자가 없다는 장점이 있다. 

 

자바의 업데이트

 

과거 자바는 22년 동안 10번의 릴리즈를 할 정도로 릴리즈 텀이 굉장히 길었다. 하지만, 빠른 언어의 진화를 위해서 자바는 6개월이라는 개발 주기를 갖게 되었다. 하지만 이렇게 릴리즈가 빨라지면 소프트웨어 업데이트에 보수적인 회사에서 문제가 될 수 있기 때문에 LTS를 제공하기로 하였다. (매3년마다 3년 동안 지원)