์ด ๋ฌธ์„œ์˜ ์›๋ณธ์€ ์™ธ๋ถ€ ์œ„ํ‚ค์—์„œ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.
1. Jakarta Server Pages
1.1. ๊ฐœ์š”1.2. ์‚ฌ์šฉ ํ˜„ํ™ฉ1.3. ํƒ€ ์–ธ์–ด์™€์˜ ์ฐจ์ด
2. Jacketed Soft Point

1. Jakarta Server Pages[ํŽธ์ง‘]

1.1. ๊ฐœ์š”[ํŽธ์ง‘]

Java[1]๋ฅผ ์ด์šฉํ•œ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด. Java Server Pages์˜ ์•ฝ์ž์ด๋ฉฐ, ์˜ค๋ผํด์—์„œ ์ž๋ฐ”์ƒํ‘œ๊ถŒ ๋ฌธ์ œ๋กœ ์˜คํ”ˆ์†Œ์Šค์ธ jsp๋Š” ์ž์นด๋ฅดํƒ€ ์„œ๋ฒ„ํŽ˜์ด์ง€๋กœ ์ด๋ฆ„์„ ๋ฐ”๊พธ์—ˆ๋‹ค. Java์˜ ์ ์œ ์œจ์„ ๋Œ€ํญ ์ƒ์Šน์‹œํ‚จ 1๋“ฑ๊ณต์‹ ์ด๋‹ค. ๊ฐ™์€ ๋ถ€๋ฅ˜์— ์†ํ•˜๋Š” ๊ฒƒ์œผ๋กœ PHP, ASP๊ฐ€ ์žˆ๋‹ค. ํ™•์žฅ์ž๋Š” ๋‹น์—ฐํžˆ .jsp๋ฅผ ์‚ฌ์šฉ. ASP์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ <% ... %>๋กœ ๋‘˜๋Ÿฌ์‹ธ์ธ ์Šคํฌ๋ฆฝํŠธ ์˜์—ญ์ด ์žˆ์œผ๋ฉฐ, ์‹คํ–‰์‹œ์— 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๋ฅผ ์ง€์›ํ•œ๋‹ค.

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๋ฅผ ์œ„ํ˜‘ํ•˜๊ณ  ์žˆ๋‹ค.

2. Jacketed Soft Point[ํŽธ์ง‘]


ํƒ„์€ ์ธก๋ฉด๋ถ€๋Š” ๊ตฌ๋ฆฌ๋กœ ๋„๊ธˆํ•ด๋†“์ง€๋งŒ ํƒ„๋‘์˜ ์ตœ์ „๋ฐฉ๋ถ€์—๋Š” ๋‚ด๋ถ€์˜ ๋ถ€๋“œ๋Ÿฌ์šด ํƒ„์‹ฌ(์ฃผ๋กœ ๋‚ฉ)์„ ๋…ธ์ถœ ์‹œํ‚ค๋Š” ํ˜•ํƒœ์˜ ํƒ„ํ™˜. ํ• ๋กœ ํฌ์ธํŠธ(JHP)์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ชฉํ‘œ์— ๋ช…์ค‘ํ•  ๋•Œ ํƒ„๋‘์˜ ํ˜•์ƒ์ด ํฌ๊ฒŒ ๋ณ€ํ™”๋˜์–ด ๊ด€ํ†ต๋ ฅ์ด ๋‚ฎ์•„์ง€๊ณ  ๋Œ€์ธ ์ €์ง€๋ ฅ์ด ๋†’์•„์ง€๋Š” ํšจ๊ณผ๊ฐ€ ์žˆ๋‹ค. ํŠนํžˆ ํƒ„๋‘๊ฐ€ ๋ณ€ํ˜•ํ•˜๋ฉด์„œ ์ „์ฒด์ ์ธ ์™ธ๊ฒฝ์ด ๋Š˜์–ด๋‚˜๊ณ  ํƒ„๋‘ ๋‚ด๋ถ€์˜ ๋‚ฉ์ด ์œ ์ถœ๋˜์–ด ํŒŒํŽธํ™” ๋˜๊ธฐ๋„ ํ•ด์„œ ์ด์ƒ์ด ํ’€ ๋ฉ”ํƒˆ ์žฌํ‚ท(FMJ)์— ๋น„ํ•ด ์‹ฌ๊ฐํ•ด์ง„๋‹ค. ๊ฐ™์€ ๋ค๋คํƒ„์ธ JHP์™€ ๋น„๊ตํ•˜๋ฉด ์ƒ๋Œ€์ ์œผ๋กœ ํƒ„๋„๊ฐ€ ์•ˆ์ •์ ์ด๊ณ  ํƒ„๊ฑธ๋ฆผ๋„ ๋ฏธ์„ธํ•˜๊ฒŒ ์ ์€ ํŽธ์ด์ง€๋งŒ ์ด์—ด์— ๋‚ฉ์ด ๋ถ€์ฐฉ๋˜๋Š” ๊ฒฝํ–ฅ์€ ์กฐ๊ธˆ ๋” ์‹ฌํ•œ ํŽธ์ด๋‹ค. ๋ฌผ๋ก  FMJ๊ฐ€ ํƒ„๋„, ํƒ„๊ฑธ๋ฆผ๋„, ๋‚ฉ ๋ฌธ์ œ ๋ชจ๋‘ ๊ฐ€์žฅ ์šฐ์ˆ˜ํ•ด์„œ JHP์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ JSP๋„ ๊ตฐ์šฉ์œผ๋กœ๋Š” ์ž˜ ์“ฐ์ด์ง€ ์•Š๋Š”๋‹ค.
[1] JavaScript๊ฐ€ ์•„๋‹ˆ๋‹ค! JavaScript์˜ ์„œ๋ฒ„ ์Šคํฌ๋ฆฝํŠธ ํ˜•ํƒœ๋Š” Node.js๋‹ค.
[2] ์ฆ‰, JSP๋„ ๊ฒฐ๊ตญ Servlet์ด ๋œ๋‹ค.
[3] ์˜คํ”ˆ ์†Œ์Šค WAS๋„ ์กด์žฌํ•œ๋‹ค. ๊ธ€๋ž˜์Šคํ”ผ์‹œ, wildfly ๋“ฑ.
[4] ์›๋ž˜ ๋ถ„์‚ฐ ํ™˜๊ฒฝ์„ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์œผ๋‚˜ ์•„๋ฌด๋„ ๊ทธ๋ ‡๊ฒŒ ์“ฐ์ง€ ์•Š๋Š”๋‹ค.