썬 마이크로시스템즈(Sun Microsystems)에서 개발한 객체지향 프로그래밍 언어
먼저 자바의 슬로건을 알고 시작하자. 자바의 슬로건은 'Write oncem run anywhere'로 번역하자면 '한번 작성하면, 어디서나 실행된다.'라는 의미이다. 이 부분을 생각하며 특징에 대해 알아보자.
자바는 운영체제(Operating System) 혹은 플랫폼에 독립적인 성격을 가지고 있으며, 자바의 응용 프로그램은 기존 언어와 다르게 운영체제
나 하드웨어
가 아닌 JVM
하고만 통신, JVM
이 자바 응용프로그램으로부터 전달받은 명령을 해당 운영체제가 이해할 수 있도록 변환하여 준다. JVM
은 운영체제에 종속적
이어서 여러 운영체제에 설치 가능토록 서로 다른 버전 제공한다.
또한, 자바는 객체지향개념과 다른 프로그래밍 언어의 장점을 채택하여 이해하기 쉬운 간결한 표현이 가능하며, 객체지향언어(object-oriented pro-gramming language)의 특징인 상속, 캡슐화, 다형성
이 잘 적용된 순수한 객체지향언어라는 평을 받는다.
그리고 풍부한 클래스 라이브러리(Java API)
를 통해 프로그래밍에 필요한 기본적 요소들을 제공하기 때문에 이 클래스 라이브러리만 잘 활용해도 다양한 기능의 프로그램 구현이 가능하며, 자동 메모리 관리(Garbage Collection)
로 프로그래머가 수동으로 메모리를 관리하는 번거로움을 제거하여 개발의 피로도를 낮추고, 가비지컬렉터(garbage collector)가 자동적으로 메모리를 수거해간다.
가비지 컬렉터(garbage collector)는 JVM의 메모리 구조에서 Heap 영역의 메모리를 관리해주는 역할을 함.
자바는 시스템과 관계없이 멀티쓰레드 구현
이 가능하며, 관련된 라이브러리(Java API)가 제공되어 구현이 비교적 쉽다.(쉽다고해서 우습게 보면 큰일...나..ㅁ) 또한, 여러 쓰레드에 대한 스케줄링
을 자바 인터프리터
가 담당한다.
마지막으로 동적 로딩(Dynamic Loading)
지원하여 필요한 시점에 클래스를 로딩하여 사용할 수 있다는 장점이 있으며, 일부 클래스가 변경되어도 전체 애플리케이션을 다시 컴파일하지 않아도 된다.
JVM은 'Java virtual machine'의 줄인 말로 자바를 실행하기 위한 가상 기계라고 말한다. 시대가 지날수록 컴퓨터의 성능이 좋아지면서 각종 하드웨어들이 소프트웨어화 되어 컴퓨터에 탑재되고 있는 상황이 벌어지고 있다. 이와 같이 JVM을 소프트웨어로 구현된 컴퓨터속의 컴퓨터
라고 생각하면 좋을 것 같다.
위 그림에서 보다시피 자바의 애플리케이션은 모두 JVM을 통해서만 실행하기 때문에 자바 애플리케이션이 실행되려면 반드시 JVM이 필요하다. 또한, 일반 어플리케이션(우측 그림)은 OS에 종속적
이어서 다른 OS에서 실행시키려면 해당 OS환경에 적합하도록 애플리케이션을 변경해야하는 번거로움이 발생한다.
반면, Java는 JVM하고만 상호작용을 하기 때문에 OS가 변경된다고 하더라도 애플리케이션의 수정 및 변경없이 실행이 가능하다.
다만, JVM은 OS에 종속적이기 때문에 OS환경에 적합한 JVM이 필요하다.
나의 첫 기술 블로그의 첫 게시물을 자바에 대한 내용으로 시작 할 수 있어서 다행이라고 생각한다.
처음 자바를 접했을 때 겪었던 어려운 부분을 최대한 작동원리 위주로 설명하고 싶었다. 그리고 스스로 다시 한번 기본적인 개념들과 동작원리를 복습하고, 나와 같은 시행착오를 겪는 사람이 많지 않았으면 하는 마음으로 꾸준하게 블로그를 작성하려한다.
이번 게시글에서는 프로그래밍 언어중에서 객체지향언어를 대표하는 자바(Java)에 대해서 알아보았다. 자바를 모두 이해하려면 많은 시간과 엄청난 노력이 필요하겠지만 위에서 설명한 것처럼 일반 애플리케이션과 Java 애플리케이션의 차이를 JVM을 통해 알아보고 자바의 특징들을 지금은 이해하지 못하더라도 계속 이해하려고 노력한다면, 자신이 논리적 사고를 거쳐 생각해낸 기능들의 구현을 언젠가는 자유롭게 할 수 있는 날이 올 것이다.