티스토리 뷰

IT는 새로운 용어와 신기술의 홍수

소프트웨어 개발 분야는 매년 새로운 용어와 신기술의 범람으로 신입 개발자는 물론 경력 개발자들조차 잠시 한눈이라도 팔면 정신을 못 차리는 세계이다. 프레임워크와 라이브러리의 발전으로 Java Web Application 개발은 쉽다는 인상을 주는 편인데(내 전산실 개발 경험을 예로 들자면 클라이언트가 되는 현업 부서에서 특정 프로젝트의 개발비용을 산정하면서 웹으로 만들면 쉬우니까 더 싸지 않냐는 말을 한적도 있다.) 실제로 웹 개발은 상당한 깊이의 이해와 경험이 동반되지 않으면 프로젝트가 산으로 갈 수 있다고 말하고 싶다. 스스로를 돌아보는 목적과 신입사원의 교육 목적으로 간단히 Java Web Application과 프레임워크의 기본 개념 및 동작 원리를 작성해봤다.

Java Web Application의 원리는?

흔히 JavaWeb Application을 개발한다는 것은 Java EE 기술을 이용하여 사용자의 HTTP 요청에 응답하는 동적 애플리케이션을 개발한다는 것을 의미하며 대표적으로 사용되는 Java EE 기술은 Java ServletJavaServer Pages이다.(JavaServer Pages는 최종적으로 Java Servlet로 컴파일된다. 따라서 핵심이 되는 Java Servlet에 대한 이해 정도가 숙련된 Java Web Application 개발자인지 아닌지를 결정한다고 말할 수 있다.)

  • Java EE는 오픈 소스 또는 완성되어 판매되는 제품이 아닌 스펙이자 약속일 뿐이다. HTML 스펙과 웹 브라우저의 관계를 생각하면 이해가 빠르다. HTML 스펙이 확정되면 Firefox, Chrome, Internet Explorer 등의 다양한 브라우저들이 확정된 HTML 스펙을 구현하여 배포된다. 마찬가지로 Java EE 또한 Apache Tomcat, Apache Geronimo, GlassFish, Jetty 등의 다양한 구현체가 존재하며 이들을 묶어 Web Container라고 부른다.(구현 수준에 따라 Java EE Container라고도 부른다.)
  • 위에 언급한 기술로 HTTP GET 요청에 대한 응답을 어떻게 구현하는지 간단하게 살펴보자. 현재 가장 대중적인 Java Servlet 2.5 스펙을 기준으로 설명한다.
  • 먼저 개발자는 javax.servlet.http.HttpServlet 클래스를 extends한 새로운 클래스를 생성한다. doGet() 메써드를 override한 후 사용자의 요청에 응답할 내용을 작성한다. 새로운 Servlet 클래스를 작성하는 것이다.
  • Servlet 클래스를 작성하였으면 요청 URI와 연결시켜주는 작업이 필요하다. Deployment Descriptor라 불리우는 /WebContent/WEB-INF/web.xml 파일에 이 내용을 작성한다.(Maven을 사용한다면 경로는 /WebConetnt가 아닌 /src/main/wepapp이 된다.
  • web.xml/web-app/servlet/servlet-class 엘러먼트에 앞서 작성한 Servlet 클래스의 이름을 패키지명을 포함한 풀네임을 입력한다. /web-app/servlet/servlet-name 엘러먼트에는 해당 Servlet의 별명을 입력한다.(ex: HelloWorldServlet) 마지막으로 /web-app/servlet-mapping/url-pattern 엘러먼트에는 해당 Servlet으로 연결할 요청 URI를 입력한다.(ex: /helloworld)
  • 작성한 프로젝트를 .war 파일로 변환하여 앞서 설명한 Web Container에 배포(Deploy)하면 웹 애플리케이션의 배포가 완료된다.

프레임워크 적용시 변경점은?

대부분의 Web Application 개발시 생산성과 유지보수의 편의를 위해 위에 언급한 기술을 토대로 한 프레임워크를 사용하여 개발한다. Java EE 기술을 사용한 프레임워크에는 대표적으로 Spring MVC, JSF, Vaadin이 있다. Spring MVC 프레임워크를 예로 들어 프레임워크 적용에 따른 프로젝트의 변경점을 살펴보자.

  • web.xml/web-app/servlet/servlet-class 엘러먼트에 직접 작성한 Servlet 클래스가 아닌 Spring MVC 프레임워크가 제공하는 org.springframework.web.servlet.DispatcherServlet을 입력한다.(JSF의 경우 javax.faces.webapp.FacesServlet을, Vaadin의 경우 com.vaadin.server.VaadinServlet을 입력한다.)
  • /web-app/servlet-mapping/url-pattern 엘러먼트에 /*를 입력하면 모든 애플리케이션에 대한 HTTP 요청을 Spring MVC 프레임워크가 처리하게 된다. 물론 다양한 패턴에 대해 각각 다른 DispacherServlet를 연결하는 것도 가능하다. 나머지는 해당 프레임워크의 레퍼런스를 참고하여 프로젝트를 구현하면 된다.

결론

프레임워크는 전혀 새로운 기술이 아니다. 철저히 Java EE의 토대 위에서 Java로 구현된 클래스에 의해 동작한다. 프레임워크는 Enterprise 수준에서의 높은 생산성과 유지보수의 편의성을 목적으로 개발된 것이다. 국내 여건상 흔히 프레임워크의 사용법에만 집중하기 쉬운데 Java EE에 대한 깊이 있는 이해 없이는 절대로 수준 높은 개발자가 될 수 없다는 것을 명심해야 한다.

댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함