[Java] Java와 자바 프로그래밍, Java의 구성에 대하여

운영체제와 독립적으로 실행되는 자바의 특징, 자바 컴파일러와 바이트 코드, 자바 가상 머신(JVM)의 역할과 구성, 그리고 자바 프로그램의 구성 요소인 클래스, 필드, 메서드 등에 대해 설명하고 있다.
또한, 표준 입출력 클래스와 명령문, 주석 등의 사용 방법도 소개하고 있다.

 

 

 

Java

  • 운영체제와 독립적 실행
  • 타 언어에 비해 쉬운 난이도
  • 타 언어에 비해 높은 안정성
  • 연산자 오버로딩 금지로 인한 코드 가독성 향상 (제네릭 도입)
  • 타 언어에 비해 느린 실행 속도와 긴 길이의 코드

썬 마이크로시스템즈(Sun Microsystems)사의 제임스 고슬링(James Gosling) 팀에 의해 개발된 객체 지향 프로그래밍 언어로, JVM(Java Virtual Machine)이라는 자바 가상 머신을 사용해 운영체제와 독립적으로 동작할 수 있어 어느 운영체제에서나 같은 형태로 실행 가능하다.


자바 프로그래밍

자바 컴파일러 (Java compiler)

자바를 가지고 작성한 자바 소스 코드를 자바 가상 머신이 이해할 수 있는 자바 바이트 코드로 변환한다.

자바 설치 시 javac.exe라는 실행 파일 형태로 설치된다.

 

자바 바이트 코드 (Java bytecode)

가상 머신이 이해할 수 있는 언어로 변환된 자바 소스 코드를 의미하며, 확장자는 .class이다.

JVM만 설치되어 있다면 어떤 운영체제에서라도 실행될 수 있다.

 

자바 가상 머신 (JVM)

자바 바이트 코드를 실행시키기 위한 가상의 기계로, 자바 프로그램 실행을 위해서는 반드시 자바 가상 머신이 설치되어 있어야 한다.

서로 다른 운영체제라도 자바 가상 머신만 설치되어 있다면, 같은 자바 프로그램이 아무런 추가 조치 없이 동작이 가능하다.


그러나 JVM은 운영체제에 종속적이기에 각 운영체제에 맞는 자바 가상 머신을 설치해야 하며, 이로 인하여 상대적으로 실행 속도가 느려진다.

 

자바 인터프리터 (interpreter)

자바 컴파일러에 의해 변환된 자바 바이트 코드를 읽고 해석하는 역할

 

클래스 로더 (class loader)

동적으로 클래스를 로딩해주는 역할

 

JIT 컴파일러 (Just-In-Time compiler)

프로그램이 실행 중인 런타임에 실제 기계어로 변환해 주는 컴파일러

자바 컴파일러가 생성한 자바 바이트 코드를 런타임에 바로 기계어로 변환하는 데 사용

 

가비지 컬렉터 (garbage collector)

더는 사용하지 않는 메모리를 자동으로 회수해 관리자가 따로 메모리를 관리하지 않아도 되어 더욱 손쉽게 프로그래밍 가능


Java 구성

클래스 (Class)

class 클래스이름 {
    필드의 선언
    필드의 선언
    ...
    메소드의 선언
    메소드의 선언
    ...
}

 

표준 입출력 클래스

  • System.in (표준 입력 작업)
  • System.out (표준 출력 작업)
  • System.err (표준 출력 작업)
System.out.print(7);         // print() 메소드는 줄 바꿈을 하지 않음.
System.out.println(3);       // 정수 출력
System.out.println(3.14);    // 실수 출력
System.out.println("자바!"); // 문자열 출력
System.out.println("문자열끼리의 " + "연결도 가능합니다.");
System.out.println("숫자" + 3 + "과 문자열의 연결도 가능합니다.");

 

필드 (field)

 

메서드 (method)

public static void main(String[] args) {
    ...

}

자바 프로그램은 실행 시 가장 먼저 main() 메소드를 찾고 그 안의 모든 명령문을 차례로 실행한다.

반드시 public static void로 선언되어야 한다.

 

명령문 (statement)

자바 프로그램의 동작을 명시하고 컴퓨터에 알려주는 데 사용되는 문장으로, 반드시 세미콜론(;)으로 끝나야 한다.

 

주석 (comment)

코드 이해에 대한 설명을 적거나 디버깅을 위해 작성하며, 자바 컴파일러는 이를 무시하고 컴파일하므로 실제 실행 결과에는 아무런 영향을 주지 않는다.

1. // 한 줄 주석

2. /* 여러
   줄
   주석 */

/* 여러 줄
    // 이렇게 두 줄 주석 안에 또 다른 한 줄 주석을 삽입할 수 있습니다.
주석입니다. */

참고