목차
역자 서문 ... 6
서문 ... 21
1장. 컴파일, 실행, 디버깅
   기본을 세우자 ... 39
   01. 자바 컴파일과 실행 : JDK ... 40
   02. 컬러 하이라이팅 에디터를 이용한 편집과 컴파일 ... 45
   03. IDE를 이용한 컴파일, 실행, 테스트 ... 46
   04. 이 책에서 클래스 사용하기 ... 51
   05. jr을 이용한 자동 컴파일 ... 52
   06. make를 이용한 자동 컴파일 ... 53
   07. Ant를 이용한 자동 컴파일 ... 55
   08. 애플릿 실행 ... 58
   09. 디프리케이션 경고 처리 ... 60
   10. ifdef가 없는 조건적인 디버깅 ... 63
   11. 출력의 디버깅 ... 65
   12. 디버거 이용 ... 66
   13. 단위 테스트 ... 69
   14. 자바 클래스 파일 디컴파일하기 ... 72
   15. 다른 사람이 자신의 클래스를 디컴파일하지 못하게 하기 ... 75
   16. 판독 가능한 역추적 구하기 ... 76
   17. 더 많은 자바 소스 찾기 ... 78
   18. 프로그램 : 디버그 ... 80
2장. 자바 환경 다루기
   모든 것은 환경의 지배를 받는다 ... 81
   01. 환경 변수 얻기 ... 82
   02. 시스템 속성 ... 84
   03. JDK 배포판에 의존적인 코드 작성 ... 86
   04. 운영체제에 의존적인 코드 작성 ... 88
   05. 효율적인 CLASSPATH 사용 ... 90
   06. 확장 API 혹은 패키지 API 사용 ... 94
   07. 명령행 인자 파싱 ... 95
3장. 문자열
   문자열 가지고 놀기 ... 101
   01. 문자열을 서브 문자열로 분해하기 ... 104
   02. StringTokenizer를 이용한 문자열 분해 ... 105
   03. String과 StringBuffer ... 109
   04. 한 번에 한 문자씩 문자열 처리하기 ... 110
   05. 문자열 정렬 ... 112
   06. 유니코드 문자와 문자열 사이의 변환 ... 115
   07. 단어나 문자를 이용하는 문자열 뒤집기 ... 117
   08. 탭의 확장과 압축 ... 118
   09. 대소문자의 제어 ... 123
   10. 들여쓰기한 텍스트 문서 ... 125
   11. 출력 불가능한 문자 입력 ... 127
   12. 문자열 끝에 있는 공백 제거하기 ... 129
   13. 쉼표로 분리된 데이터 파싱 ... 130
   14. 프로그램 : 간단한 텍스트 포맷터 ... 136
   15. 프로그램 : Soundex 이름 비교 ... 138
4장. 정규 표현식으로 패턴 매칭하기
   패턴은 이럴 때 쓴다 ... 143
   01. 정규 표현식 ... 146
   02. RE를 어떻게 사용하는가? ... 149
   03. 자바에서 정규 표현식 사용하기 ... 151
   04. 대화식 RE 테스트 ... 153
   05. 일치하는 텍스트 찾기 ... 154
   06. 일치하는 텍스트 바꾸기 ... 156
   07. 나타나는 모든 패턴 출력 ... 157
   08. 패턴을 포함하는 행 출력 ... 160
   09. match()와 subst()에서 대소문자 제어하기 ... 162
   10. RE 미리 컴파일하기 ... 163
   11. 텍스트에서 새로운 행과 일치시키기 ... 164
   12. 프로그램 : 데이터 마이닝 ... 166
   13. 프로그램 : 전체 Grep ... 169
