본문 바로가기
프로그래밍 언어/Java

[Java] Java 언어 특징 및 실행과정

by 까망 하르방 2021. 3. 4.
반응형

Java 언어 특징

- 객체 지향 언어로서 클래스 계층 구조, 상속성, 다형성, 캡슐화 등을 지원

- Garbage Collection을 통한 메모리 관리

    : 개발자 스스로 메모리를 관리하지 않기 때문에

    코드가 간결해지거나 Business Logic에 좀 더 집중하여 

    개발과정 속도나 프로그램 안정성 측면에서 효과적.

- 패키지(Package)를 통해 관련 있는 Class 파일들을 묶어서 관리할 수 있다.

: 패키지를 디렉터리 계층 구조화를 통해 추후 같거나 유사한 기능을 재작성할 필요가 없으며

  패키지별 접근 제한 기능도 있기에 회사의 자산이 될 수 있다.

- JVM을 통한 플랫폼 독립성

 

 

Java 프로그램 생성 과정

(1) .java (Java로 작성된 소스파일) 파일 생성

    : 텍스트 편집기나 Eclipse 등을 통해 소스 파일 작성 과정

(2) Compiler를 통해 .class 파일 생성

    : 바이트 코드로 컴파일(Compile)하는 과정

    : 컴퓨터가 이해할 수 있는 기계어로 변환하는 과정

    : 각 프로그램 언어마다 고유한 컴파일러 존재

     ※ 바이트 코드는 이진수로 되어 있음.

        JDK 도구를 통해 Class 파일을 Deassemble하여 직접 확인 가능

(3) Interpreter를 통해 Java Program 생성

    : 다수의 class 파일을 jar 파일 형태로 압축하여 배포 및 실행도 가능

    : 자바 가상 기계(JVM)에서 실행

        Java 특징 중 하나가 JVM을 통한 플랫폼 독립성인데,

        JVM이 각 플랫폼에 맞게 이식(porting)되어야 한다.

        (JVM만 있다면 응용 프로그램 수정없이 바로 실행 가능)

 

자바 가상 기계 (Java Virtual Machine)

서로 다른 플랫폼에서 동일한 자바 실행 환경을 제공

(IBM, MS 등 다양한 회사에서 공급되고 있다.)

대부분의 자바 가상 기계는 실행 중에 JDK 라이브러리 로딩으로 인한 시간 지연을 줄이기 위해

자바 가상 기계가 시작할 때 JDK 라이브러리를 미리 로딩한다.

(다른 클래스 파일이 필요하면 그 때 필요한 클래스 파일을 로딩하고 실행.)

 

플랫폼 종속성

Java 이전의 C/C++ 언어의 경우 플랫폼간의 호환성을 위해

다시 소스를  플랫폼에 맞는 언어로 재작성해서 컴파일해야 하는 불편함이 있었다.

ex) OS(리눅스/윈도우/MAC)와 CPU에 대한 종속적인 코드 변환 과정 필요

    : 기계어가 CPU마다 다르며, OS에서 사용하는 API 및 실행파일 형식이 다르기 때문.

 

소스 구조

Java는 하나의 Class 안에 여러 Method가 존재하는 형태라고 보면 된다.

 Sample 클래스 파일 안에  main method를 비롯하여

, 다른 method들이 존재하는 형태.

 

* 자바 프로그램은 main() method에서부터 실행을 시작한다.

하나의 클래스는 오직 하나의 main() 메소드만 가질 수 있다.

main() 메소드는 반드시 public static void로 선언되어야 한다.

 

 

 

반응형

'프로그래밍 언어 > Java' 카테고리의 다른 글

[Java] Class와 Instance (객체 형태)  (0) 2021.03.07
[Java] this & this()  (0) 2021.03.06
[Java] Setter vs 생성자  (0) 2021.03.04
[Java] 유효범위  (0) 2021.03.04
[Java] 배열 관련 함수 arraycopy() 분석  (0) 2021.03.04

댓글