Spring Boot를 공부하면서 Java에 대한 정의가 제대로 정립되어 있지 않았음을 깨닫고 Java를 처음부터 정리하는 식으로 학습하며 기록하려고 합니다.

Java란?
1995년도에 처음 썬 마이크로시스템즈(Sun Microsystems)에서 자바(Java) 언어를 발표한 후, 지금까지 자바는 성공한 프로그래밍 언어로서 전세계적으로 다양한 분야에서 사용되고 있습니다. 자바는 1991년에 썬의 엔지니어들에 의해서 고안된 오크(Oak)라는 언어에서부터 시작되었으며 오크는 처음에는 가전제품에서 사용될 목적이였지만 인터넷의 등장과 함께 인터넷에서 실행되는 프로그래밍 언어로 사용되었고, 이름도 자바로 변경되었습니다.
C언어에 객체 지향적 기능을 추가하여 만든 C++과는 다르게 처음부터 객체 지향 언어로 개발된 프로그래밍 언어입니다. 자바는 자바 가상 머신(JVM, Java Virtual Machine)을 사용하여, 운영체제와는 독립적으로 동작할 수 있습니다. 따라서 자바는 어느 운영체제에서나 같은 형태로 실행될 수 있습니다. 현재도 Java는 전 세계에서 가장 많이 사용하는 프로그래밍 언어 중 하나입니다.
특징
- 이식성이 높은 언어이다.
- 객체지향언어(Object Oriented Programming)이다.
- 함수적 스타일 코딩을 지원한다.
- 메모리를 자동으로 관리한다.
- 다양한 어플리케이션을 개발할 수 있다.
- 멀티 스레드(Multi-Thead)를 쉽게 구현할 수 있다.
- 동적 로딩(Dynamic Loading)을 지원한다.
- 막강한 오픈소스 라이브러리가 풍부하다.
- 컴파일 언어인 동시에 인터프리터 언어이다.
Java 프로그램 동작 과정을 보기 전에
Java SE, JDK, JRE?
- Java SE(Java Platform, Standard Edition)는 자바의 표준안이다. Java라는 언어가 어떠한 문법적인 구성을 가졌는지와 같은 것들을 정의하고 있습니다. 이것은 구체적은 소프트웨어가 아니고 그 소프트웨어의 설계도라고 할 수 있습니다. 소프트웨어에서는 설계도라는 표현 대신 명세서(spec, specification)이라는 말을 사용하는데, 이 명세서에 따라 Java가 만들어집니다. 예를 들어 Java SE8은 버전 8에 대한 명세서입니다. 이 처럼 Java는 현재도 계속 진화하고 있습니다.
- JDK(Java Development Kit)는 Java SE의 표준안에 따라 만들어진 구체적인 소프트웨어입니다. JDK에는 Java 프로그램을 실행하면 Java 코드를 컴파일하는 컴파일러와 개발에 필요한 각종 도구 및 JRE가 포함되어 있습니다. 즉, 자바개발자를 위한 Java 버전이며 Java로 개발한다면 반드시 JDK를 다운받아 설치해야 합니다.
- JRE(Java Runtime Environment)는 Java가 실제로 동작하는 데 필요한 JVM, 라이브러리, 각종 파일들이 포함되어 있으며 자바로 만들어진 프로그램을 구동만 하고자 한다면 JRE를 설치해도 됩니다.
- JVM(Java Virtual Machine)은 Java가 실제로 구동하는 환경입니다. 자바로 만들어진 소프트웨어는 JVM이라는 가상 환경에서 구동되고, 하드웨어나 운영체제에 따라 달라질 수 있는 호환성의 문제는 운영체제 버전에 따라 만들어진 JVM이 알아서 해결합니다. 즉, 하나의 Java 프로그램을 만들면 어떤 환경에서도 실행할 수 있도록 해주는 것이 JVM의 역할이라고 할 수 있습니다.

JVM 구성
- 자바 인터프리터(Interpreter)
- 클래스 로더(Class Loader)
- JIT 컴파일러(Just-In-Time Compiler)
- 가비지 컬렉터(Garbage Collector)
자바 프로그램의 동작 과정

- 확장자 명이 .java인 파일에 소스 코드를 작성한다. (이렇게 만들어진 파일을 자바 소스파일 이라고 합니다)
- 작성 완료한 자바 소스파일을 컴파일러(Javac.exe)로 컴파일 한다.
- 컴파일에 성공하면 확장자 명이 .class인 바이트 코드 파일이 생성된다.
- 바이트 코드 파일은 완전한 기계어가 아니므로 단독으로 실행할 수 없고 자바 가상머신(JVM)을 구동(java.exe)시킨다.
- java.exe가 실행되면 JVM은 바이트 코드 파일을 메모리에 로드하고 최적의 기계어로 번역한다. 그리고 main() 메서드를 찾아 실행시킨다.
Reference.
http://www.tcpschool.com/java/intro
https://opentutorials.org/course/1223
http://www.kyobobook.co.kr/product/detailViewKor.laf?mallGb=KOR&ejkGb=KOR&barcode=9788968481475
'Programming > Java' 카테고리의 다른 글
| [Java] 상속 (0) | 2024.05.01 |
|---|---|
| [Java] 변수의 타입을 확인하는 방법 (0) | 2023.05.02 |
| 열거 타입 (Enum) (0) | 2023.05.01 |
| [생활 코딩] JAVA1 (0) | 2022.11.16 |
| [Java] 문자열 비교 ==, equals() (0) | 2022.07.21 |