5장. 숫자형
   숫자형의 변신 ... 175
   01. 문자열이 유효한 수인지 확인하기 ... 178
   02. 큰 숫자형을 작은 숫자형에 저장하기 ... 180
   03. 부동 소수점형을 이용하지 않고 정수형 소수 구하기 ... 181
   04. 부동 소수점형의 정확도 구하기 ... 183
   05. 부동 소수점형 비교하기 ... 185
   06. 부동 소수점형 수의 라운딩 ... 188
   07. 수 포맷팅 ... 189
   08. 2진수, 8진수, 10진수, 16진수 사이의 변환 ... 192
   09. 정수형 연산 ... 193
   10. 로마숫자를 이용한 작업 ... 195
   11. 정확한 복수형 포맷팅 ... 200
   12. 난수의 생성 ... 202
   13. 더 좋은 난수의 생성 ... 203
   14. 삼각 함수 계산 ... 205
   15. 로그 구하기 ... 206
   16. 행렬의 곱셈 ... 207
   17. 복소수의 이용 ... 209
   18. 매우 큰 숫자형 다루기 ... 211
   19. 프로그램 : TempConverter ... 214
   20. 프로그램 : 숫자형 회문 ... 218
6장. 날짜와 시간
   시간은 관리할 때 가치가 있다 ... 223
   01. 오늘 날짜 찾기 ... 225
   02. 특정 포맷으로 날짜와 시간 출력하기 ... 226
   03. 다른 포맷으로 날짜 표시하기 ... 229
   04. YMDHMS를 Calendar나 기원후 시간으로 변환하기 ... 229
   05. 문자열을 날짜로 파싱하기 ... 230
   06. 기원후 시간을 DMYHMS로 변환하기 ... 233
   07. Date나 Calendar에서 더하거나 빼기 ... 234
   08. 두 날짜 차 ... 236
   09. 날짜 비교 ... 237
   10. 주/월/년 중 몇 번째 날 혹은 몇 번째 주인가? ... 240
   11. 달력 페이지 ... 241
   12. 정확한 타이머 ... 244
   13. 프로그램을 잠시동안 멈추기 ... 246
   14. 프로그램 : 알림 서비스 ... 247
7장. 자바를 이용한 데이터 구조
   자바로 데이터 빵틀 만들기 ... 251
   01. 배열을 이용한 데이터 구조 ... 253
   02. 배열 크기 조절 ... 254
   03. 배열처럼 그러나 좀더 동적으로 ... 256
   04. 반복자를 이용한 독립적인 데이터 접근 ... 258
   05. 연결 리스트 ... 260
   06. 해시 테이블과 해시 맵을 이용한 매핑 ... 263
   07. 속성과 환경에 문자열 저장하기 ... 264
   08. 컬렉션 정렬 ... 268
   09. 자바 1.1에서의 정렬 ... 272
   10. 정렬 요구 피하기 ... 274
   11. 집합 ... 276
   12. 컬렉션에서 객체 찾기 ... 277
   13. 컬렉션을 배열로 변환하기 ... 279
   14. 사용자 Iterator의 회전 ... 281
   15. 스택 ... 283
   16. 다차원 구조 ... 284
   17. 마지막! 컬렉션 ... 287
   18. 프로그램 : 타이밍 비교 ... 289
8장. 객체 지향 기법
   자바는 객체 지향 언어이다 ... 293
   01. 객체 출력하기 : toString()으로 포맷팅하기 ... 295
   02. equals 메소드 오버라이드 ... 297
   03. hashCode 메소드 오버라이드 ... 301
   04. clone 메소드 ... 302
   05. finalize 메소드 ... 306
   06. 내부 클래스 사용하기 ... 307
   07. 인터페이스를 통해 콜백 제공하기 ... 309
   08. 다형성과 추상 메소드 ... 313
   09. 값 넘기기 ... 315
   10. 사용자 예외 사용하기 ... 318
   11. 프로그램 : Plotter ... 319
