이미지 확대/축소가 가능합니다.

닫기


자바로 웹 개발을 하고 싶은데 무슨 책으로 시작할까?

그동안 많은 자바 기본서가 나왔고, 솔직히 좋은 도서가 많습니다. 하지만 한 가지 아쉬운 점이 있습니다. 실은 많은 기본서들이 웹 개발자를 위한 책이 아니라 단순히 자바의 기능을 알려주는데 그치고 있는 점입니다. 이 책은 코딩을 전혀 해보지 않은 사람이나 초보자를 대상으로 자바 웹 개발을 위한 자바의 기초를 알려줍니다.

처음에는 우선 프로그래밍에 필수적인 문법부터 알려줍니다. 연산자, 배열, 메서드 등 프로그램 구현 전에 꼭 알아야 하는 요소들을 배웁니다. 그 후 배운 지식을 바탕으로 본격적인 프로그램인 ‘렌터카 프로그램’을 만들고, 뒷 챕터에서 배우는 내용들을 렌터카 프로그램에 적용하여 프로그램을 발전시켜 나갑니다.

단일 도서 기준 페이지가 가장 많은 자바 기본서인만큼 다른 자바 도서에서 수록하지 못하는 부분들도 꼼꼼히 수록했습니다. 멀티 코어 프로그래밍을 하기 위해서 반드시 이해해야 하는 스레드는 2개 챕터를 할애하여 설명하였고, 네트워크나 데이터베이스처럼 알아야 하지만 누락되기 쉬운 부분도 담아 한 권으로 자바의 기초를 확실히 마무리하고, 원하는 개발 분야로 나아갈 수 있는 기초를 마련해 줍니다. 특히 자바로 JSP 등을 이용한 웹 개발을 하고자 한다면, 웹 개발 전에 알아야 할 내용을 전부 수록하여 더 없이 좋은 기본서라고 할 수 있겠습니다.



저자의 말

01장 자바와 개발환경 설정

1 프로그래밍 언어의 발전 과정
2 자바 소개
3 자바의 특징
4 자바 기술의 종류
5 Java SE 개발 환경 설치하기

02장 JDK 구성 요소와 기능

1 HelloWorld 실습 예제를 통한 자바 프로그래밍 과정
2 HelloWorld.java를 통한 자바 코딩 규칙
3 JDK 구성 요소와 기능
4 이클립스에서 “HelloWorld” 출력하기

03장 자바 프로그래밍 기본 문법

1 자바 프로그래밍이란?
2 자바 키워드란?
3 변수란?
4 상수란?
5 자바 기본 데이터 타입
6 타입 변환
7 콘솔로 값 출력하기
8 키보드로 값 입력하기

04장 연산자

1 연산자의 종류와 피연산자
2 이항 연산자
3 단항 연산자와 삼항 연산자
4 연산자 우선 순위
5 연산자 실습하기

05장 조건문과 반복문

1 조건문
2 반복문
3 중첩 반복문
4 break문과 continue문
5 반복문 실습
6 이클립스 디버깅 기능 사용하기

06장 배열

1 배열의 등장 배경
2 1차원 배열
3 1차원 배열 활용하기
4 다차원 배열
5 2차원 배열 활용하기
6 System.arraycopy() 메서드로 배열 복사하기
7 자바 명령 라인 입력
8 java.util.Arrays 클래스 사용하기

07장 메서드

1 메서드란?
2 메서드 형식
3 메서드 호출과 복귀
4 여러 가지 메서드 사용하기
5 메서드 실습

08장 클래스

1 절차 지향 프로그래밍과 객체 지향 프로그래밍
2 객체 지향 프로그래밍 과정
3 객체 지향 프로그래밍으로 렌터카 프로그램 만들기
4 생성자
5 오버로딩
6 패키지와 import문
7 기본 타입 변수와 참조 타입 변수
8 클래스 실습
9 렌터카 프로그램 구현하기

09장 클래스 상속

1 클래스 사이의 관계
2 상속이란?
3 학생 클래스들을 이용한 상속
4 super와 this
5 오버라이딩 메서드
6 접근 제한자
7 자동차를 이용한 상속 실습
8 렌터카 프로그램에 상속 적용하기

10장 다형성

1 다형성이란?
2 업캐스팅
3 다운캐스팅
4 다형성을 이용한 학생 시험 점수 구하기
5 여러 단계의 상속 구조를 이루는 클래스 사이의 다형성 알아보기

11장 추상 클래스

