자바8 변화의 이유
1. 멀티코어 프로세스의 활용
2. 선언형으로 데이터를 처리하는 방식
자바 8의 변화 요약
1. 동작 파라미터화: 함수를 일급값으로 사용. 동작을 파라미터화.
2. 스트림: 선언형으로 데이터 처리
3. CompletableFuture: 비동기 처리. 병렬 처리
4. Optional: null 처리
5. Flow API: 리액티브 스트림 처리
6. 디폴트 메서드: 인터페이스에서 메서드 기본 구현 제공
7. 자바 모듈 시스템(자바 9): 안정적 설정(모듈 요구사항 명시), 캡슐화, 보안성 등
8. 지역 변수형 추론(자바 10): var 키워드 사용. 타입을 추론
미래
1. 선언 사이트 변종
자바에서는 현재 제네릭의 서브형식을 와일드카드로 지정하는 사용 사이트 변종이라는 개념을 사용한다. 하지만 c#, 스칼라 같은 언어는 선언 사이트 변종 기능을 제공하고, 본질적으로 선언 사이트 변종인 것에 적용하기 위해서는 이 기능이 추가되면 좋을 것이다.
2. 패턴 매칭
🔍 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년 동안 지원)
'자바' 카테고리의 다른 글
[모던 자바 인 액션] OOP와 FP의 조화: 자바와 스칼라 비교 (0) | 2025.05.29 |
---|---|
[모던 자바 인 액션] 함수형 프로그래밍 기법 (0) | 2025.05.28 |
[모던 자바 인 액션] 함수형 관점으로 생각하기 (0) | 2025.05.28 |
[모던 자바 인 액션] 자바 모듈 시스템 (0) | 2025.05.09 |
[모던 자바 인 액션] 디폴트 메서드 (0) | 2025.05.08 |