안녕하세요. 성조입니다.
이번에 자바와 조금 더 친해지기 위해서 버전 종류를 정리하는 포스팅을 진행해 보려 합니다.
혹여나 올바르지 못한 지식 전달 사항이 있다면 언제든지 댓글 남겨주시면 감사드리겠습니다!
Java SE(Standard Edition)이란?
Java SE는 영어 그대로 자바의 [기준, 기본]이 되는 플랫폼을 말한다.
자바의 핵심 기능들을 가지고 있으며, Java SE는 객체지향 프로그래밍 언어로 기본적인 기능들을 사용해 프로그래밍할 수 있도록 도와주는 역할을 한다.
SE는 기본적인 API와 JVM을 제공하며, 기본 자바 프로그래밍(APIs), 객체 지향 언어(캡슐화, 다형성, 상속, 추상화), 기본 입출력(I/O)과 네트워킹, Multi-threading, JDBC, GUI, 보안, etc.. 기능들을 지원한다. 또한, Java SE는 표준 자바 또는 J2SE라고도 불리기도 한다.
Java EE(Enterprise Edition)이란?
Java EE는 Java SE를 기반으로 하면서 한스푼 더해서 웹 기반 애플리케이션, 분산 애플리케이션 개발에 필요한 API와 런타임 환경을 추가적으로 제공하는 Java의 기업 버전이다.
서블릿과 JSP(Java Server Pages), EJB(Enterprise Java Beans), JPA(Java Persistence API), 웹 서비스, CDI(Contexts and Dependency Injection), Bean Validation, JSON 처리, JAAS(Java Authentication and Authorization Service)등 다양한 기능들을 제공하고 있다.
[ Java EE [Java SE]] 구조로 SE는 EE 안에 포함되고, EE는 SE에서 추가적인 기능이 +된 것이다.
Java SE(Standard Edition)와 Java EE(Enterprise Edition)의 차이점
Java SE는 자바의 핵심 기능을 제공하고 일반적인 프로그래밍 환경을 일반 개발자가 사용하는 반면 Java EE는 분산 컴퓨팅이나 한 단계 더 업그레이드된 기능을 포함한 기업 환경에서 사용한다.
Java SE가 자바의 기능을 배우고, 애플리케이션 제작 레벨이라면 Java EE는 그 위에 기업에게 필요한 클라이언트/서버, 네트워크, 보안 등 다양한 기능들을 추가로 얹어서 사용하는 것이다.
Java ME(Micro Edition)
마이크로 에디션 즉, '작은 버전'정도로 이해하면 좋다.
현실적 고려 사항으로 물리적 자원을 늘리기 어렵고, 제한된 크기를 유지하는 기기인 임베디드 시스템이나 모바일 기기에 적합하게 개발된 플랫폼 버전이다.
IoT, 모바일, 휴대용 디바이스 기기는 메모리, 배터리, CPU 등을 고려해서 개발하지 않을 수 없어서(일반적으로 누가 50kg짜리 핸드폰을 휴대하고 다니겠는가..) Java SE보다 더 간소화된 API를 제공한다. API는 네트워크, 저장소, UI 등을 위한 세부 API 등이 존재한다.
[Java SE [Java EE] ] 구조로 SE API 하위 집합에 EE가 포함된다.
극단적인 예시로 현대는 빨리빨리 문화가 자리 잡고 있는데 별로 중요성이 떨어지는 정보를 획득하기 위해 배터리가 10 ~ 30분 정도 유지되고, 충전하는데 10시간 이상 걸린다 하면 시장성이 거의 없을 것이다.
Java FX
데스크톱, 웹, 모바일 환경에서 실행되는 리치 인터넷 애플리케이션(RIA)을 만드는데 사용되는 자바 플랫폼이다.
기본적으로 자바 언어로 작성됐지만 XML 기반의 FXML를 활용해서도 UI를 정의할 수 있다.
그래픽 사용자 인터페이스(GUI)를 개발하거나, 애니메이션 효과, 웹 뷰, CSS 스타일링, FXML의 기능들이 존재한다.
JavaFX는 강력한 2D, 3D 모두 지원할 수 있고, 애니메이션, 웹 뷰 등의 기능을 통해서 사용자에게 동적이고 인터랙티브 한 UI도 제공할 수 있다. 사용자의 UI 만족도를 올리는 것에 초점이 맞춰져 있다 생각한다.
오타나 궁금한 부분이 있다면 언제든지 댓글 남겨주시면 답변드리겠습니다.
다음 포스팅 때 뵙겠습니다.
- 참조 -
https://docs.oracle.com/javaee/6/firstcup/doc/gkhoy.html
'Java ☕ > Java' 카테고리의 다른 글
[Java] 인터페이스 분리 원칙 (Interface Segregation Principle, ISP) (0) | 2023.06.02 |
---|---|
[Java] 리스코프 치환 원칙(Liskov Substitution Principle, LSP) (0) | 2023.05.31 |
[Java] 개방-폐쇄 원칙 (Open-Closed Principle , OCP) (1) | 2023.05.30 |
[Java] 접근 지정자(Access Modifier) Private/Protected/Default/Public 정리 (0) | 2023.05.29 |
[Java] 단일 책임 원칙(Single Responsibility Principle, SRP) (0) | 2023.05.29 |