180312-180318


입사 11주차

새로운 프로젝트를 시작했다.

두달동안 벌써 두 개의 프로젝트를 진행했는데, 이번에는 그때보다 규모가 커서 좀 걱정이 된다.

레거시 서버를 리뉴얼 하는 것이기 때문에 어떻게 해야 효율적으로 바꿀 수 있을지에 대해 논의하고 열심히 설계했다. 이전 프로젝트 때 Maven으로 멀티 모듈 나눠서 관리했던 것처럼, 이번에는 Gradle로 멀티 모듈 나눠서 작업 중인데 설정한 것들이 뜻대로 동작하지 않을 때가 있어서 좀 괴롭다.

원래는 WebFlux를 사용할 예정이었으나, 시간 관계상 사용하지 못할 것 같은 느낌이 든다. 그래도 가볍게 공부해보니 충분히 흥미있는 기술이어서 개인적으로나마 써봐야 될 것 같다!

개인 공부

주로 디자인 패턴에 대해 공부했다.

팀원에게 잠깐 빌려줬던 디자인 패턴 책을 다시 받아서 보는 중인데, 비교적 쉽게 설명된 책이라 읽기 편하다. 우선은 예제 코드에 익숙해지고 업무에 패턴을 적용하면서 감을 쌓아야겠다는 생각이 든다.

그 외에는 자바 String에 대해 깊게 파는 시간을 가졌다. String literal과 new String의 차이점에 대해서는 이미 어느정도 알고 있었지만, JDK 1.7 이상부터 String constant pool이 Heap 영역에 저장되도록 변경됐다는 내용을 접하고 좀 더 자세히 찾아봤다.

이 과정에서 String.Intern() 메서드가 어떤식으로 동작하는지 궁금해져서 같이 알아봤는데 native 메서드라서 파악하기 쉽지 않았다. 다행히 OpenJDK의 소스는 공개되어 있었기 때문에 그 쪽을 활용해서 코드를 읽어볼 수 있었고, 역시 어렵다는 생각과 함께 브라우저 창을 닫았다. ㅠㅠ

C++을 잘 아는 것도 아니고, JVM 전체 코드에 대한 전반적인 이해가 있는 것도 아니다보니.. 그냥 intern 메서드에 대한 설명을 보면서 어느정도 해당 코드에 대한 대략적인 흐름만 이해했다. 그래도 native 메서드의 구현 코드를 어디서 읽어보는지 알았으니 재밌는 시간이었다!

읽어본 코드 1

읽어본 코드 2