더 나은 자바개발자가 되기 위한 글이라는 것을 보았다.
자바를 공부하다보면 그런 생각이 든다. 어떻게 더 깊게 공부하고 탐구할 수 있을까 ?
프로젝트를 하면서 자바의 1/100정도만 맛보았을 뿐인데, 이 매력적인 언어는 얼마나 더 깊이 있는 걸까?
단순한 프로젝트를 진행했을 뿐이지만, 그 과정에서 만난 매력적인 소재들이 꽤 많았다.
그중 가장 기억에 남는 것이 Wrapping 하는 것이었다. java.doc 에 가서 보면 알겠지만 모든 클래스들은 어떤 큰 주제에 속해있고, extend 와 implement 되는 관계도가 적혀있다.(이것에 대해서 하나하나 뜯어보는 즐거움은 일단 뒤로하고...) wrapping에 대해서 조금이나마 써볼 수 있었던 것은 스프링시큐리티에서 interceptor를 원하는 방향으로 사용하기 위해서였다. 로그인 시 지정해놓은 경로로 이동이 되는 거였는데, 나는 이게 관리자 아이디로 로그인을 하면 곧바로 관리자페이지로만 가게 만들고 싶었다.
그래서 찾던 중에 누군가가 올려놓은 '객체를 랩핑해서 원하는 대로 커스텀하시면 됩니다' 라는 글이었다.
수많은 class들로 이루어진 객체지향적인 자바, 그 의미를 그때서야 비로소 조금 알게된 느낌이었다.
그래서 해당하는 클래스를 찾아가서 implement 시킨후 내가 원하는 방향대로 작동할 수 있게 만들 수 있었다. 일반 회원은 일반 회원이 보는 페이지로 이동하고, 관리자는 바로 관리자페이지로 이동하게 말이다! 어쩌면 굉장히 쉬운 성과이지만 나한테는 관리자로 로그인이나, 관리자 페이지로 가기 같은 2차적인 방법을 거치지 않고 바로 이동할 수 있다는게 너무 뿌듯한 결과였었다.
그 이후에 구현하면서 찾았던 Enum 방식,Optional class 등 역시 탐구할건 많았고 신세계이자 당장 공부하고 싶었다
이제 프로젝트도 마무리가 되었고, 취업 준비를 하고 있으니까
그 때 생각했던 주제들에 대해서도 탐구하기에 딱 적절한 때가 아닌가 생각이 들었다.
자바스크립트도 모던 자바스크립트 (Modern javascripts deep dive 란 책이 좋았다)가 있고, 리액트도 모던리액트 환경이 있듯이
자바도 모던자바가 있지않을까 하고 검색을 해보았다
그랬더니 영어 원문과 함께, 친절하게 그걸 번역해준 블로그 글이 나와서 인상깊게 읽었다
짧게 정리하고, 내가 나아갈 방향에 대해서도 생각해보려고 한다!
1. 모던자바 (자바8버전) - 람다, 스트림 API
이는 Optional.class에 대해서 검색하다가 한 친절한 개발자분께서, 람다식과 스트림 api에 대하여 먼저 공부해볼것을 권하는 조언을 줘서 안그래도 한번 정리해보려고 했던 부분이다. 보긴 보았지만 정리를 하고 사용을 해야 내것이 되니까! :)
자바스크립트 ES6에서도 arrow function이 쓰이는 만큼, 코드의 가독성도 늘리고, 바이트 수까지 절감해주니 당연히 쓰면 좋을 부분이라고 여겼다. 이 외에도 자바8에 새로 들어온 부분은 당연히 100%로 숙지해야한다는 생각으로 먼저 진행해야겠다.
2. Spring framework - MVC, Boot, Cloud -> microservice
Spring MVC패턴은 프로젝트를 진행하며 했던 익숙한 방식이다. Spring boot와 JPA방식은 안그래도 공부를 해서 사이드 프로젝트로 만들어야지 생각했던 차라 이 역시 진행하면 될 것같다.
Spring cloud에 대해서는 처음 들어보는데, 마이크로서비스 아키텍쳐와 관련된 것일까? 알아보고 부트 이후에 진행해야 겠다.
Microservice Architecture의 경우 전통적인 Monolithic Architecture 과 상반되는 개념인데, 요새 많이 고려하는 방식이라고 들었다. 단순한 개념은 알고있지만, MSA 식으로 제대로 짜여진 형태는 어떨지 궁금하다
3. Unit testing - 단위 테스트
Junit을 본문에서 추천하고 있는데, 이는 공부를 진행하면서 적용해보았던 툴이긴 하다. 다만 Junit이 무조건 단위테스트는 아니고 범용적인 테스트이며, 테스트 방식에 대해서 단순한 단위테스트 뿐만 아니라 더 가용성있게 확장되어야 한다는 글을 본적이 있다.
처음부터 TDD방식으로 진행하는 프로젝트도 꼭 해봐야하는데... 안정성을 위한 테스트는 필수인것 같다. 이에 대해서는 하단에 배달의민족-테스트 에 관하여 기술블로그에 적었던 내용을 첨부하고, 사이드 프로젝트에 꼭 반드시 포함해야겠다!
+ 플레이그라운드 자바에서 클린 자바 및 TDD에 대한 좋은 내용들이 있다. 무료니까 꼭 참고해보자 (DDD 세레나데도 굉장히 듣고싶게 생겼다..)
4. API and Libraries -
많은 api를 사용해보고 익숙해질것을 권하고 있다. 본문에 추천해준 링크를 보고 숙지할것!
>> 자바개발자들이 알아야할 자바 라이브러리 20(https://javarevisited.blogspot.com/2018/01/top-20-libraries-and-apis-for-java-programmers.html)
5. JVM 내부를 뜯어보자
설렌다!! JVM과 자바문서를 뜯어서 분해하고 맛보는(?) 날을 기대한다
6. 디자인패턴
단순히 우리가 알고있는 기본 디자인 패턴말고도, 디자인패턴은 굉장히 많다! 이역시 자바의 디자인패턴뿐만 아니라, 다른 언어로도 디자인패턴은 꼭 살펴봐야할 필요가 있기때문에 살펴보자!
7. DevOps tool
참고용 : www.udemy.com/courses/search/?ref=home&src=ukw&q=jenkins
데브옵스! 취직 준비를 하며 채용사이트를 보다보면 항상 보는 단어이다. 그리고 공부를 하면서도 지나쳤던 단어들이다. docker, jenkins, kubernate등.. CI/CD 자동화 배포는 반드시 배우고, 꼭 적용해서 내것으로 만들어야 하는 부분이라고 생각했기때문에 AWS를 심화로 배우면서 꼭 같이 배울 부분이다! 사실 적혀있는 부분에서 안하고 넘어갈 부분은 없지만, 도커나 젠킨스 자동화설정은 정말로 해보고 싶었던 분야이다.
8. 코틀린 Kotlin
이건 10번의 IDE도구와 일맥상통하는데, inteliJ사의 IDE도구와 함께 같이 배우고 싶은 부분이다. 안드로이드 스튜디오를 이용해서 아주 잠깐 미니과제를 만들어본적은 있는데, 그때 kotlin을 배우면 자바언어로 안드로이드 및 ios 관련 개발도 가능하다고 했고, 인텔리사를 이용하기때문에 통합적으로 사용하기도 좋다는 글을 보았고 아..나중에 코틀린도 봐야겠다 라는 생각을 했기때문이다
물론 swift처럼 아예 IOS 기반을 배우는것도 언젠가 꼭 해보고 싶은 분야기는 했는데, 자바를 배웠으니 자바로 안드로이드/ios가 동시에 개발이 가능하다던 코틀린을 배우는건 나쁘지 않은 선택이라고도 생각하기때문이다!
앱으로 아직 당장 어디서 일하고 싶은 마음은 없지만, 우리 생활에 가장 밀접한게 앱개발이다보니.... 나중에 어머니를 위한 만보기 어플 제작부터 시작해서 나만의 미니 프로젝트로 공부해보고 싶은 분야이다 :) 추가적으로 요새 서버언어로 코틀린을 채택하는 곳들도 있는 듯 하다. 앱 뿐만이 아닌 서버에서도 사용되는 함수형 형태라니. 우선순위는 낮지만 언젠가는 보고 싶은 항목이다.
9. Microservices
위와 같다! 스프링부트와 스프링 클라우드에 대해서 먼저 공부할것!
10. IDE 도구
리액트나 자바스크립트 기반을 사용할땐 VSC를 사용하는데, 이것과 같은 방식으로 진행되는 인텔리j사의 ide를 체험해보고싶다 :)
무엇보다 내 개인 노트북이 맥북이라....
맥북으로는 그렇게 편하다는데... 꼭 스프링 부트와 함께 공부하는 날을 꿈꿉니다... 유료지만 ...
더 나은 자바개발자가 되는 법 원문 : dzone.com/articles/10-tips-to-become-a-better-java-developer-in-2018
해당 글 번역 블로그 : sas-study.tistory.com/270
TDD에 관하여 모아놓은 블로그 : brunch.co.kr/@moonjoonyoung/7
- 궁금한 점 / 수정 요청사항 등은 언제든 댓글 달아주세요 :)
- 도움이 되셨다면 ❤️ 하트 한 번 눌러주세요! 감사합니다 !
'BACK-END > JAVA' 카테고리의 다른 글
윈도우 환경에서 자바기반 개발환경 설정하기 (2) | 2021.05.04 |
---|---|
글들을 잠시 비공개 처리하였습니다 (0) | 2021.04.29 |
맥(MAC)에서 자바기반 프로그램 설정 세팅 (0) | 2021.02.22 |
Stream (0) | 2020.09.16 |
Mac 에서 자바 path 및 환경변수 설정하기 * 맥에서 JDK 초기설정 (6) | 2020.08.12 |
댓글