제1장 자바의 천재성 데이터 타입과 객체의 완벽한 균형 ... 15 가비지 컬렉션을 통한 메모리 관리 ... 16 완벽과 명료의 조화 : 멀티스레딩 모델 ... 17 예외 처리의 언어 차원 지원 ... 18 다형성 추구를 위한 스트림 지원 ... 19 바이트코드를 통한 이식성과 보안 ... 20 다양한 API 지원 ... 21 자바 애플릿 ... 22 혁명은 계속되고 있다 ... 23 제2장 재귀 용법을 활용한 파서 표현 ... 27 파싱 표현들: 문제점 ... 28 표현 파싱하기 ... 29 표현의 분리 ... 31 간단한 표현 파서 ... 35 파서 이해하기 ... 43 파서에서 변수 처리하기 ... 45 재귀적 용법 파서에서의 구문 검사 ... 55 계산기 애플릿 ... 56 시도해 볼만한 아이디어 ... 59 제3장 자바로 언어 인터프리터 구현하기 어떤 컴퓨터 언어를 해석할 것인가? ... 63 인터프리터에 대한 개관 ... 64 Small BASIC 인터프리터 ... 65 Small BASIC의 수식 파서 ... 87 Small BASIC의 수식 ... 88 Small BASIC의 토큰 ... 89 인터프리터 ... 94 InterpreterException 클래스 ... 95 SBasic의 생성자 ... 96 키워드 ... 97 run() 메소드 ... 99 sblnterp() 메소드 ... 100 할당 ... 101 PRINT 구문 ... 102 INPUT 구문 ... 104 GOTO 구문 ... 106 IF 구문 ... 108 FOR 루프 ... 109 GOSUB ... 113 END 구문 ... 114 Small BASIC의 이용 ... 115 더 많은 Small BASIC 샘플 프로그램들 ... 116 인터프리터의 기능 강화 및 확장 ... 118 자신만의 언어 만들기 ... 119 제4장 자바로 다운로드 매니저 만들기 인터넷 다운로드에 대해 이해하기 ... 122 다운로드 매니저에 대한 개괄 ... 123 Download 클래스 ... 124 Download의 변수들 ... 129 Download의 생성자 ... 129 download() 메소드 ... 129 run() 메소드 ... 130 stateChanged() 메소드 ... 134 동작 메소드와 접근자 메소드 ... 135 ProgressRenderer 클래스 ... 135 DownloadsTableModel 클래스 ... 137 addDownload() 메소드 ... 139 clearDownload() 메소드 ... 140 getColumnClass() 메소드 ... 140 getValueAt() 메소드 ... 140 update() 메소드 ... 141 DownloadManager 클래스 ... 142 DownloadManager의 변수 ... 149 DownloadManager의 생성자 ... 149 verifyUrl() 메소드 ... 150 tableSelectionChanged() 메소드 ... 150 updateButtons() 메소드 ... 151 Action Event 처리하기 ... 152 다운로드 매니저를 컴파일하고 실행하기 ... 153 다운로드 매니저의 확장 ... 154 제5장 자바로 이메일 클라이언트 구현하기 이메일의 작동 원리 ... 157 POP3 ... 157 IMAP ... 157 SMTP ... 157 이메일을 주고받기 위한 일반적인 절차 ... 158 JavaMail API ... 158 JavaMail의 개요 ... 159 간단한 이메일 클라이언트 ... 160 ConnectDialog 클래스 ... 162 DownloadingDialog 클래스 ... 169 MessageDialog 클래스 ... 170 MessageTableModel 클래스 ... 178 EmailClient 클래스 ... 183 이메일 클라이언트 컴파일하고 실행하기 ... 203 이메일 클라이언트 확장하기 ... 204 제6장 자바로 작성한 웹 크롤링 웹 크롤러의 기초 ... 209 로봇 프로토콜 ... 210 검색 크롤러 개요 ... 211 SearchCrawler 클래스 ... 212 SearchCrawler에 선언된 변수들 ... 232 SearchCrawler 생성자 ... 232 actionSearch() 메소드 ... 233 search() 메소드 ... 236 showError() 메소드 ... 239 updateStats() 메소드 ... 239 addMatch() 메소드 ... 241 verifyUrl() 메소드 ... 241 isRobotAllowed() 메소드 ... 242 downloadPage() 메소드 ... 245 removeWwwFromUrl() 메소드 ... 246 retrieveLinks() 메소드 ... 247 searchStringMatches() 메소드 ... 254 crawl() 메소드 ... 255 검색 크롤러 컴파일하고 실행하기 ... 258 나만의 웹 크롤러를 개발하자 ... 261 제7장 자바로 HTML 렌더링하기 JEditorPane으로 HTML 렌더링하기 ... 264 하이퍼링크 이벤트의 처리 ... 265 미니 웹 브라우저 만들기 ... 266 MiniBrowser 클래스 ... 267 MiniBrowser의 변수들 ... 274 MiniBrowser의 생성자 ... 274 actionBack() 메소드 ... 275 actionForward() 메소드 ... 276 actionGo() 메소드 ... 276 showError() 메소드 ... 277 verifyUrl() 메소드 ... 277 showPage() 메소드 ... 278 updateButtons() 메소드 ... 280 hyperlinkUpdate() 메소드 ... 281 미니 웹 브라우저를 컴파일하고 실행하기 ... 282 HTML 렌더링의 가능성 ... 283 제8장 자바를 활용한 통계 및 그래프 기법 표본, 모집단, 분산, 변수 ... 287 기본 통계학 ... 287 평균(Mean) ... 288 중앙값(median) ... 288 최빈값(mode) ... 289 분산과 표준 편차 ... 291 회귀식 ... 293 상관 계수 ... 295 Stats 클래스 전체 보기 ... 298 그래프 그리기 ... 301 데이터 단위 크기 조정 ... 302 Graphs 클래스 ... 303 그래프와 final 인스턴스 변수들 ... 308 Graphs 생성자 ... 310 paint() 메소드 ... 312 bargraph() 메소드 ... 316 scatter() 메소드 ... 316 regplot() 메소드 ... 317 통계 어플리케이션 ... 317 StatsWin 생성자 ... 323 itemStateChanged() 핸들러 ... 324 actionPerformed() 메소드 ... 325 shutdown() 메소드 ... 326 createMenu() 메소드 ... 326 DataWin 클래스 ... 326 완성된 프로그램 만들기 ... 327 간단한 통계 애플릿 만들기 ... 330 시도해 볼만한 아이디어 ... 333 제9장 재무 애플릿과 서블릿 대출 상환 금액 계산하기 ... 336 RegPay 필드들 ... 341 init() 메소드 ... 342 actionPerformed() 메소드 ... 345 paint() 메소드 ... 345 compute() 메소드 ... 347 투자의 미래 가치 계산하기 ... 347 미래 가치를 만들어내기 위해 필요한 초기 투자 비용 계산하기 ... 352 원하는 연금을 위해 필요한 초기 투자 비용 계산하기 ... 357 주어진 투자에 대해 최대 연금 계산하기 ... 362 대출 잔액 계산하기 ... 367 재무 서블릿 만들기 ... 372 Tomcat 사용하기 ... 372 RegPay 애플릿을 서블릿으로 변환하기 ... 374 RegPayS 서블릿 ... 374 시도해 볼만한 아이디어 ... 379 제10장 AI 기반의 문제 해결 표현 방식과 용어 ... 382 조합 폭발 ... 384 탐색 기술들 ... 386 탐색 방법 평가하기 ... 386 문제 ... 387 그래픽 표현 ... 388 Flightlnfo 클래스 ... 390 깊이 우선 검색 ... 391 깊이 우선 검색의 분석 ... 403 너비 우선 검색 ... 403 너비 우선 검색의 분석 ... 406 추론적 방법 추가하기 ... 407 언덕 오르기 검색 ... 408 언덕 오르기 방식의 분석 ... 414 최소 비용 검색 ... 415 최소 비용 검색의 분석 ... 416 다수의 해결책 찾기 ... 417 경로 제거 방식 ... 417 노드 제거 방식 ... 418 최적의 해결책 찾기 ... 425 잃어버린 키 문제로 되돌아가기 ... 431 찾아보기 ... 435