자바부터 스프링까지 - 자바의 종류

Roeniss Moon·2021년 5월 26일
0

자바

목록 보기
1/2

자바 진영은 특히나 용어가 비슷하거나 겹치면서, 히스토리가 복잡하기 때문에 종종 헷갈리기 십상이다.

플랫폼으로서의 자바

자바, 혹은 자바 플랫폼은 자바 언어로 개발자들이 코드를 작성하고 실행하도록 만들어주는 환경을 의미하며, JVM, 컴파일러, 코어 라이브러리로 구성되어있다.

  • Java Card
  • Java FX
  • Java ME
  • Java SE = J2SE = JSE
  • Java EE = Jakarta EE = J2EE = JEE
  • ...

또한 각 플랫폼은 자바의 '명세'를 규정한다. 즉, 구현은 또 다른 곳에서 한다.

Java EE의 스펙을 따라 구현한 결과물을 Web Application Server(WAS), Application Server(AS)라고 부른다. 예를 들면 Glassfish. (tomcat은 서블릿과 관련된 일부 스펙만 구현하므로 servlet container로 봐야한다는 의견)

JSE, JEE 두 스펙은 동일한 JDK를 쓸 수 있다. 왜냐면 JEE 스펙은 WAS에서 구현하기 때문이다.

Q. 스프링도 내부적으론 서블릿을 쓴다고 알고 있는데요, 서블릿은 Java EE 스펙이네요. 그럼 스프링 프레임워크도 Java EE 기반인가요? 제가 사용하던 자바가 알고보니 Java EE였던 건가요?

A. 스프링은 Java EE를 일부 받아들였지만 독자노선을 채택하였다.

"스프링과 관련해서 종종 @Autowired와 @Inject의 차이점을 궁금해하시는 분들이 있는데, 이는 바로 이러한 자바EE와 스프링의 특수한 관계가 반영된 사례입니다. 즉, 스프링이 자바EE를 개선하기 위해 어노테이션을 통한 의존성 주입이라는 개념을 고안하면서 @Autowired라는 기능을 추가했는데, 이후 자바EE가 이를 받아들여 표준으로 @Inject라는 개념을 만들고, 다시 스프링이 자바EE 표준을 지원하는 과정에서 양쪽을 다 사용할 수 있게 된 결과입니다." okky

여기서 잠깐! JDK, JRE, JVM 의 관계에 대하여

JDK = Java SDK = Java Compiler + Development tools + JRE

언어로서의 자바

JDK가 바로 JDK는 자바 스펙의 구현체, 즉 우리가 말하는 프로그래밍 언어 Java다.

그런데 JDK 그 자체로 OracleJDK 를 의미하는 경우도 있는 것 같다. (wiki)

아무튼 웬만하면 adoptopenjdk 쓰도록 하자.

profile
기능이 아니라 버그예요

0개의 댓글