1 abstract 지정자
2 구현 메서드와 추상 메서드
3 추상 클래스
4 학생 클래스로 추상 클래스 실습하기
5 렌터카 프로그램에 추상 클래스 적용하기

12장 정적 및 final 지정자

1 동적 로딩
2 정적 지정자
3 final 지정자
4 렌터카 프로그램에 static 기능 적용하기

13장 인터페이스

1 인터페이스란?
2 인터페이스 사용하기
3 Car 인터페이스 구현하기
4 인터페이스를 이용하여 회원 관리 기능 구현하기
5 다중 인터페이스 사용하기
6 렌터카 프로그램에 인터페이스 적용하기

14장 내부 클래스와 내부 인터페이스

1 내부 클래스
2 멤버 내부 클래스
3 로컬 내부 클래스
4 정적 내부 클래스
5 내부 인터페이스
6 익명 객체

15장 필수 사용 클래스

1 Object 클래스
2 Wrapper 클래스
3 Math 클래스
4 String 클래스
5 StringBuffer 클래스와 StringBuilder 클래스
6 System 클래스
7 Class 클래스
8 java.util 패키지의 클래스들
9 참조 타입 배열과 객체를 리턴하는 메서드
10 열거 타입
11 has-a 관계 클래스

16장 예외

1 자바 에러의 정의와 종류
2 자바 예외의 특징
3 자바 예외의 종류
4 자바 예외 처리 방법
5 다중 catch문과 finally문
6 throws를 이용한 예외 처리 방법
7 명시적 예외 처리 방법
8 사용자 정의 예외 사용 방법
9 렌터카 프로그램에 예외 적용하기

17장 컬렉션 프레임워크

1 컬렉션 프레임워크 정의
2 Collection 계열
3 Stack과 Queue
4 Map 계열
5 Iterator와 Enumeration
6 제네릭
7 Properties와 TreeSet, TreeMap
8 오토박싱과 언오토박싱
9 향상된 for문
10 렌터카 프로그램에 컬렉션 적용하기

18장 스레드

1 프로세스
2 스레드
3 자바에서 스레드 사용하기
4 Thread 클래스의 여러 가지 메서드 사용하기
5 스레드의 상태
6 스레드 동기화

19장 자바 I/O

1 스트림의 정의와 스트림의 종류
2 바이트 스트림과 문자 스트림
3 노드스트림과 필터스트림
4 PrintStream과 PrinterWriter 사용하기
5 객체 직렬화
6 XML 사용하기
7 렌터카 프로그램에 자바 I/O 적용하기

20장 자바 네트워크

1 네트워크 통신의 정의
2 자바 소켓 통신
3 자바 채팅 프로그램
4 네트워크 파일 전송과 네트워크 직렬화
5 공공 데이터 연동하기

21장 자바 AWT

1 AWT란?
2 컨테이너
3 컴포넌트
4 배치관리자
5 이벤트의 정의와 사용법
6 자바 이벤트 처리 과정
7 Adapter 클래스

22장 자바 스윙

1 스윙의 정의와 특징
2 스윙 컨테이너 기능
3 MVC 디자인 패턴 사용하기
4 스윙으로 렌터카 프로그램 화면 구현하기

23장 자바 데이터베이스

1 데이터베이스 정의
2 오라클 DBMS 설치하기
3 관계형 DBMS 알아보기
4 SQL문의 정의와 사용법
5 JDBC의 정의와 사용법
6 PreparedStatement 사용법
7 DAO와 VO의 정의와 사용법
8 회원 정보 수정과 삭제 기능 구현하기
9 렌터카 프로그램에 데이터베이스 적용하기

24장 제네릭 심화

1 제한된 타입 파라미터(T extends 최상위 타입)
2 와일드 카드 타입(〈?〉, 〈? extends ...〉, 〈? super...〉)
3 제네릭 타입의 상속과 구현

25장 람다식

1 람다식이란?
2 람다식 기본 형식
3 함수형 인터페이스
4 람다식 활용
5 자바 API의 함수형 인터페이스
6 자바 API의 함수형 인터페이스의 디폴트 메서드와 정적 메서드
7 컬렉션 프레임워크와 함수형 인터페이스

26장 스트림

1 스트림이란?
2 스트림 종류
3 스트림 파이프 라인
4 중간 처리 스트림 메서드
5 최종 처리 스트림 메서드

27장 스레드 심화

1 스레드 그룹
2 스레드풀
3 톰캣의 스레드풀 구조
4 스레드풀을 이용해서 다중 채팅 프로그램 구현하기
5 병렬 처리

28장 NIO