9장. 입출력
   자바를 이용한 읽기와 쓰기 ... 325
   01. 표준 입력 읽기 ... 330
   02. 표준 출력 쓰기 ... 334
   03. 이름으로 파일 열기 ... 335
   04. 파일 복사 ... 336
   05. 파일을 문자열로 읽기 ... 340
   06. 표준 스트림의 재할당 ... 342
   07. 스트림을 이중으로 쓰기 ... 343
   08. 다른 문자셋 읽고 쓰기 ... 346
   09. 귀찮은 행 끝 문자 ... 347
   10. 플랫폼 의존적인 파일 코드 조심하기 ... 348
   11. 연속 행 읽기 ... 349
   12. 파일 스캐닝 ... 355
   13. 이진 데이터 ... 360
   14. 탐색 ... 361
   15. C로부터의 데이터 스트림 쓰기 ... 362
   16. 직렬화된 객체의 저장과 복구 ... 365
   17. SerialVersionUID로 ClassCastException 방지하기 ... 367
   18. JAR나 Zip 읽고 쓰기 ... 369
   19. 압축 파일 읽고 쓰기 ... 373
   20. 프로그램 : 텍스트를 포스트스크립트로 ... 375
   21. 프로그램 : TarList(파일 변환자) ... 379
10장. 디렉토리, 파일시스템 조작
   디렉토리와 파일이 시스템을 만든다 ... 393
   01. 파일 정보 얻기 ... 394
   02. 파일 생성 ... 398
   03. 파일명 변경 ... 399
   04. 파일 삭제 ... 400
   05. 임시 파일 생성 ... 402
   06. 파일 등록정보 변경 ... 403
   07. 디렉토리 나열하기 ... 405
   08. 디렉토리 루트 얻기 ... 408
   09. 새 디렉토리 만들기 ... 409
   10. 프로그램 : Find ... 410
11장. 직렬/병렬 포트 프로그래밍
   자바 통신 API도 알아보자 ... 415
   01. 포트 선택하기 ... 418
   02. 직렬 포트 열기 ... 423
   03. 병렬 포트 열기 ... 427
   04. 포트 충돌 방지 ... 431
   05. 정해진 방식으로 읽고 쓰기 ... 435
   06. 읽고 쓰기 위한 이벤트 조정하기 ... 439
   07. 스레드 읽고 쓰기 ... 444
   08. 프로그램 : 펜맨 플로터 ... 446
12장. 그래픽과 사운드
   멋진 화면을 보는 것은 즐겁다 ... 453
   01. Graphics 객체로 색칠하기 ... 454
   02. 그래픽 컴포넌트 테스트하기 ... 456
   03. 그리기 테스트 ... 457
   04. 컴포넌트 가운데 텍스트 그리기 ... 457
   05. 그림자 효과 ... 459
   06. 이미지 그리기 ... 462
   07. 사운드 파일 재생하기 ... 467
   08. 비디오로 움직이는 이미지 보여주기 ... 469
   09. 2D로 텍스트 그리기 ... 472
   10. 출력하기 : JDK 1.1 ... 475
   11. 출력하기 : 자바2 ... 477
   12. 프로그램 : PlotterAWT ... 480
   13. 프로그램 : Grapher ... 483
13장. GUI
   자바의 윈도우화 기능 ... 487
   01. GUI 컴포넌트 보여주기 ... 489
   02. 윈도우 레이아웃 디자인하기 ... 491
   03. 탭으로 구성한 화면 ... 494
   04. 액션 처리 : 버튼의 동작 만들기 ... 495
   05. 익명 내부 클래스를 이용한 액션 처리 ... 498
   06. 윈도우를 닫아 프로그램 끝내기 ... 500
   07. 대화상자 ... 505
   08. 윈도우에 프로그램 결과 출력하기 ... 508
   09. JFileChooser로 파일 선택하기 ... 512
   10. 색상 선택 ... 515
   11. 메인 윈도우 중앙에 두기 ... 518
   12. 스윙 프로그램의 룩앤필 바꾸기 ... 520
   13. 프로그램 : 사용자 폰트 선택자 ... 525
   14. 프로그램 : 사용자정의 레이아웃 관리자 ... 530
