앞으로 자바 개념부터 정리해보려고 한다.

자료는 '이것이 자바다' 책을 기반으로 정리해보았다.  

 

프로그래밍 언어란?
  • 저급 언어 : 기계어, 어셈블리어
  • 고급 언어 : 프로그래밍 언어(C, C++, JAVA)
  • 컴파일 : 고급 언어를 컴퓨터가 이해할 수 있는 기게어로 변환하는 과정
  • 프로그램 : 컴퓨터에서 특정 목적을 수행하기 위해 프로그래밍 언어로 작성된 소스를 기계어로 번역한 것

 

자바란?
  • 1995~1999년 : 메모리 및 CPU를 지나치게 많이 사용하기 때문에 윈도우 프로그래밍 언어로는 부적합
  • 1999년 : 인터넷의 활성화로 웹 애플리케이션 구축용 언어로 자바의 급부상
  • 다양한 서버 운영 체제에서 단 한번의 작성으로 모든 곳에서 실행 가능한 언어였다.

 

자바의 특징
  • 이식성이 높은 언어 : JRE(Java Runtime Environment)가 설치되어 있는 모든 운영체제에서 실행 가능하다.
  • 객체 지향 언어 : 부품에 해당하는 객체를 먼저 만들고, 하나씩 조립 및 연결해서 전체 프로그램을 완성하는 기법을 OOP라고 한다. 자바는 객체를 고려하여 설계되었기 때문에 객체지향 언어가 가져야 하는 특징인 캡슐화, 상속, 다형성 기능을 완벽하게 지원한다.
  • 함수적 스타일 코딩 지원 : 대용량 데이터의 병렬 처리 그리고 이벤트 지향 프로그래밍을 위해 적합하다. 함수적 프로그래밍을 위해 람다식을 지원한다. 람다식은 컬렉션의 요소를 필터링, 매핑, 집계 처리하는데 쉬워지고, 코드가 매우 간결해진다.
  • 메모리를 자동 관리 : C++은 메모리에 생성된 객체를 제거하려면 개발자가 직접 코드를 작성. 자바는 개발자가 직접 메모리에 접근할 수 없도록 설계되었고, 메모리는 자바가 관리한다. 사용이 완료되면, Garbage Collector를 실행시켜 사용하지 않는 객체를 제거한다.
  • 다양한 애플리케이션을 개발 가능 : 자바는 다양한 운영체제에서 사용할 수 있는 개발 도구와 API를 묶어 에디션(Edition) 형태로 정의한다.
    • JAVA SE(Standard Edition)는 JVM를 비롯한 도구와 라이브러리 API를 정의한다. 
    • JAVA EE(Enterprise Edition)는 분산환경에서 서버용 애플리케이션(Servlet/JSP, EJB, Web Services)을 개발하기 위한 도구 및 라이브러리 API를 정의한다.
  • 멀티 스레드(Multi-Thread)를 쉽게 구현 : 하나의 프로그램이 동시에 여러 가지 작업을 처리해야 하는 경우와 대용량 작업을 빨리 처리하기 위해 서브 작업으로 분리해서 병렬 처리하려면 멀티 스레드 프로그래밍이 필요하다. 운영체제마다 멀티 스레드의 구현 방법이 다르지만, 자바는 관련 API를 이용해 멀티 스레드를 쉽게 구현할 수 있다.
  • 동적 로딩 지원(Dynamic Loading) 지원 :  애플리케이션이 실행될 때 모든 객체가 생성되지 않고, 객체가 필요한 시점에 클래스를 동적 로딩해서 객체를 생성한다. 따라서 유지보수가 쉽고 빠르다.
  • 오픈소스 라이브러리 풍부 : 자바는 오픈소스 언어이다. 검증된 오픈소스 라이브러리를 사용하면, 개발 기간의 단축과 안전성 확보가 가능하다.

 

자바 가상 기계(JVM)
  • 자바 프로그램은 중간 단계의 바이트 코드이기 때문에 이것을 해석하고 실행할 수 있는 가상의 운영체제가 필요하다. 이것을 JVM 이라고 한다. 
  • 운영체제마다 프로그램을 실행하고 관리하는 방법이 다르기 때문에 운영체제와 자바 프로그램을 중계하는 JVM을 두어 자바 프로그램이 여러 운영체제에서 동일한 실행 결과가 나오도록 설계한 것이다. 
  • 바이트 코드는 모든 JVM에서 동일한 실행 결과가 나오지만, JVM은 운영체제에 종속적이다.
  • JVM은 JDK 또는 JRE를 설치하면 자동으로 설치된다. 

[운영체제와 JVM 자바 프로그램의 실행 단계]

  1. .java 파일(소스 파일) 작성
  2. 소스 파일을 컴파일러로(javac.exe) 컴파일
  3. 확장자가 .class인 바이트 코드 생성
  4. 바이트 코드 파일은 JVM 구동 명령어(java.exe)에 의해 JVM에서 기계어로 해석되고 이 결과는 운영체제에 따라 달라진다.

 

자바 개발 도구 (JDK) 설치
  • JAVA SE(Standard Edition)의 구현체인 JDK를 먼저 설치해야 한다.
  • JAVA SE의 구현체는 JDK와 JRE 이라는 두 가지 버전이 있다.
    • JDK : 프로그램 개발에 필요한 JVM, 라이브러리 API, 컴파일러 등의 개발 도구 포함
    • JRE : 프로그램 실행에 필요한 JVM, 라이브러리 API 포함
  • JDK 내부의 bin 디렉토리는 컴파일러인 javac.exe와 JVM 구동 명령어인 java.exe를 포함
  • 이 명령어들을 다른 디렉토리에도 쉽게 실행할 수 있도록 Path 환경 변수에 bin 위치를 등록한다.

 

자바 프로그램 소스 작성부터 실행
  1. 소스 파일 생성(.java 텍스트 파일)
  2. 소스 파일을 컴파일러(javac.exe)로 컴파일
  3. 컴파일러로 바이트 코드(.class) 생성
  4. JVM 구동 명령어(java.exe)로 실행 // javac Hello.java -> Hello.class 파일 생성

[자바 프로그램 개발 순서 1]
[자바 프로그램 개발 순서 2]

 

프로그램 소스 분석
  • 클래스(class) 블록 : 필드 또는 메소드를 포함하는 블록
  • 메소드(method) 블록 : 어떤 일을 처리하는 실행문들을 모아 놓은 블록. 단독 작성 불가능. 클래스 블록 내부에 작성해야 한다.
    • main() 메소드 : 프로그램 실행 진입점(entry point)

 

추가 정리
  • 자바 소스 파일은 src 디렉토리에 저장
  • 바이트 코드 파일은 bin 디렉토리에 저장

 

 

'프로그래밍 > JAVA' 카테고리의 다른 글

Ch06. 클래스  (0) 2022.01.02
Ch05. 참조 타입  (0) 2022.01.01
Ch04. 조건문과 반복문  (0) 2022.01.01
Ch03. 연산자  (0) 2022.01.01
Ch02. 변수와 타입  (0) 2022.01.01

+ Recent posts