Facebook ์คํ ์์ค ๊ฒฝ๋ JavaScript ์์ง ์ ๋ค์ ์ฌ์, ํ๋ ์์ํฌ ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์
์คํ์ ์ต์ ํ๋จ ๋ค์ดํฐ๋ธ์ ๋ฐ์ํ๋ค ์๋๋ก์ด๋ ํ๋ซํผ์์. ํค๋ฅด๋ฉ์ค ์ง์ ๋ด์ฅ ์ค๋์ 0.60.2 ๋ฆด๋ฆฌ์ค๋ถํฐ React Native์์. ์ด ํ๋ก์ ํธ๋ ๊ธฐ๋ณธ JavaScript ์ ํ๋ฆฌ์ผ์ด์
์ ์์ ์๊ฐ์ด ๊ธธ๊ณ ์๋นํ ๋ฆฌ์์ค ์๋น ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. ์ํธ ์์ฑ์ : C++๋ก ์์ฑ๋์์ผ๋ฉฐ MIT ๋ผ์ด์ผ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋ฉ๋๋ค.
Hermes๋ฅผ ์ฌ์ฉํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์
์์ ์๊ฐ ๋จ์ถ, ๋ฉ๋ชจ๋ฆฌ ์๋น ๊ฐ์, ์ ํ๋ฆฌ์ผ์ด์
ํฌ๊ธฐ ๊ฐ์ ๋ฑ์ ์ฅ์ ์ด ์์ต๋๋ค. V8์ ์ฌ์ฉํ ๋ ๊ฐ์ฅ ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฌ๋ ๋จ๊ณ๋ ์์ค ์ฝ๋๋ฅผ ๊ตฌ๋ฌธ ๋ถ์ํ๊ณ ์ฆ์ ์ปดํ์ผํ๋ ๋จ๊ณ์
๋๋ค. Hermes๋ ์ด๋ฌํ ๋จ๊ณ๋ฅผ ๋น๋ ๋จ๊ณ๋ก ๊ฐ์ ธ์ค๊ณ ์ ํ๋ฆฌ์ผ์ด์
์ด ์๊ณ ํจ์จ์ ์ธ ๋ฐ์ดํธ์ฝ๋ ํํ๋ก ์ ๊ณต๋ ์ ์๋๋ก ํฉ๋๋ค.
์ ํ๋ฆฌ์ผ์ด์
์ ์ง์ ์คํํ๊ธฐ ์ํด ํ๋ก์ ํธ ๋ด์์ ๊ฐ๋ฐ๋ ๊ฐ์๋จธ์ ์ SemiSpace ๊ฐ๋น์ง ์ปฌ๋ ํฐ์ ํจ๊ป ์ฌ์ฉํฉ๋๋ค. SemiSpace ๊ฐ๋น์ง ์ปฌ๋ ํฐ๋ ํ์ํ ๋งํผ๋ง(์จ๋๋งจ๋) ๋ธ๋ก์ ๋ฐฐํฌํ๊ณ , ๋ธ๋ก ์ด๋ ๋ฐ ์กฐ๊ฐ ๋ชจ์์ ์ง์ํ๋ฉฐ, ํด์ ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ์ด์ ์ฒด์ ์ ๋ฐํํ์ง ์์ต๋๋ค. ์ ์ฒด ํ์ ๋ด์ฉ์ ์ค์บํฉ๋๋ค.
JavaScript ์ฒ๋ฆฌ๋ ์ฌ๋ฌ ๋จ๊ณ๋ก ๊ตฌ๋ถ๋ฉ๋๋ค. ๋จผ์ , ์์ค ํ
์คํธ๊ฐ ๊ตฌ๋ฌธ ๋ถ์๋๊ณ ์ฝ๋์ ์ค๊ฐ ํํ์ด ์์ฑ๋ฉ๋๋ค(ํค๋ฅด๋ฉ์ค IR), ํํ์ ๊ธฐ๋ฐ์ผ๋ก SSA (์ ์ ๋จ์ผ ํ ๋น). ๋ค์์ผ๋ก, ์ค๊ฐ ํํ์ ํ๋ก๊ทธ๋จ์ ์๋ ์๋ฏธ๋ฅผ ์ ์งํ๋ฉด์ ๊ธฐ๋ณธ ์ค๊ฐ ์ฝ๋๋ฅผ ๋ณด๋ค ํจ์จ์ ์ธ ์ค๊ฐ ํํ์ผ๋ก ๋ณํํ๊ธฐ ์ํด ์๋ฐฉํฅ ์ ์ ์ต์ ํ ๊ธฐ์ ์ ์ ์ฉํ๋ ์ต์ ํ ํ๋ก๊ทธ๋จ์์ ์ฒ๋ฆฌ๋ฉ๋๋ค. ๋ง์ง๋ง ๋จ๊ณ์์๋ ๋ฑ๋ก๋ ๊ฐ์ ๋จธ์ ์ ๋ฐ์ดํธ์ฝ๋๊ฐ ์์ฑ๋ฉ๋๋ค.
์์ง์์ ์ ์ํด ์ง์ ECMAScript 2015 JavaScript ํ์ค์ ์ผ๋ถ(๊ถ๊ทน์ ์ธ ๋ชฉํ๋ ์ด๋ฅผ ์์ ํ ์ง์ํ๋ ๊ฒ์)์ด๋ฉฐ ๋๋ถ๋ถ์ ๊ธฐ์กด React Native ์ ํ๋ฆฌ์ผ์ด์
๊ณผ์ ํธํ์ฑ์ ์ ๊ณตํฉ๋๋ค. Hermes๋ ๋ช
๋ น๋ฌธ, ๋ฆฌํ๋ ์
(Reflect ๋ฐ Proxy), Intl API ๋ฐ RegExp์ ์ผ๋ถ ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ eval()์ ๋ก์ปฌ ์คํ์ ์ง์ํ์ง ์๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. React Native ์ ํ๋ฆฌ์ผ์ด์
์์ Hermes๋ฅผ ํ์ฑํํ๋ ค๋ฉด ํ๋ก์ ํธ์ "enableHermes: true" ์ต์
์ ์ถ๊ฐํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. CLI ๋ชจ๋์์ Hermes๋ฅผ ๊ตฌ์ถํ์ฌ ๋ช
๋ น์ค์์ ์์์ JavaScript ํ์ผ์ ์คํํ ์๋ ์์ต๋๋ค. ๋๋ฒ๊น
์ ์ํด ์ง์ฐ ์ปดํ์ผ ๋ชจ๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ ํ๋ก์ธ์ค ์ค์ ๋งค๋ฒ JavaScript๋ฅผ ์ปดํ์ผํ์ง ์๊ณ ์ด๋ฏธ ์ฅ์น์ ์ฆ์ ๋ฐ์ดํธ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
๋์์ Facebook์ Hermes๋ฅผ Node.js ๋ฐ ๊ธฐํ ์๋ฃจ์
์ ์ ์ฉํ ๊ณํ์ด ์์ผ๋ฉฐ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์
์๋ง ์ค์ ์ ๋ก๋๋ค(JIT ๋์ AOT ์ปดํ์ผ์ RAM์ด ์ ํ๋๊ณ ํ๋์๊ฐ ๋๋ฆฐ ๋ชจ๋ฐ์ผ ์์คํ
์ ๋งฅ๋ฝ์์ ๊ฐ์ฅ ์ ํฉํฉ๋๋ค). Microsoft ์ง์์ด ์ค์ํ ์๋น ์ฑ๋ฅ ํ
์คํธ ๋ณด์ฌ ์ฃผ๋Hermes๋ฅผ ์ฌ์ฉํ๋ฉด Android์ฉ Microsoft Office ์ ํ๋ฆฌ์ผ์ด์
์ 1.1์ด ๋ง์ ์ฌ์ฉํ ์ ์๊ฒ ๋ฉ๋๋ค. ์๋ ํ 21.5MB์ RAM์ ์๋นํ๋ ๋ฐ๋ฉด, V8 ์์ง์ ์ฌ์ฉํ ๊ฒฝ์ฐ ์์ํ๋ ๋ฐ 1.4์ด๊ฐ ๊ฑธ๋ฆฌ๊ณ ๋ฉ๋ชจ๋ฆฌ ์๋น๋ 30MB์
๋๋ค.
์ถ๊ฐ: ํ์ด์ค๋ถ ์ถํ ์์ฒด ํ
์คํธ ๊ฒฐ๊ณผ. MatterMost ์ ํ๋ฆฌ์ผ์ด์
๊ณผ ํจ๊ป Hermes๋ฅผ ์ฌ์ฉํ ๋ ์์
๊ฐ์ฉ์ฑ ์์ ์๊ฐ(TTI, Time To Interact)์ด 4.30์ด์์ 2.01์ด๋ก ๊ฐ์ํ๊ณ , APK ํจํค์ง ํฌ๊ธฐ๊ฐ 41MB์์ 22MB๋ก ์ค์์ผ๋ฉฐ, ๋ฉ๋ชจ๋ฆฌ ์๋น๋์ 185์์ 136์ผ๋ก ์ค์์ต๋๋ค. MB.
์ถ์ฒ : opennet.ru