KEMBAR78
Beyond Java: 자바 8을 중심으로 본 자바의 혁신 | PDF
Beyond Java 
자바 8을 중심으로 본 자바의 혁신
박성철(fupfin) 
노땅 개발자(라고 착각하는 관리자) 
SK Platnet CDP개발팀 
한국 스프링 사용자 모임 
말해도 모를 회사의 대표였지만 망했어요
자바 8을 중심으로 본 자바의 혁신
자바 8을 중심으로 본 자바의 혁신
1.0 1.1 1.2 
1996 1997 1998 
5 1.4 1.3 
2004 2002 
6 
8 7 
β 
1995 
2000 
2006 
2014 2011
람다 
나즈혼 
자바스크립트 엔진 
기본 메서드 8 
스트림 API 
날짜 API 
동시성 개선 
Base64 
메타프로그래밍 향상
람다 
나즈혼 
자바스크립트 엔진 
기본 메서드 8 
스트림 API 
날짜 API 
동시성 개선 
Base64 
메타프로그래밍 향상
람다식 
- 람다식은 메서드와 유사 
- 형식 매개변수의 목록과 
- 이 매개변수로 표현된 본문(식이나 코드 블럭)를 제공 
A lambda expression is like a method: it provides a list of formal 
parameters and a body—an expression or block—expressed in terms 
of those parameters. 
- jsr335, /spec/B.html
람다식 
- 2006, 고슬링 “자바에 클로저가 들어오지는 않을 거야” 
- 2007, 세 가지 다른 클로저 제안 제출 
- 2008, 마크 라인홀드 “자바 7에 클로저는 안 들어가요” 
http://java.dzone.com/articles/java-7-update-mark-reinhold-de 
- 2009, 람다 프로젝트(JSR 335) 시작
제어 흐름 중복 
assert numbers.length > 0; 
int max = numbers[0]; 
for(int i=1; 
i < numbers.length; 
i++) 
if(Math.abs(max) < 
Math.abs(numbers[i]) 
max = numbers[i]; 
return max; 
assert numbers.length > 0; 
int max = numbers[0]; 
for(int i=1; 
i < numbers.length; 
i++) 
if(max < numbers[i]) 
max = numbers[i]; 
return max; 
DRY: Don’t Repeat Yourself!!!
전략 패턴 
분석 분해(추상화) 조합
행위 매개변수 
{ 
} 
{ 
} 
{ 
} 
{ 
} 
{ 
} 
{ 
} 
{ 
} 
( ) ( ) 
( ) 
( ) 
( ) 
( ) 
( ) ( ) ( ) 
분석 분해(추상화) & 조합
자바의 행위 매개변수 예 
자바에서는 객체를 사용해서 행위를 매개변수로 전달 
java.util.Collections
  
public
 static
 T
 
  
T
 max(Collection?
 extends
 T
 coll,
 Comparator?
 super
 T
 comp)
  
public
 static
 T
 
  
T
 min(Collection?
 extends
 T
 coll,
 Comparator?
 super
 T
 comp)
  
public
 static
 T
 
  
void
 sort(ListT
 list,
 Comparator?
 super
 T
 c)
자바의 행위 매개변수 예 
(익명 클래스) 
java.util.Collections
  
public
 static
 T
 void
 sort(ListT
 list,
 Comparator?
 super
 T
 c) 
Collections.sort(items,
 new
 ComparatorItem()
 {
 

Beyond Java: 자바 8을 중심으로 본 자바의 혁신