Python๊ณผ Java์ ํตํฉ? ์ ์ ๋ผ!
์ถ์ฒ:
Jaxenter ์ค์ ๋ก ์์คํ
ํ๋ก๊ทธ๋๋ฐ๊ณผ ์คํฌ๋ฆฝํ
์ธ์ด๋ฅผ ๊ฒฐํฉํ๋ ๊ฒ์ ์ด์ํ ์๋ก์ด ๊ฐ๋
์ด ์๋๋๋ค. ๋จ์ง ๊ฑฐ์ ์ฌ์ฉ๋์ง ์์ ๋ฟ์
๋๋ค. ๊ณตํต ๋ฐ์ด๋๋ฆฌ ์ ํ๋ฆฌ์ผ์ด์
์ธํฐํ์ด์ค๋ฅผ ๊ฐ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๊ฒฝ์ฐ ์ด๋ฅผ ๋จ์ผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์คํ ํ์ผ๋ก ๊ฒฐํฉํ๋ ๊ฒ์ด ์ ์ ์ผ๋ก ๊ฐ๋ฅํฉ๋๋ค. ์ด๋ก ์ธํด ์ํฉ์ด ์ข ๋ ์ด๋ ค์์ง์ง๋ง ๋์์ด ๋ ์ ์๋ ๋๊ตฌ๊ฐ ์์ต๋๋ค. Python๊ณผ Java๋ ์ค์ ๋ก ์๋ก๋ฅผ ๋ณด์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๊ทธ ์ค ํ๋๋ ์ผ๋ฐ์ ์ธ ํ์ ์์
์ ์ฌ์ฉํ๊ณ ๋ค๋ฅธ ํ๋๋ ์ ํ๋ฆฌ์ผ์ด์
์ค์ ์ ํ์ฅํ๋ ์คํฌ๋ฆฝํ
์ธ์ด๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ค๋ฅธ ์ธ์ด๋ฅผ ํตํฉํ๋ ๊ฒฝ์ฐ JavaScript๋ ์ ์ด๋ Perl, Tcl, Visual Basic ๋ฐ Python๊ณผ ๊ฐ์ ๋ค๋ฅธ ์คํฌ๋ฆฝํ
์ธ์ด์ ๋นํด ์ผ๋ฐ์ ์ผ๋ก ์น ๋ธ๋ผ์ฐ์ ์ธ๋ถ์์ ์ฌ์ฉ๋์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ๋ชจ๋ ์ธ์ด๋ ์ผ๋ฐ์ ์ผ๋ก ๋ค๋ฅธ ์ธ์ด์ ๊ฒฐํฉ๋ฉ๋๋ค. Python์ ์ ํต์ ์ผ๋ก C ๋ฐ C++์ ๊ฒฐํฉ๋์ด ์์ผ๋ฉฐ Visual Basic์ Windows ํ๋ซํผ์์ C++์ฉ์ผ๋ก ์ ํ๋๋ ์คํฌ๋ฆฝํ
์ธ์ด์ธ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. Perl์ Tcl๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก C/Unix์์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. Python์ Microsoft ์คํฌ๋ฆฝํ
ํธ์คํธ ์ํคํ
์ฒ ๋ฐ COM๊ณผ ์ฝ๊ฒ ํตํฉ๋๋ฏ๋ก Windows์์ ์ข ๋ ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค. ๋ํ macOS ๋๊ตฌ์๋ ์ ํฉํฉ๋๋ค.
์ ์๋ฐ์ ํ์ด์ฌ์ธ๊ฐ?
Python์ ๊ฐ์ฒด ์งํฅ ์คํฌ๋ฆฝํ
์ธ์ด์ด๋ฏ๋ก Java์ ์ ์ด์ธ๋ฆฝ๋๋ค. Jython๊ณผ ๊ฐ์ด ์์ ํ Java๋ก ์์ฑ๋ Python ์ธํฐํ๋ฆฌํฐ์ ๊ฒฐํฉํ๋ฉด Python์ผ๋ก ์ ์ฒด ์ ํ๋ฆฟ์ ์์ฑํ ์ ์์ผ๋ฉฐ, ๊ทธ๋ฐ ๋ค์ C/CPython๋งํผ ๋น ๋ฅธ ์ฝ๋ ์คํ ์๋๋ก ๋ชจ๋ JDK ํธํ ๋ธ๋ผ์ฐ์ ์์ ์คํํ ์ ์์ต๋๋ค. Jython ์ธํฐํ๋ฆฌํฐ๋ Python ์์ค ์ฝ๋๋ฅผ Java ๋ฐ์ดํธ์ฝ๋๋ก ์ง์ ๋ณํํ์ฌ ๋๋ผ์ด ์๋๋ฅผ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ค๋ฅธ Java ์คํฌ๋ฆฝํ
์๋ฃจ์
(Java/TCL, Java/Perl ๋ฑ)์ ์ด๋ฌํ ์ธ์ด์ C ๊ตฌํ์ JVM์ ์ฐ๊ฒฐํ๋ฏ๋ก ์ด์์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๋ฟ๋ง ์๋๋ผ ์ด๋ฌํ ์๋ฃจ์
์์ฒด๋ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๋งํผ ์ฝ์ง ์์ต๋๋ค.
Java์ JPython์ ํจ๊ป ์ฌ์ฉํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ๋ฌด์์
๋๊น?
Python์ Java๋ก ๊ตฌํํ๊ฑฐ๋ ๊ทธ ๋ฐ๋๋ก ๊ตฌํํ๋ ์
์ฆ๋ ๋๊ตฌ๊ฐ ๋ง์ด ์์ผ๋ฏ๋ก ํ ์ธ์ด์ ๋ช
๋ น์ ๋ค๋ฅธ ์ธ์ด๋ก ์คํํ ์ ์์ต๋๋ค. ๋ค์์ Python๊ณผ Java๋ฅผ ํตํฉํ๊ธฐ ์ํ ์ต๊ณ ์ ๋๊ตฌ ์ค ์ผ๋ถ์ ๊ฐ๋จํ ๋ชฉ๋ก์
๋๋ค.
- Jython์ Java๋ก ๊ตฌํ๋ Python์
๋๋ค.
- JPype - Python์ ์ฌ์ฉํ์ฌ Java ๋ช
๋ น์ ์คํํ ์ ์์ต๋๋ค.
- Jepp - Python์ ๋ด์ฅ๋ Java์
๋๋ค.
- JCC ๋ C++/Python์์ Java๋ฅผ ํธ์ถํ๊ธฐ ์ํ C++ ์ฝ๋ ์์ฑ๊ธฐ์
๋๋ค.
- Javabridge๋ CPython์์ JVM์ ์คํํ๊ณ ์ํธ์์ฉํ๊ธฐ ์ํ ํจํค์ง์
๋๋ค.
- Py4j - Python์์ Java ๋ช
๋ น์ ์คํํ ์ ์์ต๋๋ค.
- Voc ๋ BeeWare ๋๊ตฌ ์ ์์์
๋๋ค . Python ์ฝ๋๋ฅผ Java ๋ฐ์ดํธ์ฝ๋๋ก ๋ณํํฉ๋๋ค.
- p2j - Python ์ฝ๋๋ฅผ Java๋ก ๋ณํํฉ๋๋ค. ๋ ์ด์ ๊ฐ๋ฐ๋์ง ์์ต๋๋ค.
์ด๋ฌํ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์๋ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์์ต๋๋ค. ๊ฐ๊ฐ์๋ ๊ณ ์ ํ ์ฅ์ ๊ณผ ๋จ์ ์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด Jython์ผ๋ก ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์
์ ํ๋กํ ํ์
์ ์ ์ํ ์ ์์ผ๋ฉฐ ์ฌ๋ฌ ์ฐจ๋ก์ ํ
์คํธ์ ์ฌ์ค๊ณ๋ฅผ ๊ฑฐ์น ํ ๋ชจ๋ ๊ฒ์ Java๋ก ๋ค์ ์์ฑํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ํ๋ก์ ํธ ์ด๊ธฐ์ ์คํฌ๋ฆฝํ
์ธ์ด ๊ฐ๋ฐ ์ ํฅ์๋ ์ ์ฐ์ฑ๊ณผ ์๋๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ต์ข
์ ํ์ ๋ฐฉ๊ธ Java๋ก๋ง ์์ฑ์ ์์ํ ๊ฒฝ์ฐ๋ณด๋ค ์ข ๋ ์์ธํด์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๊ฑฑ์ ๋๋ค๋ฉด Jython์ ์ผ๋ฐ Java์ ๋์ผํ UIL์ ์ฐ๊ฒฐํ ์ ์์ผ๋ฏ๋ก Java ๋ณํ์ ๋งค์ฐ ์ฝ์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๊ท๋ชจ ํ๋ก์ ํธ๋ฅผ ๊ตฌ์ถํ๋ ค๋ ๊ฒฝ์ฐ์๋ ์ํฉ์ด ๊ทธ๋ฆฌ ๊ฐ๋จํ์ง ์์ต๋๋ค. ์ต์์ ๊ตฌ์ฑ ์์์ ๊ฐ์ด ๋
๋ฆฝ์ ์ธ ๊ฐ๋ฐ ์ฃผ๊ธฐ๋ฅผ ๊ฐ๋ ๋ค์ํ ๊ตฌ์ฑ ์์์ ๋ ์ด์ด์ ๋จ์ ์ ์ง๋ฉดํ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ๋ฌผ๋ก , ์์ ์ ์ธ ๋ฆด๋ฆฌ์ค์ ๊ฐ๊น์์ง๋ฉด ๊ฐ๋ณ ๊ตฌ์ฑ ์์๋ฅผ Java๋ก ๋ค์ ์์ฑํ ์๋ ์๊ณ , ์ฒ์๋ถํฐ Java๋ก๋ง ์ผ๋ถ ๊ตฌ์ฑ ์์๋ฅผ ์์ฑํ ์๋ ์์ต๋๋ค. ๋ ๋ค๋ฅธ ์ต์
์ ์ฑ๋ฅ์ด ์ค์ํ ๊ตฌ์ฑ ์์๋ง ๋ค์ ์์ฑํ๋ ๊ฒ์
๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์์ ์์ค ๊ตฌ์ฑ ์์๋ฅผ Jython์ ๊ทธ๋๋ก ๋ ์ ์์ต๋๋ค. ์ฆ ํ์ ์์ค ๊ตฌ์ฑ ์์๋ง ๋ค์ ์์ฑํ๋ฉด ๋๋ฉฐ ์ด๋ค ๊ฒฝ์ฐ์๋ ์๋ฌด ๊ฒ๋ ๋ค์ ์์ฑํ ํ์๊ฐ ์์ต๋๋ค.
Jakarta EE ๋ฐ Eclipse MicroProfile ์๊ฐ
์ถ์ฒ:
DZone ์์ง Jakarta EE์ Eclipse MicroProfile์ ๋ํด ๋ค์ด๋ณด์ง ๋ชปํ์
จ๋์? ์ด์ Java Enterprise ํ์ค์ด ์ด๋ป๊ฒ ๊ฐ๋ฐ๋์๋์ง ์์๋ณผ ์๊ฐ์
๋๋ค. ์ด ๋ ๊ธฐ์ ์ ๋ชจ๋ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ๋ฐ ์ต์ ์ํฐํ๋ผ์ด์ฆ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ตฌ์ถํ๋ ๋ฐ ์ ํฉํ๋ฏ๋ก ํฅํ์ ์ ์ฉํ ๊ฒ์
๋๋ค.
์์นด๋ฅดํ EE๋ ๋ฌด์์ธ๊ฐ์?
Jakarta EE๋ Java๋ก ์ํฐํ๋ผ์ด์ฆ ์ ํ๋ฆฌ์ผ์ด์
์ ์์ฑํ๊ธฐ ์ํ ์ฌ์ ์ธํธ(JAX-RS, CDI, JPA, JSON-P ๋ฑ)์
๋๋ค. ์ด๋ฌํ ์ฌ์์ API์ ๊ธฐ์ ์ด ์ํธ ์์ฉํ๋ ๋ฐฉ์์ ์ ์ํ๋ ๋ฌธ์์
๋๋ค.
์ฌ์ ๋ฌธ์๋ ๊ณต์์ ์ธ ์ ์๊ฐ ํฌํจ๋ ์ธํฐํ์ด์ค์ ์ ์ฌํ๋ฉฐ ์ด๋ฌํ ์ธํฐํ์ด์ค์ ์ค์ ๊ตฌํ์ ์ ํ๋ฆฌ์ผ์ด์
์๋ฒ ๊ณต๊ธ์
์ฒด(์: WildFly, Open Liberty, Payara, TomEE)์ ๋ฐ๋ผ ๋ค๋ฆ
๋๋ค. ๊ณต๊ธ์
์ฒด๊ฐ ์ฌ์์ ์๋ชป ๊ตฌํํ๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ๊ฐ ์ฌ์์ CTS(๊ธฐ์ ํธํ์ฑ ํคํธ)๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ ํน์ ์ฌ์ ๊ตฌํ์ ์ค์ ์ฌ๋ถ๋ฅผ ํ์ธํ๊ธฐ ์ํ ์ผ๋ จ์ ํ
์คํธ์
๋๋ค. ์ ํ๋ฆฌ์ผ์ด์
์๋ฒ๋ ๋ชจ๋ ์ฌ์์ ๋ํด CST๋ฅผ ์ ์กํ๋ฉด ์ ์ฒด ํ์ค์ ์ค์ํฉ๋๋ค. ์๋
๋์ Java EE๋ ์ํฐํ๋ผ์ด์ฆ ์ ํ๋ฆฌ์ผ์ด์
์ ์์ฑํ๋ ํ์ค ๋ฐฉ๋ฒ์ด์์ต๋๋ค. Java EE(์ด์ ์ J2EE)๋ ์ค๋ซ๋์ Oracle์์ ์ง์๋์ด ์์ต๋๋ค. 2017๋
์ ์ค๋ผํด์ ๋ ์ด์ ์์ฌ์ ํ์ ํ์ ๊ธฐ์
ํ์ค์ ๊ฐ๋ฐํ์ง ์๊ธฐ๋ก ๊ฒฐ์ ํ๊ณ ์ด๋ฅผ Eclipse ์ฌ๋จ์ผ๋ก ์ด์ ํ์ต๋๋ค. ๋ฒ์ ์ธ ์ด์ ๋ก ๋ธ๋๋๋ฅผ ๋ณ๊ฒฝํด์ผ ํ๊ณ ์ ํ ์ด๋ฆ์ Jakarta EE๋ก ์ง์ ํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
๊ณต์ ์น์ฌ์ดํธ ์์ ๋ชจ๋ Jakarta EE ์ฌ์์ ํ์ธํ ์ ์์ผ๋ฉฐ , Eclipse Foundation ์น์ฌ์ดํธ์์ ํ์ฌ ์ฌ์ ํ๋ก์ธ์ค๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง์ ๋ํ ์์ธํ ์ ๋ณด๋ฅผ ์ป์ ์ ์์ต๋๋ค.
Eclipse ๋ง์ดํฌ๋กํ๋กํ์ผ์ด๋ ๋ฌด์์
๋๊น?
Java EE์ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ์ํ๊ณ ์ ์ฉํ๋ ๊ณผ์ ์ด ์๋นํ ๋๋ฆฌ๊ธฐ ๋๋ฌธ์ ๊ณต๊ธ์
์ฒด ๋ฐ ์ปค๋ฎค๋ํฐ ๊ตฌ์ฑ์ ๊ทธ๋ฃน์ 2016๋
์ MicroProfile์ ๋ง๋ค๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ์ด ํ๋ก์ ํธ์ ์ฃผ์ ๋ชฉํ๋ ๊ฐ๋ฐ์๊ฐ ์๋์ ๋ค์ฒ์ง์ง ์๋๋ก ๋๊ณ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ๋ฅผ ์ํด ๊ธฐ์กด ํ๋ซํผ์ ์ต์ ํํ๋ ๊ฒ์ด์์ต๋๋ค. ํ์ฌ Eclipse MicroProfile์๋ 12๊ฐ์ ์ฌ์์ด ํฌํจ๋์ด ์์ต๋๋ค. ๊ทธ ์ค 4๊ฐ๋ ์์นด๋ฅดํ EE์ ์ผ๋ถ์
๋๋ค. ์ด๋ฅผ ํตํด MicroProfile๋ง์ผ๋ก ๋
๋ฆฝํ ์ ํ๋ฆฌ์ผ์ด์
์ ์์ฑํ ์ ์์ต๋๋ค. ๋ชจ๋ ์ฌ์์ ๊ณต๊ธ์
์ฒด์ ๋
๋ฆฝ์ ์ด๋ฉฐ ๊ตฌํ์ ์ ํ๋ฆฌ์ผ์ด์
์๋ฒ์ ํจ๊ป ์ ๊ณต๋ฉ๋๋ค. ์์นด๋ฅดํ EE ์ฌ์์ ์ํฐํ๋ผ์ด์ฆ ์ ํ๋ฆฌ์ผ์ด์
๊ตฌ์ถ์ ์ํ ๊ฒฌ๊ณ ํ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ์ฃผ๋ ์ ์์ต๋๋ค. ์ด ์ธ์๋ Eclipse MicroProfile์ ๊ธฐ์ ์ด
Twelve-Factor ์ ํ๋ฆฌ์ผ์ด์
๋ฐฉ๋ฒ๋ก ์ ๋ฐ๋ฅด๊ธฐ ๋๋ฌธ์ ๋ถ์ฐ ์์คํ
๊ตฌ์ถ์ ๊ณต๋ฐฑ์ ๋ฉ์๋๋ค .
GO TO FULL VERSION