1 NIO의 특징
2 버퍼
3 채널
4 NIO를 이용해서 멀티 채팅 예제 구현하기

29장 어노테이션

1 어노테이션이란?
2 표준 어노테이션
3 사용자 정의 어노테이션
4 리플렉션

30장 유용한 클래스들

1 정규 표현식과 Pattern 클래스
2 Objects 클래스
3 java.time 패키지
4 자바의 문자 세트

31장 부록

1 여러 가지 수 체계
2 자바의 음수 표현법
3 자바의 실수 표현법
4 비트 연산자와 시프트 연산자
5 JVM 구조
6 같은 파일에 여러 클래스 선언하기
7 롬복 사용하기
8 재귀 메서드
9 자바 라이브러리 만들기
10 모듈 만들기
11 자바 표준 모듈
12 JDK 구성 요소들



상세 이미지 1



주요 내용

01장 자바와 개발환경 설정 - 02장 JDK 구성 요소와 기능
책의 초반부입니다. 프로그래머를 꿈꾸는 독자에게 자바에 관해 상세히 알려주고 난 뒤, 개발환경을 설정하고 첫 프로그램을 만들어봅니다.

03장 자바 프로그래밍 기본 문법 - 07장 메서드
자바뿐만 아니라 대부분의 프로그래밍 언어에서 거의 기본으로 언급되는 변수, 조건문, 배열 등의 문법 요소를 배운 뒤 재사용성을 위한 메서드까지 익히는 파트입니다.

08장 클래스 - 15장 필수 사용 클래스
객체 지향 프로그래밍에 빠질 수 없는 요소들을 배우는 파트입니다. 기본적인 클래스 사용법, 타 언어와 다른 자바의 상속과 변환 관계 등과 함께 프로그램의 전체 구조를 일관성 있게 유지할 수 있도록 도와주는 추상 클래스와 인터페이스와 같은 기술도 배웁니다. 이 책에서 배우는 대부분의 기능을 적용하여 개선하게 될 렌터카 프로그램도 처음으로 만듭니다.

16장 예외
프로그램 실행 중 발생할 수 있는 에러에 대응할 수 있는 방법인 예외 기능을 배웁니다. 예외 기능을 사용하여 프로그램의 안정성을 높일 수 있습니다.

17장 컬렉션 프레임워크
여러 가지 자료 구조 개념을 자바 프로그래밍에서 쉽게 사용할 수 있도록 미리 클래스로 만들어 제공하는 기능인 컬렉션 프레임워크로는 어떤 것들이 준비되어 있는지 소개하고, 실습해 보는 파트입니다. 마지막에는 렌터카 프로그램에 해당 기능들을 적용해 봅니다.

18장 스레드
멀티 코어 프로그래밍 시 반드시 알아야 할 개념인 스레드를 배우는 파트입니다. 자바에서 지원하는 스레드 기능들을 알아봅니다.

19장 자바 I/O - 20장 자바 네트워크, 23장 자바 데이터 베이스
자바 프로그램의 범위를 프로그램 밖 파일과 네트워크로 확장시키는 파트입니다. 파일 입출력과 네트워크 통신 기능을 실습하고 자바에 데이터베이스를 연결하여 사용해보며 추후 웹 개발에 필요한 기초를 다집니다.

21장 자바 AWT - 22장 자바 스윙
자바 프로그램에 GUI를 입혀주는 자바 자체 기술인 AWT와 스윙을 배우는 파트입니다. 특히 스윙을 이용하면 운영체제에 구애받지 않는 동일한 화면을 띄울 수 있습니다.

24장 제네릭 심화 - 30장 유용한 클래스들
기존에 배웠던 제네릭, 스레드의 심화 기능을 배우거나 람다식 등 프로그램을 더욱 고도화시킬 수 있는 기능을 알려주는 파트입니다. 기존 도서에서 생략되거나 간단히 지나갔던 부분들을 챕터별로 설명하여 모르고 지나가는 부분이 조금이라도 더 적어지도록 구성했습니다.

31장 부록
자바 개발을 하며 알아두면 유용할 부분을 한 챕터에 모아서 소개합니다. 이 책을 끝내고 원하는 프로그램을 개발하기 전 꼼꼼히 읽어두면 도움이 될 요소들을 수록하였으니 놓치지 말고 일독하기를 권해 봅니다.

작가의 말

