미리보기
JAVA 프로그래밍 원리(성공과 실패를 결정하는 1%의)
[ Java 프로그래밍의 기본지식과 개념을 배울 수 있는 책!! ] 이 책은 이미 ...
ISBN 89-315-4870-2
저자 Yukihisa Yonemochi
발행일 2005-11-15
역자 이영란, 오기성 공역
분량 328p
편집 2도
판형 4*6배변형판(188*240)
개정판정보 2005년 11월 15일(초판 1쇄 발행)
정가 14,800원↓
판매가 13,320
(10% off)
적립금 740원(5%)
  소득공제
도서소개

이 책에 대해서

[ Java 프로그래밍의 기본지식과 개념을 배울 수 있는 책!! ]

이 책은 이미 출간되어 독자들로 하여금 많은 호평을 받아온 \'성공과 실패를 결정하는 1% 원리\' 시리즈의 8번째 도서로, 이미 개발 환경에서 핵심적인 도구로 자리매김한 Java에 대해 설명하고 있습니다.

Java의 기초부터 시작하여 JVM의 구조, 객체 지향과 메모리 관리, Java를 둘러싼 환경 등을 대화 형식을 통해 과거의 기술이나 다른 프로그래밍 언어와 비교하여 설명함으로써, 독자들로 하여금 Java가 무엇인지, 그리고 왜 필요한지 등을 가장 쉽고 정확하게 알 수 있도록 설명되어 있습니다.

이 책에서는 Java의 문법적인 설명을 지양하고, 그림 등의 비주얼한 설명 방식을 도입하였으며, 각 장의 처음에는 간단한 퀴즈를 통해 각 장의 중요한 주제를 다루고, 각 장의 끝에는 본문에서 다 소개할 수 없는 Java와 관련된 이야기를 컬럼으로 소개해 각 장의 내용과 관련되거나 현재 보급된 기술의 배경이나 역사의 이해할 수 있도록 구성되어 있습니다.

입문자를 대상으로 하였지만, 경력 개발자의 체계적이지 못한 개념을 정리하는 데에도 많은 도움을 주는 책입니다.

목차

목 차

Chapter 01 도대체 Java가 뭐야? 
01_세계 최초로 성공한 가상 컴퓨터 명세 
02_소프트웨어로 가상 컴퓨터를 실현한다 
03_커피잔은 명세의 증거 
04_세계 최초는 아니지만 성공 예로서는 세계 최초 
05_여러 컴퓨터에서 소프트웨어가 실행 가능 
06_Java 자신이 OS로서의 기능을 정의하고 있다 
07_순수한 객체 지향 
08_확장 가능한 명세의 집합체 
09_기업에 필요한 기능이 탑재되어 있다 
10_많은 기업이 지지하는 오픈된 명세 
[Column] 빨리 보는 Java 역사 

Chapter 02 모든 하드웨어를 동일하게 취급한다 
01_소프트웨어 이식은 오랜 고민의 원인 
02_넘어야 하는 두 개의 벽
03_컴퓨터는 \'주판\'으로 생각하면 알기 쉽다 
04_소프트웨어를 사람의 말로 생각해 본다 
05_기계어는 컴퓨터의 종류에 따라 다르다 
06_어셈블리 언어에 의한 개발은 호환성이 전혀 없음 
07_고수준 언어로 소스 코드 호환이 가능해지다 
08_옛날에는 컴퓨터마다 컴파일러가 필요 
09_소스 코드 상태의 소프트웨어 유통 
10_인터프리터 언어와 스크립트 
11_인터프리터 언어의 한계 
12_Java 이전의 문제 
13_Java 가상 머신이라는 소프트웨어 
14_JVM의 특징  
15_Java 클래스는 바이너리로 배포 가능 
16_Unicode의 채택 
17_JIT 컴파일러/HotSpot 기술  
[Column] 여러 가지 아키텍처 

Chapter 03 모든 OS를 동일하게 취급한다 
01_또 하나의 벽  
02_소프트웨어는 OS별로 존재한다 
03_OS는 하드웨어를 중개한다 
04_OS마다 소스 코드는 다르다 : API의 차이 
05_고기능 API의 차이 
06_\'표준 OS\' 및 \'표준 API\'라는 시도 
07_공통 라이브러리의 시도 
08_소스 코드 호환만으로는 아직 문제는 해결 안 된다 
09_클래스 라이브러리가 비호환 
10_헤더 파일마다 소스 코드가 필요 
11_종래의 문제  
12_JVM은 OS도 포함하고 있다 
13_애플리케이션이 직접 건드리지 않는 것은 OS에 맡긴다 
14_애플리케이션이 직접 액세스하는 것은 공통화 
15_Java는 모든 것이 클래스 파일 
16_클래스 파일만 있으면 재사용 가능 
17_객체 지향 관련 기능도 표준으로 제공 
18_공통으로 가질 수 없는 기능은 과감히 잘라 버림 
[Column] 가상 컴퓨터의 시도  

