소프트웨어

PHP, ASP, JSP.. 서버사이드 스크립트 언어의 차이점에 대해..

falconer 2007. 4. 13. 08:25
처음에 선택을 했던 언어는 ASP였습니다.

아주 초급적인 단계여서 값이 오고 가고의 이해만 있을 정도에서 PHP로 넘어왔었는데,

사실 3가지 언어의 차이점(장점 또는 단점)에 대해서 아직도 인지하고 있지 못합니다.

한가지만 다루다 보니 어떤 사이트를 구축할때는 특정언어를 사용하는게 이점이 많다, 또는 어떤 DB를 사용하는것이 이점이 많다는 말을 들을때 이해가 하기가 힘듭니다.

PHP가 좋다 나쁘다 MYSQL이 좋다 나쁘다를 떠나서,

다른 개발자 분들의 의견이 궁금하여 글을 남겨봅니다.

각각 갖는 특성이나 장단점에 대해서 설명을 해주시면 많은 도움이 될 것 같습니다.

타 언어에 대해서 많은 시간 다뤄보지 못한 부분이 가장 크겠지만, HTML을 기준으로 하여 저장된 정보의 재가공 또는 사용자에게 보여주는 목표가 가장 큰것이라고 생각합니다

많은 의견 부탁드립니다 ^^



덧글 :
우선 어떤언어가 좋다 나쁘다고 할 수는 없습니다.
각각의 언어마다 장점과 단점이 있기 때문입니다.


1. ASP

asp 같은 경우에는 스크립트 자체가 그리 강력하다고 볼 수 는 없지만
컴포넌트를 만들거나 지원할을 수 있다는 것입니다.

ASP는 하나 이상의 스크립트(작은 내장 프로그램)을 담은 HTML페이지로 사용자에게 보내지기 전에
웹서버에서 처리합니다.

웹기반 어플리케이션 개발도구가 개발하기 쉽고, 간편하고 성능이 우수합니다.
ActiveX 라는 컴포넌트, DLL등의 객체지향성의 향상 및 코드 재사용이 가능 합니다.

---------------------------------------------------------------------

장점 : Client의 자료요청 시 한개의 Dll로 모든 처리가 가능하므로 운용이 빠르다.

단점 : 윈도우 시스템에서만 작동하는 IIS(Internet Information Server),
PWS(Personal Web Server)에서만 작동한다.

---------------------------------------------------------------------


2.PHP

php 같은 경우에는 원래부터 웹전용으로 만든 언어이기 때문에 말할것도 없구요.
또한 php는 c를 기반으로 하는 웹언어입니다. c를 기반으로 하기때문에 표현도 자유롭구요.

하지만 asp에서 지원되는 컴포넌트 같은 것은 모두 직접 만들어야 한다는
단점이 있지만 php.net 에서 이러 한점을 계속 지원함으로 어느 정도 해소가 됩니다.

