"JSP"의 두 판 사이의 차이
잔글 (→같이 보기) |
잔글 (→같이 보기) |
||
64번째 줄: | 64번째 줄: | ||
* [[ASP]] | * [[ASP]] | ||
− | {{프로그래밍|검토 필요}} | + | {{프로그래밍 언어|검토 필요}} |
− | |||
[[분류:스크립트 언어]] | [[분류:스크립트 언어]] |
2019년 9월 20일 (금) 02:20 판
JSP(제이에스피)는 자바 서버 페이지(JavaServer Pages)의 약자로서, HTML 페이지 안에 자바(Java) 코드를 직접 삽입하여 웹서버에서 동적으로 웹 페이지를 생성하여 웹브라우저가 표현할 수 있도록 전달해 주는 스크립트 프로그래밍 언어이다. HTML 문서 안에 <% ... %> 기호를 쓰고 그 안에 자바 코드를 삽입하는 방식으로 사용한다. 서블릿(Servlet)은 자바 소스 코드 안에 HTML을 삽입하지만, JSP는 반대로 HTML 문서 안에 자바 코드를 삽입한다. 한편 자바스크립트(JavaScript)는 사용자의 개인 PC에 설치된 웹브라우저에서 실행되지만, JSP는 웹서버에서 실행되어 그 결과값만 사용자의 웹브라우저에 전달된다는 차이점이 있다.
목차
개요
JSP는 서블릿을 이용하여 웹페이지를 직접적으로 제어하여 모양이나 내용을 변환하는 기술이다. 라이선스를 사서 사용하며 보통 중규모나 대규모의 사이트 개발을 위해 사용된다.[1] 자바를 개발한 썬마이크로시스템즈에서는 이 기술을 서블릿 응용 프로그램 인터페이스(API)라고 표현하며 JSP는 마이크로소프트의 ASP 기술과 유사하다. ASP는 페이지가 사용자에게 전송되기 전에 스크립트 인터프리터에 의해 해석될 스크립트를 포함하지만 JSP는 웹서버에 의해서 실행되는 자바 프로그램을 호출하고 WAS(Web Application Server)는 클라이언트의 웹 브라우저로부터 JSP에 대한 요청이 오면 JSP 코드를 서블릿 코드로 변환 후 컴파일하여 실행하게 된다.[2] 자바 서블릿과 연결된 HTML페이지는 JSP라는 파일 이름이 붙고 서블릿 기술의 확장으로 사용자가 입력한 코드에 따라 페이지를 생성한다.
등장 배경
JSP는 마이크로소프트에서 출시한 웹 개발스크립트 엔진인 ASP(Active Server Page)에 대응하기 위해 만들어진 자바 서버 페이지(Java Server Page)라는 스크립트 엔진이다. 1999년 미국 썬 마이크로시스템즈사가 처음 개발했고, 2010년 오라클(Oracle)사에 인수되었다.
웹 서비스의 동작원리
JSP를 알기 전에 웹서비스의 동작 원리를 알아야 한다. 웹 서비스는 클라이언트와 서버로 구성되어 있다. 클라이언트 쪽에서 자신이 원하는 서비스에 대해 요청을 하면 서버는 그에 맞는 서비스를 클라이언트에게 응답한다. 예를 들어 우리가 웹 서비스를 클릭을 하는 것을 요청이라 볼 수 있고 그에 따라 컴퓨터가 나에게 보여주는 화면은 서버가 나에게 응답했다는 것을 알 수 있다.
JSP 동작 과정
- 사용자는 웹브라우저에서 http://서버주소/xxx.jsp의 형태로 해당 JSP를 웹서버로 요청한다.
- 웹서버는 요청받은 JSP를 JSP 컨테이너에 처리를 넘겨준다.
- JSP 파일이 처음 요청받은 것이라면 파일을 서블릿으로 변환시키고 이전에 요청받았던 파일이라면 변환시키지 않고 클래스 파일에 메모리를 적재한다.
- 변환된 서블릿 파일은 자바에서 실행가능한 클래스 파일로 컴파일된다.
- 이후 클래스 파일이 메모리를 타고 실행된다.
- JSP 실행 시 WAS에서 내부의 JSP 파일을 Java Servlet(.java)으로 변환한다.
- 실행 결과는 웹서버에 넘어가고 웹서버는 다시 웹브라우저가 인식할 수 있는 HTML 형태로 결과를 출력한다. 이제 HTML 페이지를 브라우저가 실행시켜 사용자에게 보인다.
이 일련의 과정들은 최초 요청시에만 일어나고 같은 페이지에 대해 재 요청이 있을 시에는 이미 변환된 서블릿 파일로 서비스를 제공한다.
특징
성능과 확장성
JSP는 HTML 태그로 구현되는 부분과 JSP 태그로 구현되는 부분으로 나누어지는데 JSP 태그에 포함되는 부분은 백그라운드에서 맞는 서블릿 소스로 생성되어 처리된다. JSP 태그로 생성되는 서블릿 클래스는 처음 요청 시에는 객체가 생성되며 두 번째 요청 시에는 처음 생성된 객체에서 멀티스레드로 동작하게 된다. 하나의 JSP 파일에 대해서 여러 사용자의 다중 요청에 대해 멀티스레드로 동작할 수 있다. 여러 스레드끼리 쉽게 리소스를 공유할 수 있어 성능이 향상된다. 기존자바의 장점을 그대로 가져오면서 웹 서버에 독립적으로 운용할 수 있다.
Java Beans 컴포넌트의 활용
JSP는 자바 언어를 활용해서 동적인 콘텐츠를 구현할 수 있는데 직접적으로 태그 안에 자바의 소스 코드를 구현해도 되지만 자바 언어를 알지 못해도 HTML 수준의 기본 태그를 활용하여 서버 내부에 있는 자바 객체를 활용 할 수도 있다. 이것은 자바 언어로 작성된 객체로 모듈성과 재사용성에 맞추어져 개발되었다. Java Beans의 개발은 자바에서 클래스를 만들듯이 데이터와 동작 원리에 대해 변수와 메서드로 나누고 약간의 규약을 첨부해서 구현한다. 컴포넌트의 내부구조를 모르고도 Java Beans 컴포넌트를 활용하여 원하는 기능을 구현할 수 있다.
프로그램구현의 용이성
자바 서버 페이지의 기능을 충분히 활용하면 프로그램을 구현하는 세션과 사용자에게 정보가 보이는 세션을 분리하여 처리할 수 있다. 프로그래밍을 담당한 Java Beans를 이용하여 코드를 어떠하게 작성하느냐에 따라 다양한 효과를 얻을 수 있다. 이 외에도 웹 애플리케이션 개발과 유지 보수를 각각 따로 처리할 수 있고 자바에서 활용되는 여러 클래스 또한 JSP에서 사용할 수 있다.
장점
공공기관에서 쓰일 만큼 보안성이 뛰어나고 다양한 기능을 가지고 있다. 기존 자바의 이식성을 가지고 있어 윈도우에서만 운용이 가능한 ASP와는 달리 유닉스, 리눅스, 윈도우 뿐만 아니라 다른 플랫폼에서도 폭넓게 운용이 가능하다. 또한 다양한 레퍼런스를 가지고 있어 대규모 시스템과 서버에 적합한 자바의 지원을 받을 수 있다. 강력한 객체 지향적 지원이 가능하므로 클래스의 재사용성이 우수하고 자신의 상상한 것을 그대로 코드로 구현할 수 있다.[3] [4]
단점
라이선스 비용을 내야 사용이 가능 하고 문법이 까다로워 배우기 어렵다. 자바 문법을 잘 알지 못한다면 개발 기간이 오래 소요된다. 자바소스 코드로 변환되는 컴파일 과정이 있어서 속도도 다른 스크립트 언어인 PHP보다 떨어지고 본인이 설정해야 하는 게 많아 전문가가 아닌 이상 제대로 쓰기 힘들다.
전망
한국에서는 전자정부로 인해 JSP를 밀어주어 많은 곳에서 사용되고 있지만 세계적으로는 무료 버전도 많고 자료도 많은 PHP가 점유율이 높은 편이다. 파일을 컴파일하기에 보안 측면으로 우수하고 안정적이지만 기본적으로 진입장벽도 높고 라이선스도 유료이다 보니 일반 사용자가 쓰긴 어렵고 기업에서 대규모 개발을 위해 사용할 때도 개발인력 양성에 오랜 시간이 걸려 인력 수급도 좋지 않다. 이러다 보니 인건비와 유지비가 많이 든다. 개발자 입장에서는 전문가 정도의 위치가 되면 높은 연봉을 기대할 수 있어 좋다고 할 수 있다.[5]
각주
- ↑ islove8587, 〈PHP, ASP, JSP, ASP.NET 비교〉, 《네이버 블로그》, 2007-12-27
- ↑ 이강원, 〈JSP〉, 《지형 공간정보체계 용어사전》, 구미서관, 2016-01-03
- ↑ 별똥별로맨스, 〈서버 개발언어 JSP PHP ASP의 비교〉, 《티스토리 블로그》, 2016-05-03
- ↑ 최범균, 〈객체 지향 기법을 쓰는 두 가지 이유〉, 《티스토리 블로그》, 2005-06-24
- ↑ ee32321, 〈Q&A〉, 《OKKY》, 2017-06-02
참고자료
- 한국정보통신기술협회 - http://word.tta.or.kr/main.do
- 최범균, 〈객체 지향 기법을 쓰는 두 가지 이유〉, 《티스토리 블로그》, 2005-06-24
- islove8587, 〈PHP, ASP, JSP, ASP.NET 비교〉, 《네이버 블로그》, 2007-12-27
- KimWhale, 〈(웹언어) JSP소개 및 장단점〉, 《티스토리 블로그》, 2013
- 이강원, 〈JSP〉, 《지형 공간정보체계 용어사전》,구미서관, 2016-01-03
- ee32321, 〈Q&A〉, 《OKKY》, 2017-06-02
- Gren, 〈JSP - 탄생 배경 및 Life cycle〉, 《네이버 블로그》, 2018-06-26
- RoaZium, 〈<정보>ASP, PHP, JSP 장단점〉, 《티스토리 블로그》, 2018-06-26
- heyhyo, 〈<Programming>JSP vs ASP vs PHP vs Python〉, 《티스토리 블로그》, 2018-08-03
- heejeong Kwon, 〈<Web> JSP란(Java Server Pages)〉, 《github》, 2018-11-03
같이 보기