목차
제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
닫기