Java EE vs Java SE vs Java ME
๐ฅ๏ธ Java SE (Standard Edition): ๊ธฐ๋ณธ ์ค์ ๊ธฐ๋ณธ!
Java SE๋ Java ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ฃผ๋ก ๋ฐ์คํฌํ ์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ์ ์ฌ์ฉ๋๋ฉฐ, ๋ค์๊ณผ ๊ฐ์ ์ฃผ์ ๊ตฌ์ฑ ์์๊ฐ ํฌํจ๋ฉ๋๋ค:
- Java ๋ฌธ๋ฒ ๋ฐ ๊ธฐ๋ณธ ์์: ๋ฐ์ดํฐ ํ์
, ์ฐ์ฐ์, ์ ์ด๋ฌธ ๋ฑ
- ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP): ์ถ์ํ(Abstraction), ์บก์ํ(Encapsulation), ์์(Inheritance), ๋คํ์ฑ(Polymorphism)
- ๊ธฐ๋ณธ API: java.lang, java.util ํจํค์ง ๋ฑ
- ์๋ฃ๊ตฌ์กฐ API: ์ปฌ๋ ์
ํ๋ ์์ํฌ (List, Set, Map ๋ฑ)
- ์
์ถ๋ ฅ API: ํ์ผ ์
์ถ๋ ฅ ๊ด๋ จ ํด๋์ค๋ค (java.io, java.nio)
- ์์ธ ์ฒ๋ฆฌ: ์์ธ ํด๋์ค ๋ฐ ์์ธ ์ฒ๋ฆฌ ๋ฉ์ปค๋์ฆ
- JDBC API: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ๋ฐ ์กฐ์์ ์ํ API
๐ Java EE (Enterprise Edition): ๋๊ท๋ชจ ์ํฐํ๋ผ์ด์ฆ์ ํต์ฌ!
Java EE๋ ๋๊ท๋ชจ ์ํฐํ๋ผ์ด์ฆ ์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ์ ์ํด Java SE๋ฅผ ํ์ฅํ ๊ฒ์
๋๋ค. ์ฃผ๋ก ์๋ฒ ์ฌ์ด๋ ๊ฐ๋ฐ์ ์ฌ์ฉ๋๋ฉฐ, ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์ฑ ์์๊ฐ ํฌํจ๋ฉ๋๋ค:
- ํด๋ผ์ด์ธํธ ๊ณ์ธต(Client Tier): ํด๋ผ์ด์ธํธ ์ ํ๋ฆฌ์ผ์ด์
(์น ๋ธ๋ผ์ฐ์ , ๋ฐ์คํฌํ ์ ํ๋ฆฌ์ผ์ด์
๋ฑ)
- ํ๋ ์ ํ
์ด์
๊ณ์ธต(Presentation Tier): ์น ์๋ฒ์์ ์คํ๋๋ ์๋ธ๋ฆฟ(Servlet), JSP, Spring MVC์ ๊ฐ์ ์น ๊ธฐ์
- ๋น์ฆ๋์ค ๊ณ์ธต(Business Tier): ์ ํ๋ฆฌ์ผ์ด์
์๋ฒ์์ ์คํ๋๋ EJB(Enterprise JavaBeans) ๋ฐ ๋น์ฆ๋์ค ๋ก์ง
- ํตํฉ ๊ณ์ธต(Integration Tier): ๋ค๋ฅธ ์ํฐํ๋ผ์ด์ฆ ์์คํ
๊ณผ์ ํตํฉ (์: ๋ฐ์ดํฐ๋ฒ ์ด์ค, ERP ์์คํ
)
- ๋ฆฌ์์ค ๊ณ์ธต(Resource Tier): ๋ฐ์ดํฐ๋ฒ ์ด์ค, ๋ฉ์์ง ์์คํ
๋ฑ
๐ Java EE ์ ํ๋ฆฌ์ผ์ด์
๊ตฌ์กฐ: ํต์ฌ์ ํํค์น๋ค!
-
ํด๋ผ์ด์ธํธ -> (HTTP/๋ฐฉํ๋ฒฝ) -> ์น ์๋ฒ
- ํด๋ผ์ด์ธํธ๋ ์น ๋ธ๋ผ์ฐ์ ๋๋ ๋ฐ์คํฌํ ์ ํ๋ฆฌ์ผ์ด์
์ผ ์ ์์ต๋๋ค.
- ์์ฒญ์ HTTP ํ๋กํ ์ฝ์ ํตํด ์น ์๋ฒ๋ก ์ ์ก๋ฉ๋๋ค.
- ๋ฐฉํ๋ฒฝ์ ๋คํธ์ํฌ ๋ณด์์ ์ ๊ณตํฉ๋๋ค.
-
์น ์๋ฒ [์น ์ปจํ
์ด๋(Servlet, JSP, Java ํด๋์ค) - ๋ฐํ์(JVM)]
- ์น ์๋ฒ๋ ์์ฒญ์ ๋ฐ์ ์น ์ปจํ
์ด๋์ ์ ๋ฌํฉ๋๋ค.
- ์น ์ปจํ
์ด๋๋ ์๋ธ๋ฆฟ(Servlet), JSP(JavaServer Pages), ๊ทธ๋ฆฌ๊ณ Java ํด๋์ค๋ฅผ ์คํํฉ๋๋ค.
- ์๋ธ๋ฆฟ์ Java EE์ ํต์ฌ ์ปดํฌ๋ํธ๋ก HTTP ์์ฒญ์ ์ฒ๋ฆฌํฉ๋๋ค.
- JSP๋ HTML๊ณผ Java ์ฝ๋๋ฅผ ํผํฉํ์ฌ ๋์ ์น ํ์ด์ง๋ฅผ ์์ฑํฉ๋๋ค.
-
์ ํ๋ฆฌ์ผ์ด์
์๋ฒ(์ปจํ
์ด๋ - ํด๋์ค)
- ์ ํ๋ฆฌ์ผ์ด์
์๋ฒ๋ ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํฉ๋๋ค.
- EJB(Enterprise JavaBeans)์ ๊ฐ์ ์ปดํฌ๋ํธ๋ฅผ ์คํํ์ฌ ๋น์ฆ๋์ค ๋ก์ง์ ๊ตฌํํฉ๋๋ค.
- ํธ๋์ญ์
๊ด๋ฆฌ, ๋ณด์, ๋ก๋ ๋ฐธ๋ฐ์ฑ ๋ฑ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
-
ํตํฉ -> ์ํฐํ๋ผ์ด์ฆ ์ ๋ณด ์์คํ
(EIS) (๋ฐ์ดํฐ๋ฒ ์ด์ค, ERP ๋ฑ)
- ์ ํ๋ฆฌ์ผ์ด์
์๋ฒ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค, ERP ์์คํ
๋ฑ๊ณผ ํตํฉ๋ฉ๋๋ค.
- JDBC API๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํธ์์ฉํฉ๋๋ค.
- JCA(Java Connector Architecture)๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ์ํฐํ๋ผ์ด์ฆ ์์คํ
๊ณผ ํตํฉ๋ฉ๋๋ค.
๐ฑ Java ME (Micro Edition): ๋ชจ๋ฐ์ผ๊ณผ ์๋ฒ ๋๋ ์์คํ
์ ์ํ ๊ฒฝ๋ ํ๋ซํผ!
Java ME๋ ์๋ฒ ๋๋ ์์คํ
๋ฐ ๋ชจ๋ฐ์ผ ์ฅ์น๋ฅผ ์ํ Java ํ๋ซํผ์
๋๋ค. ์ ํ๋ ๋ฆฌ์์ค๋ฅผ ๊ฐ์ง ์ฅ์น์์ ์คํํ ์ ์๋๋ก ์ค๊ณ๋์์ต๋๋ค. ์ฃผ์ ๊ตฌ์ฑ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- CLDC (Connected Limited Device Configuration): ์ ํ๋ ์์์ ๊ฐ์ง ์ฅ์น๋ฅผ ์ํ ๊ตฌ์ฑ
- MIDP (Mobile Information Device Profile): ๋ชจ๋ฐ์ผ ์ฅ์น๋ฅผ ์ํ ํ๋กํ์ผ
- CDC (Connected Device Configuration): ๋ ๋ง์ ์์์ ๊ฐ์ง ์ฅ์น๋ฅผ ์ํ ๊ตฌ์ฑ
Java ME๋ ์ฃผ๋ก ๋ค์๊ณผ ๊ฐ์ ์ฅ์น์์ ์ฌ์ฉ๋ฉ๋๋ค:
- ํผ์ฒํฐ
- ์๋ฒ ๋๋ ์์คํ
- ์
ํฑ ๋ฐ์ค
- ์ค๋งํธ ์นด๋
์ด๋ฅผ ํตํด ๋ค์ํ Java ํ๋ซํผ์ ํน์ง๊ณผ Java EE์ ๊ตฌ์กฐ๋ฅผ ์ดํดํ ์ ์์ต๋๋ค. ๊ฐ ํ๋ซํผ์ ํน์ ์ฉ๋์ ๋ง๊ฒ ์ค๊ณ๋์ด ์์ผ๋ฉฐ, ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ ์ ์ ํ ํ๋ซํผ์ ์ ํํ์ฌ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
์ฐธ๊ณ ์๋ฃ ๐
[1] TISTORY - Java SE, Java EE ์ฐจ์ด ๊ฐ๋จํ๊ณ ์ฝ๊ฒ ์ดํดํ๊ธฐ(์๋ฐ ํ๋ ํผ์ ... (https://ccomccomhan.tistory.com/38)
[2] OPENMARU APM - 2์ฅ. Java ๊ธฐ๋ฐ ์น ์์คํ
์ ์ดํด (https://docs.openmaru.io/docs/jboss-eap/Java_Understanding_of_WebSystem/)
[3] ํฐ์คํ ๋ฆฌ - Java SE? Java EE? Java ME? :) Java ํ๋ซํผ์ ์ดํด (https://kimeuncheol.tistory.com/28)
[4] ํฐ์คํ ๋ฆฌ - Web Server, WAS, CGI, Web Container, Java SE, Java EE ... (https://dev-handbook.tistory.com/49)