자바란 썬 마이크로시스템사에서 제임스 고슬링이 만들었다고 한다.(고슬링의 목표는 c/c++ 언어와 가상 머신을 구현하는 것이였다.)
그렇게 해서 만들어진 자바는
1. 자바는 객체지향 언어이다.
-부품이라는 객체들을 먼저 만들고 이것들을 연결하여 전체 프로그램을 완성하는 프로그램 개발 기법 프로그래밍 쓴다.
-객체들을 이용하는 객체지향 프로그래밍은 객체를 만들기 위해 클래스를 작성하고, 만든 객체와 객체를 연결해 목적에 맞는 프로그램을 만들어 낸다.
-객체지향을 통해 캡슐화, 상속성, 다형성의 성질을 갖는다.
2. 이식성이 좋다.(JRE(JVM)을 통한)
-서로 다른 실행환경에서도 실행가능
-JRE(JVM)을 통해 다른 OS에서 만들었어도 실행이 가능하다.
3. 메모리를 자동으로 관리한다.
-C/C++은 메모리 작업을 직접 해줘야 하지만 자바는 개발자가 직접 메모리 작업을 할 수 없으며 자바가 직접 해준다.
-객체 생성할 시 자동으로 메모리 할당 및 Garbage Collector를 통해 사용하지 않는 객체를 제거한다.
4. 멀티 스레드 구현이 쉽다.
-운영체제에 상관없이 자바에서 제공하는 라이브러리를 통해 쉽게 구현이 가능하다.
5. 오픈소스가 풍부하다.
-자바는 오픈소스 언어이고 각국에서 공통으로 많이 사용하기 때문에 오픈소스의 양이 많다.
-많은 오픈소스를 통해 문제 해결이 쉽다.
6. 동적 로딩 할 수 있다.
-실행 할 때 모든 클래스가 로딩이 되는것이 아니라 필요한 시점에 맞게 해당하는 클래스를 로딩하여 사용 할 수 있다.
장점도 많지만 굳이 뽑자면 단점이 있는데...
1.운영체제에 맞게끔 실행환경을 만들어주는 JVM을 통해 실행속도가 느리다.
2.다른 언어에 비해 코드 길이가 긴 편이다.
자바는 프로그래밍 언어의 한 종류이고 이것을 이용한 자바 프로그램에 구성요소에 대해서 알아보자면
1.JVM 2.JRE 3.JDK 4.gradle
정도가 있다.
JVM이란 Java Virtual Machine으로 자바 프로그램을 컴파일(이진코드로변환해주는것) 해서 나온 결과인 바이트코드를 실행시켜주는 가상머신이다.
JRE이란 Java Runtime Environment으로 자바 실행환경을 말한다. 또한 JVM을 포함하고 있으며 JVM을 동작하기 위한 각종 자바 라이브러리를 담고 있다.
JDK이란 Java Development Kit으로 JRE를 포함하고 javac(컴파일러), java(실행), jdb(디버거)를 포함한다.(종류로는 오라클:오라클JDK, 오픈소스로 개발된 openJDK)
즉 정리를 하자면,
JVM을 사용을 하기 위해선 라이브러리가 필요한데 이것은 JRE가 제공을 한다.(프로그램을 실행하기 위해 사용되는것은 JRE)
JDK는 JRE(JVM포함)을 포함하고, 컴파일러,실행,디버거가 포함되어 있다.