3학년 생활을 지내던 도중, Java에 대해 좀 더 알고싶어서 도서관에 가게 되었다. 현실적으로, Java로 취업을 하기 위해 어떠한 길이 있는지를 파악하기 위해서이다. 필자는 주로 Swing 라이브러리로 GUI를 통해 응용 프로그램을 만드는 것에 한참 빠져있던 참이었다. 하지만, 해당 기술만을 통해선 취업이 힘들지 않을까라는 생각이 들었다.
보통 Java 프로그래머들은 Spring 프레임워크를 통해 백엔드로 많이 취업을 한다는데, Spring이 무엇인지 알고싶어서 토비의 스프링 3.1 을 빌려서 읽어보고 싶었다. 그러나 인기가 많은 책이어서 그런지 다 대출중인 상태였다. 그렇게 아쉬움을 뒤로한 채로 돌아가던 찰나, 자바 네트워크 프로그래밍 - 엘리엇 러스티 해럴드 이라는 책을 보게 되었다.
이전에 유튜브를 통해 Java로 채팅 프로그램을 만들었던 기억이 있었는데, 그때는 거의 맨땅에 해딩하면서 만든거라 이해가 잘 되지 않은 상태였다. 그때의 아쉬움 때문일까? 발걸음은 쉽게 떨어지지 못한 채, 대출을 할지 말지 고민하게 되었다. 책 자체도 2014년도에 출판된 것이라 너무 옛날 내용을 다루는게 아닌지 걱정이 들었지만, 읽어서 안좋은 책이 어디 있는가? 토비의 스프링이 나올 때까지 대출해서 한번 읽어보게 되었다. 끝까지 다는 읽어보지 못했지만, 이 책을 대출한 것에 대해서 지금까지도 후회되지 않는 선택이라고 필자는 생각한다.
해당 책을 읽으면서 필자의 마음을 움직이게한 문구가 있었다.
Java는 처음부터 네트워크 어플을 위해 설계된 최초의 프로그램이 언어다.
Java는 다양한 작업의 처리를 위한 강력한 크로스 플랫폼 네트워크 라이브러리를 제공하는 최초의 언어다.
그래서 Java 백엔드가 인기가 많은 것일까? 여러 생각이 들게 되었다.
객체지향 프로그래밍의 5가지 특징 중에서, 추상화와 다형성이 있다. 네트워크 또한 코드로 추상화를 시키며, 사용자에게 다양한 기능을 제공해주는 여러 개의 구현체가 존재한다. 개발자는 코드 내부를 다 확인할 필요 없이, 명세서를 참조하여 필요한 구현체를 선택해 사용하기만 하면 된다.
왜 Java가 네트워크 세계에서 강한 언어인지 얼추 이해가 되기 시작했다. 물론 세밀한 프로그래밍을 하기 위해선 하나부터 열까지 다 알아둘 필요가 있지만, 단순히 사용하는 것을 목표로 둔다면 Java를 사용하는 것이 매력적일 것이라고 생각이 들었다. 이 책을 읽고 나서 Java와 네트워크를 접목시켜 개발하는 백엔드에 더더욱 관심이 생기기 시작했으며, Spring 프레임워크를 통해 네트워크 프로그래밍을 해보고싶은 흥미가 생기게 되었다. 이러한 흥미는 Java를 더욱 잘 사용하고싶은 생각이 들게 되었으며, 더 나아가 객체지향과 디자인 패턴, Spring 프레임워크 등 Java와 객체지향과 관련된 기술에 대해 관심이 생기게 된 계기가 되었다.
4학년이 다 되어가는 상황에서 이제야 이를 알게 된 사실이 아쉽기만 했다. 조금만 더 빨리 알게 됐다면, 이를 중심으로 더 많은 학습과 프로젝트를 통해 다양한 Java 네트워크 프로그래밍 개발 경험을 쌓을 수 있을 것이라고 생각이 들었다. 그래도 지금이라도 안게 어디인가? 그렇게 본격적으로 Java 백엔드에 집중해서 개발 경험을 쌓는 여행을 시작하게 되었다.