Programming Languages/Java

[1장] 자바 시작

마크투비 2021. 3. 22. 13:42

1.1 컴퓨터와 프로그래밍

프로그래밍 언어

  • 프로그래밍 언어 : 컴퓨터가 실행할 프로그램을 작성하기 위한 언어
  • 기계어(machine language) : 컴퓨터 CPU가 이해할 수 있는 0과 1의 이진수(binary code)로 구성된 언어 (컴퓨터의 CPU는 기계어만 이해하고 처리가능)
  • 어셈블리어(assembly language) : 기계어 명령을 ADD, SUB, MOVE 등과 같은 표현하기 쉬운 상징적인 단어인 니모닉 기호 (mnemonic symbol)로 일대일 대응시킨 언어 (저급언어)
  • 고급언어
    • 사람이 이해하기 쉽고 복잡한 작업, 자료 구조, 알고리즘을 표현하기 위해 고안된 언어
    • Pascal, Basic, C/C++, Java, C#
    • 절차 지향 언어와 객체 지향 언어로 나눌 수 있음

프로그래밍 컴파일

  • 소스(source) : 프로그래밍 언어로 작성된 텍스트 파일
    • 컴퓨터는 C/C++나 자바와 같은 고급 언어로 작성된 소스 프로그램을 바로 이해할 수 없음 -> 컴파일(compile) 과정이 필요
  • 컴파일(compile) : 소스 파일을 컴퓨터가 이해할 수 있는 기계어로 만드는 과정
    • 자바 : .java -> .class
    • C : .c -> .obj-> .exe
    • C++ : .cpp -> .obj -> .exe
  • 소스 파일의 확장자로 프로그램을 작성한 언어를 구분
  • 소스 프로그램을 컴파일하면 목적 파일이 생기며, 파일의 확장자는 언어나 운영체제에 따라 조금씩 다름
    • 자바 프로그램의 경우 컴파일된 파일의 확장자는 .class

 

1.2 자바의 출현과 WORA

자바의 탄생 배경(목적)

  • 플랫폼 호환성 문제 해결
    • 기존 언어로 작성된 프로그램은 PC, 유닉스, 메인 프레임 등 플랫폼 간에 호환성 없음 (플랫폼 종속성; platform dependence)
    • 소스를 다시 컴파일하거나 프로그램을 재 작성해야 하는 단점
  • 플랫폼 독립적(platform independent)인 언어 개발
    • 모든 플랫폼에서 호환성을 갖는 프로그래밍 언어 필요
    • 네트워크, 특히 웹에 최적화된 프로그래밍 언어의 필요성 대두
  • 메모리 사용량이 적고 다양한 플랫폼을 가지는 가전 제품에 적용
    • 가전 제품 : 작은 량의 메모리를 가지는 제어 장치
    • 내장형 시스템 요구 충족

자바의 플랫폼 독립성, WORA

  • WORA(Write Once Run Anywhere)
    • 한번 작성된 코드는 모든 플랫폼에서 바로 실행되는 자바의 특징
    • C/C++ 등 기존 언어가 가진 플랫폼 종속성 극복 (OS, H/W에 상관없이 자바 프로그램이 동일하게 실행)
    • 네트워크에 연결된 어느 클라이언트에서나 실행 (웹 브라우저, 분산 환경 지원)
  • WORA를 가능하게 하는 자바의 특징
    • 바이트 코드(byte code)
      • 자바 소스를 컴파일한 목적 코드
      • CPU에 종속적이지 않은 중립적인 코드
      • JVM에 의해 해석되고 실행됨
    • 자바 가상 기계 JVM(Java Virtual Machine)
      • 자바 바이트 코드를 실행하는 자바 가상 기계(소프트웨어)

자바 가상 기계와 자바 실행 환경

  • 바이트 코드
    • 자바 가상 기계에서 실행 가능한 바이너리 코드
    • 바이트 코드는 컴퓨터 CPU에 의해 직접 실행되지 않음
    • 자바 가상 기계가 작동 중인 플랫폼에서 실행
    • 자바 가상 기계가 인터프리터 방식으로 바이트 코드 해석  
    • 클래스 파일(.class)에 저장
  • 자바 가상 기계(JVM : Java Virtual Machine)
    • 각기 다른 플랫폼에 설치
    • 동일한 자바 실행 환경 제공
    • 자바 가상 기계 자체는 플랫폼에 종속적
      • 자바 가상 기계는 플랫폼마다 각각 작성됨
      • 예) 리눅스에서 작동하는 자바 가상 기계는 윈도우에서 작동하지 않음
    • 자바 가상 기계 개발 및 공급
      • 자바 개발사인 오라클 외 IBM, MS 등 다양한 회사에서 제작 공급
  • 자바의 실행
    • 자바 가상 기계가 클래스 파일(.class)의 바이트 코드 실행
  • 실행 환경
    • 자바 가상 기계 + 자바 플랫폼의 다양한 클래스 라이브러리(자바 API)

 

'Programming Languages > Java' 카테고리의 다른 글

[2장] 자바 조건문  (0) 2021.03.24
4주차 스터디 인증  (0) 2021.03.23
[2장] 자바 연산자  (0) 2021.03.23
[2장] 자바 기본 프로그래밍  (0) 2021.03.22
3주차 스터디 인증  (0) 2021.03.21