14장. 국제화와 지역화
   프로그램에도 국제화는 필요하다 ... 539
   01. I18N 자원으로 버튼 만들기 ... 540
   02. 가능한 모든 지역 목록 나열하기 ... 543
   03. I18N 자원으로 메뉴 생성하기 ... 544
   04. 국제화 편리 루틴 작성하기 ... 545
   05. I18N 자원을 이용하여 대화하기 ... 547
   06. 자원 번들 생성하기 ... 549
   07. 코드 JILT 처리하기 ... 550
   08. 특정 지역 사용하기 ... 552
   09. 기본 지역 설정하기 ... 553
   10. 메시지 형식 만들기 ... 555
   11. 프로그램 : Menulntl ... 557
   12. 프로그램 : BusCard ... 559
15장. 네트워크 클라이언트 Ⅰ
   소켓을 이용한 통신 ... 565
   01. 서버와 교신하기 ... 568
   02. 네트워크 주소 탐색과 보고 ... 570
   03. 네트워크 에러 처리 ... 572
   04. 텍스트형 데이터 읽고 쓰기 ... 573
   05. 이진 데이터 읽고 쓰기 ... 576
   06. 직렬화된 데이터 읽고 쓰기 ... 579
   07. UDP 데이터그램 ... 581
   08. TFTP UDP 클라이언트 ... 584
   09. 텔넷 클라이언트 프로그램 ... 590
   10. 채팅 클라이언트 ... 592
16장. 서버측 자바 : 소켓
   서버는 소켓으로 연다 ... 599
   01. 상업용 서버 열기 ... 600
   02. 응답하기(문자열 또는 이진 데이터) ... 603
   03. 객체 정보 반환하기 ... 608
   04. 다중 클라이언트 다루기 ... 609
   05. 네트워크 로깅 ... 615
   06. 프로그램 : 자바 채팅 서버 ... 620
17장. 네트워크 클라이언트 Ⅱ
   애플릿과 웹 클라이언트 ... 627
   01. 웹 페이지에 자바 내장하기 ... 628
   02. 애플릿 기술 ... 630
   03. 애플릿 호스트에 있는 서버에 연결하기 ... 633
   04. 문서를 보여주는 애플릿 작성하기 ... 636
   05. CGI 스크립트를 실행하는 애플릿 작성하기 ... 638
   06. URL의 내용 읽기 ... 640
   07. URL에서 HTML 추출하기 ... 641
   08. 파일에서 URL 추출하기 ... 644
   09. 파일명을 URL로 변환하기 ... 646
   10. 프로그램 : MkIndex ... 647
   11. 프로그램 : LinkChecker ... 653
18장. 웹 서버 자바 : 서블릿과 JSP
   서블릿과 JSP로 웹 페이지에 힘을 주자 ... 661
   01. 서블릿 처음 사용하기 : HTML 페이지 생성 ... 662
   02. 서블릿 : 폼 매개변수 처리 ... 666
   03. 쿠키 ... 670
   04. 세션 추적 ... 674
   05. 서블릿에서 PDF 생성하기 ... 680
   06. HTML과 자바의 만남 : JSP ... 687
   07. JSP Include/Forward ... 692
   08. 서블릿을 이용하는 자바 서버 페이지 ... 694
   09. 자바빈으로 JSP 단순화하기 ... 695
   10. JSP 구문 정리 ... 700
   11. 프로그램 : CookieCutter ... 701
   12. 프로그램 : JabaDot 웹 뉴스 포탈 ... 702
19장. 자바와 이메일
   메일 송수신에도 자바는 한 몫을 한다 ... 713
   01. 이메일 전송 : 브라우저 버전 ... 714
   02. 이메일 전송 : 실질적인 메일 클라이언트 제공 ... 719
   03. 메일을 사용할 수 있는 서버 프로그램 ... 723
   04. 마임 형식 메일 전송 ... 730
   05. 메일 설정 제공하기 ... 732
   06. 자바메일을 사용하지 않고 메일 전송하기 ... 734
   07. 이메일 읽기 ... 739
   08. 프로그램 : MailReaderBean ... 745
   09. 프로그램 : MailClient ... 750
