[기타 정보자료]/컴퓨터관련

JAVA

가야트리샥티 2012. 4. 24. 15:12

JDK의 환경변수 설정

 

환경변수 : set path=%path%;\java\bin

 

set path=.;\java\lib\classes.zip

 

JDK의 구성요소

 

런타임 인터프리터

컴파일러

애플릿 뷰어

디버거

클래스 파일 역어셈블러

해더와 Stub 파일 생성기

문서화 도구

애플릿 데모

API 소스 코드

 

1. 런타임 인터프리터 - JAVA

 

자바 런타임 인터프리터(Java)는 핫자바(HotJava) 브라우저 안에 내장된 자바 인터프리터의 로컬(Stand-alone) 버전이다. 런타임 인터프리터는 컴파일되어 바이트 코드 형식으로 구성된 자바 프로그램을 실행하기 위한 명령어 라인(Command Line) 툴로서 작동된다. 그래픽 프로그램은 브라우저의 그래픽 지원이 필요하다. 런타임 인터프리터를 사용하기 위한 문법은 아래와 같다.

 

Java Options Classname Arguments

 

Classname 변수는 실행하고자 하는 클래스의 이름을 지정한다. 만약 클래스가 패키지 안에 존재한다면, 완벽하게 이름을 지정해야 한다. 예를 들어, AudioCDPlayer라는 패키지 안의 PlayCD라는 클래스를 실행시키려면, 다음과 같이 인터프리터를 실행시켜야 한다.

 

Java AudioCDPlayer,.PlayCD

 

자바 인터프리터가 클래스를 실행시킬 때, 실제 하는 일은 클래스의 main 메소드를 실행시키는 것이다. 인터프리터는 main 메소드나 그것에 의해서 만들어진 스레드(Thread) 가 실행을 끝낼 때 종료된다. main 메소드는 프로그램을 제어하는 데 사용될 수 있는 인자의 리스트를 받아들일 수 있다. 인터프리터의 Arguments 인자는 main 메소드에 넘겨지는 인자들을 지정한다. 예를 들어, 위의 예문에서 인자로 CD의 10번 트랙의 번호와 제목을 넘겨주고자 할 때, 다음과 같이 실행하면 된다.

 

Java AudioCDPlayer.PlayCD 10 MusicTitle#10

 

Options는 런타임 인터프리터가 자바 프로그램을 어떻게 수행할지에 대한 옵션들을 지정한다.

 

● -help : 런타임 인터프리터의 옵션에 대한 간단한 도음말을 출력한다. 아무런 옵션을

               주지않고 실행하여도 이같은 실행효과를 나타낸다.

 

● -version : 런타임 인터프리터의 버전을 출력해준다.

 

● -verbose, -v : 런타임 인터프리터로 하여금 자바 클래스가 로드될 때마다 메시지를 표준 출력하게 한다.

 

● -debug : 런타임 인터프리터와 결합된 자바 디버거(jdb)를 사용할 수 있도록 디버깅모드에서 인터프리터를 실행한다.

 

● -noasyncgc : 런타임 인터프리터로 햐여금 자바 클래스를 인터프리트할 때 비동기

                        가비지 컬랙션(Garbage Collection)을 혀용하지 않는다.

 

● -verbosegc : 런타임 인터프리터가 가비지 컬렉션(Garbage Collection)을 수행할

                       때마다 메시지를 출력하게 한다. 가비지 컬렉션(Garbage Collection) 은 불필요한 객체들을 청소하고 메모리를 해제하기 위해서 런타임 시스템에  의해서 수행된다.

 

● -checksource, -cs : 런타임 인터프리터가 소스와 실행 가능한 클래스 파일의 수정 날짜를 비교하게 한다. 만약 소스 파일이 더 최근의 것이라면, 클래스는 자동으로

재컴파일된다.

 

● -ss : 프로세스의 C 스택 크기를 설정한다.

 

● -oss : 프로세스의 Java 스택 크기를 설정한다.

 

● -ms : 초기 자바 힙(heap) 크기를 설정한다.

 

● -mx : 최대 자바 힙(heap) 크기를 설정한다.

 