Chapter 04 언어 명세 및 실행 환경과 함께 객체 지향을 추구 
01_Java는 객체 지향 언어의 최대 성공 예 
02_객체 지향의 4가지 주요 기능 
03_C++의 문제점 
04_C++의 문제점 : 클래스에 속하지 않는 메쏘드 
05_C++의 문제점 : 클래스의 재사용이 어려웠다 
06_C++의 문제점 : 이름 충돌의 문제 
07_Java의 접근 방식 
08_클래스는 반드시 만들 것 
09_클래스에 소속되지 않는 메쏘드나 변수를 가질 수 없다 
10_모든 클래스가 main 메쏘드를 가질 수 있다 
11_매키지에 의한 이름 관리 
12_deprecated에 의해 권장되지 않는 메쏘드의 경고 
13_예외 처리에 따른 오류 처리 
14_클래스와 파일의 관계가 명확 
15_실행 파일을 만들지 않는다 
16_실행 프레임워크 
17_JVM은 객체 지향 컴퓨터  
[Column] 컴포넌트란?  

Chapter 05 메모리 관리를 자동화한다 
01_소프트웨어로 메모리를 관리한다는 것 
02_포인터를 사용하는 소프트웨어 
03_배열을 사용한다 
04_구조체 배열의 구조 
05_C 언어 포인터는 어렵다 
06_프로그램을 움직여 보면... 
07_배열의 오버런 문제 
08_직접 해보자  
09_C 프로그램에서의 메모리 내의 움직임 
10_메모리 리크라는 문제 
11_영역 파괴  
12_C 언어의 문제점 정리 
13_Java 메모리 관리의 기본 : 참조 
14_인스턴스의 생성은 어떻게 일어날까? 
15_Java에서는 모든 객체를 힙에 둔다 
16_Java는 형 검사를 반드시 수행한다 
17_가비지 콜렉션  
18_Java의 스택 머신 
19_Java의 배열  
20_Java에서는 객체를 나열한 배열은 만들 수 없다 
21_배열 자체가 오브젝트 
22_Java에서는 배열의 오버런은 없다 
[Column] 책상의 너비에는 한계가 있다 

Chapter 06 기업 시스템에 필요한 기능을 탑재 
01_도대체 왜 Java인 걸까? 
02_호스트부터 클라이언트/서버로 
03_배포 문제  
04_다른 기종의 컴퓨터에 대한 지원 
05_자동 배포를 실현한다 
06_바이러스 활동을 금지한다 
07_바이러스를 넣지 않는 노력 : 디지털 서명 
08_Web 애플리케이션 기술 \'서블릿\' 
09_객체 지향에 의한 부분 개발 
10_세션 관리 기능을 제공 
11_화면 디자인은 \'JSP\'로 작성 
12_MVC 모델을 실현 
13_\'JSF\'는 MVC형의 프레임워크 명세 
14_분산 트랜잭션을 실현하는 \'EJB\' 
15_Web 서비스는 시스템 연계의 업계 표준 기술 
16_\'J2EE\'는 서버 기술의 집대성 
17_JWS(Java Web Start)로 자동 다운로드 

Chapter 07 오픈 테크놀러지의 의미 
01_소프트웨어를 공동으로 생산한다 
02_참가 각사의 동의로 결정되는 공통 명세 
03_오픈 소스를 보완하는 오픈 명세 
04_장래에 걸쳐 장기적으로 안심 
05_Java가 성공한 두 개의 분야 
06_소형 칩형 Java 
07_기업 업무를 지지하는 J2EE 
08_여러 형태의 클라이언트를 중앙 집권형으로 관리 
09_많은 사용자 액세스를 가능하게 
10_데이터베이스 애플리케이션을 효율 좋게 개발 
11_컴포넌트를 사용한 트랜잭션 관리 
12_대량 기능 요건도 부분, 분담, 변환 기술로 개발 
13_최적의 머신 환경을 선택하여 고속 쓰루풋을 실현 
14_Java는 독립된 작은 명세의 모음 
15_안심할 수 있는 RI 
16_대형 개발업체가 \'진심\'이다 
17_최소 기술, 하지만 최고 기술 

Chapter 08 Java가 정말로 지향하는 것  
01_Java에 적극적으로 힘쓰려면 
02_개발 환경의 방향성 
03_데스크탑 환경은 복권할까? 
04_Java가 정말로 지향하는 것


이 책의 주요 구성

