Hot Trend Lambda Expressions, Compare C# With Java

71
1 Hot Trend Lambda, Compare C# With Java 중앙일보 JunSeok.Jung

Transcript of Hot Trend Lambda Expressions, Compare C# With Java

Page 1: Hot Trend Lambda Expressions, Compare C# With Java

1

Hot Trend Lambda,Compare C# With Java

중앙일보JunSeok.Jung

Page 2: Hot Trend Lambda Expressions, Compare C# With Java

2

정준석[email protected]

2011.01 ~ 2011.10 : LG전자 R&D연구소 (아주 잠깐)

2011.11 ~ 2015.05 : WISEnut( Search-Tech 팀 )

2015.05 ~ 2016.07 : 에듀윌 ( 개발팀 )

2016.07 ~ ING : 중앙일보 ( 기술개발팀 )

- Crawling Technical Specialist

- Web Developer

- Polyglot Programmer… 가 되고 싶은…

- .NET과 JAVA 이중 스파이

Page 3: Hot Trend Lambda Expressions, Compare C# With Java

INDEX

3

1. Lambda Expression?

2. Why Learning Lambda

3. C# Lambda

4. Java Lambda

5. Expected to .NET 5.0

6. Expected to Java 1.9

오늘 할 이야기

Page 4: Hot Trend Lambda Expressions, Compare C# With Java

4

이 강연을 들어야 할 사람

Page 5: Hot Trend Lambda Expressions, Compare C# With Java

5

숨바꼭질 中 손현주의 행위

Page 6: Hot Trend Lambda Expressions, Compare C# With Java

6

Page 7: Hot Trend Lambda Expressions, Compare C# With Java

7

Page 8: Hot Trend Lambda Expressions, Compare C# With Java

8

장악 당한 집의 개수는?

Page 9: Hot Trend Lambda Expressions, Compare C# With Java

9

장악 당한 집의 개수는?

Page 10: Hot Trend Lambda Expressions, Compare C# With Java

10

장악 당한 집의 개수는?

Page 11: Hot Trend Lambda Expressions, Compare C# With Java

11

장악 당한 집의 개수는?

Stream API with Lambda ( Java 8 )

Page 12: Hot Trend Lambda Expressions, Compare C# With Java

12

Lambda?

Page 13: Hot Trend Lambda Expressions, Compare C# With Java

13

Lambda?

Page 14: Hot Trend Lambda Expressions, Compare C# With Java

14

Lambda?

〃 어떤 문제를 해결하기 위한 과정을수학적 함수를 이용하여 표현한 수식 〃

Page 15: Hot Trend Lambda Expressions, Compare C# With Java

15

Why?

Compact Code

Multi Core CPU

Trend

?

Page 16: Hot Trend Lambda Expressions, Compare C# With Java

16

Page 17: Hot Trend Lambda Expressions, Compare C# With Java

17

Page 18: Hot Trend Lambda Expressions, Compare C# With Java

18

C# Lambda - History

