(๊ตฌ๊ธ ๋ธ๋ก๊ทธ zaksimcoding.blogspot.com)
ย Computing Paradigm์ ๋ณ์ฒ๊ณผ Java ๊ธฐ์ ์ ๋ฐ์
์์ program๊ธฐ๋ฒ ์ธก๋ฉด์์ ๊ธฐ์ ์ ๋ฐ์ ์ ์ค๋ช ๋๋ ธ์ผ๋ฉฐ, ์ด๋ฒ ๊ธ์์๋ Java๊ฐ ๋ฌด์์ด ์ข๊ธธ๋ ์ฐ๋ ๊ฒ์ธ์ง์ ๋ํด ์ดํด๋ณด๊ฒ ์ต๋๋ค.
ย
2. ๊ตฌ์กฐ์ ์ธก๋ฉด
์๋๊ฐ ํ๋ฅด๋ฉด์ย ์ฌ์์ด ๋์ ๋ค๋ฅธ ๋จธ์ ์ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ ์ฌ๋ ค๋๊ณ ๋จธ์ ์์ ์์ฒญํ๋ฉด ๊ฒฐ๊ณผ๋ง ๋ฐ๋๋ก ์ค๊ณํ๋ ๊ฒฝ์ฐ๊ฐ ์๊ธฐ๊ธฐ ์์ํ์ต๋๋ค.ย
์ฐ๋ฆฌ์๊ฒ ๋๋ฌด๋ ์น์ํ ์ด๋ฆ๊ณผ Client์ Server๊ฐ ์ด์ ๊ด๋ จ๋ ๋ด์ฉ์
๋๋ค.
์์ฒญํ๋์ชฝ์ย Client๋ผ ํ๊ณ ,ย ย ๋ฐ๋์ชฝ์ย Server๋ผ๊ณ ํฉ๋๋ค. (C/S๊ตฌ์กฐ)
๊ทธ๋ฌ๋ C/S๊ตฌ์กฐ์ ๋ฌธ์ ์ ์ย ๋๊ฐ์ ํ๋ก๊ทธ๋จ์ธ๋ฐ๋ O/S๋ง๋ค ํ
์คํธ(Windows์ Linux ๋ฑ ํ
์คํธ)ํ๊ณ ๋ฐฐํฌํด์ผ๋๋ ๋ถํธ์ด์์ต๋๋ค.
์ฆ, ์๋ฒ์ชฝ ํ๋ก๊ทธ๋จ๊ณผ ๋ฐ์ดํฐ๋ง ๊ด๋ฆฌํ๋ฉด ๋๋๊ฒ ์๋๋ผ ๊ฐ ํด๋ผ์ด์ธํธ ๋จธ์ ๋ง๋ค ์ ๋ถ ๋ค๋ฅด๊ฒ ๊ตฌ๋๋์ผํ์ต๋๋ค.
์ ๊ธ์์ Java ๊ธฐ์ ์ ๋ฐ์ ์ ๋ฌด์์ ๊ธฐ์ค์ผ๋ก ํ๋ค๊ณ ๋ง์๋๋ ธ์ฃ ?
๋ต์ ๋ฐ๋ก ๊ฐ๋ฐ์ ํธ์์ฑ์
๋๋ค.
์๋ก์ด ๊ธฐ์ ์ ๊ฐ๋ฐ์๊ฐ ๋ถํธ์ ๋๋ ๋ ๋์ต๋๋ค.
C/S๊ตฌ์กฐ์ย ๋ฌธ์ ์ ์ ๊ฐ์ ํ๊ธฐ์ํดย Web site์๋๊ฐ ์์๋ฉ๋๋ค.
์์ฒญ์ ๋ํ ํ๋ก๊ทธ๋จ์ย ์ง๋๊ฒย ์๋๋ผ ๋ฐ์ดํฐ๋ง ์ฃผ๋ฉด ๋๋ ๊ฒ์ย html์ด๋ผ๊ณ ํฉ๋๋ค.
์ด๋๊ฐย 90๋
๋์ด๊ณ ย Web site์๋๋ผ๊ณ ๋ถ๋ฆ
๋๋ค.ย
(๋ค๋ฅธ๋ง๋กย htmlย ๋ฑ๋ง ์ง์ํ๊ธฐ์ ์ ์ ์ธ ์๋๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ํฉ๋๋ค.)
์ฒ์์๋ ์ธํฐ๋ท์ ํตํด ๋จ์ํ ๋ด์ค๋ฅผ ๋ณด๋ ๊ฒ์ฒ๋ผ text๋ง ์ ๊ณตํด์ฃผ๋ฉด ๋ฌธ์ ๊ฐ ์์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ธํฐ๋ท์ด ๋ฐ์ ํ๋ฉด์ ๋จ์ํ text๋ง ์ ๊ณตํ๋ ๊ฒ์ด ์๋ ํ์๊ฐ์
์ด๋ ๋ก๊ทธ์ธ์ ํ๋ ๊ฒ์ฒ๋ผ ์ฌ์ฉ์๋ ์ธํฐ๋ท์ผ๋ก ๋ฌด์ธ๊ฐ๋ฅผ ํ๊ฒ๋๋ ์๋๊ฐ ๋์์ต๋๋ค.
๊ฐ๋ฐ์๋ค์ ์ด์ ํ๋ก๊ทธ๋จ์ ์ถ๊ฐํ๊ธฐ ์์ํ์๊ณ ์ด๋ค ์ธ์ด๋ค์ด ์ ํฉํ์ง ๋ค์ํ ์ธ์ด๋ค์ ์๋ํ๊ฒ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์น์๋ฒ์ ๋ฃ์ด ์ฑ๊ณตํ ์ธ์ด๋ค์ CGI(Common Gateway Interface)๋ผ ๋ถ๋ฆ
๋๋ค.
(CGI๋ย web์๋ฒ ํ๋ก๊ทธ๋จ์ ํต์นญํด์ ๋ถ๋ฅด๋ ๋ง์
๋๋ค.)
์ฌ๊ธฐ์๋ ๋ ๋ฌธ์ ์ ์ด ๋๋๋๊ธฐ ์์ํฉ๋๋ค. ๋ฐ๋ก Process ๋ฌธ์ ์ ์
๋๋ค.
์ด ๋์๋ ์ปดํจํฐ์ ์์์ ๊ณต์ ํ์ง ์์์ง๋ง ๋ฆฌ์์ค๊ฐ ๋ถ์กฑํด์ง๋ ํ์์ด ๋ฐ์ํ๊ฒ ๋๊ณ ์ด์ ๋ํดย ์๋ฒ๊ฐ ๋ค์ด๋์ง ์๊ธฐ ์ํด์ ์์์ ๊ณต์ ํ๋๊ฒย ๋ฌด์์ธ๊ฐ๊ฐ ํ์ํ์ต๋๋ค.ย
(๊ฐ๋ฐ์ ๋ถํธ + ์ปดํจํฐ์ ์์์ ๊ณต์ ํด์ผ๋๋ ํ์์ฑ)
์ด๋ ๋ํ๋ ๊ฒ์ด thread์
๋๋ค.
์ด์ API๋ผ๋ ๊ฒ๋ง ์ค๋ช
๋๋ฆฌ๋ฉด ์๋ฐ๊ฐ ๋ํ๋ ๋ฐฐ๊ฒฝ์ ๋ํด ์ค๋ช
๋๋ฆด ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค.ย
API๋ ์ฝ๊ฒ ๋งํ์๋ฉดย ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋น์ทํฉ๋๋ค. ๋ฏธ๋ฆฌ ์ง์ฌ์ง ์ฝ๋๋ผ ์๊ฐํ์๋ฉด ๋ฉ๋๋ค.
์๋ฐ API๋ย ์๋ฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๊ฒ ๊ตฌํํ ์ ์๋๋ก ํย ํด๋์คย ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์งํฉ์ด๋ผ ๋ณผ ์ ์์ต๋๋ค.
์๋ฐ API๋ย ์๋ฐ๋ผ๋ ์ธ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์์ ๋ถ๋ด์ ์ต์ํํ๋ ๋ฐ๋ฉด์ ์
์ถ๋ ฅ, ํ๋ฉด๊ตฌ์ฑ,ย ์ด๋ฏธ์ง, ๋คํธ์ํฌ์ ๊ฐ์ด ๋ณต์กํ์ง๋ง ํ์ํ ํด๋์ค๋ค์ ๋ฏธ๋ฆฌ ๊ตฌํํ์ฌ ์ฌ์ฉ์๊ฐ ์ฝ๊ฒย ๊ตฌํํ๋๋ก ํ๋ย API์
๋๋ค. ์ด๋ฌํ ์๋ฐ API๋ ํ๋์ ์ปค๋ค๋ ํด๋์ค ๊ณ์ธต๊ตฌ์กฐ๋ก ์ค๊ณ๋์ด ์์ต๋๋ค.ย
์๋ฅผ ๋ค์ด๋ณด๊ฒ ์ต๋๋ค.
C๊ฐ๋ฐ์๊ฐ ์น์์ ๋์๊ฐ๋ CGI๋ก C๋ฅผ ์ด์ฉํ๋ค๊ณ ํด๋ด
์๋ค.
Request๊ฐ 1๊ฐ์ผ๋ ์๊ด ์์๋๋ฐ ์ฌ๋ฌ๊ฐ์ผ๋ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์์ต๋๋ค.
์ข ์ ์ ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ํ๋ ๊ฒ์ดย thread๋ผ๊ณ ๋ง์๋๋ ธ์ฃ ?ย
๊ทผ๋ฐ ์ด thread๊ฐ ๊ต์ฅํ ๋ค๋ฃจ๊ธฐย ์ด๋ ต๊ธฐ ๋๋ฌธ์ API๊ฐ ๋์จ ๊ฒ์
๋๋ค.
๋๋ฌด ๊น๊ฒ ๋ค์ด๊ฐ๋ฉด ๋ณต์กํ ์ ์๊ธฐ ๋๋ฌธ์ ์ด์ ๋๊น์ง๋ง ๊ฐ๋จํ ์ง๊ณ ๋์ด๊ฐ๊ฒ ์ต๋๋ค.
์์ฝ
์๋ฐ๊ฐ ๋ํ๋ ๋ฐฐ๊ฒฝ
1. Process / request ๋ฌธ์ ๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด Thread / request๋ก ๋ฐ๊ฟ์ผํ๋ค.ย
(๊ฐ๋ฐ์ ๋ถํธ +ย ์ปดํจํฐ์ ์์ ๊ณต์ ํ์์ฑ)
2. Platform dependentย => platform indepedentย ํ์
// API๋ฅผ ์ํด์ย ์ด๋ค ํ๋ซํผ์์๋ ๊ตฌ๋ํ๊ฒ ํ ํ์๊ฐ ์์์ => ์ด๋ ํ๋ซํผ ๋
๋ฆฝ์ ์ธ ์ธ์ด๊ฐ ๋์ด
์ด 2๊ฐ์ง ๋ฌธ์ ์ ๋ชจ๋ ํด๊ฒฐ ๊ฐ๋ฅํ๊ฒ Sun์ Servlet(Java)์
๋๋ค.
* Java๋ ์น์ Target์ผ๋ก ํ ๋ฒ์ฉ ์ธ์ด๋ก ๋์ ์ ๊ทผ์ ๋ํญํ ์ ์๊ณ ์๋ฒ์ ๊ฐํฉ๋๋ค.
๋ค์ ๊ธ์์๋ Java์ ํน์ง์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.