이 책의 구성은 \'도입\', \'JVM의 구조\', \' 객체 지향과 메모리 관리\', \'Java를 둘러싼 환경\', \'목표\' 이렇게 크게 5가지로 나뉘어져 있습니다.

01장 - 도입
이 장에서는 도대체 Java란 무엇인지, 어떤 목적으로 만들어진 것인지, Java를 사용하면 어떤 점이 좋은지와 같은 총괄적인 설명을 하고 있습니다.

이 책에서 설명하는 Java의 구조로 인해 도대체 무엇이 해결되며, Java 이전의 소프트웨어에 존재한 어떠한 문제가 해결되는지, 전체를 통해서 설명하고 있습니다. Java가 가상 컴퓨터 명세라는 것, OS의 기능을 커버한다는 것, 객체 지향이라는 것의 의미, J2ME와 J2EE라는 용도별 명세가 있다는 것, 표준화가 행해지고 있다는 것 등을 요약해서 설명해 갈 것입니다. 이 책 전체의 총괄적인 장이 되므로, 01장만 읽어도 Java의 뛰어남이 느껴질 것입니다.

02∼03장 - JVM의 구조
02장과 03장은 Java의 가장 중요한 뿌리가 되는 Java 가상 머신(JVM)에 대해 설명할 것입니다. 여기에서는 단순히 JVM의 구조와 기능을 설명하는 것이 아니라, JVM이 왜 그러한 구조로 되어 있는지, 그 의미를 설명하고 있습니다.

JVM이라는 가상 컴퓨터 명세의 최대 목표는 소프트웨어를 이동할 수 있도록 즉, \'어떤 컴퓨터에서도 가동할 수 있도록 한다\'는 데 있습니다. 이것을 목표로 한 가상 컴퓨터 명세는 이전에도 많이 있었습니다. 하지만 많은 것이 실패로 끝나고 말았습니다.

이런 실패와 문제를 딛고, JVM이 어떻게 문제를 해결하고, Java의 성공에 한 역할을 했는지를 설명해 갈 것입니다. 과거의 기술이나 접근 방식(Approach)을 몇 개 골라서, 그 구조를 설명하고, 그 문제점을 어떻게 해결했는지 순서대로 설명할 것입니다. 과거의 기술에 대한 설명이 길기 때문에 Java에 대한 설명이 나오기까지 오래 기다려야 할지 모르겠습니다. 하지만 과거 기술의 문제점을 아는 것은 중요하므로, 꼭 읽고 넘어가기 바랍니다.

04∼05장 - 객체 지향과 메모리 관리
Java가 객체 지향이라는 것은 Java가 \'잘 작동하기\' 위해서 상당히 중요한 점입니다. 이것을 이해함으로써 객체 지향이 Java의 다른 다양한 기능이나 솔루션을 성공시키는 기초가 되었다는 점을 깨닫게 될 것입니다. 객체 지향은 Java의 메모리 관리에도 큰 공헌을 하고 있습니다.

Java가 처음 등장했을 때 메모리 관리 방법이 클로즈업되었습니다. 메모리 관리 방법, 주로 포인터 개념의 폐지와 가비지 콜렉션의 구조는 Java에서 상당히 특징적인 기능입니다. 메모리 관리 기능의 내용을 확실히 이해하는 것은 Java의 작동 개념을 이해하는 것 다음으로 상당히 중요한 것이라 할 수 있습니다.

C/C++ 시절에 메모리 관리로 고생한 분도 많을 것이고 C/C++을 모르는 분도 있을 것입니다. 04장에서는 C++에서의 객체 지향 프로그래밍, 05장에서는 C의 메모리 관리 방법과 그 문제점을 예를 들어 설명하고, 혼란의 원인을 찾고, Java가 그 문제를 어떻게 해결하는지를 자세히 설명해 갈 것입니다.

06∼07장 - Java를 둘러싼 환경
06장과 07장은 기술적인 내용에서 좀 벗어나 Java의 사회적인 환경에 대해 이야기할 것입니다. Java는 단순한 기술이 아니라 그 사회적인 입장이 성공의 열쇠를 쥐고 있습니다. Java는 다른 비슷한 기술과 \'기술 논쟁\'의 재료가 되는 일이 종종 있습니다. 하지만 Java의 언어 명세나 실행 환경 명세만을 비교하는 것으로는 충분하지 않습니다. Java의 중요한 점은 사회 환경에도 있다고 생각합니다.

여기서는 어떤 사회 환경이 Java의 보급을 지탱하고 있으며, 어떤 효과를 낳고 있는지, 비즈니스적인 관점에서 설명할 것입니다. Java의 가치를 이해하기 위해서는 이 장만 읽어도 충분히 의미가 있을 것입니다.

