์ด ๋ฌธ์์ ์๋ณธ์ ์ธ๋ถ ์ํค์์ ๊ฐ์ ธ์์ต๋๋ค.
1. Jakarta Server Pages[ํธ์ง]
1.1. ๊ฐ์[ํธ์ง]
Java[1]๋ฅผ ์ด์ฉํ ์๋ฒ ์ฌ์ด๋ ์คํฌ๋ฆฝํธ ์ธ์ด. Java Server Pages์ ์ฝ์์ด๋ฉฐ, ์ค๋ผํด์์ ์๋ฐ์ํ๊ถ ๋ฌธ์ ๋ก ์คํ์์ค์ธ jsp๋ ์์นด๋ฅดํ ์๋ฒํ์ด์ง๋ก ์ด๋ฆ์ ๋ฐ๊พธ์๋ค. Java์ ์ ์ ์จ์ ๋ํญ ์์น์ํจ 1๋ฑ๊ณต์ ์ด๋ค. ๊ฐ์ ๋ถ๋ฅ์ ์ํ๋ ๊ฒ์ผ๋ก PHP, ASP๊ฐ ์๋ค. ํ์ฅ์๋ ๋น์ฐํ .jsp๋ฅผ ์ฌ์ฉ. ASP์ ๋ง์ฐฌ๊ฐ์ง๋ก
์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ Java ํ๋ก๊ทธ๋จ์ด๋ฉฐ, Java Virtual Machine ์์์ ์คํ๋๋ค. ๋ฐ๋ผ์ ๋๋ถ๋ถ์ ์ด์ ์ฒด์ ์์ ์์ค ์ฝ๋ ๋ณ๊ฒฝ์ด๋ ์ฌ์ปดํ์ผ ์์ด ์คํ์ํฌ ์ ์๊ณ , ํนํ ์ ๋์ค ๊ณ์ด๊ณผ ๊ถํฉ์ด ์ ๋ง๋๋ค.
<% ... %>๋ก ๋๋ฌ์ธ์ธ ์คํฌ๋ฆฝํธ ์์ญ์ด ์์ผ๋ฉฐ, ์คํ์์ javax.servlet.http.HttpServlet ํด๋์ค๋ฅผ ์์๋ฐ์ Java ์์ค ์ฝ๋๋ก ๋ณํํ ๋ค์[2] ์ปดํ์ผ๋์ด ์คํ๋๋ค. ์ด JSP ํ์ผ์ Servlet ํด๋์ค๋ก ๋ณํํ๊ณ ์คํ์์ผ ์ฃผ๋ ์ญํ ์ ํ๋ ํ๋ก๊ทธ๋จ์ ์๋ธ๋ฆฟ ์ปจํ
์ด๋๋ผ๊ณ ๋ถ๋ฅธ๋ค. ๋ํ์ ์ธ ๊ฒ์ผ๋ก ์คํ ์์ค ์น ์ปจํ
์ด๋์ธ ํฐ์บฃ์ด ์๋ค. ํ๋์ JSP ํ์ด์ง๊ฐ ํ๋์ Java ํด๋์ค์ด๊ธฐ ๋๋ฌธ์ ๋ชจ๋ Java ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋์ด๋ค ์ธ ์ ์๋ค.์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ Java ํ๋ก๊ทธ๋จ์ด๋ฉฐ, Java Virtual Machine ์์์ ์คํ๋๋ค. ๋ฐ๋ผ์ ๋๋ถ๋ถ์ ์ด์ ์ฒด์ ์์ ์์ค ์ฝ๋ ๋ณ๊ฒฝ์ด๋ ์ฌ์ปดํ์ผ ์์ด ์คํ์ํฌ ์ ์๊ณ , ํนํ ์ ๋์ค ๊ณ์ด๊ณผ ๊ถํฉ์ด ์ ๋ง๋๋ค.
1.2. ์ฌ์ฉ ํํฉ[ํธ์ง]
์ปค๋ฎค๋ํฐ์ ์ผํ๋ชฐ ์ฌ์ดํธ์์ ์ฃผ๋ก ์ฐ์ด๋ PHP์ ๋ฌ๋ฆฌ, JSP๋ ์ฃผ๋ก ๋๊ท๋ชจ ๊ธฐ์
์ฉ ์์คํ
๊ตฌ์ถ์ ์ฌ์ฉ๋๋ค. ์ด๋ฐ ํ๊ฒฝ์์๋ ๋ณดํต Java Enterprise Edition(J2EE)์ ์ฌ์์ ๋ง์กฑํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์
์๋ฒ ์์์ ํ๋ก๊ทธ๋จ์ ์ด์ฉํ๊ฒ ๋๋ค. J2EE๋ JSP์ ์คํ ๋ฟ๋ง ์๋๋ผ DB ์ปค๋ฅ์
ํ, ๋ฉ์์ง ์์คํ
, ๋ก๋ ๋ฐธ๋ฐ์ฑ ๋ฑ๋ฑ ํ๋ คํ ๊ธฐ๋ฅ๋ค๋ก ๋ฌด์ฅํ๊ณ ์๋ค.[3] ์ด๋ก ์ธํด ๊ท๋ชจ๊ฐ ๋ฐฉ๋ํ๊ณ ๋ฌด๊ฑฐ์ฐ๋ฉฐ, ๋ฉ๋ชจ๋ฆฌ ๋ฑ์ ์์๋ ๋ง์ด ์ฌ์ฉํ๊ฒ ๋๊ณ ์๋์ ์ผ๋ก ์ด๊ธฐ ๋ก๋ฉ๋ ๋๋ฆฌ๋ค. J2EE ์น ์๋ฒ๊ณ์ ์ต๊ณ ๋ด์ BEA์ WebLogic์ด์์ง๋ง ์ง๊ธ์ ์ค๋ผํด์ ์ธ์๋ ์ํ.(...) ํ๊ตญ ํ์ ์ผ๋ก ๊ณต๊ณต๊ธฐ๊ด ๋ฑ์ ์์ฃผ ์ฐ์ด๋ ํฐ๋งฅ์ค์ํํธ์ JEUS๋ J2EE ์ ํ๋ฆฌ์ผ์ด์
์๋ฒ๋ค.
PHP๋ฅผ ์ง์ํ๋ ํธ์คํ ์ ์ฒด๋ ๋ง์ด ๋๋ ค์์ง๋ง JSP๋ฅผ ํธ์คํ ํด์ฃผ๋ ์ ์ฒด๋ ์ฐพ๊ธฐ๊ฐ ์ฝ์ง ์์์ผ๋, ์ต๊ทผ ๋ฐ์ดํฐ ์ผํฐ์ ํธ์คํ ์ ์ฒด๋ค์ด ํด๋ผ์ฐ๋ ์ปดํจํ ์ผ๋ก ๊ฐ์ํ ๋ค์๋ถํฐ ๋น๊ต์ ์ผ ๊ฐ์ Java๋ฅผ ์ด์ฉํ ์ ์๋ ํด๋ผ์ฐ๋ ํธ์คํ ์๋น์ค๋ ๊ฝค ์๊ฒผ๋ค. ๋์ธ๋ฐฐ ๊ตฌ๊ธ์ App Engine์ด ๊ณต์ง๋ก Java๋ฅผ ์ง์ํ๋ ์ด์ชฝ์ ์ด์ฉํด ๋ณด๋๋ก ํ์. Amazon Web Services์ Beanstalk์ Lambda๋ ๋์ผํ ์๋น์ค์ด๋ค.
JSP๋ฅผ ์ง์ํ๋ ํตํฉ ๊ฐ๋ฐ ํ๊ฒฝ์๋ ์ดํด๋ฆฝ์ค, ๋ท๋น์ฆ, IntelliJ IDEA ๋ฑ์ด ์์ผ๋ฉฐ, ๋น์ฃผ์ผ ์คํ๋์ค ์ฝ๋ ๊ฐ์ ํ ์คํธ ์๋ํฐ๋ JSP๋ฅผ ์ง์ํ๋ค.
PHP๋ฅผ ์ง์ํ๋ ํธ์คํ ์ ์ฒด๋ ๋ง์ด ๋๋ ค์์ง๋ง JSP๋ฅผ ํธ์คํ ํด์ฃผ๋ ์ ์ฒด๋ ์ฐพ๊ธฐ๊ฐ ์ฝ์ง ์์์ผ๋, ์ต๊ทผ ๋ฐ์ดํฐ ์ผํฐ์ ํธ์คํ ์ ์ฒด๋ค์ด ํด๋ผ์ฐ๋ ์ปดํจํ ์ผ๋ก ๊ฐ์ํ ๋ค์๋ถํฐ ๋น๊ต์ ์ผ ๊ฐ์ Java๋ฅผ ์ด์ฉํ ์ ์๋ ํด๋ผ์ฐ๋ ํธ์คํ ์๋น์ค๋ ๊ฝค ์๊ฒผ๋ค. ๋์ธ๋ฐฐ ๊ตฌ๊ธ์ App Engine์ด ๊ณต์ง๋ก Java๋ฅผ ์ง์ํ๋ ์ด์ชฝ์ ์ด์ฉํด ๋ณด๋๋ก ํ์. Amazon Web Services์ Beanstalk์ Lambda๋ ๋์ผํ ์๋น์ค์ด๋ค.
JSP๋ฅผ ์ง์ํ๋ ํตํฉ ๊ฐ๋ฐ ํ๊ฒฝ์๋ ์ดํด๋ฆฝ์ค, ๋ท๋น์ฆ, IntelliJ IDEA ๋ฑ์ด ์์ผ๋ฉฐ, ๋น์ฃผ์ผ ์คํ๋์ค ์ฝ๋ ๊ฐ์ ํ ์คํธ ์๋ํฐ๋ JSP๋ฅผ ์ง์ํ๋ค.
1.3. ํ ์ธ์ด์์ ์ฐจ์ด[ํธ์ง]
ASP์ ๋น๊ตํด์ JSP๋ ์์ ์ ์ด๊ณ , ์ ์ง๋ณด์๊ฐ ์ฝ๋ค. ๋ฐ๋ฉด PHP๋ ๊ฐ๋ฐ ์๋๊ฐ ๋น ๋ฅด๋ค. ๊ทธ๋ฐ๋ฐ 2010๋
๋์ ์น ํ๊ฒฝ์ JSP์ ๊ฒฝ์ง๋ ๊ตฌ์กฐ๋ฅผ ๋ฐ์๋ค์ด์ง ๋ชปํด ๋น ๋ฅด๊ฒ ์ธ๊ธฐ๊ฐ ์๊ณ ์๋ค. ์์ฆ ํธ๋ ๋์ธ API ์ฃผ๋ํ ์ฌ์ดํธ ๊ตฌ์ถ๊ณผ SPA(Single Page Application)๋ JSP์ ์ ๋ง ๊ถํฉ์ด ์ ๋ง๋๋ค. ๋๊ธฐ์
์ด๋ ๊ธ์ต๊ถ, ๊ด๊ณต์ ๋ฑ ๊ท๋ชจ๊ฐ ํฌ๊ณ ์์ ์ ์ธ ์๋น์ค๊ฐ ์ค์ํ ๊ณณ์์๋ ์ฌ์ ํ ์์๊ฐ ์์ง๋ง, ์ด๋ฌํ ๊ณณ์ด ์๋๋ผ๋ฉด ์๋น์ค ๋ด์ฉ ๋๋น ์ธ๋ฐ์์ด ๋ฌด๊ฒ๊ณ ๋๋ฆฐ JSP๋ ์ ์ ๋ฉ๋ฆฌํธ๊ฐ ๋จ์ด์ ธ ๊ฐ๊ณ ์๋ค. ๊ณผ๊ฑฐ์ ์ฐ์๋ EJB๋ ๊ตฐ๋๋๊ธฐ ์ฝ๋๊ฐ ๋ง๊ณ , EJB๋ฅผ ๋ก๋ฉํ๋ ๋ฐ ๊ฝค๋ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ฉฐ[4], ์๋๋ฅผ ์ํด Local Bean์ผ๋ก๋ง ์ค์ฐฝ ์ฐ๋ค๊ฐ ์ง๊ธ์ ๊ฑฐ์ ์ฌ์ฅ๋ ์ํ์ด๋ค.
ASP.NET์ ๋ถ๋ฏธ์์๋ ๋ง์ด ์ฐ์ด๋ ํ๊ตญ์์๋ ์ ์์ฐ์ธ๋ค. ์ฌ์ฉํ๋ ๋ฐฉ์์ด ๋ง์ด ๋ณํ์ง๋ง PHP๋ ๋จ์ํ ํ๋ฆฟ์ด ์๋ API์๋ฒ ์ญํ ๋ ํ ์์์ด์ ์์ง ์น ์ชฝ์์๋ ์ ๋ฐฉ ์ค์ด๊ณ , ์ ํฅ๊ฐ์๋ก Node.js์ Go๊ฐ ๋ ์ค๋ฅด๊ณ ์๋ค. ๋ํ Ruby on Rails์ ์ฑ๊ณต๋ JSP์ ์๋ ์ ๊ฐ๋ก๋ง๋ ์กด์ฌ์ด๋ค. Python์ Django์ Flask ์น ํ๋ ์์ํฌ๋ ํธ์์ฑ๊ณผ ๊ณ ์ฑ๋ฅ, ๊ทธ๋ฆฌ๊ณ ์๋์ ์ธ ์์ฐ์ฑ๊ณผ ์๋งํ ํ์ต ๊ณก์ ์ผ๋ก JSP๋ฅผ ์ํํ๊ณ ์๋ค.
ASP.NET์ ๋ถ๋ฏธ์์๋ ๋ง์ด ์ฐ์ด๋ ํ๊ตญ์์๋ ์ ์์ฐ์ธ๋ค. ์ฌ์ฉํ๋ ๋ฐฉ์์ด ๋ง์ด ๋ณํ์ง๋ง PHP๋ ๋จ์ํ ํ๋ฆฟ์ด ์๋ API์๋ฒ ์ญํ ๋ ํ ์์์ด์ ์์ง ์น ์ชฝ์์๋ ์ ๋ฐฉ ์ค์ด๊ณ , ์ ํฅ๊ฐ์๋ก Node.js์ Go๊ฐ ๋ ์ค๋ฅด๊ณ ์๋ค. ๋ํ Ruby on Rails์ ์ฑ๊ณต๋ JSP์ ์๋ ์ ๊ฐ๋ก๋ง๋ ์กด์ฌ์ด๋ค. Python์ Django์ Flask ์น ํ๋ ์์ํฌ๋ ํธ์์ฑ๊ณผ ๊ณ ์ฑ๋ฅ, ๊ทธ๋ฆฌ๊ณ ์๋์ ์ธ ์์ฐ์ฑ๊ณผ ์๋งํ ํ์ต ๊ณก์ ์ผ๋ก JSP๋ฅผ ์ํํ๊ณ ์๋ค.
2. Jacketed Soft Point[ํธ์ง]
- ๊ด๋ จ๋ฌธ์ : ํ ๋ก ํฌ์ธํธ, ํ ๋ฉํ ์ฌํท
ํ์ ์ธก๋ฉด๋ถ๋ ๊ตฌ๋ฆฌ๋ก ๋๊ธํด๋์ง๋ง ํ๋์ ์ต์ ๋ฐฉ๋ถ์๋ ๋ด๋ถ์ ๋ถ๋๋ฌ์ด ํ์ฌ(์ฃผ๋ก ๋ฉ)์ ๋ ธ์ถ ์ํค๋ ํํ์ ํํ. ํ ๋ก ํฌ์ธํธ(JHP)์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ชฉํ์ ๋ช ์คํ ๋ ํ๋์ ํ์์ด ํฌ๊ฒ ๋ณํ๋์ด ๊ดํต๋ ฅ์ด ๋ฎ์์ง๊ณ ๋์ธ ์ ์ง๋ ฅ์ด ๋์์ง๋ ํจ๊ณผ๊ฐ ์๋ค. ํนํ ํ๋๊ฐ ๋ณํํ๋ฉด์ ์ ์ฒด์ ์ธ ์ธ๊ฒฝ์ด ๋์ด๋๊ณ ํ๋ ๋ด๋ถ์ ๋ฉ์ด ์ ์ถ๋์ด ํํธํ ๋๊ธฐ๋ ํด์ ์ด์์ด ํ ๋ฉํ ์ฌํท(FMJ)์ ๋นํด ์ฌ๊ฐํด์ง๋ค. ๊ฐ์ ๋ค๋คํ์ธ JHP์ ๋น๊ตํ๋ฉด ์๋์ ์ผ๋ก ํ๋๊ฐ ์์ ์ ์ด๊ณ ํ๊ฑธ๋ฆผ๋ ๋ฏธ์ธํ๊ฒ ์ ์ ํธ์ด์ง๋ง ์ด์ด์ ๋ฉ์ด ๋ถ์ฐฉ๋๋ ๊ฒฝํฅ์ ์กฐ๊ธ ๋ ์ฌํ ํธ์ด๋ค. ๋ฌผ๋ก FMJ๊ฐ ํ๋, ํ๊ฑธ๋ฆผ๋, ๋ฉ ๋ฌธ์ ๋ชจ๋ ๊ฐ์ฅ ์ฐ์ํด์ JHP์ ๋ง์ฐฌ๊ฐ์ง๋ก JSP๋ ๊ตฐ์ฉ์ผ๋ก๋ ์ ์ฐ์ด์ง ์๋๋ค.
[1] JavaScript๊ฐ ์๋๋ค! JavaScript์ ์๋ฒ ์คํฌ๋ฆฝํธ ํํ๋ Node.js๋ค.
[2] ์ฆ, JSP๋ ๊ฒฐ๊ตญ Servlet์ด ๋๋ค.
[3] ์คํ ์์ค WAS๋ ์กด์ฌํ๋ค. ๊ธ๋์คํผ์, wildfly ๋ฑ.
[4] ์๋ ๋ถ์ฐ ํ๊ฒฝ์ ์ํด ์ค๊ณ๋์์ผ๋ ์๋ฌด๋ ๊ทธ๋ ๊ฒ ์ฐ์ง ์๋๋ค.