Java의 특징
운영체제가 독립적이다.
자바는 JVM을 통하여 운영체제나 하드웨어에 접근합니다. 따라서 어떠한 OS에서 실행을 하더라도 OS에 맞는 JVM을 제공함으로써 어디서나 동일하게 실행됩니다. window에서 java를 코딩하고 이 코딩을 다른 OS에서 실행을 하더라도 코드에는 수정이 필요로 하지 않고 다른 OS에 맞는 JVM을 다운로드하여 실행을 하면 문제가 없습니다. 따라서 운영체제가 독립적이라고 합니다.
객체지향 언어다.
java는 객체를 중심으로 프로그램이나 시스템을 구성하는 일을 하기 위해 사용하는 언어입니다. 따라서 객체지향 언어를 이용하여 모든 구성원을 객체화시킬 수 있습니다. 이러한 특성의 장점으로는 코드의 재사용성이 높고 그에 따라 코드의 관리가 간편하다는 장점이 있습니다. 객체지향 언어를 통하여 상속, 다형성, 추상화, 캡슐화 등을 이용할 수 있습니다.
자동으로 메모리 관리를 해준다.
가비지 컬렉터(Garbage Collector)가 있어서 자동적으로 메모리를 관리해줍니다. 그렇기 때문에 사용자가 따로 메모리를 관리할 필요가 없으므로 편의성이 있습니다. 만약 개발자가 직접 메모리를 해제하고 싶은 경우에는 System.gc();를 사용하여 가비지 컬렉터를 호출하여 해제가 가능합니다.
동적 로딩을 지원한다.
Java는 Application이 실행될 때 모든 객채가 생성되는 것이 아니라 객체가 필요한 시점에 클래스를 로딩하여 생성합니다. 이러한 동적 로딩(Dynamic Loading)은 클래스의 일부가 변경되어도 전체 Application을 다시 컴파일하지 않고 변경된 부분만 컴파일을 하도록 해줍니다. 다만 단점으로는 그때그때 메모리에서 불러오기 때문에 프로그램 실행 속도가 정적 로딩에 비하여 느립니다.
JVM - Java Virtual Machine에서 각각의 첫 글자를 따온 것으로 자바를 실행하기 위한 가상 컴퓨터를 의미합니다. 위에서 설명드린 것처럼 각 OS에 맞는 가상 머신만 있다면 java의 내용을 수정 없이 이용할 수 있습니다.