자바공부하기 24 - 자바 실행단계

 

 

 

 

 

프로그램 동작순서

 

 

자바공부하기 23]바이트코드

 

바이트코드

 

Byte-Code는 머신 코드보다 추상적인 형태를 띠는 중간 코드의 일종입니다.

 

추상

- '추상'이란 구체적인 사물들 간에 발견되는 공통적인 특징 또는 그 모양새를 뜻합니다.

- 추상화한 것은 실제 세계만큼 real하지는 못하지만 하나이상의 사물들을 포괄할 수 있다는 이점이 있다.

- 크로스플랫폼 체계의 기본 요건이기도 하다.

* 크로스플랫폼이란 것이 이질적인 기계들 간에서도 동일한 의미로서 파익될 수 있는 어떤 '텍스트'를 요구하기 때문이다.

- 바이트코드는 이같은 요구에 부응하도록 고안된 언어이다.

 

다시말해서 Byte-code(바이트코드)란

프로그래머가 작성한 원시언어가 이종의 기계들 사이에서 효율적으로 작동하기 위해서는 머신 공통의 논리로 정제되어야 하는데, 이때 머신 공통의 논리로 정제된 결과물이 바로 바이트코드인 것이다.

 

인터프리터는 바이트코드를 통해 '무엇을' '어떻게' 수행해야 하는지 습득한 후 그 내용을 자신의 기계에 맞게 구체적으로 풀어내면 된다.

 

중간 코드라고 불리는 까닭은 바이트코드가 원시코드와 기계어 사이에서 이 같은 매개 역할을 하기 때문이다.

 

 

 

 

자바 통합 개발 환경(자바 IDE)- 이클립스(Eclipse)

 

 

 

 

소스 편집과 컴파일 및 실행

 

 

 

 

자바통합개발환경(자바 IDE-Eclipse)

 

IDE(Integrated Development Environment)

- 통합 개발환경

- 편집, 컴파일, 디버깅을 한번에 할 수 있는 통합된 개발환경

 

이클립스(Eclipse)

- 자바 응용 프로그램 개발을 위한 통합 개발 환경

- IBM에 의해 개발된 오픈 소스 프로젝트

- http://www.eclipse.org/downloads/ 에서 다운로드

 

 

 

 

 

 

간단한 자바 애플리케이션

 

작업 디렉토리 구성

- C:\Java\workspace라는 폴더 생성 후 이후에 작업할 소스를 저장.

 

소스 코딩

 

// HelloWorld.java

class HelloWorld

{

public static void main(String[] args)

{

System.out.println("HelloWorld!");

}

}

 

컴파일

C:\Java\workspace\javac Helloworld.java

 

실행

C:\Java\workspace\java HelloWorld

 

문제점

- *.java소스 파일과 *.class 클래스 파일이 혼재

- 소스 파일과 바이트코드를 분리해 저장

C:\Java\에 classes라는 폴더 추가 생성

재컴파일

* C:\Java\workspace\에서

* javac-d ..\classes\HelloWorld.java

재실행

* Java -cp ..\classes\ HelloWorld

 

 

 

 

 

디렉토리 구조

 

 

 

기본 도구

 

 

JDK(SDK)다운 받기

 

 

 

JDK 설치 및 환경설정

 

설치

- 도스 프롬프트 만들기 (cmd)

- J2se1.8 설치

- Javac, java, javap, java.lang.Object실행

 

환경설정(1)

- path : 실행파일 (여러 용도의 툴)

* java.exe(실행), javac.exe(컴파일러)등

- classpath: API 사용(rt.jar에 포함된 여러 클래스)

- 내 컴퓨터 -> 속성 -> 고급 -> 환경변수 -> 시스템변수 -> 새로 만들기

- JAVA_HOME -> C:\JAVA\jdk1.8.0_25

- path -> %JAVA_HOME%bin; <- path가 없으면 생성, 있으면 맨 앞에 입력

- classpath -> .;

 

환경설정(2)

- 배치파일 만들기
      set JAVA_HOME=C:\JAVA\jdk1.8.0_25

* set PATH=%JAVA_HOME%bin

* set CLASSPATH=.;C:\JAVA\jdk1.8.0_25\lib\tools.jar;

- env.bat으로 저장하여 C:\에 위치시킴

- env후 java-version실행

 

 

 

 

Binding

 

- Static Binding

* 컴파일 시에 어떤 클래스의 어떤 메소드가 호출되는지 정한다.

 

- Dynamic Binding

* 실행 중에 어떤 클래스의 어떤 메소드가 호출되는지 정한다.

 

Linking

 

- Static Linking

* 라이브러리나 다른 메소드 호출 시 실행파일에 그 부분을 합침

* 실행파일크기가 커짐 / 호출성능 향상

 

 

Dynamic Linking

 

* 호출하는 부분에 메소드를 호출한다는 표시만 한다.

실행되는 부분은 다른 파일에 저장.

* 실행파일크기가 작아짐 / 실행 중 동적으로 찾아야 함으로 시간이 걸린다.

* 실행파일 내부에 호출할 부분의 주소가 아닌 호출한 부분의 정확한 이름을 기재해야 이후에 찾을 수 있다.(주소는 무의미)

 

자바는 완벽한 Dynamic Binding / Dynamic Linking 지원

 

 

 

+ Recent posts