● -classpath : 런타임 인터프리터가 사용자 정의 클래스들을 찾기 위해서 Classpath 환경 변수를 사용하는데, Classpath변수는 사용자 정의 자바 클래스를 지정하는 디렉토리 경로가 세미콜론으로 분할된 시스템 경로의 리스트를 가지고 있다. 거의 모든 자바 개발툴들이 환경 변수를 사용한다.

 

● -prof : 런타임 인터프리터가 현재 디렉토리에 java.prof 라는 텍스트 파일을 생성하고 프로파일링 정보를 생성하게 된다.

 

● -verify : 런타임 인터프리터가 런타임 환경에 로드된 모든 코드들 위에 바이트 코드 검증자(Verifier)를 실행하도록 한다.

 검증자의 기본 기능은 오직 클래스로더를 사용하여 시스템에 로드된 코드를 검증하는

 것이다.

 

● -verifyrenmote : 네트워크로부터 로드된 코드들을 검증할 수 있도록 검증자를 실행 하도록 한다. 이 옵션은 기본적으로 적용됨.

 

● -noverify : 어떠한 클래스 코드도 검증하지 않게 한다.

 

2. 컴파일러 - Javac

 

자바 컴파일러(Javac)는 자바 소스코드 파일을 실행 가능한 자바 바이트 코드 클래스로 컴파일하는 데 사용된다. 자바에서 소스코드 파일은 .java 확장자를 가지고 있다. 이런 확장자를 가진 소스코드 파일을 자바 컴파일러는 .class 확장자를 갖는 실행 가능한 클래스 파일로 컴파일 한다. 그러므로 하나의 자바 소스코드 파일에서 여러 개의 실행 가능한 클래스 파일이 생성될 수 있다. 바꿔 말해 하나의 소스파일에 여러개의 클래스를 정의할 수 있다는 얘기다.

 

JDK의 자바 컴파일러는 자바 런타임 인터프리터와 비슷하게 작동하는 커맨드 라인 툴이다. 자바 컴파일러의 문법은 다음과 같다.

 

javac Options Filename

 

Filename인자는 짐작할 수 있듯이 컴파일할 소스코드 파일의 이름을 지정한다.

Options 인자는 자바 컴파일러가 어떻게 실행 가능한 자바 클래스 파일을 생성할 것인지에 대한 옵션을 지정한다.

 

● -g : 자바 컴파일러가 자바 클래스들을 위해서 디버깅 테이블을 생성하도록 한다.

          디버깅 테이블은 지역 변수나 라인 번호와 같은 정보를 저장하게 되고, 자바 디버거에 의해 사용된다. 자바 컴파일러의 기본적인 실행은 오직 라인 번호만을 생성한다.

 

● -o : 자바 컴파일러가 컴파일된 클래스 파일을 최적화하도록 한다.

          이 경우에, 최적화는 단순히 static, final, private 메소드가 인라인으로 컴파일되는 것을 뜻한다. 메소드가 인라인으로 컴파일되면, 메소드의 몸통 전체는 그 메소드가 호출장소에 존재하게 된다.

이것은 실행속도를 증가시키는데, 그 이유는 메소드 호출시의 오버헤드를 줄이기

 때문이다. 여기서 최적화된 클래스는 중복된 코드를 유지하기 위하여 크기가 커진다.

 또한 이 옵션은 자바 컴파일러에 의한 라인번호 생성을 억제한다.

 

● -nowarn : 자바 컴파일러 경고가 나타나지 않도록 한다. 경고는 소스코드의 잠재적

 인 문제점들을 개선하기 위해서 컴파일시에 표준 출력으로 출력된다.

 -nowarn 옵션을 사용하여 경고를 무시하는 것은 때로는 매우 유용하다.

 

● -verbose : -nowarn 옵션과는 정반대의 영향을 미친다. 그것은 컴파일 과정에 대한 확장된 정보를 제공한다. 이 옵션을 사용하면 어떤 소스코드 파일이 컴파일되는지 정확히 알 수 있다.

 

● -classpath path : 컴파일러가 classpath 환경 변수를 path에 의해서 설정된 경로로 재지정하도록 한다. 이렇게 하면 path로 지정한 경로에서 자바 컴파일러가 사용자 정의 클래스를 찾을 수 있도록 할 수 있다.

 

