2021. 6. 26. 20:54ㆍDev/Java

#Java?
알다시피 Java는 객체지향 언어이다. 현재는 ORacle에 인수된 상태이기 때문에 오라클에서 다운 받을 수 있다. 이 글은 Java Srping을 써보면서 Java 환경을 구축 했을 때 헷갈렸던 개념을 정리하기 위함이다.
-Java vs JavaScript ?
전혀 상관없는 두 언어.
JavaScript가 Java의 인기에 버스타려고 이름을 이렇게 지었다는 썰이 있고, 실제로 JavaScript는 인기도 겁나게 없었지만 Node.JS로 떡상함.
- 컴파일러 vs 인터프리터 ?
자바는 컴파일러와 인터프리터를 병행한다 : 먼저 컴파일 후 컴파일 된 파일을 인터프리터로 변환하여 실행
- JVM , JDK , JRE ?
JVM : Java Virtual Machine = 자바 바이너리 파일을 실행. 플랫폼(OS, ex : Linux, Windows)마다 다름.
예를 들어 Mac에서 설치하는 JVM을 Windows에서 실행할 수는 없지만, MAC에서 컴파일하여 생성된 바이너리 파일은 Windows에서 JVM이 깔려 있다면 실행 가능
JRE : Java Runtime Environment = 자바 실행 환경. JVM이 파일을 실행하는데 필요한 파일들을 가지고 있음
한 마디로 JDK가 제대로 동작하기 위해 구현된 환경
JDK : Java Development Kit = 자바 개발 키트. 표준 라이브러리를 포함하고, 기본적으로 자바의 버전을 말한다? = 이 JDK 버전을 의미
얘가 제일 큰 개념임
그림으로 보자.

- Java , JDK ?
Java는 그냥 언어, JDK는 자바 어플리케이션을 실행 및 개발하기 위한 환경
- Java Version == JDK Version ?
엄밀히 말하면 둘은 다르지만, 같다고 이해해도 될..까?
Java Version : 말 그대로 Java의 버전, JavaScript의 ES7, ES8처럼 언어의 문법적인 차이가 있다.
예전에는 Java 1.x 처럼 표시했지만 요새는 그냥 Java 8, 9, ... 처럼 표현함
예를 들어 Java SE(Standard Edition) 16 등
JDK Version : JDK 버전, 이 버전이 Java Version과 맞춰져야 작동 가능
예를 들어 JDK 8 등
옛날에야 JDK 1.8 이렇게 썼지 JDK 8로 써야한다 요샌. 근데 구글링 해보면 최근 게시글들도 전부 JDK 1.8 이렇게 표시되어있다.. 헷갈림
Java의 버전별 차이는 잘 정리된 글이 있어 아래 레퍼런스를 읽어보면 좋을 것 같다.
https://velog.io/@arkeio/JDK-버전별-차이
JDK 버전별 차이
https://www.skyer9.pe.kr/wordpress/?p=287잘 정리되어 있는 것 같아서 참고용으로 올립니다.Java 8 - 2014년오라클 인수 후 첫번째 버전2개 버전으로 나뉨(Oracle JDK, OpenJDK)Lambda, new Date
velog.io
- Java 1.8 , Java 8 ?
위와 동일, Java 8이 맞다. 옛날에는 1. x 이렇게 썼어서 아직도 1.x 처럼 부르는 듯
- Java 유료 ?
Java가 유료 X, JDV가 유료 O. 그중에서도 Oracle JDK만 유료
- Why Java 8 ?
범용성 = 대부분의 국내 기업들이 Java SE 8 버전 이하를 사용하기 때문
- Kotlin ? Groovy ? etc..
둘 다 언어임. Kotlin은 IDE로 유명한(파이참, 인텔리제이 등등) JetBrain에서 만든 언어고, Groovy는 스크립트 언어이다.
얘네는 모두 JVM 위에서 동작한다. 특히 Kotlin은 구글 안드로이드에서 밀어주는 언어이기 때문에(Apple Swift처럼) 안드로이드를 하는 사람이라면 반드시 하는 것이 좋다고 한다.
'Dev > Java' 카테고리의 다른 글
JAVA : Stream? (0) | 2021.08.31 |
---|---|
#Spring Structure- Controller, Service, Domain(Model), DTO, Persistance 알아보기 (0) | 2021.08.22 |
Java Annotation (0) | 2021.06.28 |
Abstract Class , Interface (0) | 2021.06.26 |