08장 - 목표
08장은 Java가 목표로 하는 것을 필자의 기대도 포함시켜 기술하고 있습니다. Java를 확실히 이해하고 앞으로 Java를 어떻게 견인해서 활용해가야 좋을지, 이 책을 읽은 후 Java에 힘쓸 방법을 한 번 더 생각하는 계기가 되었으면 좋겠습니다.


이 책에서 풀 수 있는 궁금증에는...

- 도대체 Java가 뭐야?
- 모든 하드웨어를 동일하게 취급한다
- 모든 OS를 동일하게 취급한다
- 언어 명세 및 실행 환경과 함께 객체 지향을 추구
- 메모리 관리를 자동화한다
- 기업 시스템에 필요한 기능을 탑재
- 오픈 테크놀러지의 의미
- Java가 정말로 지향하는 것


분야별 전문가 서평

Java는 이제 개발 환경에서 핵심적인 도구로 자리매김한 지 오래되었다. 뿐만 아니라 Java만으로만 가능하다고 할 수 있는 것들도 점차 늘어나고 있을 정도로 독보적인 영역을 구축하고 있다. 문제는 Java 개발자들이 첫걸음을 어떻게 시작하느냐가 아닐까? 나는 이 책이 JVM의 세계에 처음으로 발을 내딛는 입문자들에게 가장 훌륭한 길잡이라고 감히 평을 드리고 싶다.
- 이승찬(HA엔터테인먼트 대표) -

초창기부터 Java를 접한 사람으로서, 다른 언어와 다른 이해가 필요하다고 생각해 왔다. 그러나 Java가 C언어와 함께 양대 산맥이 된 현재까지도 \'Java를 Java답게\' 배울 수 있는 여건은 여전히 부족하다. 이 책은 그런 면에서 국내에서는 보기 드문, 제대로 Java를 설명한 입문서라고 할 수 있다.
- 이근엽(임펙트코리아 전산팀 시스템 담당) -

업무상 필요한 부분을 배우기에도 급급한 여건 때문에 Java에 대한 체계적인 개념 정리가 되고 있지 못한 점은 경력 개발자로서 늘 부끄러운 일이었다. 그런데 이 책은 비록 입문자를 대상으로 한 것이긴 하지만, 경력 개발자의 체계적이지 못한 개념을 확고하게 다져 주기에도 충분해 보인다. 따라서 Java 입문자는 물론 체계가 부족한 경력 개발자에게도 추천하고 싶다.
- 조대우(다이렉트미디어 기술지원팀) -

이 책에서는 개념적인 설명을 지양하고 그림 등의 비주얼한 설명 방식을 도입한 것이 가장 먼저 눈에 띈다. 그리고 그런 형식적인 면에만 치우치지 않고 Java가 무엇인지 그리고 왜 필요한지 등을 가장 쉽고 정확하게 설명하고 있다. 국내에 수많은 Java 입문서와는 뭔가가 다른, 진정한 입문서라는 생각이 들었다.
- 나은영(프로그래밍 학원 전문 과정) -


저 자 : Yukihisa Yonemochi

- 1987년 일본 IBM 주식회사 입사.
- 커스터마이즈 부서에서 메인프레임 계열 OS인 VSE/VM의 소프트웨어 장애 담당 엔지니어
- Web 시스템의 구축 프로젝트 및 오픈 시스템, 객체 지향 개발을 경험.
- 2000년 6월에 소프트웨어 사업부로 이적 및 Java, XML, EJB 등 개발

[ 주요 저서 ]
- 오픈 소스가 비즈니스가 되는 이유(닛케이 BP사)
- WebSphere Studio V5,0 개발자 필수 휴대 가이드 (3)(기술평론사)
- WebSphere Studio Web 애플리케이션 개발 입문(기술평론사)
- Web 서비스 완전 해설(쇼우에이사)
- 간단 서버 사이드 Java(쇼우에이사)
- Web 디벨로퍼를 위한 EJB 입문(CQ 출판)
- 이거라면 알 수 있는 Enterprise JavaBeans(소프트리서치센터)


역 자 : 이영란

- 테크니컬 라이터 및 컴퓨터 도서 전문 번역자

[ 주요 번역서 ]
- 성공과 실패를 결정하는 1%의 Windows 구조와 원리
- 성공과 실패를 결정하는 1%의 컴퓨터 원리
- 알고리즘이 보이는 그림책
- TCP/IP가 보이는 그림책 외 다수


 역 자 : 오기성

- 동원대학 컴퓨터정보과 교수
- 한국 SI 학회 이사
- 숭실대학교 컴퓨터학과 공학박사

저자
부록/예제소스
정오표
    최근 본 상품 1