제가 “초보자를 위한 Java Programming”을 쓴 것이 2015년이었습니다. 자바를 이용해서 쉽게 프로그램을 만들어보자는 의도로 책을 집필했었습니다. 어느덧 시간은 흘러 2023년 현재 자바를 비롯해서 많은 프로그래밍 언어가 출현해서 사용되고 있습니다. 더욱이 2016년에 세상에 충격을 던져준 “알파고”를 시작으로 2022년에는 “챗GPT” 인공지능 기술로 인해서 앞으로의 미래는 어떻게 전개될 지 아무도 예측할 수 없게 되었습니다. 아마 미래에는 사람이 직접 프로그램 코드를 작성하기보다는 인공지능이 모든 코드를 완성해 줄 것이다라고 예측하는 사람들도 많습니다. 현재도 프로그램을 처음부터 코딩하는 경우는 거의 없습니다. 이미 많은 기능들이 오픈 소스로 제공되므로 프로그래머는 쉽게 이런 기능들을 조립해서 자신의 기능을 구현할 수 있습니다.

따라서 앞으로는 프로그래머가 일일이 세부적인 기능을 코딩하기보다는 아이디어나 새로운 요구를 찾아서 분석한 후, 설계하는 과정이 더 중요해질 것이라고 생각합니다. 그러나 지금의 자바 책들은 각각의 기능에 대해서만 자세하게 설명할 뿐, 그것들을 이용해서 하나의 완성된 프로그램으로 만들어가는 과정은 설명하고 있지 않습니다. 물론 규모가 큰 프로그램을 실제 개발하려면 객체 지향 설계, UML, 디자인 패턴과 같은 어려운 개념을 알아야 합니다. 그러나 이것은 입문자에겐 너무 많은 시간과 노력을 요구합니다. 따라서 저는 이런 것들을 모르더라도 가능하면 상식적으로 생각해서 어떻게 하나의 프로그램을 완성해 갈 수 있을까를 지속적으로 고민했습니다. 그 결과, 저는 이 책을 1부와 2부로 나누어서 자바 기술을 설명함으로써, 먼저 나온 코어 자바를 바탕으로 쉽게 프로그램을 만들어 봄과 동시에 최신 자바 기술도 추가적으로 학습할 수 있게 했습니다.

먼저 1부에선 각 챕터별로 자바 프로그램 구현 시 반드시 필요한 기본 기능을 학습한 후, 학습한 기능을 렌터카 프로그램에 적용해 가면서 렌터카 프로그램을 완성하는 과정으로 구성했고, 2부에선ChatGPT와 같은 인공지능과 빅데이터를 다루는데 필요한 심화 기술들을 다루게 됩니다. 입문자가 자바를 가장 빠르게 학습하는 방법은 자바의 전체적인 기능을 쉽게 학습한 후, 한 개의 완성 된 프로그램을 만들어 보는 것이라고 저는 생각합니다. 일단 자바가 어떤 식으로 구현되는지를 전체적으로 알면 자바의 다른 세부 기능들을 필요할 때 찾아서 사용하면 됩니다. 개인적으로 자바 프로그래밍을 하면서 감명을 받은 부분은 데이터베이스 연결 기능을 제공하는 JDBC 부분입니다. 기존의 자바에서 데이터베이스 연결은 데이터베이스 제공 회사에서 지정한 방법으로 프로그래머가 설정해 주어야 했습니다. 따라서 각각의 데이터베이스 연결 방법은 다 달랐습니다.

반대로 JDBC를 도입함으로써 데이터베이스 제공 회사들이 자신의 데이터베이스 연결 방법을 표준화된 방법으로 구현하게 함으로써, 자바 프로그래머는 단일한 데이터베이스 연결 방법으로 편리하게 접속할 수 있게 됩니다. 미래의 프로그래밍은 기업이나 조직이 중요한 것이 아니라, JDBC처럼 기업이나 조직이 개인이 편리함에 맞춰서 기능을 제공함으로써 개인은 더욱 더 자신의 아이디어와 상상력을 펼칠 수 있게 될 것입니다. 그리고 챗GPT같은 인공지능은 개인의 상상력을 더욱 쉽고 자유롭게 펼칠 수 있게 해줄 것입니다. “구슬이 서 말이라고 꿰어야 보배”라는 속담도 있듯이, 이 책과 무료 동영상 강의를 이용해서 지속적인 반복 학습이 가장 좋은 프로그래밍 학습 방법이라고 생각합니다. 처음 자바를 배우는 분들에게 이 책이 원하는 목표를 이루는데 도움이 되기를 진심으로 바랍니다. 마지막으로 이 책의 출판에 여러 도움을 주신 영진닷컴의 현진영 주임님과 출판사 관계자 분들에게 진심으로 감사드립니다.