프로그래밍/JAVA

자바(JAVA)란 무엇인가?

코딩딩 2016. 10. 5. 16:46

자바란?


1995년도에 처음 썬 마이크로시스템즈에서 개발한 객체지향 프로그래밍 언어


자바가 많이 쓰이는 이유?


메모리와 CPU를 지나치게 많이 사용하기 때문에 윈도우 프로그래밍으로는 부적합하다는 문제점이 있어 C에 비해 열세였지만, 인터넷이 활성화되면서 웹 어플리케이션 구축용 언어로 자바가 급부상했다. 기업체 및 공공기관의 다양한 서버운영체제에서 단 한 번의 작성으로 모든곳에서 실행가능한 언어는 자바뿐이었기 때문.


자바의 특징


1. 높은 이식성

자바 언어로 개발된 프로그램은 소스파일을 다시 수정하지 않아도, 자바 실행환경(JRE:JAVA Runtime Environment)이 설치되어 있는 모든 운영체제에서 실행가능


2. 객체지향 프로그래밍 언어

객체지향 프로그래밍 언어(OPP: Object Oriented Programming) 란 부품에 해당하는 객체들을 먼저 만들고 이것들을 하나씩 조립 및 연결해서 전체프로그램을 완성하는 기법


3. 메모리를 자동으로 관리

자바는 개발자가 직접 메모리에 접근할 수 없도록 설계되었으며, 메모리는 자바가 직접관리한다.


4. 다양한 애플리케이션을 개발

윈도우, 리눅스, 유닉스, 맥 등 다양한 운영체제에서 실행되는 프로그램 개발가능하다. 자바는 다양한 운영체제에서 사용할 수 있는 개발 도구와 API를 묶어 에디션 형태로 정의하고 있다.

      • JAVA SE (Standard Edition) : JVM(자바 가상기계) + 필수 개발도구 + 라이브러리 API
      • JAVA EE (Enterprise Edition) : 분산환경(네트워크, 인터넷)에서 서버용 애플리케이션 개발하기 위한 도구 및 라이브러리 API정의

5. 멀티 스레드 쉽게 구현

하나의 프로그램이 동시에 여러가지 작업을 처리할 경우, 대용량의 작업을 빨리처리 해야하는 경우 병렬처리 필요, 이때 멀티 스레드 프로그래밍 필요하다.

자바는 스레드 생성 및 제어와 관련된 라이브러리 API 제공하여 실행되는 운영체제에 상관없이 멀티스레드 쉽게 구현


6. 동적 로딩 지원

애플리케이션이 실행 될 때 모든 객체가 생성되지 않고, 객체가 필요한 시점에 클래스를 동적으로 로딩해서 객체를 생성한다. 또, 수정사항이 발생하더라도 해당 클래스만 수정하면 되므로 전체 애플리케이션을 다시 컴파일할 필요가 없다.


7. 오픈소스 라이브러리가 풍부

오픈소스언어이기 때문에 사용하는 라이브러리 또한 오픈소스가 많다. 검증된 오픈소스 라이브러리를 사용하여 개발기간을 단축하면서 안정성이 높은 애플리케이션을 쉽게 개발할 수 있다.


 JVM(Java Virtual Machine) : 자바 가상 기계


자바 프로그램은 완전한 기계어가 아닌 중간 단계의 바이트 코드이기 때문에 운영체제는 자바프로그램을 바로 실행할 수 없다. 이것을 해석하고 실행할 수 있는 가상의 운영체제가 필요하다. 이것이 JVM이고, 이는 실 운영체제를 대신해서 자바 프로그램을 실행하는 가상의 운영체제 역할을 한다.

운영체제별로 프로그램을 실행하고 관리하는 방법이 다르기 때문에 운영체제별로 자바 프로그램을 별도로 개발하는 것보다는 운영체제와 자바 프로그램을 중계하는 JVM을 두어 자바 프로그램이 여러 운영체제에서 동일한 실행결과가 나오도록 설계한 것이다. 그러므로 개발자는 운영체제와 생관없이 자바 프로그램을 개발할 수 있다.

JVM은 운영체제에 맞게 설치되어야한다. 그이유는 프로그램을 운영체제가 이해하는 기계어로 번역해서 실행해야하기 때문이다. JVM은 JDK 또는 JRE를 설치하면 자동으로 설치된다.

확장자가 .java인 소스파일을 작성하여 컴파일러(javac.exe)로 컴파일하면 확장자가 .class인 바이트 코드 파일이 생성된다. 이 바이트 코드파일은  JVM 구동 명령어(java.exe)에 의해 JVM에서 분석되고 해당 운영 체제에 맞게 기계어로 번역된다.

한 번의 컴파일링으로 실행가능한 기계어가 만들어지지 않고 JVM에 의해 기계어로 변역되고 실행되기 때문에 컴파일단계에서 완벽한 기계어가 만들어지는 C나 C++보다 속도가 느리다는 단점이 있으나. 속도의 격차가 많이 줄어들고 있다.

 


참고 : 이것이 자바다. 신용권 지음