Java

자바 시작

종퐁이 2024. 6. 24. 20:08

1. 컴파일

- 소스 : 프로그래밍 언어로 작성된 텍스트 파일

- 컴파일 : 소스 파일을 컴퓨터가 이해할 수 있는 기계어로 만드는 과정

(1) 자바  :. java ->. class

(2) C :. c ->. obj ->. exe

(3) C++ :. cpp ->. obj ->. exe

 

2. 자바의 태동

(1) 1991년 그린 프로젝트 (Green Project)

- 선마이크로시스템즈의 제임스 고슬링(James Gosling)에 의해 시작

- 가전제품에 들어갈 소프트웨어를 위해 개발

- 1995년에 자바 발표

(2) 목적 

- 플랫폼 호환성 문제 해결

- 기존 언어로 작성된 프로그램은 PC, 유닉스, 메인 프레임 등 플랫폼 간에 호환성 없음

- 소스를 다시 컴파일하거나 프로그램을 재 작성해야 하는 단점

(3) 플랫폼 독립적인 언어 개발

- 모든 플랫폼에서 호환성을 갖는 프로그래밍 언어 필요

- 네트워크, 특히 웹에 최적화된 프로그래밍 언어의 필요성 대두

(4) 메모리 사용량이 적고 다양한 플랫폼을 가지는 가전 제품에 적용

- 가전 제품 : 작은 량의 메모리를 가지는 제어 장치

- 내장형 시스템 요구 충족

(5) 초기 이름 : 오크(OAK)

- 인터넷과 웹의 엄청난 발전에 힘입어 퍼지게 됨

- 웹 브라우저 Nestscape에서 실행

(6) 2009년에 선마이크로시스템즈를 오라클에서 인수

 

3. WORA

(1) WORA(Write Once Run Anywhere)

- 한 번 작성된 코드는 모든 플랫폼에서 바로 실행

- C/C++ 등 기존 언어가 가진 플랫폼 종속성 극복

- OS, H/W에 상관없이 자바 프로그램이 동일하게 실행

- 네트워크에 연결된 어느 클라이언트에서나 실행

- 웹 브라우저, 분산 환경 지원

(2) WORA를 가능하게 하는 자바의 특징

- 바이트 코드(byte code)

- 자바 소스를 컴파일한 목적 코드

- CPU에 종속적이지 않은 중립적인 코드

- JVM에 의해 해석되고 실행됨

(3) JVM(Java Virtual Machine)

- 자바 바이트 코드를 실행하는 자바 가상 기계(소프트웨어)

 

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

(1) 바이트 코드

- 자바 가상 기계에서 실행 가능한 바이너리 코드

- 바이트 코드는 컴퓨터 CPU에 의해 직접 실행되지 않음

- 자바 가상 기계가 작동 중인 플랫폼에서 실행

- 자바 가상 기계가 인터프리터 방식으로 바이트 코드 해석

- 클래스 파일(. class)에 저장

(2) 자바 가상 기계(JVM : Java Virtual Machine)

- 동일한 자바 실행 환경 제공

- 각기 다른 플랫폼에 설치

- 자바 가상 기계 자체는 플랫폼에 종속적

- 자바 가상 기계는 플랫폼마다 각각 작성됨

EX) 리눅스에서 작동하는 자바 가상 기계는 윈도에서 작동하지 않음

- 자바 가상 기계 개발 및 공급

- 자바 개발사인 오라클, IBM 등

(3) 자바 응용프로그램 실행

- 자바 가상 기계가 응용프로그램을 구성하는 클래스 파일(. class)의 바이트 코드 실행

 

5. 바이트 코드의 디어셈블(disassemble)

(1) 디어셈블

- 클래스 파일에 들어 있는 바이트 코드를 텍스트로 볼 수 있게 변환하는 작업

- JDK의 javap.exe 이용

 

6. 자바의 개발 및 실행 환경

(1) 자바 프로그램의 개발

- 여러 소스(. java)로 나누어 개발

- 바이트 코드(. class)를 하나의 실행 파일(exe)로 만드는 링크 과정 없음

(2) 실행

- main() 메서드를 가진 클래스에서부터 실행 시작

- 자바 가상 기계는 필요할 때, 클래스 파일 로딩, 적은 메모리로 실행 가능

 

7. JDK 설치 후 디렉터리 구조

 

8. 자바 프로그램 개발

(1) public class Hello2030

- 클래스 선언문

- Hello2030은 클래스 이름

- 클래스는 {와 } 사이에 정의

- 자바는 하나 이상의 클래스로 구성

(2) public static void main(String [] args)

- 자바 프로그램은 main() 메서드에서 실행 시작

- 실행을 시작하는 클래스에 main() 메서드가 반드시 하나 존재

(3) int n = 2030;

- 지역 변수 선언

(4) System.out.println("헬로"+n);

- 화면에 "헬로 2030" 출력

- System.out 객체는 JDk에서 제공됨