jin***
2019-06-24

이 책은 독학으로 자바를 배우는 입문자가 ‘꼭 필요한 내용을 제대로’ 학습할 수 있도록 구성했다. ‘무엇을’ ‘어떻게’ 학습해야 할지 조차 모르는 입문자의 막연한 마음을 살펴, 과외 선생님이 알려주듯 친절하게, 그러나 핵심적인 내용만 콕콕 집어준다. 책의 첫 페이지를 펼쳐서 마지막 페이지를 덮을 때까지, 혼자서도 충분히 자바를 배울 수 있다는 자신감과 확신이 계속될 것이다!
프로그래밍 언어들은 하드웨어와 플랫폼들이 변화하면서 함께 변화하고 있다. 많은 프로그래밍 언어들이 사라졌고,
앞으로도 새로운 언어들이 등장함에 따라 기존의 많은 언어들이 대체될 것이다.
이러한 상황에서 우리는 어떤 언어를 어떻게 배워야할까? 매번 유행을 타는 언어를 프로그래밍 입문자들에게 가르쳐야
할까? 지인들로부터 자주 프로그래밍 언어에 대한 입문 책을 추천해달라는 요청을 받는다. 그때마다 가장 고민되는 것은
어떤 언어를, 어떤 난이도의 책을 통해서 학습해야 가장 효율적으로 학습할 수 있을까 하는 것이다.
대체적으로는 언어를 자바를 추천하는데 그 이유는 다음과 같다. 프로그래밍 언어의 종류에는 컴파일러 언어와,
인터프리터 언어가 있다. 컴파일러의 대표적인 언어는 C/C++가 있고, 대표적인 인터프리터 언어는 Python이 있다.
자바는 초기에는 인터프리터 언어였으나, 성능상의 문제가 제기되면서 자바 컴파일러와함께 하이브리드(?)처럼 사용되고
있다. 자바컴파일러는 소스코드를 바이트코드로 변경하고, 자바가상머신이 바이트코드를 기계어로 변환하는 인터프리터의
역할을 한다. 그러므로 자바를 학습하면 프로그래밍 언어의 대분류에 속하는 인터프리터와 컴파일러의 구분개념을
초심자가 익힐 수 있는 것이다. 그리고 나는 그 개념을 바탕으로 다음에 목적에 맞는 언어들을 더 빠르게 습득할수
있을거라 생각한다.
그러면 문제는 자바에서 어떤 책을 추천하냐는 것인데, 나는 이 책이 입문서로 매우 적절하다고 생각한다. 그 이유로는
다음과 같다.
첫째, 자바의 문법만을 다루는 것이 아닌, 책 틈틈히 자바에 대한 다양한 개념들을 설명해두었기 때문이다. 언어를
배우는 초심자에게, 첫 언어는 단순히 문법만을 가르치는 것이 아닌 이후에 언어습득 및 프로젝트를 진행하기 위한
하나의 기준이 되어야한다. 그러기위해 입문서는 한 언어에 대한 다양한 (때로는 너무 방대해서 한 권의 책으로
담을 수 없는) 내용들을 효과적으로 전달하는 매개체가 되어야한다.
둘째, 책의 커버리지와 구성이다. 언어는 깊게 들어가면 그 커버리지가 한도 끝도 없다. 하나의 언어를 잘한다고 말
하기 힘든 이유도 그것이다. 그렇기때문에 입문서는 적절한 범위내에서 필요한 개념들을 효율적으로 설명해야한다. 이
책에서는 14개의 챕터를 효율적으로 구성하여 자바의 문법과 핵심이되는 객체지향의 개념을 설명하고, 이후 후반부에
실제 프로젝트에서 많이 사용되는 기능들을 설명하고 있다. 그리고 많은 예제들을 통해 반복적으로 학습을 시키기 때
문에, 학습자가 자바에 빠르게 익숙해질 수 있다 (이론과 실습의 비율이 좋다).
이 책을 통해서 입문자에게 기대할 수 있는 내용은 아래와 같다
- 프로그래밍 언어 개념에 대한 기초를 다질 수 있다.
- 자바 문법과 다양한 예제들로 익숙하게 사용할 수 있다.
- 클래스의 개념과 객체지향의 개념을 익힐 수 있다.
- 실제 프로젝트에서 유용할 기능들 (Java API, Thread, Collection 등)에 대한 기초를 다지고, 그것을
기반으로 학습자는 프로젝트를 진행하면서 필요한 라이브러리와 기능들을 스스로 학습하여 적용할 수 있다.
프로그래밍 입문서로 지인들에게 추천할 의향이 있으며, 개인적으로는 앞으로 개정에서 Oracle JDK와 함께 Open JDK를
소개하면 좋을 것 같다. 최근 Oracle JDK가 상업적 이용이 유료화됨에 따라 앞으로 Open JDK가 더 보편적으로 쓰일 것
이라 생각도 들고, 프로그래밍 입문자들에게 오픈소스의 정신을 입문단계에서 알릴 수 있는 좋은 기회이기 때문이다.