● -d dir : 컴파일된 클래스가 저장될 루트 디렉토리를 지정한다.

이것은 클래스가 여러 단계의 계층적 디렉토리 구조에 저장되어야 하기 때문에 중요하다.

 

javac -d\class\CDPlayer CDPlayer

 

자바 컴파일러를 위와 같이 실행하였다면, CDPlayer.java 파일을 컴파일하여 \class\CDPlayer라는 경로에 CDPlayer.class라는 클래스 파일을 생성한다. 그리고 만약 CDPlayer.java 파일이 패키지 계층 구조에 속해있는 클래스들을 정의하고 있다면 그 서브 디렉토리와 하위 클래스들을 \class\CDPlayer 디렉토리 밑에 저장될 것이다.

 

3. 애플릿뷰어 - AppletViewer

 

애플릿뷰어는 자바 애플릿의 최종 릴리즈를 테스트할 수 있는 최소한 도구를 제공한다.

다른 개발 툴 없어도 자바 애플릿들을 실행시켜 볼 수 있다.

 

appletviewer Options HTML files

 

실행시키고자 하는 애플릿이 등록되어 있는 HTML 파일을 지정하면 된다. 옵션으로는 -debug 옵션이 있는에, 애플릿을 디버그할 수 있도록 자바 디버거 안에서 애플릿뷰어를 실행시킨다.

 

4. 디버거 - Jdb

 

어느 정도 규모가 있는 자바 프로그램을 개발하기 위해서 자바 디버거는 거의 필수적이다. 통합 개발 환경을 이용하지 않는 한 jdb도 그런대로 유용한 디버깅 툴이 될것이다.

 

5. 클래스 파일 역어셈블러 - Javap

 

자바 클래스 파일 역어셈블러(Javap)는 클래스 파일을 역어셈블하는 데 사용된다.

클래스를 위한 public 데이터와 메소드로 구성되는 출력물을 생성하는데, 클래스 파일의 소스코드를 가지고 있지 않는 경우, 그것이 어떻게 작동하는지 더 자세히 알고 싶을 때

유용하다. 역어셈블러의 문법은 다음과 같다.

 

javap Options ClassNames

 

ClassNames는 역어셈블하기 위한 클래스명을 지정해 주면 된다. 이 옵션은 여러 개의 클래스도 지정이 가능하다.

Options는 어떻게 역어셈블할 것인지를 지정한다.

 

● -c : 역어셈블러가 각각의 메소드에 대한 실제 바이트코드를 출력하도록 한다.

 

● -classpath : import된 클래스들을 찾기 위한 경로를 지정한다. 주어진 경로는

Classpath 환경 변수에 재정의 된다.

 

● -h : C 헤더 파일에서 사용될 수 있는 정보를 생성하도록 지정한다.

이것은 소스코드가 없는 자바 클래스로 C 코드와 인터페이스할 때 유용하다.

 

● -p : 역어셈블러의 출력물에 private 변수와 메소드를 포함하도록 한다.

이 옵션을 지정하지 않으면 역어셈블러는 오직 public 변수와 메소드만을 출력할 것이다.

 

● -verfy : 역 어셈블러가 클래스에 검증자(Verifier)를 실행하고 디버깅 정보를 출력 하도록 한다.

 

● -version : 역어셈블러가 자신의 버전을 출력하도록 한다.

 

6. 해더와 Stub 파일 생성기 - Javah

 

자바 헤더와 Stub 파일 생성기(Javah)는 C 안에서 자바 메소드를 이식하기 위한 C 헤더와 소스파일을 생성하는 데 사용된다.

생성된 파일들은 C 코드로부터 객체의 멤버 변수로 접근하도록 사용될 수 있다.

헤더와 stub 파일 생성기는 레이아웃이 자바 클래스와 일치하는 C 구조체를 생성함으로써 이것을 가능하게 한다.

 

7. 문서와 도구 - Javadoc

 

자바 문서화 도구(Javadoc)는 자바 소스코드로부터 직접 API 문서를 생성할 수 있는 유용한 문서화 도구이다.

이 툴은 자바 소스파일을 분석하여 HTML 파일을 생성한다.

[출처] JAVA|작성자 친절한blog맨