1 자바 첫걸음 1.1 자바의 과거와 현재 ... 333 자바의 과거 ... 3 자바의 현재 ... 3 1.2 자바란 무엇인가? ... 4 1.3 자바 가상머신(JVM : Java Virtual Machine) ... 6 1.4 자바의 특징 ... 10 1.5 자바 맛보기 ... 12 자바 프로그램의 종류 ... 12 JDK 설치하기 ... 12 애플리케이션과 애플릿 ... 14 1.6 자바의 핵심 API ... 22 1.7 1장에서 배운 것... ... 23 2 자바 기본 문법 2.1 자바 원시파일 기본 구성요소 ... 27 미리 정의된 토큰 ... 27 사용자가 정의하는 토큰 ... 29 2.2 자료형(Data types) ... 32 기본자료형(Primitive data type) ... 34 2.3 식과 연산자 ... 37 산술 연산자 ... 37 증/감 연산자 ... 38 비교 연산자 ... 39 논리 연산자 ... 40 비트 연산자 ... 40 조건 연산자 ... 42 케스트 연산자 ... 42 Math 클래스에서 제공하는 연산자 ... 44 2.4 문장 ... 45 블록문 ... 46 조건문 ... 46 반복문 ... 50 분기문 ... 54 2.5 배열(Array) ... 56 2차원 배열 ... 58 2.6 문자열(String)과 랩퍼 클래스 ... 61 String 클래스의 문자열 ... 61 StringBuffer 클래스의 스트링 버퍼 ... 66 랩퍼 클래스 ... 67 2.7 2장에서 배운 것 ... 70 3 객체지향(Object Oriented) 3.1 객체와 클래스 개넘 잡기 ... 75 3.2 객체, 클래스 자바로 표현하기 ... 77 3.3 메소드 ... 80 메소드의 구성요소 ... 80 생성자(Constractor) ... 89 메소드의 중복정의 (Overloading) ... 92 클래스 메소드/클래스 변수 ... 95 3.4 확장 클래스(클래스의 상속) ... 97 메소드의 재정의 (Overriding) ... 101 확장 클래스의 생성자 ... 102 3.5 클래스 수정자와 접근 제한자 ... 106 수정 자(Modifiers) ... 106 접근 제한자 (Specifier) ... 110 3.6 3장에서 배운 것 ... 111 4 인터페이스(Interface)와 패키지 4.1 인터페이스 ... 115 인터페이스의 선언 ... 116 인터페이스의 구현 ... 117 4.2 패키지(Package) ... 120 패키지의 선언 ... 120 패키지의 사용 ... 121 4.3 4장에서 배운 것 ... 122 5 애플릿 5.1 애플릿 클래스에서 제공하는 기본 메소드 ... 127 5.2 웹(HTML) 문서에 애플릿 등록하기 ... 128 일반적인 〈Applet〉 태그의 형식 ... 128 애플릿의 위치 알리기 ... 129 그 외 〈Applet〉 태그의 옵션 속성 ... 129 5.3 애플릿에 특정값 전달하기 ... 130 5.4 5장에서 배운 것 ... 132 6 그래픽 6.1 도형 그리기 ... 135 선 그리기 ... 136 사각형 그리기 ... 136 타원 그리기 ... 138 호 그리기 ... 139 다각형 그리기 ... 139 지우기와 복사 ... 140 6.2 텍스트와 색상 ... 141 폰트명과 스타일 ... 142 색상 ... 144 6.3 6장에서 배운 것 ... 146 7 윈도우 프로그래밍 7.1 GUI 컴포넌트의 개념 ... 151 컴포넌트의 분류 ... 152 배치 관리자 ... 153 7.2 컨테이너 컴포넌트 ... 163 프레임(Frame) ... 164 패널(Panel) ... 171 Insets ... 172 7.3 기본 컴포넌트들 ... 172 버튼(Button) ... 173 라벨(Label) ... 174 텍스트 컴포넌트 ... 175 리스트 ... 177 체크박스 ... 179 Choice ... 178 스크롤바 ... 180 메뉴 ... 181 7.4 이벤트(Event) ... 184 자바의 이벤트 모델 ... 184 각 컴포넌트에서 발생되는 이벤트 ... 188 이벤트의 요약 ... 203 7.5 그외 컴포넌트들 ... 205 대화상자(Dialogs) ... 205 파일 대화상자(File dialog) ... 208 7.6 7장에서 배운것 ... 210 8 다중 스레드(Thread) 8.1 스레드의 이해 ... 215 8.2 스레드 만들기 ... 217 8.3 스레드의 상태 ... 220 스레드 객체의 생성(New Thread) ... 221 수행 가능(Runnable) 상태와 수행불가능 상태 ... 221 스레드의 종료 ... 222 8.4 스레드의 우선순위와 스케줄링 ... 222 우선순위 ... 223 스케줄링 ... 224 8.5 동기화 ... 227 동기화 메소드 ... 229 동기화 문장 ... 230 8.6 wait(), notify() ... 231 8.7 8장에서 배운 것 ... 233 9 멀티미디어 9.1 이미지 ... 237 이미지의 적재 ... 237 이미지 보이기(그리기) ... 238 JDK 1.1에서 추가된 drawImage()의 활용 ... 240 미디어 트랙커 (Media Tracker)의 이용 ... 244 9.2 애니메이션 ... 247 애니메이션 루프 ... 247 화면을 갱신하는 시간간격 일정하게 유지하기 ... 250 화면 떨림(Flickering) 현상 ... 253 더블 버퍼링(Double buffering) ... 254 이미지 스트립(Strip)의 사용 ... 259 9.3 사운드 ... 262 9.4 9장에서 배운 것 ... 264 10 예외(Exception) 처리 10.1 예외의 이해를 위한 간단한 예 ... 268 10.2 예외 클래스의 종류 ... 272 Error 클래스 ... 273 RuntimeException 클래스 ... 273 기타 클래스 ... 274 10.3 10장에서 배운 것 ... 274 11 입출력 스트림 11.1 입력/출력 스트림(InputStream/OutputStream) ... 282 OutputStream 클래스에서 제공되는 메소드 ... 282 InputStream 클래스에서 제공하는 메소드 ... 283 11.2 파일 관련 스트림 ... 286 File 클래스 ... 286 RandomAccessFile 클래스 ... 288 11.3 파일 입출력 스트림 ... 290 FileOutputStream 클래스 ... 291 FilelnputStream 클래스 ... 292 FileWrite와 FileReader 클래스 ... 292 11.4 11장에서 배운 것 ... 293 12 네트워크 12.1 InetAddress 클래스 ... 299 객체 생성 관련 메소드 ... 299 InetAddress 객체로부터 정보를 얻기 위한 메소드 ... 300 12.2 URL 클래스 ... 301 생성자(URL 객체의 생성) ... 302 URL 파싱(Parsing)과 관련된 메소드 ... 302 URL 클래스를 이용하여 서버에 접속하기 ... 303 12.3 Socket 클래스와 ServerSocket 클래스 ... 304 Socket 클래스 ... 304 12.4 간단한 채팅 프로그램 ... 311 채팅 클라이언트 ... 312 채팅 서버 프로그램 ... 315 12.5 UDP 프로토콜의 사용 ... 317 DatagramSocket ... 317 DatagramPacket ... 318 UDP 패킷의 전송과 수신 ... 318 12.6 12장에서 배운 것 ... 322 13 스윙(Swing) 13.1 JFC와 스윙(Swing) ... 327 13.2 MVC와 스윙 ... 328 13.3 테두리(Borders) ... 335 자신의 테두리 만들기 ... 336 13.4 대화상자와 옵션 패널(Option Panes) ... 339 JOptionPane ... 339 13.5 진행 막대(Progress Bar) ... 352 단순 진행 막대 ... 352 진행 모니터(Progress Monitor) ... 355 ProgressMonitorInputStream ... 359 13.6 Tree ... 361 트리의 기본 모델 ... 363 TreePath의 활용 ... 365 트리의 이벤트 처리 ... 368 트리를 이용한 응용 ... 373 13.7 테이블(Table) ... 381 테이블 모델 ... 383 자신의 테이블 모델 만들기 ... 385 14 JDBC 14.1 JDBC란? ... 399 사용 예제 ... 400 14.2 JDBC의 단계별 이해 ... 407 JDBC URL ... 407 JDBC 드라이버 ... 408 질의와 처리 ... 411 JDBC와 Table의 활용 ... 420 클라이언트/서버 방식의 JDBC 프로그램 ... 425 15 RMI(Remote Method Invocation) 15.1 자바 RMI ... 431 자바 분산 객체 모델 ... 432 RMI 시스템 아키텍처 ... 433 RMI 지원 API 패키지 ... 434 15.2 RMI를 사용한 원격 객체 통신 ... 436 (1) 원격 인터페이스의 정의 ... 437 (2) 원격 인터페이스의 구현(원격 객체/클래스의 정의) ... 438 (3) 서버 프로그램의 작성 ... 440 (4) 클라이언트 프로그램의 작성 ... 441 15.3 원격 객체 활성화 ... 448 활성화 가능한 원격 서버 만들기 ... 448 활성화 가능한 원격 서버 등록 프로그램 만들기 ... 449 활성화 가능한 원격 서버 컴파일과 실행 ... 452 15.4 RMI를 이용한 흠페이지 카운터 예제 ... 457 소켓을 이용한 카운터 만들기 ... 457 RMI을 이용한 카운터 만들기 ... 467 15.5 CallBack을 이용한 RMI 채팅 프로그램 예제 ... 475 16 서블릿(Servlet) 16.1 서블릿이란 ... 487 웹 서버 없이 JSDK만으로 서블릿 테스트하기 ... 488 16.2 HTTP와 CGI의 기본 개념 ... 491 16. 3 서블릿의 기본 구조 ... 495 16.4 서블릿의 작성 ... 497 웹 서버의 설치 ... 500 서블릿의 실행 ... 502 서블릿을 실행하는 3가지 방법 ... 504 16.5 Form 데이터의 처리 ... 506 폼의 자료 읽기 ... 507 폼으로부터 입력된 데이터 저장하기 ... 509 파일 업로드 ... 515 16.6 세션 트랙킹 (tracking) ... 520 쿠키 ... 521 세션 객체 ... 526 부록 부록1 연산자 우선순위 ... 535 부록2 이벤트 클래스 계층구조(JDK 1.1 이상) ... 536 부록3 이벤트 종류와 이에 대응하는 경청자 및 어댑터 ... 537 이벤트 ... 537 경청자 ... 543 부록4 클래스 계층도(Class Hierarchy) ... 547 부록5 패키지 요약 ... 559 부록6 시스템 속성 ... 562 java.util.Properties에서 정의된 메소드 ... 564 부록7 Calendar와 Date 클래스 565