프로그래머를 꿈꾸는 취준생이 준비해야 할 프로그래밍 언어가 꼭 ‘자바’ 여야 할까?

저자는 웹과 모바일 개발을 할 생각이라면 자바라는 결론에 도달할 것이라고 답했다. 우리나라 공공기관, 금융, 통신, 유통 등의 영역에서 자바로 시스템을 구축한다는 것이 그 이유다. 자연스레 자바 개발자를 구하는 수요가 다른 언어에 비해 많다는 것이다.

자바로 개발할 수 있는 것이 웹사이트뿐이 아니다. 기업에서 사용하는 ERP, 웹 앱 등이 자바를 베이스로 하는 프레임워크를 이용해 만들어진다. 안드로이드 앱도 자바를 기반으로 하고, 빅데이터 플랫폼인 하둡 자체도 자바로 개발됐다. 이처럼 자바는 특정 분야에 국한된 것이 아니라 아주 다양한 분야에서 널리 사용되고 있는 프로그래밍 언어임을 강조했다.

출판사 골든래빗에서 ‘내 것으로 만드는 시간을 드리는’ 기획 도서 ‘머스트 해브(must have)’시리즈로 출간된 이 책은 초보자를 위한 책이지만 어려운 개념을 생략하지 않았다. 모호한 용어를 무작정 외우라고 강요하지도 않는다.

이 책의 구성 전반부는 자바의 개념을 잘 이해할 수 있도록 그림과 예제를 사용해 최대한 쉽게 설명하고, 후반부는 이를 응용해 프로그래밍할 수 있도록 돕는다. 프로그래밍에 입문해 프로그래머로 취업하고 싶은 취준생들에게 큰 힘이 되길 기대해본다.

이재환의 자바 프로그래밍 입문
이재환 지음 | 골든래빗 | 630쪽 | 2만5000원

#10줄서평 #3단계 자바 클래스 응용 프로그래밍

1. 제네릭을 적용하기 이전의 코드는 객체를 돌려받을 때 형변환을 잊지 말고 해야 한다는 불편함이 있고, 코드 진행상 프로그래머가 실수를 해도 그 실수가 드러나지 않을 수도 있다는 잠재적 위험이 존재한다.

2. 제네릭은 클래스, 메서드에서 사용할 자료형을 나중에 확정하는 기법이다. 클래서나 메서드를 선언할 때가 아닌 사용할 때, 즉 객체를 생성할 때나 메서드를 호출할 때 정한다는 의미다.

3. 클래스 전부가 아닌 메서드 하나에 대해서도 제네릭으로 정의할 수 있다. 머릿속으로 생각하지 말고 다이아몬드 연산자에 주어진 자료형으로 바꿔 써서 보면 그냥 일반 메서드다.

4. 자바에서는 앞에서 살펴본 자료구조를 개발자가 편리하게 사용할 수 있도록 컬렉션 프레임워크를 제공한다. 컬렉션 프레임워크에서 제공하는 인터페이스들은 상속 관계를 가지고 있다.

5. 어레이리스트(ArrayList)는 배열은 아니지만 배열 기반이라 데이터의 추가, 삭제보다는 참조가 링크드리스트(LinkedList)보다 빠르다는 장점이 있다. 반면 링크드리스트는 리스트 기반이라 데이터 참조 속도보다는 데이터의 추가, 삭제가 어레이리스트보다 쉽다는 장점이 있다. 그래서 만드는 시점에 추가될 데이터 성격을 생각해서 어레이리스트나 링크드리스트를 선택해서 만들고 사용할 때는 그냥 리스트로 사용하면 된다.

6. 컬렉션 프레임워크는 제네릭을 사용해 자료형을 제한한다. 이때 제네릭 부분에 클래스 타입을 지정해야 한다. 기본 자료형을 직접 적어줄 수는 없다. 하지만 앞서 배웠던 래퍼 클래스들은 오토 박싱과 오토 언박싱이 되기 때문에 자료형만 래퍼 클래스로 적어줄 뿐 기본 자료형을 사용하는 데 제약사항은 없다.

7. 다른 클래스와는 연관되어 사용되지 않고 해당 클래스에만 특정 클래스를 사용할 때 하나의 소스 파일로 묶어 관리를 편하게 할 수 있다. 외부 클래스는 내부 클래스를 멤버 변수처럼 사용할 수 있고, 내부 클래스는 외부 클래스의 자원을 직접 사용할 수 있는 장점이 있다.

8. 자바는 객체를 기반으로 프로그램을 구현한다. 만약 어떤 기능이 필요한데 간단한 기능이기 때문에 함수만 하나 만들어서 사용하고 싶어도 자바는 클래스 기반의 객체지향 언어이기 때문에 간단한 클래스를 만들어줘야 한다. 클래스를 먼저 만들고, 클래스 안에 기능을 구현한 메서드를 만든 후 객체를 통해 그 메서드를 호출해야 한다. 자바는 클래스가 없으면 메서드를 사용할 수 없다. 이런 불편함을 덜기 위해서 자바 8부터는 함수형 프로그래밍 기법인 람다식을 지원한다. 자바는 익명 내부 클래스를 람다식으로 표현해 함수형 프로그래밍을 지원한다.

9. 데이터의 흐름을 가리켜 스트림이라 한다. 데이터가 여러 개가 있어야 흐름을 만들 수 있기 때문에 스트림 데이터 소스로는 컬렉션, 배열 등이 주로 사용된다. 스트림 데이터는 이렇게 데이터 소스에서 추출한 연속적인 데이터다. 그리고 스트림은 이런 연속적인 데이터 흐름을 반복적으로 처리하는 기능이다.

10. 스레드는 하나의 실행 흐름으로 프로세스 내부에 존재한다. 그리고 프로세스는 하나 이상의 실행 흐름을 포함하기 때문에 프로세스는 적어도 하나의 스레드를 가진다.

하순명 기자 kidsfocal@chosunbiz.com


관련기사