Loading...
2021. 1. 10. 17:13

[RxJava] 1. RxJava์˜ ๊ธฐ๋ณธ - Observable

์ง€๋‚œ ํฌ์ŠคํŠธ์—์„œ Observable์— ๋Œ€ํ•ด ๊ฐ„๋‹จํžˆ ๋‹ค๋ค„๋ดค๊ณ , ์ด์— ๋”ฐ๋ฅธ ๋ฆฌ์•กํŠธ ํ•จ์ˆ˜์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋ฉฐ ๊ฐ ์ฐจ์ด๋ฅผ ์•Œ์•„๋ดค์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” Observable์„ ์ข€ ๋” ์‹ฌ์˜คํ•˜๊ฒŒ ๋‹ค๋ค„๋ณด๊ณ , ์ด์— ์‘ํ•˜๋Š” Single, Maybe ๋“ฑ ๋‹ค์–‘ํ•œ ํด๋ž˜์Šค ๋“ฑ์„ ๊ณต๋ถ€ํ•˜๋ฉด์„œ RxJava์™€ ์ข€ ๋” ์นœ์ˆ™ํ•ด์ง€๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ ธ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. Observer Design Pattern RxJava์˜ ๊ทผ๊ฐ„์ด ๋˜๋Š” Observable ํด๋ž˜์Šค๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๋””์ž์ธ ํŒจํ„ด์ธ Observer Pattern์„ ๊ทผ๊ฐ„์œผ๋กœ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ต์„œ๋ฒ„ ํŒจํ„ด - ์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „ ์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „. ์˜ต์„œ๋ฒ„ ํŒจํ„ด(observer pattern)์€ ๊ฐ์ฒด์˜ ์ƒํƒœ ๋ณ€ํ™”๋ฅผ ๊ด€์ฐฐํ•˜๋Š” ๊ด€์ฐฐ์ž๋“ค, ์ฆ‰ ์˜ต์ €๋ฒ„๋“ค์˜ ๋ชฉ๋ก์„ ๊ฐ์ฒด์— ๋“ฑ๋กํ•˜์—ฌ ..

2021. 1. 9. 16:38

[RxJava] RxJava๋กœ ์‹œ์ž‘ํ•˜๋Š” Java Reactive ํ”„๋กœ๊ทธ๋ž˜๋ฐ

Java์—์„œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€์˜ ์ผ์„ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์—๋Š” ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. Java์—์„œ๋„ C++์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ select ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•˜๊ณ , Thread ๊ฐ์ฒด๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ์ด์šฉํ•ด์„œ ๋™์‹œ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋Š” ๊ฒƒ์€ ๊ทธ๋ฆฌ ํฐ ๊ณ ๋ฏผ์ด ๋  ๋ฌธ์ œ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Java๋กœ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ Python์ด๋‚˜ Go์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์— ๋น„ํ•ด ์‚ฌ์šฉํ•˜๊ธฐ๊ฐ€ ๋ฌด์ฒ™ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๊ทธ๋ƒฅ ๋‹จ์ˆœํ•˜๊ฒŒ Thread ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋งŒ ๊ณ ๋ คํ•œ๋‹ค๋ฉด ๊ทธ๋ฆฌ ํฐ ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋œ ์ž์›์„ ๋™์‹œ์— ์‚ฌ์šฉํ•˜๋Š” ์ด์Šˆ ๋“ฑ ์ฒ˜๋ฆฌํ•ด์ค˜์•ผ ํ•  ์ผ๋“ค์ด ๊ต‰์žฅํžˆ ๋งŽ์„ ๋ฟ๋”๋Ÿฌ ์ฝ”๋“œ๋ฅผ ๊ฐ„๋žตํ•˜๊ฒŒ ์ง ๋‹คํ•˜๋”๋ผ๋„ ๋‚ด๊ฐ€ ๋งŒ๋“  ๋ฉ”์†Œ๋“œ๋‚˜ ํ•จ์ˆ˜๊ฐ€ ์Šค๋ ˆ๋“œ ์œ„์—์„œ ๋™์ž‘ํ•˜๋Š”์ง€ ๊ทธ๋ ‡..