목차
Part_1 자바 씨앗 뿌리기
Chapter_1 About Java ... 21
01. 자바의 구성과 특징 ... 23
02. JCP(Java Community Process) ... 28
03. JDK 1.4 설치와 툴 ... 29
JDK 설치 ... 30
JDK의 여러 개발도구 쓰기 ... 36
JDK의 기본 예제 ... 49
자바 한 잔 마셔보기 ... 52
Chapter_2 자바 언어와 친해지기 ... 55
01. 기본 문법 ... 56
키워드 ... 56
변수 ... 57
기본 데이터 유형 ... 59
연산자 ... 68
제어문 ... 82
블록에서의 선언범위 ... 91
Assertion ... 94
소스코드의 작성 ... 98
02 객체지향 ... 99
객체(Object)에 대한 이야기 ... 99
Class에 대한 이야기 ... 100
Instance에 대한 이야기 ... 101
객체지향 프로그래밍 ... 101
자바와 객체지향 ... 102
03. 예외처리와 디버깅 ... 141
예외처리 ... 141
디버깅 ... 148
Part_2 기본 패키지로 토대 다지기
Chapter_3 java.lang 패키지 ... 161
01. java.lang.Obeject ... 162
public boolean equals(Object obj) ... 162
protected boolean clone() throws CloaneNotSupportedException ... 165
public void finalize() throws Throwable ... 168
그 밖의 메소드들 ... 171
02. System 클래스 ... 172
표준 입출력 ... 172
쓰레기 수거와 네이티브 라이브러리 ... 172
네이티브 라이브러리 로딩 ... 173
시간 구하기 ... 173
배열복사 ... 174
시스템 프로퍼티 ... 174
그 밖의 메소드들 ... 176
03. Runtime 클래스 ... 177
getRuntime() ... 177
System에서 곧바로 호출되는 메소드들 ... 178
메모리 관련 메소드들 ... 178
다른 프로세스를 실행할 수 있는 exec() ... 179
기타 메소드들 ... 180
04. java.lang.Math와 java.lang.StrictMath와 java.math 패키지 ... 180
java.lang.Comparable과 java.lang.CharSequence ... 182
java.lang.String ... 184
05. java.lang.StringBuffer ... 188
06. Wrapper 클래스 ... 191
07. java.lang.Chracter.SubSet과 java.lang.Character.UnicodeBlock ... 192
08. 클래스 로더(java.lang.ClassLoader) ... 193
Chapter_4 java.io(스트림에 대해서) ... 197
01. 바이트 기반 스트림 ... 199
java.io.InputStream ... 199
java.io.OutputStream ... 201
read()와 write()는 blocking 메소드 ... 205
파일을 나타내는 java.io.File ... 206
파일 스트림 ... 211
스트림을 제어하는 필터 스트림 ... 214
데이터 스트림 ... 215
객체 스트림 ... 218
입출력이 자유로운 파일 스트림 ... 227
그 밖의 바이트 기반 스트림들 ... 229
02. 캐릭터 기반 스트림 ... 231
문자셋(Charset, Encoding) ... 231
캐릭터 기반 스트림의 구조 ... 233
바이트 읽기가 아닌 문자 읽기 ... 234
나머지 캐릭터 기반 스트림들 ... 236
입력데이터를 검사해보는 StreamTokenizer ... 238
Chapter_5 프로세스(Process)와 스레드(Thread) ... 241
01. 자바에서의 프로세스 ... 245
02. 자바에서의 스레드 ... 248
03. 스레드의 핵심, java.lang.Runnable ... 253
04. 스레드의 우선순위 ... 254
05. 객체에 대한 스레드의 동기화, synchronized ... 257
06. Object 클래스의 wait()과 notity() ... 262
07. 스레드의 Starvation(기아)와 Dead lock(교착상태) ... 264
08. 스레드를 제어하는 나머지 방법 ... 264
09. 스레드의 상태 ... 267
10. 스레드를 묶는 java.lang.ThreadGroup ... 269
11. Thread의 기타 메소드들 ... 269
Part_3 고급 패키지 활용하기
Chapter_6 일반 유틸리티 패키지(java.util) ... 273
01. 일반 유틸리티 클래스군 ... 275
java.util.Properties ... 275
java.io.StringTokenizer ... 282
BitSet ... 284
날짜관련 클래스들 ... 288
관찰자 ... 292
난수 ... 294
Comparator ... 296
Timer와 TimerTask ... 298
02. Java Collections Framework 클래스군 ... 305
java.util.Set ... 307
java.util.List ... 313
java.util.Map ... 316
Enumeration과 Iterator, ListIterator, RandomAccess ... 322
java.util.Collections와 java.util.Arrays ... 326
03. 세계화, 지역화 클래스군 ... 330
java.util.Locale ... 331
Encoding ... 336
TimeZone ... 338
세계화, 지역화 프로그램 ... 339
java.util.Currency ... 348
Chapter_7 고급 유틸리티 패키지(java.util.logging) ... 351
01. 로그 패키지(java.util.logging) ... 352
java.util.logging.Level ... 354
java.util.logging.Filter ... 355
Logger와 LogManager ... 356
LogRecord ... 358
Handler ... 358
Formatter ... 360
02. Preferences API(java.util.prefs) ... 362
java.util.prefs.Preferences ... 363
Preferences용 Listener와 Event ... 368
03. 정규표현식(java.util.regex) ... 372
Regular Expressions 문법 ... 373
Pattern과 Matcher ... 384
04. 압축(java.util.jar, java.util.zip) ... 395
GZIP 형식으로 압축하기 ... 396
GZIP 형식으로 압축풀기 ... 398
Zip 형식으로 압축하기 ... 400
Zip 형식으로 압축풀기 ... 403
Zip 형식의 편의 클래스, ZipFile ... 406
Jar 형식과 Executable Jar 파일 ... 409
05. java.text ... 412
텍스트 형식화 ... 413
Chapter_8 네트워크 패키지 ... 431
01. 일반 네트워킹(java.net) ... 432
인터넷 ... 433
IPv4와 IPv6 ... 437
InetAddress, SocketAddress 클래스 ... 441
TCP ... 444
UDP ... 462
URL과 URI ... 473
02. 분산 네트워킹(java.rmi) ... 513
RMI의 구조 ... 514
RMI를 하나의 디렉토리에서 구현해보기 ... 515
RMI 서버와 RMI 클라이언트를 분산해서 구현해보기 ... 521
필요할 때만을 위한 RMI Activation ... 528
Chapter_9 New I/O(java.nio) ... 535
01. java.nio의 Buffer ... 536
Buffer의 소개 ... 538
Buffer의 기본동작들 ... 539
Buffer의 하위 클래스들 ... 546
02. java.nio.channels 패키지 ... 552
AbstractInterruptibleChannel ... 557
FileChannel ... 558
03. Selectable 채널 ... 569
SelectableChannel과 AbstractSelectableChannel ... 570
Selector와 SelectionKey ... 574
ServerSocketChannel과 SocketChannel ... 578
DatagramChannel ... 589
Pipe.SinkChannel과 Pipe.SourceChannel ... 593
04 java.nio.charset 패키지 ... 597
Chapter_10 일반 GUI 프로그래밍(AWT) ... 605
01. AWT의 구조 ... 608
02. 모든 컴포넌트의 어머니, Component ... 613
크기, 위치에 관한 메소드 ... 614
색깔, 글꼴, 커서에 관한 메소드 ... 616
설정에 관한 메소드 ... 618
03. Container와 Top-Level 컨테이너(Window, Frame, Dialog) ... 622
04. 컴포넌트를 배치하는 LayoutManager ... 631
ComponentOrientation ... 632
5구역으로 배치하는 BorderLayout ... 634
가로로 컴포넌트를 배치하는 FlowLayout ... 636
격자로 영역을 구분하는 GridLayout ... 638
펼쳤다 접었다 하는 CardLayout ... 640
강력한 배치지정을 하는 GridBagLayout ... 642
LayoutManager 없이 컴포넌트 배치하기 ... 646
05. 이벤트 핸들링과 AWT 컴포넌트 ... 648
ActionEvent와 ActionListener ... 651
AdjustmentEvent와 AdjustmentListener ... 654
ComponentEvent와 ComponentListener, ComponentAdapter ... 658
ContainerEvent와 ContainerListener, ContainerAdapter ... 661
FocusEvent와 FocusListener, FocusAdapter ... 664
WindowEvent와 WindowListener, WindowFocusListener, WindowStateListener, WindowAdapter ... 667
InputEvent ... 673
KeyEvent와 KeyListener, KeyAdapter ... 676
MouseEvent와 MouseWheelEvent 그리고 MouseListener, MouseAdapter, MouseMotionListener, MouseMotionAdapter, MouseWheelListener ... 680
ItemEvent와 ItemListener ... 687
TextEvent와 TextListener ... 692
HierachyEvent와 HierachyListener, HierarchyBoundsListener, HierarchyBoundsAdapter ... 694
저수준 이벤트 핸들링 ... 698
EventQueue ... 700
06. Graphics와 Image, AWT의 편의 클래스들 ... 702
그래픽을 위한 기본 환경, Graphics ... 703
AWT를 위해 존재하는 Toolkit ... 706
그림을 위한 Image와 ImageObserver, MediaTracker ... 709
자동화된 테스트를 가능하게 해주는 Robot ... 714
07. 컴포넌트웨어, JavaBeans ... 719
JavaBeans의 개요 ... 720
Properties와 프로그래밍 패턴 ... 723
Indexed Property ... 723
Bound Property ... 726
Constrained Property ... 734
JavaBeans의 영속적 저장 ... 742
Chapter_11 일반 GUI 프로그래밍(Swing) ... 743
01. AWT와 Swing의 차이 ... 745
02. Swing의 기본 구조 ... 748
03. Swing 컴포넌트의 특징 ... 752
Swing의 Top-Level 컨테이너 ... 752
Swing 컴포넌트의 뿌리, JComponent ... 758
아이콘을 표시하는 Icon ... 763
박스를 쌓는 컨테이너, Box ... 766
툴팁(ToolTip) ... 770
테두리를 나타내는 Border ... 771
JOptionPane ... 775
시간간격을 두고 이벤트가 발생하는 Timer ... 780
고품격 이벤트 추상화 중의 하나인 KeyStroke ... 781
기타 재미있는 Swing 클래스들 ... 786
04. Swing의 일반 컴포넌트들과 Swing용 레이아웃 ... 793
Swing의 일반 컴포넌트들 ... 793
05. Swing의 고급 컴포넌트들 ... 845
테이블을 나타내는 JTable ... 845
트리를 나타내는 JTree ... 858
Chapter_12 GUI의 고급 기능 ... 869
01. Focus 관리 시스템 ... 870
Focus 관리 시스템의 기본 개념들 ... 872
나름의 KeyboardFocusManager와 FocusTraversalPolicy 구현하기 ... 876
02. Clipboard와 Drag & Drop ... 889
데이터를 임시 저장하는 Clipboard ... 889
직관적인 데이터 이동을 위한 Drag & Drop ... 897
03. Java2D ... 912
Paint 설정 ... 916
Stroke 설정 ... 921
Font 설정 ... 924
Transform ... 929
Composite ... 936
Clip ... 938
Rendering Hints 설정 ... 940
04. GraphicsDevice와 GraphicsEnvironment, GraphicsConfiguration을 통한 스크린 세팅 ... 942
FullScreen 배타적 모드를 만들고 디스클레이 모드를 바꿔보자 ... 944
FullScreen에서의 Active Rendering ... 948
FullScreen에서의 Buffering ... 952
서버 환경을 위한 Headless 설정 ... 958
05. 프린터를 통한 출력 ... 959
Java2D를 위한 프린팅 ... 960
Java Print Service ... 964
Java2D를 위한 Java Print Service ... 974
Chapter_13 Applet과 Java Plug-In ... 981
01. Applet의 삶과 죽음 ... 983
02. Applet을 만들어보자 ... 984
03.〈applet〉태그에 관하여 ... 987
〈applet〉태그에서 반드시 사용되어야 하는 지시어 ... 988
codebase의 사용법 ... 989
Applet을 압축해서 다운로드받는 방법 ... 990
직렬화된 Applet을 되살리기 ... 991
BookShelf 클래스 ... 993
웹 페이지 내의 Applet 위치 정렬 ... 995
Applet에게 Parameter 넘겨주기 ... 996
사운드 효과를 위한 AudioClip ... 996
기타 Applet에 관련된 몇 가지 내용 ... 997
Applet을 다른 용도로 활용하기 ... 998
04. 웹브라우저에게 자바생명력을 불어넣는 Java Plug-In ... 1001
Chapter_14 이미지와 사운드 프로그래밍 ... 1007
01. Image I/O ... 1008
유틸리티 클래스인 ImagelO ... 1009
다기능 이미지 처리를 위한 ImageReader와 ImageWriter ... 1012
용량이 큰 이미지를 적은 메모리로 다루기 ... 1017
02. Java Sound ... 1018
샘플링 데이터 다루기 ... 1020
MIDI 데이터 다루기 ... 1047
Chapter_15 응용 패키지 ... 1057
01. 보안 패키지 ... 1058
암호화의 의미와 해시함수 ... 1059
Key와 인증서 및 전자사인의 개념 ... 1061
Key Pair를 만들고 Applet에 전자사인하기 ... 1067
공인 인증서 받기 ... 1076
02. 네이밍 서비스와 디렉토리 서비스를 제공하는 JNDI ... 1084
DNS 서비스 프로바이더 ... 1087
File System 서비스 프로바이더 ... 1089
03. 데이터베이스 프로그래밍 ... 1092
JDBC(Java Database Connectivity) 시작하기 ... 1093
데이터베이스의 개념과 간단한 SQL 사용법 ... 1104
Statement와 ResultSet을 통해서 데이터베이스에 접근하기와 ResultSet의 커서 옮기기 ... 1107
BLOB과 CLOB ... 1136
04. JavaBeans화된 ResultSet인 RowSet ... 1158
CachedRowSet ... 1159
WebRowSet ... 1162
JdbcRowSet ... 1164
FilteredRowSet ... 1165
05. 분산 트랜잭션 ... 1165
06. Java API for XML Processing ... 1166
Document Object Model ... 1171
Simple API for XML ... 1179
JavaBeans의 영속적 저장 ... 1187
Chapter_16 응용 예제 ... 1197
01. 인터넷 복권 ... 1198
02. 비만에 대한 프로그램 ... 1207
Appendix 파워 프로그래머를 향해서
01. JavaDoc(API 문서 보는 법) ... 1218
02. Java Web Start ... 1220
03. JBuinder 6 Personal 설치와 JBuinder 6에서 JDK 1.4 쓰기 ... 1225
04. 프로그램 개발에 있어 프로그래밍 언어 외적인 요인 ... 1237
05. 이 책을 공부한 뒤에 볼만한 책들과 앞으로 공부해야 할 주제들 ... 1240
06. 맺음말 ... 1244
닫기