5. ⓒSaebyeol Yu. Saebyeol’s PowerPoint
Part 1
Java -Why Java?
https://www.jetbrains.com/ko-kr/lp/devecosystem-2022/
지난 12개월 동안 어떤 프로그래밍 언어를 사용하셨
나요?
=> 자바가 아직도 상위에 있
다!!
6. ⓒSaebyeol Yu. Saebyeol’s PowerPoint
Part 1
Java -Why Java?
https://www.jetbrains.com/ko-kr/lp/devecosystem-2022/java
수년 동안 가장 많이 사용되는 Java 버전은 Java 8이
었으나 2022년에는 사용 비율이 12% 포인트 감소
Why????
2022년 3월부로 Oracle Premier Support
에서
Java 8이 제외됨
7. ⓒSaebyeol Yu. Saebyeol’s PowerPoint
Part 1
Java -Why Java?
• 현재 Oracle Java 8은 모두 공개 버전
• 2019년 1월 부터 공개 업데이트 지원 중단
• Java 8의 경우 2019년 이후 추가 업데이트를 및 기술 지원하기 위해서는 라이센스 필요
http://taewan.kim/post/oracle_java_subscription/
11. ⓒSaebyeol Yu. Saebyeol’s PowerPoint
Part 2
Java8의 8가지특징 -Lamda expression
Q. 람다 표현식(Lamda
expression)??
A. 메서드로 전달할 수 있는 익명 함수(anonymous function)를 단순한 문법으로 표
현한 것
Q. 람다 표현식(Lamda expression)의 구
성
A. 람다 표현식은 람다 파라미터, 화살표, 람다 바디로 구성
(String arg1, int arg2) -> {System.out.println(“Two arg is ”+arg1+”and”+arg2)}
람다 파라미터
(Argument List)
화살표
(Arrow token)
람다 바디
(Body of lambda expression)
12. ⓒSaebyeol Yu. Saebyeol’s PowerPoint
Part 2
Java8의 8가지특징 -Lamda expression
Case1. 람다 표현식을 쓰지 않고 익명 클래스로
Runnable 구현
Case2. 람다 표현식을 써서 익명 클래스로 Runnable 구현
13. ⓒSaebyeol Yu. Saebyeol’s PowerPoint
Part 2
Java8의 8가지특징 -Lamda expression
Case3. 하나의 파라미터를 갖고 리턴 타입이 없는 람다 표현식
14. ⓒSaebyeol Yu. Saebyeol’s PowerPoint
Part 2
Java8의 8가지특징 -Lamda expression
Case4. 하나의 파라미터를 갖고 리턴 타입이 없는 람다 표현식
15. ⓒSaebyeol Yu. Saebyeol’s PowerPoint
Part 2
Java8의 8가지특징 -Lamda expression
Case5. 다중 파라미터를 갖고 리턴 타입이 있는 람다 표현식
16. ⓒSaebyeol Yu. Saebyeol’s PowerPoint
Part 2
Java8의 8가지특징 -Functionalinterface
Q. 함수형 인터페이스(Functional
interface)??
A. 단 하나의 추상 메서드를 갖는 인터
페이스
17. ⓒSaebyeol Yu. Saebyeol’s PowerPoint
Part 2
Java8의 8가지특징 -Functionalinterface
Case1. 책의 isbn을 찾는 메서드
19. ⓒSaebyeol Yu. Saebyeol’s PowerPoint
Part 2
Java8의 8가지특징 -Functionalinterface
그럼 왜 갑자기 람다 표현식과 함수형 인터페이스가 등장했을까?
함수형 프래그래밍 때
문!!!!
https://bbubbush.tistory.com/23
20. ⓒSaebyeol Yu. Saebyeol’s PowerPoint
Part 2
Java8의 8가지특징 -Defaultmethod
https://bbubbush.tistory.com/23
Q. Default method??
A. Java 8부터 인터페이스에 구현된 메서드를 만들 수 있다.
Q. 얻을 수 있는 이점은?
A. 1. 코드 호환성을 유지하며 새로운 기능을 추가 가능하다.
2. 불필요한 구현부를 제거 가능하다.
21. ⓒSaebyeol Yu. Saebyeol’s PowerPoint
Part 2
Java8의 8가지특징 -Defaultmethod
Case1. 코드 호환성을 유지하며 새로운 기능 추가
“3개월 동안만 탈것에 날 수 있는 기능을 추가해주세요!! 3개월 뒤에는 어떻게 할지는 아직 미정입
니다. “
23. ⓒSaebyeol Yu. Saebyeol’s PowerPoint
Part 2
Java8의 8가지특징 - Stream
https://bbubbush.tistory.com/23
Q. 스트림(Stream)??
A. Collection 을 멋지고 편리하게 처리하는 방법을 제공하는 API
Q. 스트림의 특징
A. 1. 파이프라이닝을 지원한다.
2. 내부 반복을 지원한다.
3. 딱 한번만 탐색한다.
4. 게으르게 행동한다.
5. 중간 연산과 종료 연산을 구분한다.
24. ⓒSaebyeol Yu. Saebyeol’s PowerPoint
Part 2
Java8의 8가지특징 - Stream
https://bbubbush.tistory.com/23
Case1. 전통적인 방식
“책들 중에 헤밍웨이가 작성한 노인과 바다 책의 ISBN 정보가 필요합니다. 그리고 정렬은 책 이름을 기준
으로 해주세요.“
25. ⓒSaebyeol Yu. Saebyeol’s PowerPoint
Part 2
Java8의 8가지특징 - Stream
https://bbubbush.tistory.com/23
Case2. Stream을 이용한 방식
“책들 중에 헤밍웨이가 작성한 노인과 바다 책의 ISBN 정보가 필요합니다. 그리고 정렬은 책 이름을 기준
으로 해주세요.“
26. ⓒSaebyeol Yu. Saebyeol’s PowerPoint
Part 2
Java8의 8가지특징 -Optional
Q. Optional??
A. Null이 될 수 있는(Nullable) 객체를 담는 클래스
Q. Optinal의 특징
A. 1. 명시적으로 반환값이 Null이 될 수 있음을 알려
줌
2. 직접 Null을 다루지 않아도 됨
28. ⓒSaebyeol Yu. Saebyeol’s PowerPoint
Part 2
Java8의 8가지특징 -Optional
Case1. 전통적인 방식
“책 정보를 담는 Book 객체에는 저자의 정보를 담는 Author 객체를 필드 값으로 갖습니다.
이를 바탕으로 Book 객체에서 저자의 이름을 반환하는 메서드를 만들어 주세요.“
29. ⓒSaebyeol Yu. Saebyeol’s PowerPoint
Part 2
Java8의 8가지특징 -Optional
Case2. Optional 객체를 이용한 처리
“책 정보를 담는 Book 객체에는 저자의 정보를 담는 Author 객체를 필드 값으로 갖습니다.
이를 바탕으로 Book 객체에서 저자의 이름을 반환하는 메서드를 만들어 주세요.“
30. ⓒSaebyeol Yu. Saebyeol’s PowerPoint
Part 2
Java8의 8가지특징 -날짜 및 시간 API
Q. 새롭게 추가된 날짜 및 시간 API
A. 1. 기계용 날짜 API Instant
2. 사람용 날짜 API LocalDate, LocalTime, LocalDateTime
3. 날짜와 시간의 간격을 나타내는 API : Duration, Period
32. ⓒSaebyeol Yu. Saebyeol’s PowerPoint
Part 2
Java8의 8가지특징 -날짜 및 시간 API
Case2. 사람용 날짜 API LocalDate, LocalTime,
LocalDateTime
33. ⓒSaebyeol Yu. Saebyeol’s PowerPoint
Part 2
Java8의 8가지특징 -날짜 및 시간 API
Case3. 날짜와 시간의 간격을 나타내는 API : Duration,
Period
34. ⓒSaebyeol Yu. Saebyeol’s PowerPoint
Part 2
Java8의 8가지특징 -CompletableFuture
Q. CompletableFuture?
A.자바에서 지원하는 Concurrent 프로그래
밍
Q. Concurrent 프로그래밍?
A.동시에 여러 작업을 할 수 있는 소프트웨어 -> 동시에 병렬로 작업이 가능하다는
의미
35. ⓒSaebyeol Yu. Saebyeol’s PowerPoint
Part 2
Java8의 8가지특징 -CompletableFuture
Case1. 동시에 n개의 요청을 호출하고 모든 호출이 완성되면 다음 프로세스 진행
하기
36. ⓒSaebyeol Yu. Saebyeol’s PowerPoint
Part 2
Java8의 8가지특징 -CompletableFuture
Case2. 동시에 n개의 요청을 호출하고 하나라도 호출이 되면 다음 프로세스 진행
하기
37. ⓒSaebyeol Yu. Saebyeol’s PowerPoint
Part 2
Java8의 8가지특징 -JVM의 변화
https://www.programmersought.com/article/4905216600/
“Permanent Generation To Metaspace”
Metaspace는 간단히 말해 Java의 Classloader
가
로드한 class들의 metadata가 저장되는 공간을
말함.
38. ⓒSaebyeol Yu. Saebyeol’s PowerPoint
Part 2
Java8의 8가지특징 -JVM의 변화
Q. Heap -> Native 이점은?
A. 1. 클래스가 많아도 OOM(OutOfMemory) 걱정은 NO!!!
2. 동적으로 클래스를 많이 생성한다 해도 Metaspace 영역이 가변적으로 늘어나 충분히 수용 가
능
Q. 주의점?
A. Metaspace의 최댓값은 반드시 설정해주자.
-> 가변적으로 늘어나기 때문에 극단적인 상황에는 서버의 모든 메모리를 Metaspace가 가져가 애플리케
이션이 아닌 서버가 죽게 될 수도 있다!!