Delegate ( C# 1.0 )

Page 19: Hot Trend Lambda Expressions, Compare C# With Java

19

C# Lambda - History

Anonymous Method ( C# 2.0 )

Page 20: Hot Trend Lambda Expressions, Compare C# With Java

20

C# Lambda - History

Lambda ( C# 3.0 )

Page 21: Hot Trend Lambda Expressions, Compare C# With Java

21

C# Lambda – ex1 ( 과거의 정렬 )

Page 22: Hot Trend Lambda Expressions, Compare C# With Java

22

C# Lambda – ex1 ( 람다의 정렬 )

Type Inference ( C# 3.0 )

Sort With Lambda

Page 23: Hot Trend Lambda Expressions, Compare C# With Java

23

C# Lambda – ex2

LINQ ( C# 3.0 )

Page 24: Hot Trend Lambda Expressions, Compare C# With Java

24

C# Lambda – ex2 ( LINQ의 예 )

Page 25: Hot Trend Lambda Expressions, Compare C# With Java

25

C# Lambda – ex3

Extension Method With Lambda

Page 26: Hot Trend Lambda Expressions, Compare C# With Java

26

C# Lambda – ex4

Page 27: Hot Trend Lambda Expressions, Compare C# With Java

27

C# Lambda – ex4

LINQ to SQL ( C# 3.5 )

Page 28: Hot Trend Lambda Expressions, Compare C# With Java

28

C# Lambda

LINQ to XXX ( C# 3.5 )

SQLXML

Object

EntitiesDataSet

Page 29: Hot Trend Lambda Expressions, Compare C# With Java

29

C# Lambda – ex4 ( 고급 LINQ to SQL )

Page 30: Hot Trend Lambda Expressions, Compare C# With Java

30

C# Lambda – TIP

foreach( var x in y ) VS ToList().ForEach

ImperativeProgramming

FunctionalProgramming

Page 31: Hot Trend Lambda Expressions, Compare C# With Java

31

C# Lambda – ex5

Query Syntax

Page 32: Hot Trend Lambda Expressions, Compare C# With Java

32

C# Lambda – ex6

Page 33: Hot Trend Lambda Expressions, Compare C# With Java

33

C# Lambda – ex6

LINQ to XML ( C# 3.5 )

Page 34: Hot Trend Lambda Expressions, Compare C# With Java

34

C# Lambda – ex7

PLINQ ( C# 4.0 )

Page 35: Hot Trend Lambda Expressions, Compare C# With Java

35

C# Lambda

C# Lambda/LINQ가 주는 교훈

DeclarativeProgramming

Elegance

F#의 탄생 Java 위협* 주관적인 제 생각^^;;

Page 36: Hot Trend Lambda Expressions, Compare C# With Java

36

Page 37: Hot Trend Lambda Expressions, Compare C# With Java

37

Java Lambda – ex1 ( 과거의 Thread )

Page 38: Hot Trend Lambda Expressions, Compare C# With Java

38

Java Lambda – ex1 ( 람다의 Thread )

Functional Interface

Page 39: Hot Trend Lambda Expressions, Compare C# With Java

39

Java Lambda – ex1

Functional Interface

Interface Abstract Method1 1

java.util.function.*

Page 40: Hot Trend Lambda Expressions, Compare C# With Java

40

Java Lambda – ex2

Type Inference

Page 41: Hot Trend Lambda Expressions, Compare C# With Java

41

Java Lambda – ex2 ( Type Inference )

Page 42: Hot Trend Lambda Expressions, Compare C# With Java

42

Java Lambda – ex3 ( 과거의 정렬 )

Page 43: Hot Trend Lambda Expressions, Compare C# With Java

43

Java Lambda – ex3 ( 람다의 정렬 )

Page 44: Hot Trend Lambda Expressions, Compare C# With Java

44

Default Method

Method Reference

Java Lambda – ex3 ( 람다의 정렬 심화 )

Page 45: Hot Trend Lambda Expressions, Compare C# With Java

45

Java Lambda – ex4

Stream API

Page 46: Hot Trend Lambda Expressions, Compare C# With Java

46

Java Lambda – ex4

Stream API

Internal IterationAnti ImperativeProgramming

Lazy Programming

Not How,Do What

Page 47: Hot Trend Lambda Expressions, Compare C# With Java

47

Java Lambda – TIP

Internal V.S External

Page 48: Hot Trend Lambda Expressions, Compare C# With Java

48

Java Lambda – ex4 ( Stream API )

Page 49: Hot Trend Lambda Expressions, Compare C# With Java

49

Java Lambda – ex4 ( Stream API )

Page 50: Hot Trend Lambda Expressions, Compare C# With Java

50

Java Lambda – ex4 ( Stream API )

Page 51: Hot Trend Lambda Expressions, Compare C# With Java

51

Java Lambda – ex4 ( Stream API )

Page 52: Hot Trend Lambda Expressions, Compare C# With Java

52

Java Lambda – ex5

Parallel Stream

Page 53: Hot Trend Lambda Expressions, Compare C# With Java

53

Tip

Stream V.S Parallel Stream

무조건 쓰는 것은 X Fork-Join 기법

Parallel Stream이 짱?

Page 54: Hot Trend Lambda Expressions, Compare C# With Java

54

Tip

Parallel Stream의 고려 사항

1. 데이터 크기

2. 소스 데이터 구조

3. 객체화

4. 코어의 개수

5. 등등…

- 충분한 데이터가 있을 때

- 데이터 소스를 쉽게 나눌 수 있는 구조일 때

- int,float,double > Integer,Float,Double

- 접근할 수 있는 코어가 많을 수록

Page 55: Hot Trend Lambda Expressions, Compare C# With Java

55

Tip

Parallel Stream 좋아요!

ArrayList / Array / IntStream.range

Page 56: Hot Trend Lambda Expressions, Compare C# With Java

56

Tip

Parallel Stream 그럭저럭 쓸만한데..?

HashSet / TreeSet

Page 57: Hot Trend Lambda Expressions, Compare C# With Java

57

Tip

Parallel Stream 피해주세요

LinkedList Random Access불가능!

Page 58: Hot Trend Lambda Expressions, Compare C# With Java

58

Expected to…

Page 59: Hot Trend Lambda Expressions, Compare C# With Java

59

Page 60: Hot Trend Lambda Expressions, Compare C# With Java

60

Page 61: Hot Trend Lambda Expressions, Compare C# With Java

61

Page 62: Hot Trend Lambda Expressions, Compare C# With Java

62

Page 63: Hot Trend Lambda Expressions, Compare C# With Java

63

Page 64: Hot Trend Lambda Expressions, Compare C# With Java

64

Stream API

Page 65: Hot Trend Lambda Expressions, Compare C# With Java

65

Stream to SQL

Page 66: Hot Trend Lambda Expressions, Compare C# With Java

66

Why Learning Lambda?

Page 67: Hot Trend Lambda Expressions, Compare C# With Java

67

Why?

Compact Code

Multi Core CPU

Trend

?

Page 68: Hot Trend Lambda Expressions, Compare C# With Java

68

Why?

Compact Code

Multi Core CPU

Trend

Polyglot

Page 69: Hot Trend Lambda Expressions, Compare C# With Java

69

Reference Data…

Page 70: Hot Trend Lambda Expressions, Compare C# With Java

70

Thanks to…

WISEnutCo-worker

Silicon ValleyStudy Group

Spring Camp ETC…

Page 71: Hot Trend Lambda Expressions, Compare C# With Java

71

Thank You !!

잔잔한 바다에서는

좋은 뱃사공이 만들어지지 않는다.

- 영국 속담 -