또한 php가 많이 확산되면서 php의 소스 보안이 필수로 되고 또 어플리케이션과 같이
솔루션화로 판매할 수 있도록 개발된 것이 zend(http://www.zend.com) 입니다.

zend 로 엔코딩이 되면 php를 해석할 수가 없어 소스보안과 판매용 솔루션개발로는
가장 최적의 모델이라고 볼 수 있습니다.

또 Delphi에서는 델파이 for php를 금년에 발전시켜 php의 개발자들에게
웹어플리케이션에 접근할 수 있도록 한층더 업그레이드 시켜주었지요.

캐나다 온타리오에 소재한 개발툴 기업인 조미테크(JomiTech)의 오너인 조나단 베네딕토는,
"코드기어의 개발툴들은 시장에서 가장 훌륭하며, 델파이 for PHP도 예외가 아닙니다" 라고 평가했구요.

php 는 날로 발전해하고 있어 언젠가는 php Mobile 도 나오지 않을까 하는 생각이 듭니다.


---------------------------------------------------------------------

장점 : 프로그램이 간결하면서도 DB와 쉽게 연동되고 속도가 빠르다.

단점 : 모든 필요한 것을 PHP가 해결해주어야 한다. PHP가 제공하지 않는 것은 해결방법을 찾을 수 없다.


현재 베타 버전 4까지 출시된 PHP 5에는 몇 가지 약점이 존재하고 있습니다.
그 중 하나로 예외(exception) 처리 기능의 부재, 즉 프로그램의 정상적인 흐름을 중단하고
에러 핸들링 코드로 점프하기 위한 이벤트 기반 에러 핸들링 인스턴스가 존재하지 않는다는 점을
지적할 수 있습니다. Java의 경우 에러 핸들링을 위한 예외 처리 기능을 제공하며,
C++는 try-catch-throw 형식의 예외 처리 기능을 제공합니다. 물론 PHP 코드에서 에러를 관리하는 것은
얼마든지 가능합니다. 하지만 표준화된 구조가 제공되지 않으므로 에러 핸들링을 구현하는 방식은
전적으로 프로그래머의 재량에 따를 수 밖에 없고, 이는 일관성의 저하라는 문제를 초래하게 됩니다.

또한 PHP가 일부 영역에서 취약한 것은 사실이지만,
PHP의 장점이 발휘되는 영역에서는 단연 돋보이기도 합니다.
먼저 비용이 저렴하며 라이센싱 이슈로 고민할 필요가 없습니다.
PHP는 오픈 소스 언어이며, 전체 개발자 커뮤니티가 합심하여 개발 및 버그 해결 작업을 추진하고 있습니다.
또 마음에 들지 않는 기능이 있다면 얼마든지 수정이 가능합니다.
PHP는 Apache와 기본적으로 연동하며, 별도의 모듈로 또는 Apache 바이너리 내부에 직접 컴파일할 수 있습니다.

---------------------------------------------------------------------


3. JSP

jsp를 알기전에 먼저 자바란 무엇인가?

1995년 제임스 그즐링이 자바언어를 발표한 이후 자바는 눈부신 발전을 거듭해왔습니다.
전세계 수많은 프로그래머가 자바의 매력에 흠뻑 빠졌으며, 자바의 강력한 객체 지향성과
다양한 기능에 이용자가 급속도로 늘어가고 있는것이 사실입니다.

객체 지향언어로써 특정 플랫폼(운영체제)에 구애 받지 않기 때문에 앞으로도 그 인기는
더욱 높아져만 갈것이라고 생각됩니다. 또한 그동안 등장했던 모든언어의 장점을 거의 완벽하게 복합시켰으며
C 에서 사용해온 포인터와 동적 메모리 관리등을 없애 개발자들의 부담을 덜어주고 있다고 합니다.
자바 코드는 어느 운영체제에서도 JVM(Java Virtual Machine)만 있다면 코드 수정없이
똑같이 가동시킬 수 있는 장점이 있습니다.

jsp

썬 마이크로시스템즈(Sun Microsystems) 사에서 동적인 컨텐트를 작성하기 위해 만든 기술입니다.
'서버+애플릿(Server+Applet!)' 이라는 단어를 조합하여 만든합성어입니다.
자바 서블릿은 자바의 모든 특성을 그대로 물려 받습니다.
CGI와 달리 요청이 있을 때마다 프로세스 대신 자바 스레드(Thread)를 만듭니다.
생성된 스레드는 부모 스레드를 통해서 자원이 공유가 가능하기 때문에 불필요한 자원 낭비가 없습니다.

이 스레드들의 최상단에는 자바 가상 머신(Java Virtual Machine. JVM) 이라는 프로세스가 존재합니다.
이와 같은 자바 서블릿은 상대적으로 오버헤드가 적고 자원을 효과적으로 사용하기 때문에 대규모서버에서 상대적으로 우수한 성능을 보이고 있습니다
HTML(정적인 컨텐트)문서가 서블릿자바코드 안에 포함되는 형식으로 간단한 HTML문서에도
서블릿에 대한 지식이 있어야 하고 재컴파일해야 하는 등 큰 결점이 있습니다 .


---------------------------------------------------------------------
장점 :

특정 하드웨어 플랫폼이나 운영체제 혹은 서버소프트웨어에 의존하지 않는다.

자바 가상머신이 설치된 어떠한 운영체제에서도 플랫폼에 독립적으로 실행 가능 (리눅스, 윈도우)
자바기반의 언어이므로 자바에서 제공하는 풍부한 API 와 멀티스레드 개념,
객체지향프로그래밍의 기법을 그대로 사용 가능.

보여주는 표현부와 내부적인 로직을 나타내는 구현부를 분리하여 각각의 영역에서 효율적으로 작업 가능.
작성한 컴포넌트(일을 할수있는 프로그램 요소)는 언제든지 재사용 가능.


단점 :

배우기가 가장 어렵고 DB연동이 까다롭다.
소규모인 경우 속도가 타 언어에 비해 느리다.

---------------------------------------------------------------------


4. ASP.NET

ASP의 새로운 진화를 의미하는 ASP.NET은 이전 버전의 ASP에 대해 완전한 하위호환성을 제공하지 않습니다.
실제로, 이전의 ASP 테크놀로지는 (웹 애플리케이션 구현을 위한 완전한 형태의 프레임워크인)
ASP.NET보다는 PHP와 더 많은 유사성을 갖습니다.

ASP.NET 모델은 프로그래밍 언어를 자유롭게 선택할 수 있는 유연한 환경을 제공한다는
매우 중요한 장점을 갖습니다.

ASP.NET은 VBScript, JScript, Perlscript, Python과 같은 스크립트 언어뿐 아니라
VB, C#, C, Cobol, Smalltalk, Lisp와 같은 컴파일 언어를 함께 지원합니다.
새로운 프레임워크는 CLR(Common Language Runtime)을 사용하며,
언어 소스를 먼저 Microsoft Intermediate Language 코드로 컴파일한 후 CLR이 이를 실행하는 형태로 동작합니다.

ASP.NET 프레임워크는 진정한 의미의 객체지향형 프로그래밍(OOP)과 상속, 폴리모피즘,
인캡슐레이션을 지원합니다.

.NET 클래스 라이브러리는 다양한 태스크(XML과의 연동, 이미지 조작 등)를 기반으로 하는 상속 가능한
클래스로 조직화됩니다.

프로그래밍 언어와 방법론을 제외했을 때 가장 중요한 이슈는 바로 데이터베이스 액세스입니다.
ASP.NET으로 프로그래밍하는 경우, 데이터베이스와의 통합은 ODBC를 통해 수행됩니다.
ODBC는 타겟 데이터베이스에 접근하기 위해 일관성 있는 함수 호출을 사용합니다.


---------------------------------------------------------------------
장점 :

명쾌한 설계와 구현 방식에 근간을 두고 있다.

언어 유연성, 정교한 오브젝트 지향형 기능을 지원하는 ASP.NET은 객체지향형 프로그래머의 꿈과도 같다.

이러한 점에서 볼 때 ASP.NET은 프로그래머의 기존 스킬과 완벽한 호환성을 제공한다고 평가할 수 있다.

또 다른 장점으로 개발 환경을 꼽을 수 있다.
예를 들어, 개발자는 WebMatrix, Visual Studio .Net, 또는 Delphi, C++ Builder와 같은 Borland 툴을
사용할 수 있다.

Visual Studio는 브레이크포인트의 설정, 코드 섹션의 트레이스, 콜 스택의 리뷰 등
매우 뛰어난 디버깅 환경을 지원합니다. 그 밖에도 ASP.NET을 위한 다양한 써드 파티 IDE 솔루션이 조만간
출현하게 될 것이 분명해 보인다.



단점 :

유연성과 안정성 면에서의 이점은 효율성 면에서는 단점으로 변한다.

ASP.NET은 긴 코드 경로를 가지며, 따라서 메모리 사용량과 실행 시간의 측면에서 많은 리소스를 사용한다.

매 초당 수 천, 수 만 명의 사용자를 동시에 지원해야 하는 웹 기반 애플리케이션에서는
이러한 문제가 심각한 결과를 초래할 수 있습니다. 메모리 사용량의 문제 또한 웹 서버에 심각한 부담을
가져올 가능성이 높다.

---------------------------------------------------------------------


위의 각 웹언어들의 내용과 장단점들의 내용은 일부 인용되어 작성된 것 임을 알려드립니다.

출처 : phpschool