목차 일부
제1부 다음 정차역은 - 자바(Java)
제1장 차세대 언어 - 자바 ... 27
자바란 무엇인가? ... 28
자바의 발전사 ... 30
인터넷과 월드 와이드 웹(WWW)의 간략한 역사 ... 34
인터넷의 초기 ... 34
웹의 초기 ... 35
프로그래밍 언어의 기초 ... ...
더보기
목차 전체
제1부 다음 정차역은 - 자바(Java)
제1장 차세대 언어 - 자바 ... 27
자바란 무엇인가? ... 28
자바의 발전사 ... 30
인터넷과 월드 와이드 웹(WWW)의 간략한 역사 ... 34
인터넷의 초기 ... 34
웹의 초기 ... 35
프로그래밍 언어의 기초 ... 36
인터프리터 프로그래밍 언어 ... 37
컴파일러 프로그래밍 언어 ... 37
자바 : 중간 형태의 프로그래밍 언어 ... 38
C에서 C++로의 논리적인 발전 ... 39
C/C++에서 자바로의 거대한 발걸음 ... 41
자바 가상 기계(The Java Virtual Machine) ... 42
요약 ... 43
제2장 JDK로 시작해 보자 ... 44
자바 개발 환경 ... 45
자바 API와 기본 기능들 ... 46
JDK 도구들 ... 48
솔라리스 사용자를 위하여 ... 49
JDK 구하기 ... 50
JDK 설치하기 ... 51
설치가 잘 되었는지 테스트하기 ... 56
윈도우95/NT 사용자들을 위하여 ... 58
JDK를 구하기 ... 59
JDK를 설치하기 ... 60
설치가 잘 되었는지 테스트하기 ... 66
맥 OS 사용자들을 위하여 ... 68
JDK를 구하기 ... 69
JDK를 설치하기 ... 70
설치가 잘 되었는가 테스트하기 ... 71
또 하나의 선택 - MRJ ... 72
OS/2 사용자들을 위하여 ... 73
C/C++에서 자바로의 전환 ... 74
자바는 기계어 코드로 컴파일되지 않는다. ... 74
자바는 외부 C 프로그램을 사용하지 못한다. ... 74
자바에는 다중 상속(Multiple Inheritance)이 없다. ... 75
자바에서는 변수와 메소드, 클래스 이름을 마음대로 붙일 수 있다. ... 76
자바에는 포인터가 없다. ... 77
자바에는 따로 구분된 헤더 파일(header file)이 없다. ... 77
자바에는 단독으로 존재하는 함수가 없다. ... 78
어떤 자바 프로그램에는 main()까지도 없다. ... 78
자바에는 템플릿(template)이 없다. ... 79
자바에는 예외 처리가 있다. ... 79
자바에는 자동 쓰레기 수집 기능이 있다. ... 80
요약 ... 80
제2부 자바의 힘 맛보기
제3장 자바 브라우저와 월드 와이드 웹(WWW) : 기초 ... 83
웹을 돌아다니기 ... 83
URL을 사용하기 ... 85
URL은 어떻게 정의되는가 ... 86
URL의 형식 ... 86
자바가 가능한 브라우저를 가지고 웹 탐색을 하기 ... 88
핫자바(Hotjava) ... 89
넷스케이프 네비게이터(Netscape Navigator) ... 90
오라클 파워 브라우저(Oracle PowerBrowser) ... 91
인터넷 익스플로러(Internet Explorer) ... 92
리퀴드 리얼리티(Liquid Reality) ... 93
자바 개발자를 위한 중요한 웹 페이지들 ... 94
썬 사의 웹 사이트 ... 94
자바소프트(JavaSoft) ... 96
가멜란(Gamelan) ... 96
JARS ... 97
썬에서 만들지 않은 자바 도구들 ... 98
자바 개발자들을 위한 볼랜드 C++(Borland C++ for Java Developers) ... 98
시맨틱 카페(Symantec Caf$\acute{e}$) ... 99
로그 웨이브(Rogue Wave)의 JFactory ... 101
썬소프트(SunSoft)의 자바 워크샵(Java WorkShop) ... 101
웹에 있는 살아 있는 애플릿들로의 여행 ... 102
월스트리트 웹(WallStreetWeb) ... 102
쌜리브리티 페인터(Celebrity Painter) ... 103
3D 네트리스(Netris) ... 104
실리콘 그래픽스의 자바로 만든 홈페이지(SGI JavaPowerd Home Page) ... 104
스포츠존(SportsZone) ... 105
요약 ... 105
제4장 자바 언어 : 기초 ... 106
첫 번째 자바 프로그램을 만들기 ... 106
자바 프로그램의 기본 구조 - FirstApp ... 107
정리하기 ... 111
FirstApp를 만들기 ... 113
FirstApp를 컴파일하기 ... 115
FirstApp를 실행하기 ... 116
첫 번째 자바 애플릿 ... 117
자바 애플릿의 기본 구조 ... 118
애플릿을 생성하기 ... 121
FirstApplet을 컴파일하기 ... 122
애플릿을 위한 HTML 문서 만들기 ... 123
애플릿을 위한 그림 파일 만들기 ... 124
애플릿을 위한 사운드 파일 만들기 ... 125
FirstApplet을 실행하기 ... 125
문제점 해결 ... 126
컴파일러 에러 ... 127
인터프리터 에러 ... 132
뷰어 에러 ... 133
요약 ... 135
제5장 자바 도구와 JDK : 기초 ... 137
JDK 안에 있는 도구들 ... 137
JDK의 커맨드 라인 도구들 ... 138
자바 컴파일러와 관련 도구들 ... 139
자바 인터프리터 ... 155
자바 애플릿 뷰어 ... 164
요약 ... 170
제3부 자바 언어의 분석
제6장 자바 언어의 기본 ... 173
토큰(Token) ... 173
식별자(Identifier) ... 174
키워드(Keyword) ... 175
리터럴(Literal) ... 176
구분자(Separator) ... 180
연산자(Operator) ... 180
주석문(Comment) ... 182
토큰 요약(Tokens Summary) ... 183
데이터 타입을 사용하기 ... 183
기본 데이터 삽입(Primitive Data Type) ... 185
정수 데이터 삽입(Integer Data Type) ... 185
참조 데이터 삽입(Reference Data Type) ... 188
식(Expression) ... 192
식에서 연산자를 사용하기 ... 192
자바의 연산자 계산 순서 ... 194
선언문(Declaration) ... 198
정수형을 선언하기 ... 199
실수형을 선언하기 ... 200
문자형을 선언하기 ... 200
배열을 선언하기 ... 200
제어 흐름(Control Flow) ... 201
블록(Block)과 문장(Statement) ... 201
조건문(Conditional Expression) ... 202
순환문(Looping Expression) ... 206
요약 ... 214
제7장 객체 만들기 ... 215
클래스 소개 ... 216
클래스 ... 218
클래스의 변수 ... 231
클래스 메쏘드 ... 235
메쏘드 변경자(Method Modifier) ... 236
메쏘드의 보안과 접근 방식 선언하기 ... 236
메쏘드 오버로딩(Method Overloading) ... 239
객체 사용하기 ... 241
객체 생성과 삭제 ... 241
생성자 메쏘드 ... 244
패키지(package) ... 247
패키지 선언 ... 248
다른 패키지에 접근하기 ... 250
패키지 이름의 규칙 ... 251
CLASSPATH 환경 변수 ... 253
패키지 요약 ... 253
상속(Inheritance) ... 254
상속 선언 ... 255
상속 사용 ... 257
상속 요약 ... 258
인터페이스(Interfaces) ... 258
인터페이스 선언 ... 260
변경자 ... 261
인터페이스 사용 ... 263
요약 ... 265
제8장 지금까지의 것들을 전부 모아서 : 스레드(Thread), 예외(Exception), 그리고 더 ... 266
스레드 ... 267
스레드의 용도 ... 268
스레드 선언 ... 268
new와 스레드의 초기화 ... 272
스레드 제거 ... 272
스레드 메쏘드 ... 273
이름이 있는 스레드들 ... 275
스레드의 동기화(Synchronization) ... 276
스레드 요약 ... 277
예외 ... 278
자바 예외의 해석 ... 278
예외를 위한 키워드들 ... 279
try, catck, finally의 예 ... 280
예외 처리에서 try를 사용하기 ... 281
예외 처리에서 catch를 사용하기 ... 282
예외 처리에서 finally를 사용하기 ... 284
예외 처리에서 throw를 사용하기 ... 286
java.lang.Exception 클래스 ... 287
예외 요약 ... 289
스트림(stream) ... 290
자바 스트림을 통한 데이터의 흐름 ... 290
스트림의 중요성 ... 292
입력 스트림(input stream) ... 292
출력 스트림(output stream) ... 302
스트림 요약 ... 307
요약 ... 308
제4부 자바 응용 프로그래밍 인터페이스(API)
제9장 자바 API 소개 ... 311
자바 API 패키지 ... 311
API 패키지의 구조 ... 312
java.lang ... 313
java.util ... 315
java.io ... 315
java.net ... 317
java.awt ... 318
java.awt.image ... 319
java.awt.peer ... 320
java.applet ... 321
sun.tools.debug ... 322
자바 API 사용하기 ... 323
요약 ... 324
제10장 java.lang, java.applet 클래스 라이브러리 ... 325
java.applet.Applet 클래스 ... 325
java.lang 패키지와 클래스들 ... 340
Boolean ... 340
Character ... 341
Class ... 341
ClassLoader ... 342
Compiler ... 342
Number, Float, Double, Integer, Long ... 343
Math ... 344
Object ... 347
Process, Runtime, System ... 350
Security Manager ... 352
String ... 353
StringBuffer ... 354
Thread ... 354
ThreadGroup ... 354
Throwable ... 354
java.lang 예외 클래스들 ... 354
java.lang 예외 클래스의 예제 ... 356
요약 ... 357
제11장 AWT 클래스 라이브러리(java.awt) ... 358
AWT 소개 ... 358
Frame 클래스로 응용 프로그램 윈도우 만들기 ... 359
메뉴와 메뉴바 사용하기 ... 361
윈도우 사용 프로그램에서 이벤트 처리하기 ... 365
Dialog 클래스로 대화상자를 구현하기 ... 365
FileDialog 클래스로 로컬 파일 시스템에 접근하기 ... 368
Panel, Layout 클래스로 컴포넌트를 구성하기 ... 370
공통 GUI 컨트롤 사용하기 ... 377
레이블과 버튼 ... 377
체크박스와 라디오 버튼 ... 380
선택란과 리스트 ... 383
텍스트 필드와 텍스트 영역 ... 386
Canvas, Graphics 메쏘드로 그리기 ... 389
기하학적인 클래스들 ... 391
글꼴 쓰기 ... 394
이미지와 관련된 클래스 ... 396
스크롤바 사용하기 ... 399
Toolkit 클래스와 플랫폼별 윈도우 구현 ... 402
요약 ... 404
제12장 자바 입·출력/유틸리티 클래스 라이브러리(java.io/java.util) ... 405
java.io 패키지 소개 ... 405
java의 입·출력 스트림이 어떻게 움직이는가 ... 406
자바의 입력 스트림 ... 406
InputStream 클래스 ... 407
InputStream 클래스와 하위 클래스들에 대해 더 자세히 ... 408
ByteArrayInputStream 클래스 ... 416
FileInputStream 클래스 ... 416
SequenceInputStream 클래스 ... 416
StringBufferInputStream 클래스 ... 417
자바의 출력 스트림 ... 417
OutputStream 클래스 ... 418
기타 입·출력 클래스들 ... 425
java.util 패키지 ... 425
Bitset 클래스 ... 426
Date 클래스 ... 428
Dictionary 클래스 ... 433
Hashtable 클래스 ... 433
Properties 클래스 ... 433
Random 클래스 ... 434
Vector 클래스 ... 434
Stack 클래스 ... 434
StringTokenizer 클래스 ... 436
요약 ... 437
제13장 네트웍 프로그래밍을 위한 클래스 라이브러리(java.net) ... 438
네트웍 클래스 라이브러리 소개 ... 438
ContentHandler 클래스 ... 438
DatagramPacket 클래스 ... 439
DatagramSocket 클래스 ... 439
InetAddress 클래스 ... 439
자바 소켓 핸들러 ... 441
자바의 URL 관련 클래스들 ... 452
URL 클래스 ... 452
요약 ... 453
제5부 웹에서 쓰일 자바 애플릿 개발하기
제14장 자바 애플릿 만들기 ... 457
QuizMaker 애플릿의 개념화와 설계 ... 458
애플릿의 구조를 정의하기 ... 460
애플릿 만들기 ... 461
1단계 : 애플릿을 테스트할 HTML 문서를 만들기 ... 461
2단계 : 클래스를 포함하는 소스 코드 파일을 만들기 ... 462
3단계 : QuizMaker 클래스를 선언하기 ... 462
4단계 : 클래스에 변수를 추가하기 ... 463
5단계 : 메쏘드를 정의하기 ... 464
6단계 : 애플릿을 컴파일하기 ... 473
완성된 애플릿 ... 474
두 번째 애플릿을 만들기 ... 477
애플릿의 개념화와 설계 ... 477
애플릿 구조를 정의하기 ... 479
애플릿을 만들기 ... 480
완성된 애플릿 ... 490
테스트와 디버깅 ... 494
요약 ... 496
제15장 자바 애플릿으로 보강된 웹 문서 만들기 ... 497
HTML 문서의 기본 구조 ... 497
URL 이해 ... 498
HTML 태그의 소개 ... 499
HTML 문서의 머리말(Header) ... 500
HTML 문서의 본체(Body) ... 500
자바를 위한 확장 HTML 태그 ... 502
APPLET 태그 ... 503
APPLET 태그의 속성(Attribute)들 ... 506
PARAM 태그 ... 510
웹 문서에 애니메이션을 넣기 ... 515
Animator 애플릿 ... 515
Animator 애플릿에 파라미터를 사용하기 ... 517
Animator 애플릿과 함께 자바 애니메이션을 만들기 ... 518
애니메이션의 깜박임(flickering)을 줄이기 ... 519
웹 위에 자바가 들어가는 문서를 내놓기 ... 523
살아 있는 애플릿을 사용하기 ... 523
웹 문서 만들기 ... 525
웹 문서(홈페이지)를 웹에 올리기 ... 528
홈페이지 보기 ... 531
자바와 다른 제품들과의 비교 ... 532
자바 대 펄(Perl) ... 532
자바 대 다른 프로그래밍 언어들 ... 533
자바 대 많이 사용되는 소프트웨어들 ... 533
자바 대 HTML ... 534
요약 ... 535
제6부 자바 응용 프로그램 개발하기
제16장 응용 프로그램 만들기 ... 539
단독 실행 응용 프로그램과 애플릿의 차이 ... 540
코드에서의 차이점 ... 540
성능에서의 차이점 ... 541
보안에서의 차이점 ... 541
응용 프로그램의 개념화와 설계 ... 542
응용 프로그램의 구조 정의 ... 545
비그래픽 환경의 응용 프로그램 예제 ... 546
그래픽 환경의 응용 프로그램 예제 ... 547
응용 프로그램 만들기 ... 553
응용 프로그램에서 인터랙티브(interactive)한 갱신을 허용하기 ... 553
로컬 하드 디스크에 기록하기 ... 557
응용 프로그램 안에서 애플릿을 포함하기 ... 558
추가 요구 ... 561
완성된 응용 프로그램 ... 567
요약 ... 577
제17장 자바 프로그램을 실세계에서 사용하기 ... 578
크고, 빠르고, 좋은 프로그램들 ... 578
실세계 응용 프로그램의 개념화 ... 579
유용한 온라인 리소스 ... 580
요구 사항 결정 ... 580
실세계 응용 프로그램의 설계 ... 581
전체적인 설계와 배치 ... 581
메인 윈도우 설계 ... 583
메뉴바 설계 ... 583
SlidePanel 객체 설계 ... 585
SlideCanvas 객체 설계 ... 586
SlideText 객체 설계 ... 586
제어판 설계 ... 587
대화상자 설계 ... 587
파일 입·출력 ... 588
객체들 사이의 관계 ... 589
실세계 응용 프로그램의 구현 ... 590
메인 윈도우 만들기 ... 591
SlidePanel 클래스 추가 ... 598
SlideCanvas 클래스 추가 ... 600
SlideText 클래스 추가 ... 604
제어판 추가 ... 608
대화상자 추가 ... 609
완성된 작품 ... 615
테스트와 디버깅 ... 627
요약 ... 630
제18장 응용 프로그램 업그레이드 ... 631
소프트웨어 개발 사이클 ... 631
개발작업 ... 631
유지 보수 작업 ... 632
수정에 필요한 제안들 ... 633
응용 프로그램 업그레이드의 개념화 ... 635
슬라이드 저작 및 저장 기능 ... 636
체크박스의 상태 바꾸기 ... 636
여러 개의 파일 읽기 ... 636
연속 재생 ... 637
읽을 수 있는 슬라이드 수를 늘리기 ... 637
최종 작업 리스트 ... 638
응용 프로그램 업그레이드 - 설계 ... 638
슬라이드 저작 및 저장 기능 ... 638
종합 ... 644
응용 프로그램 업그레이드 - 구현 ... 646
SlideCanvas 클래스 ... 646
SlideText 클래스 ... 657
SlidePanel 클래스 ... 667
ShowControls 클래스 ... 674
SildeShow 클래스 ... 681
테스트와 디버깅 ... 697
슬라이드 저작 및 저장 기능 ... 698
체크박스 ... 699
여러 개의 파일 읽기 ... 700
연속 재생 기능 ... 700
읽을 수 있는 슬라이드 수를 늘리기 ... 701
요약 ... 701
제7부 복잡한 이슈들
제19장 수준높은 애플릿을 설계하고 구현하기 ... 705
프로젝트 개발과 계획 ... 705
요구 사항 단계(Requirement Phase) ... 706
명세/분석 단계(Specification/Analysis Phase) ... 707
계획 단계(Planning Phase) ... 711
프로젝트 설계 ... 711
구현 단계(Implementation Phase) ... 715
SpreadSheet 애플릿에 사용되는 객체들을 저장할 공간 ... 715
기본 프레임의 초기화 ... 717
애플릿의 상태를 결정하는 메쏘드 ... 724
애플릿 스레드 실행 ... 725
프레임 화면 표시 ... 727
프레임 화면 표시의 갱신 ... 729
애플릿에 발생하는 이벤트들의 처리 ... 731
현재 셀값의 갱신 ... 734
수식 처리 ... 735
셀 생성 ... 738
셀의 화면 표시 준비 ... 739
유틸리티 메쏘드 ... 741
수식 파싱 ... 742
셀 화면 표시 ... 747
노드 객체 만들기 ... 749
입력 영역 만들기 ... 750
완성된 애플릿 ... 755
SpreadSheet 애플릿을 사용하기 ... 777
요약 ... 779
제20장 수준 높은 응용 프로그램 설계와 구현 ... 780
프로젝트 개발과 계획 수립 ... 780
요구 사항 결정 ... 782
필요한 객체들의 정의 ... 784
프로젝트의 완성 단계까지를 구성하기 ... 786
프로젝트 설계 ... 786
프로젝트 구현 ... 791
객체들이 들어갈 저장 공간 ... 792
메인 윈도우 만들기 ... 794
메뉴바와 풀다운 메뉴를 추가시키기 ... 796
선택 메뉴를 추가하기 ... 798
텍스트 영역 추가하기 ... 800
File 객체 추가하기 ... 801
움직일 수 있게 바퀴를 달기 ... 801
이벤트 처리하기 ... 802
유틸리티 메쏘드들을 만들기 ... 805
파일 입·출력 처리하기 ... 808
대화상자 표시하기 ... 811
대화상자 만들기 ... 813
텍스트 처리 메쏘드 ... 825
프로젝트의 완성 ... 827
요약 ... 847
제21장 네이티브 프로그램과 라이브러리와의 연계 ... 848
왜, 그리고 언제 자바 프로그램에서 네이티브(Native) 메쏘드를 사용해야 하는가? ... 848
C 프로그램을 사용하기 ... 850
자바 프로그램에서 사용할 C 프로그램을 새로 만들기 ... 850
이미 있는 C 프로그램을 사용하기 ... 856
자바 네이티브 인터페이스(JNI) 프로그래밍 ... 857
요약 ... 861
제22장 디버깅과 문제 해결 ... 862
자바 디버거 시작하기 ... 862
디버거를 직접 실행하기 ... 863
디버거를 현재 인터프리터 세션에 연계해서 사용하기 ... 864
디버거를 애플릿 뷰어 세션에 연계해서 사용하기 ... 865
디버거를 사용하여 코드의 문제를 찾아내기 ... 866
스레드와 검사 ... 867
메쏘드와 클래스 검사 ... 870
인터턴스 변수 검사 ... 877
소스 코드의 문제점을 발견하기 ... 880
요약 ... 886
제23장 자바 가상 기계(Java Virtual Machine) ... 887
가상 기계 소개 ... 887
자바 가상 기계의 기본 부분 ... 888
레지스터(Registers) ... 888
스택(Stack) ... 889
실행 환경(Execution Environment) ... 890
쓰레기 수집 히프(Garbage-Collected Heap) ... 890
상수 풀(Constant Pool) ... 891
메쏘드 영역(Method Area) ... 892
바이트 코드 명령어 셋 ... 892
바이트 코드 고찰 ... 893
명령어 셋 일람 ... 899
스택에 상수를 쌓는 명령어 ... 901
스택에 로컬 변수를 읽어들이는 명령어 ... 905
스택값을 로컬 변수에 저장하는 명령어 ... 908
배열을 관리하는 명령어들 ... 912
스택 제어 명령어 ... 920
산술 연산을 수행하는 명령어 ... 923
논리 연산을 수행하는 명령어 ... 933
변환 연산 명령어 ... 938
제어 흐름 관련 명령어 ... 943
메쏘드 리턴 ... 953
점프 테이블 관련 명령어 ... 955
객체 필드 관리 명령어 ... 957
메쏘드 호출 ... 960
예외 처리 ... 963
기타 객체 연산 ... 964
모니터(Monitors) ... 965
클래스 파일 포맷 분석 ... 966
시그내쳐 ... 969
요약 ... 970
제8부 부록
부록 A 자바 API 표 ... 973
부록 B 자바 단어집 ... 978
찾아보기 ... 989
더보기 닫기