JSP

최근 수정 시각:


1. Java Server Pages
1.1. 개요1.2. 사용 현황1.3. 타 언어와의 차이
2. Jacketed Soft Point

1. Java Server Pages[편집]

1.1. 개요[편집]

Java[1]를 이용한 서버 사이드 스크립트 언어. JavaServer Pages의 약자이며, Java의 점유율을 대폭 상승시킨 1등공신이다. 같은 부류에 속하는 것으로 PHP, ASP가 있다. 확장자는 당연히 .jsp를 사용. ASP와 마찬가지로 <% ... %>로 둘러싸인 스크립트 영역이 있으며, 실행시에 javax.servlet.http.HttpServlet 클래스를 상속받은 자바 소스코드로 변환된 다음[2] 컴파일되어 실행된다. 이 JSP 파일을 Servlet 클래스로 변환하고 실행시켜 주는 역할을 하는 프로그램이 Servlet Container. 대표적으로 오픈 소스 웹 서버/서블릿 컨테이너인 톰캣이 있다. 하나의 JSP 페이지가 하나의 자바 클래스이기 때문에 모든 자바 라이브러리를 끌어다 쓸 수 있다.

서블릿 컨테이너도 Java 프로그램이며, Java Virtual Machine 위에서 실행된다. 따라서 대부분의 운영 체제에서 소스코드 변경이나 재 컴파일 없이 실행시킬 수 있고, 특히 유닉스 계열과 궁합이 잘 맞는다.

1.2. 사용 현황[편집]

중-소규모 사이트에서 주로 쓰이는 PHP와 달리, 주로 대규모 기업용 시스템 구축에 사용된다. 대규모 기업 환경에서는 보통 Java Platform, Enterprise Edition(J2EE)의 사양을 만족하는 Web Application Server 위에서 프로그램을 운용하게 된다. J2EE는 JSP의 실행 뿐만 아니라 DB 커넥션 풀, 메시징 시스템, 로드 밸런싱 등등 화려한 기능들로 무장하고 있다.[3] 이로 인해 규모가 방대하고 무거우며, 메모리 등의 자원도 많이 사용하게 되고 상대적으로 초기 로딩도 느리다. J2EE 웹 서버계의 최고봉은 BEA의 WebLogic이었지만 지금은 오라클에 인수된 상태.(...) 한국 한정으로 공공기관 등에 자주 쓰이는 티맥스소프트의 JEUS도 J2EE 애플리케이션 서버다.

PHP를 지원하는 호스팅 업체는 많이 널려있지만 JSP를 호스팅 해주는 업체는 찾기가 쉽지 않았으나, 최근 데이터 센터와 호스팅 업체들이 클라우드 컴퓨팅으로 갈아탄 다음부터 비교적 싼 값에 Java를 운용할 수 있는 클라우드 호스팅 서비스도 꽤 생겼다. 대인배 구글App Engine이 공짜로 Java를 지원하니 이쪽을 이용해 보도록 하자.

JSP를 지원하는 통합 개발 환경에는 이클립스, 넷빈즈, IntelliJ IDEA 등이 있으며, Sublime Text 같은 텍스트 에디터도 JSP를 지원한다. 이 중에서는 이클립스가 JSP 프로젝트에 있어 표준 시스템처럼 쓰여 왔지만, 최근에는 IntelliJ IDEA의 점유율이 늘어나고 있다.

1.3. 타 언어와의 차이[편집]

PHP와 비교해서 JSP는 안정적이고, 유지보수가 쉽다. 반면 PHP는 개발 속도가 압도적으로 빠르다. 그런데 2010년대의 웹 환경, 특히 프론트엔드 쪽은 JSP의 경직된 구조를 받아들이지 못해 빠르게 인기가 식고 있다. 특히 요즘 트렌드인 API 주도형 사이트 구축과 SPA(Single Page Application)는 JSP와 정말 궁합이 안 맞는다. 대기업이나 금융권, 관공서 등 규모가 크고 안정적인 서비스가 중요한 곳에서는 여전히 수요가 있지만, 이러한 곳이 아니라면 서비스 내용 대비 쓸데없이 무겁고 학습 곡선도 가파르지 않은 JSP보단 JavaScript 기반의 jQuery나 React, 혹은 SPA 개발을 위한 AngularJS로 옮겨가는 추세이다. 과거에 쓰였던 EJB는 군더더기 코드가 많고, EJB를 로딩하는 데 꽤나 시간이 걸리며 원래 분산 환경을 위해 설계되었으나 아무도 그렇게 쓰지 않으며, 속도를 위해 Local Bean으로만 줄창 쓰다가 지금은 거의 사장된 상태이다. 현재 JSP 웹 개발이라고 하면 십중팔구 Spring 프레임워크를 이용한 백엔드 개발이라고 보면 된다.

ASP.NET도 비슷한 사정으로 점유율이 하락 중. 사용하는 방식이 많이 변했지만 PHP가 아직 웹 쪽에서는 선방중이고, 신흥강자로 Node.js가 떠오르고 있다. 또한 Ruby on Rails의 성공도 JSP의 앞날을 가로막는 존재이다. PythonDjango와 Flask 웹 프레임워크도 편의성과 고성능, 그리고 압도적인 생산성과 가파른 학습 곡선으로 JSP를 위협하고 있다.

학습 곡선에 대한 표현이 보통 잘못 쓰이고 있는데 단시간에 빠르게 높은 수준을 달성할 수 있는, 즉 배우기 용이한 경우 학습 곡선이 가파르다. 그런데 대부분의 사람들은 학습 곡선이 급격하게 올라가는 것이 난이도가 높은 것이라고 잘못 사용하고 있다. 대표적인 사례는 Emacsvi, 대항해시대 온라인이나 EVE 온라인 문서에 나와있는 농담으로 그려진 학습 곡선 그래프들. 현재는 문서 내에서 해당 내용들을 수정하였다.

2. Jacketed Soft Point[편집]


탄은 측면부는 구리로 도금해놓지만 탄두의 최전방부에는 내부의 부드러운 탄심(주로 납)을 노출 시키는 형태의 탄환. 할로 포인트(JHP)와 마찬가지로 목표에 명중할 때 탄두의 형상이 크게 변화되어 관통력이 낮아지고 대인 저지력이 높아지는 효과가 있다. 특히 탄두가 변형하면서 전체적인 외경이 늘어나고 탄두 내부의 납이 유출되어 파편화 되기도 해서 총상이 풀 메탈 재킷(FMJ)에 비해 심각해진다. 같은 덤덤탄인 JHP와 비교하면 상대적으로 탄도가 안정적이고 탄걸림도 미세하게 적은 편이지만 총열에 납이 부착되는 경향은 조금 더 심한 편이다. 물론 FMJ가 탄도, 탄걸림도, 납 문제 모두 가장 우수해서 JHP와 마찬가지로 군용으로는 잘 쓰이지 않는다.

[1] JavaScript가 아니다! JavaScript의 서버스크립트 형태는 Node.js다.[2] 즉, JSP도 결국 Servlet이 된다.[3] 오픈 소스 WAS도 존재한다. 글래스피시, wildfly 등.