1. 운영체제에 독립적이다.
자바는 특정한 CPU에서만 작동하거나 특정 OS에 따라다르게 작성해야 하는 언어들과는 다르게 JRE(Java Runtime Environment: JVM(자바 가상 머신) + 표준 클래스 라이브러리)가 설치되어있는 모든 운영체제에 실행이 가능하도록 만들어짐.
2. 객체 지향 언어(Object Oriented Programming)이다.
객체는 프로그램이 동작하는 부품이라고 생각하면 되는데, 여러 객체들을 만들어서 조립하여 하나의 프로그램을 실행하는 개념이 바로 OOP이다.
객체 지향적으로 설계된 프로그램은 유지보수가 쉽고 확장성이 높다.
3. 함수형 프로그래밍을 지원한다.
자바 8 부터 함수형 프로그래밍을 지원하는 람다식과 스트림이 추가되었다. 함수형 프로그래밍을 사용하면 코드가 간결해지는 장점이 있디.
4. 자동으로 메모리를 관리한다.
자바는 가비지 컬렉터(Garbage Collector)를 실행시켜 자동으로 사용하지 않은 메모리를 수거합니다.
1. JVM(Java Virtual Machine)
⭐️ 바이트코드를 운영체제에 맞는 기계어로 변환시켜 준다.
⭐️ 자바 코드로 작성된 프로그램을 해석해 자바 프로그램을 실행시키는 도구이다.
⭐️ 자바가 운영체제에 독립적인 것은 JVM이 있기 때문이다.
⭐️ 프로그램을 실행하는 프로그램이다.
⭐️ JDK나 JRE를 설치하면 자동으로 설치된다.
⭐️ JVM을 거치기 때문에 C/C++에 비하면 속도가 느리지만 내부의 최적화된 JIT컴파일러를 통해 속도를 개선해 나가고 있다.
<순서>
Source Code(.java file) ➡️ Compiler(javac) ➡️ Bytecode(.class file)➡️JVM(Java Virtual Machine)➡️windows/Mac/Linux
2. JDK(Java Development Kit)
🔸JRE(Java Runtime Environment):JVM + 표준 클래스 라이브러리
"Runtime"- 실행에 관련된
🔸JDK(Java Development Kit): JRE + 개발에 필요한 도구
"Development"- 개발과 관련된
자바 프로그램을 실행만 한다면 JRE만 설치해도 상관없다. 하지만 자바 프로그램을 개발하려면 개발에 관련되 JDK를 설치해야 한다. OpenJDK는 오픈소스이고 OracleJDK는 오라클에서 관리하는 JDK이다.