Java란?
썬 마이크로시스템즈에서 개발한 객체지향 프로그래밍 언어.
특징
1. 운영체제에 독립적
자바 응용프로그램은 운영체제나 하드웨어가 아닌 JVM하고만 통신하고 JVM이 자바 응용프로그램으로부터 전달받은 명령을 해당 운영체제가 이해할 수 있도록 변환하여 전달한다. 자바로 작성된 프로그램은 운영체제에 독립적이지만 JVM은 운영체제에 종속적이어서 썬 마이크로시스템즈에서는 여러 운영체제에 설치할 수 있는 서로 다른 버전의 JVM을 제공하고 있다.
2. 객체지향언어
객체지향 개념의 특징인 상속, 캡슐화, 다형성이 잘 적용된 순수한 객체지향언어이다.
3. 자동 메모리 관리
자바로 작성된 프로그램이 실행되면, 가비지컬렉터가 자동적으로 메모리를 관리해주기 때문에 프로그래머는 메모리를 따로 관리하지 않아도 된다.
4. 멀티쓰레드 지원
일반적으로 멀티쓰레드의 지원은 사용되는 운영체제에 따라 구현방벋오 상이하며, 처리방식도 다르다. 그러나 자바에서 개발되는 멀티쓰레드 프로그램은 시스템과는 관계없이 구현 가능하며, 관련된 라이브러리(Java API)가 제공되므로 구현이 쉽다. 그리고 여러 쓰레드에 대한 스케줄링을 자바 인터프리터가 담당하게 된다.
5. 동적 로딩 지원
실행 시에 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩하여 사용할 수 있다는 장점이 있다. 그 외에도 일부 클래스가 변경되어도 전체 애플리케이션을 다시 컴파일하지 않아도 되며, 애플리케이션의 변경사항이 발생해도 비교적 적은 작업만으로도 처리할 수 있는 유연한 애플리케이션을 작성할 수 있다.
JVM
Java Virtual Machine.
자바로 작성된 애플리케이션은 모두 JVM에서만 실행되기 때문에, 자바 애플리케이션이 실행되기 위해서는 반드시 JVM이 필요하다.
일반 애플리케이션의 코드는 OS만 거치고 하드웨어로 전달되는데 비해 Java 애플리케이션의 경우 JVM을 한 번 더 거치기 때문에, 그리고 하드웨어에 맞게 완전히 컴파일된 상태가 아니고 실행시 해석되기 때문에 속도가 느리다는 단점을 가지고 있다. 그러나 요즘에는 바이트코드(컴파일된 Java코드)를 하드웨어의 기계어로 바로 변환해주는 JIT컴파일러와 향상된 최적화 기술이 적용되어서 속도의 격차를 많이 줄였다.
위의 그림에서 알 수 있듯이 일반 애플리케이션의 경우 OS와 바로 맞붙어있기 때문에 OS종속적이다. 그래서 다른 OS에서 실행시키기 위해서는 애플리케이션을 해당 OS에 맞게 변경해야 한다. 반면에 Java 애플리케이션은 JVM하고만 상호작용을 하기 때문에 OS와 하드웨어에 독립적이라 다른 OS에서도 프로그램의 변경없이 실행이 가능한 것이다. 단, JVM은 OS에 종속적이기 때문에 해당 OS에서 실행가능한 JVM이 필요하다.
'Java' 카테고리의 다른 글
[Java] 클래스, 객체 (0) | 2018.12.30 |
---|---|
[Java] 배열 (0) | 2018.12.30 |
[Java] 변수 (0) | 2018.12.30 |
[JAVA] Eclipse & Java Code Conventions (0) | 2018.11.20 |
[JAVA] JVM, JRE, JDK (0) | 2018.11.18 |