자바 웹 기술의 역사
- 서블릿 등장
비즈니스 로직을 제외한 모든 연결 과정을 다 처리해줘서 편리하나 문제는 자바로 짜는거라 동적인 html 생성이 까다로웠음.
- jsp 등장
jsp 덕분에 서블릿의 html 생성 문제가 어느정도 해결되었으나 문제는 여기에 비즈니스 로직을 여기에 넣는 경우가 많아서 유지보수가 매우 힘들었음.
- 서블릿, jsp 조합 mvc 패턴 등장
비즈니스 로직과 뷰를 나눠서 유지보수를 쉽게 하기 위해 모델,뷰,컨트롤러로 역할을 나눠서 개발하기 시작함
- mvc 프레임워크 춘추전국 시대
mvc 패턴으로 수많은 프레임워크가 쏟아져나왔고 아직 기준이나 대세가 자리잡기 전이었음. 그래도 이덕분에 mvc 패턴 자동화나 웹 기술을 편리하게 사용할 수 있는 다양한 기능도 많이 나옴.
- 애노테이션 기반의 스프링 mvc 등장
애노테이션 덕분에 스프링 mvc가 수많은 mvc 프레임워크의 기준으로 자리잡음.
- 스프링 부트의 등장
스프링을 사용하기 훨씬 쉽게 해주는 스프링 부트가 단숨에 대세로 떠오름. 무엇보다도 스프링 부트는 서버가 내장되어있어서 까다로웠던 빌드 배포가 훨씬 단순해짐
- 스프링 웹 기술이 web servlet과 web reactive로 분화됨
- web servlet-spring mvc: 기존의 서블릿, mvc 기술
- web reactive-spring webflux: 최신 기술로 서블릿 기술을 사용하지 않고 netty를 사용함. 쓰레드의 수를 cpu core의 수와 동일하게 맞춰서 쓰레드 컨텍스트 스위칭 비용이 안들고 최소 스레드로 최대 성능을 볼 수 있음. 함수형 스타일로 개발함. 한마디로 자바도 node.js같이 개발이 가능해짐.
webflux는 아직 관계형 데이터베이스 지원이 부족하고 기술적 난이도가 매우 높음. 그리고 무엇보다도 스프링 mvc 스레드로도 왠만하면 커버가 가능하므로 아직까진 잘 사용하지 않음
자바 뷰 템플릿 역사
html을 편리하게 생성하는 뷰 기능
- jsp 등장
속도가 굉장히 느리고 기능도 부족함
- freemarker,velocity 등장
속도도 빠르고 다양한 기능을 지원함. 그러나 발전이 더딤.
- thymeleaf
- 내추럴 템플릿: html 모양을 유지하면서 뷰 템플릿을 적용할 수 있음
- jsp나 freemarker같은 경우에는 html 파일을 열었을때 if문같은 js 코드가 보였는데 thyemeleaf는 html tag로 넣기 때문에 그런 문제가 없음
- 스프링 mvc와 같이 사용했을때 매우 강력함