๐Ÿ“š Java ํ”Œ๋žซํผ ์™„๋ฒฝ ๊ฐ€์ด๋“œ: SE, EE, ME ์ฐจ์ด์ ๊ณผ Java EE์˜ ํ•ต์‹ฌ ๊ตฌ์กฐ!

๊น€์ƒ์šฑยท2024๋…„ 7์›” 14์ผ
0
post-thumbnail

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 ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์กฐ: ํ•ต์‹ฌ์„ ํŒŒํ—ค์น˜๋‹ค!

  1. ํด๋ผ์ด์–ธํŠธ -> (HTTP/๋ฐฉํ™”๋ฒฝ) -> ์›น ์„œ๋ฒ„

    • ํด๋ผ์ด์–ธํŠธ๋Š” ์›น ๋ธŒ๋ผ์šฐ์ € ๋˜๋Š” ๋ฐ์Šคํฌํƒ‘ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์š”์ฒญ์€ HTTP ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ์›น ์„œ๋ฒ„๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค.
    • ๋ฐฉํ™”๋ฒฝ์€ ๋„คํŠธ์›Œํฌ ๋ณด์•ˆ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  2. ์›น ์„œ๋ฒ„ [์›น ์ปจํ…Œ์ด๋„ˆ(Servlet, JSP, Java ํด๋ž˜์Šค) - ๋Ÿฐํƒ€์ž„(JVM)]

    • ์›น ์„œ๋ฒ„๋Š” ์š”์ฒญ์„ ๋ฐ›์•„ ์›น ์ปจํ…Œ์ด๋„ˆ์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
    • ์›น ์ปจํ…Œ์ด๋„ˆ๋Š” ์„œ๋ธ”๋ฆฟ(Servlet), JSP(JavaServer Pages), ๊ทธ๋ฆฌ๊ณ  Java ํด๋ž˜์Šค๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    • ์„œ๋ธ”๋ฆฟ์€ Java EE์˜ ํ•ต์‹ฌ ์ปดํฌ๋„ŒํŠธ๋กœ HTTP ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
    • JSP๋Š” HTML๊ณผ Java ์ฝ”๋“œ๋ฅผ ํ˜ผํ•ฉํ•˜์—ฌ ๋™์  ์›น ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  3. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„(์ปจํ…Œ์ด๋„ˆ - ํด๋ž˜์Šค)

    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
    • EJB(Enterprise JavaBeans)์™€ ๊ฐ™์€ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
    • ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ, ๋ณด์•ˆ, ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  4. ํ†ตํ•ฉ -> ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์ •๋ณด ์‹œ์Šคํ…œ(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)

0๊ฐœ์˜ ๋Œ“๊ธ€