| 000 | 00763namccc200265 k 4500 | |
| 001 | 000000662318 | |
| 005 | 20100806011709 | |
| 007 | ta | |
| 008 | 000411s2000 ulka 001a kor | |
| 020 | ▼a 8980544014 ▼g 93000 : ▼c \18000 | |
| 040 | ▼a 211009 ▼c 211009 ▼d 211009 | |
| 041 | 1 | ▼a kor ▼h eng |
| 049 | 1 | ▼l 121044790 ▼f 과학 ▼l 121044791 ▼f 과학 |
| 082 | 0 4 | ▼a 005.6 ▼2 21 |
| 085 | ▼a 0075 ▼2 KDCP | |
| 090 | ▼a 005.6 ▼b 2000 | |
| 100 | 1 | ▼a Engel, Joshua |
| 245 | 1 0 | ▼a 자바 가상 머신 프로그래밍 / ▼d Joshua Engel 저 ; ▼e 곽용재 역. |
| 246 | 1 9 | ▼a Programming for the Java virtual machine |
| 260 | ▼a 서울 : ▼b 인포·북 , ▼c 2000. | |
| 300 | ▼a 589 p. : ▼b 삽도 ; ▼c 26 cm + ▼e CD-ROM 1매. | |
| 500 | ▼a 색인수록 | |
| 700 | 1 | ▼a 곽용재, ▼e 역 |
| 950 | 0 | ▼b \18000 |
소장정보
| No. | 소장처 | 청구기호 | 등록번호 | 도서상태 | 반납예정일 | 예약 | 서비스 |
|---|---|---|---|---|---|---|---|
| No. 1 | 소장처 과학도서관/Sci-Info(1층서고)/ | 청구기호 005.6 2000 | 등록번호 121044790 (11회 대출) | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
| No. 2 | 소장처 과학도서관/Sci-Info(1층서고)/ | 청구기호 005.6 2000 | 등록번호 121044791 (17회 대출) | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
컨텐츠정보
책소개
이 책은 자바 가상 머신 명세서(JVMS)에 대한 소개와 함께, 프로그래머가 자바 가상 머신과 JVMS를 더 잘 이해하도록 도와줄 흥미로운 주제를 소개한다.
초급서나 프로그래밍 활용서에서 채우주지 못하는 프로그래머의 내공을 키워 주는 내용들 - 프로그래밍 언어 측면에서의 분석, 타입 시스템, 컴파일 매커니즘, 보안 기능, 가상 머신의 동작 등 - 을 담았다.
자바 가상 머신의 검증 알고리즘, 자바 가상 머신이 가진 보안 기능의 동작 메커니즘과 동작 범위, 자바 프로그래밍 언어가 자바 가상 머신에 맞게 동작하도록 컴파일하는 매커니즘 등과 자바 가상 머신을 이용한 다른 언어의 구현 - Seheme, Prolog, Sather Eiffel, 정규표현식, 클래스 로더를 사용하여 인터넷, 자바 기반 클래스, 데이터베이스 질의, 그리고 다른 언어로부터 동적 생성한 코드를 가상 머신에 올리는 방법 등 원리로부터 깊이 이해할 수 있는 내용들을 담았다.
자바 기술과 자바 언어, 혹은 프로그래밍 언어 분야에 계신 분들의 스터디용 교재나 참고서로 적합하다.
정보제공 :
저자소개
목차
목차 시작하기 전에 = 17 용어 대역표 = 21 CHAPTER 1 자바 가상 머신의 소개 1.1 자바와 자바 가상 머신 = 28 1.2 자바 가상 머신이란 무엇인가? = 29 1.2.1 명령어 집합 = 30 1.2.2 class 파일 형식 = 32 1.2.3 검증(Verfication) = 33 1.3 자바 플랫폼 = 33 1.4 자바 가상 머신의 구성 = 34 1.4.1 클래스 영역(Class area) = 35 1.4.2 자바 스택(Java Stack) = 37 1.4.3 힙(Heap) = 38 1.4.4 네이티브 메소드 스택(Native Method Stack) = 39 1.4.5 예제 = 40 1.5 가비지 콜렉션(Garbage Collection) = 44 1.5.1 마무리 작업(Finalization) = 47 1.5.2 가비지 콜렉션이 일어나는 시점 = 48 1.6 자바 가상 머신(JVM)의 구현 = 49 1.7 가상 머신의 버전 = 50 1.8 자바 가상 머신의 미래 = 52 CHAPTER 2 가상 머신의 탐험 도구, Oolong에 대하여 2.1 Hello, World = 58 2.1.1 .class와 .super 지시자 = 58 2.1.2 main 메소드 = 59 2.1.3 명령어(INstruction) = 60 2.2 Oolong 프로그램의 구조 = 62 2.3 클래스의 정의 = 63 2.4 수퍼클래스 = 64 2.5 필드의 선언 = 65 2.6 메소드의 선언 = 69 2.7 인터페이스(Interface) = 74 CHAPTER 3 메소드 작성하기 3.1 기본적인 용어의 정의 = 80 3.2 타입(types) = 81 3.2.1 숫자 타입(numeric type) = 81 3.2.2 객체 타입(Object Type) = 83 3.2.3 returnAddress = 84 3.3 니모닉의 이름을 정하는 규칙 = 84 3.4 예제 코드의 테스트 = 85 3.5 반환(return) = 87 3.6 상수(Constant) = 88 3.6.1 일반적인 상수 = 88 3.6.2 작은 크기의 상수와 null = 89 3.7 지역 변수 = 91 3.7.1 변수의 초기화 = 95 3.7.2 메소드의 인자로써 사용되는 지역 변수 = 96 3.8 데이터간의 연산 = 98 3.8.1 수식 연산(arithmetic operation) = 98 3.8.2 숫자가 아닌 경우와 무한한 크기를 나타내는 경우 = 100 3.8.3 비트 연산 = 101 3.8.4 부동 소수점 계산과 strictfp = 104 3.9 타입 변환 = 105 3.9.1 데이터 변환의 예 = 107 3.9.2 데이터 폭의 확대(widening)와 축소(narrowing) = 107 3.10 스택의 조작 = 108 3.11 숫자 배열 = 112 3.12 아무런 일도 하지 않는 명령어(nop) = 115 CHAPTER 4 클래스와 객체 4.1 객체란 무엇인가? = 117 4.1.1 객체와 참조자 = 118 4.1.2 클래스 이름 = 121 4.1.2 패키지 = 122 4.2 객체의 생성 = 123 4.3 생성자(constructor) = 124 4.4 필드의 사용 = 125 4.4.1 타입과 getfield 명령어 = 127 4.4.2 필드의 상속 = 128 4.4.3 필드 값의 변경 = 129 4.5 객체에서의 메소드 호출 = 130 4.5.1 가상 메소드 호출 = 132 4.5.2 메소드의 상속과 오버라이드(overriding) = 134 4.5.3 오버로딩(overloading)과 메소드의 매칭(matching) = 137 4.5.4 직접적인 메소드 호출 = 139 4.5.5 invokespecial 명령어와 super 키워드 = 141 4.6 캐스팅 = 144 4.7 캐스팅, 필드, 메소드, 그리고 자바 = 146 4.8 객체의 반환 = 150 4.9 인터페이스(interface) = 151 4.10 정적 필드와 메소드 = 156 4.11 클래스 초기화 = 158 4.12 배열(Array) = 159 4.12.1 참조자의 배열 = 159 4.12.2 다차원 배열 = 162 4.12.3 배열의 길이 = 165 CHAPTER 5 제어문 5.1 정수의 비교 = 168 5.2 참조자간의 비교 = 171 5.3 다른 비교 명령어들 = 173 5.4 switch 명령어 = 175 5.5 서브루틴 = 176 5.6 예외(Exception) = 177 5.6.1 여러 개의 예외 핸들러 = 183 5.6.2 .throws 지시자 = 186 5.6.3 예외를 던지는 그 밖의 방법들 = 187 5.7 타입을 검사하는 보다 좋은 방법 = 187 CHAPTER 6 자바 가상 머신의 검증 과정(Verification Process) 6.1 검증 알고리즘의 동작 = 190 6.2 구조적인 관점에서 명확한 class 파일인가? = 191 6.3 모든 상수들이 정확하게 참조되는가? = 193 6.4 모든 명령어들이 유효한가? = 195 6.5 명령어 수행시 스택/지역 변수의 상태는 항상 정확한가? = 199 6.5.1 예제1 : Hello, World = 201 6.5.2 예제2 : goto 문과 if 문 = 204 6.5.3 예제3 : 검증되지 않은 코드 = 208 6.5.4 예제4 : 서브클래스의 처리 = 210 6.5.5 알고리즘 = 214 6.6 외부로의 참조는 검사되었는가? = 217 6.7 자바 언어와 검증 알고리즘 = 218 6.7.1 자바 컴파일러로 가상 머신 속이기 = 221 6.7.2 검증 알고리즘과 그 외 언어들 = 221 6.8 이외의 안전(Safety) 요건 = 222 6.9 검증하기 = 223 CHAPTER 7 자바 가상 머신을 통한 디버깅 7.1 Oolong에서의 디버깅 지시자(debugging directive) = 226 7.1.1 .source 지시자와 .line 지시자 = 226 7.1.2 .var 지시자 = 229 7.2 Oolong 프로그램의 디버깅 = 231 7.3 런타임 추적(Runtime Tracing) = 232 CHAPTER 8 자바 가상 머신의 클래스 로더 사용 8.1 클래스의 로딩 = 236 8.1.1 로딩(Loading) = 236 8.1.2 링킹(linking) = 238 8.2 클래스 로더를 사용하지 않는 클래스 로딩 = 239 8.3 직접 만드는 클래스 로더 = 240 8.3.1 클래스의 캐싱(caching) = 241 8.3.2 예제 = 242 8.4 Class 객체의 활용 = 245 8.5 리플랙션(Reflection) = 246 CHAPTER 9 자바 클래스 파일의 내부 구조 9.1 클래스 파일 헤더 = 252 9.2 상수 풀(Constant Pool) = 253 9.2.1 UTF8 엔트리 = 256 9.2.2 상수 엔트리 = 256 9.2.3 필드, 메소드, 클래스 엔트리 = 258 9.3 클래스에 관한 정보 = 259 9.4 필드와 메소드 = 260 9.5 클래스의 속성 = 267 9.6 그 외 속성들 = 268 9.6.1 ConstantValue 속성 = 268 9.6.2 Exceptions 속성 = 269 9.6.3 InnerClasses 속성 = 271 CHAPTER 10 자바 컴파일링의 안쪽 10.1 표현식과 문장 = 275 10.2 표현식의 여러 형태들 = 277 10.2.1 숫자 타입(Numeric Types) = 278 10.2.2 객체 타입(Object Types) = 279 10.2.3 표현식 결과값의 타입 = 279 10.2.4 컴파일 타임 타입과 타입 제약 = 281 10.2.5 타입 안전성(Type-safety)과 검증성(Verifiability) = 282 10.3 문장과 표현식의 컴파일 = 283 10.4 지역 변수 선언 = 285 10.5 필드와 변수 = 288 10.5.1 축약 표기 = 291 10.5.2 이외의 대입문들 = 292 10.5.3 표현식으로서의 대입문 = 294 10.5.4 대입문에서의 타입 점검 = 295 10.6 새 객체의 생성 = 296 10.7 클래스 이름의 축약 표기 = 298 10.8 산술 표현식 = 299 10.8.1 숫자 값의 캐스팅 = 303 10.8.2 ∼연산자 = 306 10.9 메소드 호출 = 307 10.9.1 가상 메소드 호출 = 307 10.9.2 정적 메소드 호출 = 308 10.9.3 메소드 호출의 예 = 308 10.9.4 오버라이딩 = 310 10.9.5 오버로딩(Overloading) = 312 10.9.6 인터페이스 = 314 10.10 문장으로서의 표현식 = 316 10.11 If 문과 불린 값 = 317 10.11.1 불린 값 = 317 10.11.2 if 문장 = 319 10.11.3 비교문(Comparison) = 320 10.11.4 부동 소수점 실수 비교와 NaN = 322 10.11.5 정수 비교문 = 324 10.11.6 참조자와 객체의 일치 = 325 10.11.7 불린 연산자 = 330 10.12 이외의 흐름 제어 구조 = 332 10.12.1 루프(Loop) = 332 10.12.2 흐름 제어 구조의 컴파일링 = 334 10.12.3 복합 문장(Compound Statements)과 검증(Verification) = 336 10.13 Return 문장 = 338 10.14 필드 선언 = 340 10.15 메소드 선언 = 341 10.16 생성자 = 343 10.16.1 동일한 클래스에서 여러 생성자 사용 = 344 10.16.2 디폴트 생성자 = 345 10.16.3 필드 초기화와 생성자 = 346 10.17 결론 = 347 CHAPTER 11 다른 언어의 특징을 자바 가상 머신에 맞게 컴파일하기 11.1 자바 버전 1.1 = 351 11.1.1 Class 리터럴 = 351 11.1.2 내부 클래스(Inner Classes) = 353 11.1.3 내부 클래스가 사용될 경우의 스코핑 = 356 11.2 정규 표현식(Regular Expression) = 358 11.3 반복자(Iterator) = 365 11.3.1 Sather에서의 반복자 = 365 11.3.2 반복자의 구현 = 368 11.3.3 반복자와 인자 = 372 11.3.4 반복자의 사용 = 374 11.4 매개변수화 타입(Parameterized Types) = 376 11.4.1 일반 클래스로 매개변수화 타입을 구현하기 = 378 11.4.2 매개변수화 타입을 템플리트로 구현하기 = 379 11.5 다중 상속 = 380 11.5.1 다중 상속용 인터페이스 = 381 11.5.2 인터페이스의 구현 = 383 11.5.3 필드 = 388 11.6 결론 = 389 CHAPTER 12 자바 가상 머신으로 Scheme 언어 구현하기 12.1 Scheme의 주요 개념 = 392 12.2 Scheme을 바이크 코드로 컴파일하기 = 396 12.3 람다 표현식(lambda Expression) 컴파일하기 = 401 12.4 예제(Example) = 405 12.5 Scheme 라이브러리(Library) = 408 12.6 Optimizing Scheme = 409 12.6.1 정적 스코핑(Static Scoping) = 410 12.6.2 지역 변수(local variable)의 사용 = 414 12.6.3 인라이닝(Inlining) = 416 12.6.4 말단 재귀형(Tail Recursion) = 417 12.6.5 타입 정보의 이용 = 418 CHAPTER 13 자바 가상 머신으로 Prolog 언어 구현하기 13.1 Prolog의 소개 = 422 13.1.1 질문하는 방법 = 422 13.1.2 바인딩 패턴(binding pattern) = 424 13.1.3 임플리케이션(Implication) = 424 13.1.4 바인딩 패턴과 임플리케이션 = 426 13.1.5 규칙(Rule)으로서의 사실(Fact) = 427 13.1.6 단일화의 고찰 = 427 13.2 Prolog 구현의 기본 = 429 13.3 단일화 = 430 13.3.1 단일화 알고리즘 = 430 13.3.2 바인딩의 처리 = 432 13.4 프로그램으로서의 규칙 = 433 13.4.1 inside = 433 13.4.2 within = 435 13.4.3 yield와 백트래킹 = 436 13.5 규칙의 구현 = 438 13.5.1 within의 구현 = 439 13.5.2 결합(conjunction)의 구현 = 442 13.5.3 within의 생성 = 445 13.6 사실(Fact)의 컴파일 = 445 13.7 확인! Prolog 컴파일 실습 = 448 CHAPTER 14 성능 향상시키기 14.1 빠른 자바 가상 머신 = 451 14.1.1 가비지 콜렉션 성능 = 453 14.1.2 참조 구현하기 = 456 14.2 바이트 코드 최적화 기술 = 458 14.2.1 주의 = 458 12.2.2 상수의 사용을 늘린다 = 458 14.2.3 길이를 감소시킨다 = 460 14.2.4 루프를 풀어서 기술한다 = 462 14.2.5 틈새 최적화(peephole optimization) = 463 14.3 인라이닝 = 470 14.3.1 필드를 인라이닝하기 = 470 14.3.2 분리된 컴파일(Separate Compilation) = 472 CHAPTER 15 보안과 자바 가상 머신 15.1 자바 플랫폼과 보안의 필요성 = 474 15.2 자바 가상 머신에서의 보안 보증 = 474 15.3 보안 구조와 보안 정책 = 475 15.3.1 예제 = 478 15.3.2 기본적인 애플릿 보안 정책 = 479 15.3.3 좀 더 세밀한 보안 정책 = 481 15.4 잠재적 공격의 가능성 = 482 15.4.1 세부 구현 = 482 15.4.2 보안 관리자에 대한 방어 = 482 15.4.3 자바 보안에 대한 우회 = 484 15.4.4 생성되지 않은 객체에 대한 사용 = 485 15.4.5 유효하지 않은 캐스팅 = 488 15.4.6 클래스에 대한 참조 바꾸기 = 490 15.4.7 초기화되지 않은 필드에 대한 접근 = 491 15.4.8 배열 범위 체크 = 493 15.4.9 예외 처리 = 494 15.4.10 숨겨진 코드 = 497 15.5 결론 = 497 CHAPTER 16 스레드와 동기화 16.1 스레드 = 500 16.1.1 예제 : 다중 스레드 웹 서버 = 503 16.1.2 예외와 스레드 = 505 16.2 스레드간의 상태 공유 = 506 16.2.1 동기화의 필요성 = 506 16.2.2 예외 : long과 double = 509 16.3 모니터와 객체 락 = 509 16.3.1 자바에서의 동기화 = 512 16.3.2 동기화된 메소드 = 513 16.4 스케줄링 = 516 16.4.1 CPU에 대한 제어권 넘기기 = 518 16.4.2 다른 스레드에 대한 대기 = 519 16.5 결론 = 520 APPENDIX A 명령어 테이블 = 523 B Oolong 참고자료 = 537 C 연습문제 풀이 = 565 D CD-ROM 사용법 = 583 찾아보기 = 585
