'용어설명'에 해당되는 글 1건

  1. 2017.04.14 JSP란 무엇일까요?
IT이야기/입코딩2017. 4. 14. 13:43


-JSP란 무엇일까요?



현재 저는 흔히들 이야기하는 자바 개발자로 일하고 있습니다.

단순하게 말하면 스프링 프레임워크로, SQL 화면 불러오고, JSP 화면에 뿌려주고 그런 일이죠.

이 JSP에 대해서 한번 말씀드려보겠습니다.

이 단어의 뜻은 Java를 사용한 서버측 코드가 들어가 있는 웹페이지란 의미로 JavaServer Page의 약자입니다. 

같은 부류에 속하는 것으로 PHP, ASP가 있습니다. 당연히, 확장자는 .jsp를 사용하지요. ex) index.jsp 이런식입니다. 

ASP와 마찬가지로 <% ... %>로 둘러싸인 스크립트 영역이 있으며, 실행시에 javax.servlet.http.HttpServlet 클래스를 상속받은 자바 소스코드로 변환된 다음 컴파일되어 실행됩니다. 

<p>Counting to three:</p>

<% for (int i=1; i<4; i++) { %>

    <p>This number is <%= i %>.</p>

<% } %>

<p>OK.</p>

이런 모양으로 사용된다고 보심되죠.

웹브라우저에 출력되는것을 확인해보겠습니다.

Counting to three:

This number is 1.

This number is 2.

This number is 3.

OK.

이렇게 나옵니다.


이 JSP 파일을 Servlet 클래스로 변환하고 실행시켜 주는 역할을 하는 프로그램이 Servlet Container로, 대표적으로 오픈소스 서블릿 컨테이너인 톰캣을 사용합니다.

개인 프로젝트인 경우 가볍고 무료인 톰켓을 많이 사용하나, 기업의 경우, 제우스나, 웹로직 같은 유료 서블릿 컨테이너들도 많습니다. 

하나의 JSP페이지가 하나의 자바 클래스이기 때문에 모든 자바 라이브러리를 끌어다 쓸 수 있습니다.

서블릿 컨테이너도 Java 프로그램이며, 자바 가상 머신 위에서 실행됩니다. 

따라서 대부분의 운영체제에서 소스코드 변경이나 재 컴파일 없이 실행시킬 수 있습니다. 

운영을 반영할때 controller등 java파일이 아닌 jsp의 경우는 그냥 새로고침만 해도 반영됩니다.

특히 유닉스계열과 궁합이 잘 맞는다고 합니다.

중-소규모 사이트에서 주로 쓰이는 PHP와 달리, 주로 대규모 기업용 시스템 구축에 사용됩니다. 

사람인이나 잡코리아를 보면 대부분의 구직란에 jsp 개발이 많습니다.

위에서 말씀드린대로, 대규모 기업 환경에서는 보통 톰캣과 같은 단순한 서블릿 컨테이너가 아닌, Java Platform, Enterprise Edition(J2EE) 사양을 만족하는 Application Server 위에서 프로그램을 운용하게 됩니다.

J2EE는 JSP의 실행 뿐만 아니라 DB 커넥션 풀, 메시징 시스템, 로드밸런싱 등등 화려한 기능들로 무장하고 있고 덕분에 매우 비싸며. 규모가 방대하고 무거우며, 메모리 등의 자원도 많이 사용하게 되고 상대적으로 초기 로딩도 느립니다.

이쪽 업계의 최고봉은 BEA의 WebLogic 이었지만 지금은 오라클에 인수된 상태 국내 한정으로 기관 등에 자주 쓰이는 티맥스소프트의 JEUS 도 J2EE 어플리케이션 서버입니다.

PHP를 지원하는 호스팅 업체는 많이 널려있지만 JSP를 호스팅 해주는 업체는 찾기가 예전에는 쉽지 않았으나, 데이터 센터와 호스팅 업체들이 클라우드 컴퓨팅으로 갈아탄 다음부터 비교적 싼 값에 자바를 운용할 수 있는 클라우드 호스팅 서비스도 꽤 생겨났다고 합니다.

구글의 App Engine이 공짜로 Java를 지원하니, 호스팅을 이용해보는것도 괜찮을거같습니다. 아니면 AWS(Amazone web server)에서 1년가량 무료로 사용하는 리눅스 서버에서 반영할수 있습니다.

PHP와 비교해서 JSP는 실행 속도가 빠르고, 안정적이고, 유지보수가 쉽다고 합니다.(정확히는 사용하기 나름이나, jsp는 어느정도 정형화 되 있어서 그런거같습니다.) 

반면 PHP는 개발 속도가 압도적으로 빠르다는 평가를 합니다.

그런데 아쉽게도 2010년대 이후의 웹 환경은 JSP의 경직된 구조를 받아들이지 못하고 있어 빠르게 인기가 식고 있다.

특히 요즘 트렌드인 API 주도형 사이트 구축과 SPA(Single Page Application)는 JSP와 정말 궁합이 안 맞는다네요. 

대기업이나 금융권, 관공서 등 주로 규모가 큰 곳에서는 여전히 수요가 있지만, 이러한 곳이 아니라면 서비스 내용 대비 쓸데없이 무겁고 학습곡선이 가파른 JSP를 선호하지 않는 경향이 있다고 합니다.

과거에 쓰였던 EJB 는 군더더기 코드가 많고, EJB를 로딩하는 데 꽤나 시간이 걸리며, 원래 분산 환경을 위해 설계되었으나 아무도 그렇게 쓰지 않고, 속도를 위해 Local Bean 으로만 줄창 쓰다가 지금은 스프링 프레임워크에게 완전히 밀려난 상태입니다.

그나마 스프링 프레임워크가 이 학습 곡선을 절반 정도로 줄여주긴 했으나 그래도 높습니다. 

스프링 프레임웍 없이 쌩으로 JSP를 사용한다면 그냥 코딩지옥이라는 평이 있습니다. 확실히 오래된 소스를 까보면 Model2 형식에 jsp로만 이루어진 사이트들이 있는데, 완전 헬 이군요.

ASP도 비슷한 사정으로 점유율이 하락중이라 합니다.

PHP가 아직 웹 쪽에서는 선방중이고(다만 사용하는 방식이 많이 변했다) 신흥강자로 node.js가 떠오르고 있습니다.

그리고 루비 온 레일즈의 성공도 JSP의 앞날을 가로막는 존재라고 하네요. 

파이썬의 장고(Django)와 플라스크(Flask)프레임워크도 편의성과 고성능, 그리고 압도적인 생산성과 낮은 학습곡선으로 JSP를 위협하고 있습니다

여기까지만 들으면 JSP 는 완전 안습이 되어 가고 있는거같은데, 한국에서의 SI에서는 최소 10년은 먹고 살걱정없을거같고, 해외 구직 사이트들에서도 분명 많은 비중을 차지하고 있습니다.

most popular coding languages of 2017

링크


여러 사이트들에서 랭킹을 매겨놨습니다.대부분은 java 언어가 1위를 차지하고 있네요.


자료 출처 : 나무위키, 위키백과

Posted by Joseph514