2015년 12월 10일 목요일

모던 자바의 역습(5) 섹시한 자바 개발자로 거듭나기

이번 포스팅은 김대우 님(http://lekdw.blogspot.kr/)과 함께 진행한 동명의 웨비너의 발표 내용에 바탕을 두고 작성되었습니다. 세상에 나온지 어느덧 20년. 오랜동안 프로그래밍 언어의 절대 강자로서 세상을 호령하던 자바를 둘러싼 진실 혹은 거짓말 그리고 과거와 미래에 대하여 알아봅니다.



스크롤의 압박을 피하기 위해 이번 포스팅은 다섯 파트로 나누어 연재합니다.


모던 자바의 역습 

5. 섹시한 자바 개발자로 거듭나기


결론에 이르기 전에 다시 한 번 자바 8의 장점을 정리해봅시다.
  • 함수형 프로그래밍 패러다임 지원 : 손쉬워진 병렬 프로그래밍
  • 더 간결해진 문법(그루비, 스칼라 같은 모던 언어에 더욱 가까운 형태의 코드 구현 가능)
  • 주요 라이브러리와 프레임워크들의 자바 8 지원 완료
  • 잘 정비된 개발 환경
  • 20년간 조성된 거대한 자바 생태계를 그대로 이용 가능

자바의 단점을 보완하는 전략 - 폴리그랏 프로그래밍

자바 8에 이르러서는 행사코드가 많이 줄어든 것은 사실이나 아직도 다른 모던 언어에 비해 부족한 것이 사실입니다. 여기에는 하위버전 코드들에 대한 호환성을 유지하기 위해 어쩔 수 없는 부분들도 있습니다. 더 높은 생산성과 함수형 프로그래밍을 원한다면 JVM 언어를 만나보는 것은 어떨까요? JVM 언어는 자바 가상 머신에서 동작하는 언어들로 대표적으로 스칼라,그루비, 클로저, JRuby, JPython 그리고 젯브레인즈가 만든 코틀린(Kotlin)을 들 수 있습니다. 이들 JVM 언어들은 자바와 API 레벨에서 호환성을 지니고 있을 뿐만 아니라 자바와 함께 코드를 작성할 수도 있어 자바와 적절하게 섞어쓴다면 생산성이나 품질 향상에 크게 기여할 수 있습니다.

더 빠른 성능을 원한다면 C나 C++와 함께 섞어쓰는 방법도 있습니다. 이들 언어는 자바 자체가 원래 C/C++ 언어와 문법적으로 닮은 부분이 많은 만큼 자바 개발자가 익히기 쉽습니다. 포인터나 메모리 관리 등 몇몇 익히기 까다로운 개념이 있기는 하지만 요즘은 개발 환경도 상당히 세련되어졌고 오랜시간 프로그래머들에게 사랑받은 언어인 만큼 풍부한 라이브러리와 레퍼런스를 자랑합니다. 자바 개발자로서 C나 C++ 언어를 익히고 이를 자바와 연결시키는 JNI까지 구현 가능하다면 그야말로 영화 메트릭스에서 메트릭스의 본질을 볼 수 있게 된 네오와도 같이 엄청난 힘을 손에 넣는다고 할 수 있습니다.

요런 느낌?

자바 8의 도입, 더 미룰 이유가 없다!

자바 8의 최초 구현인 OpenJDK 8이 공개된 시점은 2012년 4월이었습니다. 벌써 햇수로 3년이 지났고 오라클에서 자바 8을 발표한 지도 1년이 지났습니다. 대부분의 라이브러리들은 자바 8의 지원을 완료한 상태이며 특히 웹 프레임워크로 인기가 높은 스프링이나 아카 라이브러리 최신 버전은 이미 자바 8의 지원을 마친 상태입니다.

일단 자바 8을 도입하는 데 있어서 JavaEE 기반의 애플리케이션을 개발하는 경우가 아니라면 더 이상 도입을 미룰 이유는 딱히 찾아보기 어렵습니다. 하지만 호환성 문제 이외에도 자바 8은 문법적으로 이전 자바와는 크게 이질적인 부분이 있어 개발자들의 진입이 그리 쉽지만은 않을 전망입니다.

특히 문법보다도 함수형 프로그래밍이라는 패러다임은 앞으로 상당 기간 프로그래머를 나누는 한 가지 기준으로 작용할 것으로 보입니다.

기본적으로는 자바 8을 도입하는 전략도 부록 A.3절에서 설명한 ‘새로운 코딩 스타일에 적응하기’와 크게 다르지 않습니다. 단지 코딩 스타일뿐만이 아니라 제대로 함수형 프로그래밍 패러다임을 이해하고 사용하기 위해서는 사내 워크숍이나 웨비너를 통해 새로운 패러다임을 맞이할 준비를 해야만 합니다.

자바 개발자에서 모던 자바 개발자로

일각에서는 자바 8의 함수형 패러다임 도입이 너무 늦어 그 시기를 놓친 것이 아닌가 하는 우려의 목소리도 있습니다. 이미 함수형 프로그래밍이 필요한 분야에서는 자바 8보다는 스칼라나 얼랭(ErLang)과 같은 함수형 언어를 도입했다는 소문도 들려옵니다.

하지만 멀티프로세싱 시대는 이제 막 시작했을 뿐입니다. 앞으로 더 많은 수의 코어들로 동작하는 기기들이 속속 우리 앞에 모습을 드러낼 것이고 그러한 기기에서 제대로 성능을 뽑아내는 프로그램을 만들기 위해서 함수형 프로그래밍은 선택이 아닌 필수 요소로 자리 잡을 것입니다.

아직 자바 8에 대해서 유보적인 입장을 취하는 개발자께 이 글이 조금이라도 보탬이 되었으면 하는 바램으로, 모던 자바라는 단어를 처음으로 필자에게 제안한 구글의 소프트웨어 엔지니어 염재현 님의 말을 소개하는 것으로 글을 마치고자 합니다.




“흔히들 이력서에 자바 엔지니어라고만 적어넣습니다. 버전까지 명기하는 경우는 없지요. 하지만 이제부터는 Java 8 이후의 함수형 프로그래밍과 그 이전의 자바를 구분하여 부를 필요가 있지 않을까요? C++를 C++11 이후 모던 C++라고 부르는 것과 마찬가지로요.”




모던자바의 역습

  1. 프로그래밍 언어 자바
  2. 자바를 둘러싼 진실 혹은 거짓말
  3. 자바 코딩 스타일 변천사
  4. 모던 자바의 등장 - Java8
  5. 섹시한 자바 개발자로 거듭나기