20장. 데이터베이스 접속
   JDBC로 데이터베이스에 접속해보자 ... 763
   01. 텍스트 파일 데이터베이스 ... 765
   02. DBM 데이터베이스 ... 771
   03. JDBC 설치와 연결 ... 775
   04. JDBC 데이터베이스에 연결하기 ... 778
   05. JDBC 질의 보내기와 결과 가져오기 ... 782
   06. 문장을 매개변수화한 JDBC 사용하기 ... 785
   07. JDBC로 저장된 프로시저 사용하기 ... 790
   08. ResultSet을 이용한 데이터 변경 ... 791
   09. SQL을 이용한 데이터 변경 ... 792
   10. JDBC 메타데이터 찾기 ... 795
   11. 프로그램 : JDAdmin ... 802
21장. XML
   자바와 XML의 만남 ... 811
   01. XSLT를 이용해 XML 변환하기 ... 814
   02. SAX를 이용해 XML 파싱하기 ... 818
   03. DOM을 이용해 XML 파싱하기 ... 820
   04. DTD를 이용해 구조 검증하기 ... 824
   05. DOM을 이용해 자신만의 XML 생성하기 ... 825
   06. 프로그램 : xml2mif ... 827
22장. 분산 자바 : RMI
   분산 환경에서 자바 RMI로 자원을 모아보자 ... 831
   01. RMI 계약 정의 ... 833
   02. RMI 클라이언트 ... 835
   03. RMI 서버 ... 836
   04. 네트워크로 RMI 배포하기 ... 840
   05. 프로그램 : RMI 콜백 ... 841
   06. 프로그램 : RMIWatch ... 846
23장. 패키지와 패키지화
   자신만의 자바 패키지를 만들어보자 ... 855
   01. 패키지 생성 ... 856
   02. Javadoc을 이용해 클래스 문서화하기 ... 857
   03. jar를 이용해 아카이빙하기 ... 861
   04. Jar로부터 애플릿 실행하기 ... 863
   05. JDK를 이용해 애플릿 실행하기 ... 863
   06. JAR로부터 프로그램 실행하기 ... 868
   07. 클래스를 자바빈처럼 만들기 ... 868
   08. JAR에 빈 집어넣기 ... 873
   09. WAR 파일에 서블릿 패키지화하기 ... 874
   10. 일단 작성하면 설치는 어디에서나 가능하다 ... 875
   11. 자바 웹 스타트 ... 876
   12. 사용자정의 JAR 파일에 서명하기 ... 883
24장. 스레드 자바
   스레드로 동시에 여러 작업이 충돌하지 않도록 조절하자 ... 885
   01. 다른 스레드로 코드 실행하기 ... 887
   02. 애니메이션으로 움직이는 이미지 표시하기 ... 892
   03. 스레드 정지 문제 ... 896
   04. 랑데부와 타임아웃 ... 899
   05. 스레드 통신 : 동기화 코드 ... 900
   06. 스레드 통신 : wait(), notifyAll() ... 907
   07. 편집기에서 백그라운드 저장하기 ... 914
   08. 스레드를 사용하는 네트워크 서버 ... 916
25장. 리플렉션과 CLASS 클래스
   클래스 정보를 찾아보자 ... 927
   01. 클래스 배치자 구하기 ... 928
   02. 메소드와 필드 찾아 이용하기 ... 930
   03. 클래스를 동적으로 로딩하고, 인스턴스화하기 ... 934
   04. 클래스 생성 ... 937
   05. 실행 시간 ... 939
   06. 클래스 정보 출력하기 ... 943
   07. 프로그램 : CrossRef ... 945
   08. 프로그램 : AppletViewer ... 952
26장. 다른 언어와 함께 자바 사용하기
   외부 프로그램도 자바처럼 사용해보자 ... 961
   01. 프로그램 실행 ... 962
   02. 프로그램 실행과 출력 캡쳐 ... 966
   03. BSF로 자바와 스크립트 섞기 ... 969
   04. 네이티브 코드(C/C++) 섞기 ... 975
   05. 네이티브 코드에서 자바 호출하기 ... 982
   06. 프로그램 : DBM ... 982
찾아보기 ... 983
닫기