devFancy BE Developer

자바의 기본 개념 1편

2022-11-03
devfancy

Java

  • 자바 언어는 플랫폼에 독립적으로 설계되었다.

  • 자바 코드는 운영체제나 CPU 등 플랫폼에 상관없이 자바 가상 기계(JVM)만 있으면 어떤 컴퓨터에서든 동일하게 실행된다. 이를 WORA(Write Once Run Anywhere) 라고 한다.

  • 한 번 작성된 자바 프로그램은 수정 없이 실행 가능하다.


자바 가상 기계와 바이트 코드

  • 바이트 코드(byte code)는 자바 컴파일러가 자바 소스 프로그램을 컴파일한 일종의 기계어로서, 자바 가상 기계(Java Virtual Machine, JVM)에 의해 실행되는 바이너리 코드(binary code)이다.

  • 바이트 코드는 자바 가상 기계에 의해 인터프리터 방식으로 한 명령씩 해석되어 실행된다.

  • 자바 프로그램 입장에서 볼때 자바 가상 기계는 운영체제이자 컴퓨터이다.

  • 자바 가상 기계는 플랫폼에 적합하게 서로 다르게 구현되므로 플랫폼 종속적이다.

자바 응용프로그램 실행 환경

  • 자바 컴파일러는 자바 소스 프로그램을 컴파일하여 바이트 코드를 클래스 파일(class file)에 저장한다.

  • 자바 프로그램이 실행되기 위해서는 개발자가 작성한 자바 프로그램 외에 자바 플랫폼에서 제공하는 다양한 클래스 라이브러리(자바 APIs)가 반드시 필요하다.

자바와 타언어(C/C++)의 실행 차이

  • C/C++는 컴파일한 목적 파일을 링크시켜 하나의 실행파일(exe)을 만들며, 이 실행 파일 하나만 있으면 실행 가능하다. 그리고 이 실행 파일은 컴퓨터의 CPU가 바로 실행한다.

  • Java의 경우 링크 과정이 없으며 자바 가상 기계가 컴파일된 클래스 파일을 실행한다.


JDK와 JRE

  • JDK(Java Development Kit)는 자바 개발자를 위한 상업용 소프트웨어로, 자바 컴파일러 등의 개발 도구와 JRE(Java Runtime Environment)로 구성된다.

  • JRE는 자바 응용프로그램이 실행될 때 필요한 소프트웨어들로 개발자가 활용할 수 있는 자바 API(이미 컴파일된 다양한 클래스 라이브러리)와 자바 가상 기계를 포함한다.

자바 API

  • 자바 API(Application Programming Interface)는 개발자들이 사용하도록 미리 만들어놓은 유용한 자바 클래스들의 집합이다.

이클립스, 자바 통합 개발 환경

  • IDE(Integrated Development Environment)란 소스 코드 편집, 컴파일, 디버깅을 한꺼번에 할 수 있는 소프트웨어 통합 개발 환경을 일컫는다.

  • C/C++ → 비주얼 스튜디오 / Java → 이클립스(eclipse)

  • 이클립스는 자바 언어로 개발된 데스크톱 응용프로그램이다.


자바의 특징

  • 플랫폼 독립성 - 자바 가상 기계만 있으면 자바 프로그램의 실행이 가능하다.

  • 객체 지향 - 캡슐화, 상속, 다형성 등을 지원한다. 객체 지향 프로그램은 해결할 과제를 실제 세상의 객체와 객체간의 상호 관계로 모델링하여 인간의 사고에 가깝게 표현한다.

  • 클래스로 캡슐화 - 자바는 변수나 메소드는 반드시 클래스 내에 구현하도록 한다.

  • 소스와 클래스 파일 - 자바 소스가 컴파일된 클래스 파일(.class)는 반드시 하나의 자바 클래스만이 들어있다.

  • 실행 코드 배포 - 다수의 클래스 파일을 jar 파일 형태로 압축하여 배포 및 실행이 가능하다.

  • 패키지 - 서로 관련 있는 클래스는 패키지로 묶어 관리한다.

  • 멀티스레드 - 하나의 자바 프로그램에서 다수의 스레드가 동시에 실행할 수 있는 환경을 지원한다.

  • 가비지 컬렉션 - 자바 언어는 메모리를 반환하는 기능이 없다. 프로그램 내에 사용되지 않는 메모리는 자바 가상 기계의 가비지 컬렌셕 기능에 의해 자동으로 회수된다.

  • 실시간 응용 시스템에 부적합 - 자바 응용프로그램은 실행 도중 예측할 수 없는 시점에 가비지 컬렉션이 실행되므로, 프로그램이 일시적으로 중단된다.

Reference


Comments

Index