[CHAPTER 1] - 자바 8, 9, 10, 11 : 무슨 일이 일어나고 있는가? #7
Unanswered
ahngilwoong
asked this question in
CHAPTER 1 자바 8, 9, 10, 11 : 무슨 일이 일어나고 있는가?
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Java 8 뭐가 바뀌었지?
자바 8은 정말 정말 자바의 빅뱅패치라 할 만큼 대격변 업데이트 라고 한다. 바뀐 점을 대략적으로 알아보자.
1. 람다 표현식 추가
2. 스트림 API 추가
3. 날짜 및 시간
4. 인터페이스의 디폴트 메서드 추가
5. Optional 클래스 추가
6. 메서드 참조 추가
7. JVM 구조 변경
8. 병렬 프로그래밍 지원
수 많은 언어중에 자바가 성공한 배경이 무엇인가?
Java 8 파헤치기
스트림 처리
스트림이란 한번에 한개 씩 만들어지는 연속적인 데이터 항목들의 모임이라고 적혀있다.
입력 스트림에서 데이터를 한 개씩 읽어들이며 마찬가지로 출력 스트림으로 데이터를 한 개씩 기록한다.
즉, 어떤 프로그램의 출력 스트림은 다른 프로그램의 입력 스트림이 될 수 있다고 한다.
그래서 스트림은 스레드라는 복잡한 개념을 쓰지 않고 병렬적인 처리를 얻을 수 있는 장점이 있다고한다.
동작 파라미터화로 메서드에 코드 전달하기
자바 8에 추가 된 두 번째 프로그램 개념은 코드 일부를 API로 전달하는 기능이다.
당장 이해한 바로는 값들이 아닌 동작 즉 메서드 자체를 다른 메서드에 전달 할 수 있는 바로 이해한다.
스트림 API는 연산의 동작을 파라미터화 할 수 있는 코드를 전달한다는 사상에 기초한다는 말이 중요해 보인다.
병렬성과 공유 가변 데이터
synchronized는 엄청난 비용이 발생된다는 점은 다들 알고 있는 사실이다.
자바의 스트림을 이용해 공유된 자원에 접근하지 않고 병렬처리를 할 수 있는 안전한 처리가 가능하다는 점이 있다고 한다.
외부 반복과 내부 반복
외부 반복(External Iteration)
외부 반복은 전통적인 반복 방식으로, 명시적인 반복자(iterator)를 사용하여 데이터 컬렉션을 반복하는 방법이다.
외부에서 반복자를 가져와 컬렉션의 요소를 하나씩 가져오거나 수정하는 작업을 수행한다.
일반적으로 for 루프나 while 루프와 함께 사용되며, 개발자가 반복 과정을 직접 제어하여 흐름을 멈추는 등의 유연한 처리를 가질 수 있다.
내부 반복(Internal Iteration)
내부 반복은 컬렉션 자체에서 반복 작업을 처리하는 방식이다.
반복을 처리하는 로직은 컬렉션 내부에서 추상화 되어 있다고 한다.
결국 반복을 컬렉션에게 위임을 하느냐 안하느냐에 따라서 외부 반복과 내부 반복으로 나누어 지는 것으로 이해하였다.
마무리
대표적으로 Java 8의 업데이트에 대해서 파헤쳐보고 람다와 스트림을 약간 알아봤지만
이것만으로도 기존에 사용하던 개념들에 비해 상당히 큰 변화가 느껴졌다.
Java 8은 2014년에 나온 업데이트라고 한다 곧 나온지 10년이 되가는데 아직 스트림을 모른다고 말하는건 부끄러운 일 일수도 있겠다 생각한다.
Beta Was this translation helpful? Give feedback.
All reactions