'IT이야기/입코딩'에 해당되는 글 33건

  1. 2017.04.28 ASP란 무엇일까요?
  2. 2017.04.20 PHP란 무엇일까요?
  3. 2017.04.14 JSP란 무엇일까요?
IT이야기/입코딩2017. 4. 28. 09:04

-ASP란 무엇일까요?


웹개발 언어중에, jsp, php는 저번에 알아봤습니다.



그러면 ASP란 무엇인지 한번알아보겠습니다.

프로그래밍의 기본인 Hello world!를 입력해보면 <% Response.Write "Hello, world!" %> 이렇게 되겠죠.

스크립트 엔진(Active Server Page)라고 합니다.Active Server Page의 약자입니다. 

마이크로소프트가 인터넷 정보 서비스(IIS)에서 동적 웹 페이지 생성 용도로 사용할 것을 목적으로 제작한 서버 사이드 스크립트 엔진입니다. 

당연하지만 확장자는 .asp 를 사용합니다.

1996년 출시된 IIS 3.0부터 기본으로 포함되기 시작되었으며, 이후 새 버전의 IIS가 출시될 때마다 같이 버전업이 되었습니다. 

최종버전은 2000년 출시된 IIS 5.0에 포함된 3.0이라고 하네요. 벌써 17년 전이군요.

ASP의 특징은 여러 가지 언어를 지원한다는 것입니다. 

기본적으로 쓰이는 언어는 비주얼 베이직 계열의 VB스크립트지만, 다른 언어를 불러 쓸 수도 있습니다.  주로 JavaScript 기반의 JScript와 Perl 기반의 PerlScript을 사용한다고 하네요.

사람 헷갈리게 만드는것이 PHP나 JSP 등은 그 명칭이 언어 그 자체인데 비하여, ASP는 윈도우에서 지원하는 기존 프로그래밍 언어를 웹에서 쓸 수 있도록 하는 일종의 기술에 가깝습니다. 

이러한 특징은 ASP.NET으로 발전하면서 크게 강화되었는데, .NET 언어 어떤 것이든지 ASP.NET으로 개발이 가능합니다. 

거기다 개발툴이 비주얼 스튜디오라서 윈도우 개발자라면 어렵지 않게 ASP로 개발이 가능하다는 장점이 있습니다.

윈도우 개발자에겐 좋은 일인 반면, HTML - Javascript - ASP(vbscript) 순서를 밟고 온 순수 웹개발자에겐 좌절을 안겨주었다고 합니다. 

순차적 스크립트에 익숙한 사람이 갑자기 객체지향 프로그램을 짜기는 쉽지 않기 때문이라는군요.

비주얼 스튜디오와 묶여 있기 때문에 도움말도 상당히 강력한 편입니다. 

물론 서드파티 개발툴도 상당히 많이 나와 있고, 상용인 비주얼 스튜디오와 달리 오픈소스도 꽤 많이 나와 있습니다.

MS에서 내놓았다는 것에서 눈치챈 사람들도 있겠지만, 이건 윈도우에 최적화 되어 있고 다른 OS는 정식으로 지원하지 않습니다.

물론 이말은 서버OS를 얘기하는거지 클라이언트 OS를 얘기하는게 아닙니다. 윈도우 컴퓨터에서 잘만 보고 즐길수 있지요.

아파치에서 Apache::ASP라는 모듈을 사용하면 아주 제한적으로 PerlScript 기반의 ASP를 구동할 수 있지만, 리눅스 환경에선 PHP, JSP 등의 경쟁자들이 많아서 사용되는 일이 별로 없는거같습니다.

국내에서는 사용자가 많은 편은 아닙니다. 윈도우 서버를 쓸 것이 아니라면 굳이 쓸 이유가 없기 때문이라는군요.

서버용 윈도는 클라이언트용 윈도보다 훨씬 비싸서(2012 R2 기준으로 130만원 정도) 서버 구축 비용도 리눅스에 비해 더 비쌉니다. 

웹호스팅의 경우 지원폭은 JSP보다 넓은 편입니다. 윈도우 웹호스팅이라면 ASP는 기본적으로 지원하고 들어가기 때문이지요. 

2002년에 ASP.NET으로 대체되었다고 합니다. 

ASP는 향후 2020년까지 지원이 예정되어 있고, 현재는 신규 프로젝트에는 거의 쓰이지 않고 있습니다. 


오래된 사이트에 기존에 구축해놓은 솔루션의 유지보수용으로 사용되는 것이 거의 전부라고 하네요.

그럼 ASP.NET에 대해서 잠깐 알아보겠습니다.

ASP.NET이란 2002년에 처음 선을 보인 ASP의 후속작입니다. 그리고 NET 프레임워크 위에서 구동되는 서버 사이드 웹 프레임워크입니다.

닷넷 프레임워크 기반이기 때문에 지원 언어라면 어떤 것이든 사용할 수 있는 것이 특징입니다. 

하지만 기본적으로는 역시 C#, Visual Basic.NET이 많이 사용된다고 하네요.

ASP.NET은 기본적으로 '웹폼'이라 하여, 데스크탑 C#의 윈폼의 웹 버전에 해당하는 방식으로(마우스로 드래그&드롭하여 디자인하고, 이벤트 기반으로 로직을 개발하는) 디자인 및 개발이 이루어졌습니다. 

다만 타 플랫폼의 웹 프레임워크와는 상당히 이질적인 환경이 되어 개발자들이 ASP.NET을 기피하는 현상이 일어났고, 이후 웹 프레임워크에서 친숙한 MVC 패턴으로 개발이 가능한 프레임워크가 발표되었습니다.

ASP와 마찬가지로 윈도우 환경에서만 구동되었으나, 모노 기반으로 타 플랫폼에서도 사용할 수 있도록 되었고, 2016년 발표된 ASP.NET Core(ASP.NET 5.0에서 변경된 명칭)에서는 기본적으로 멀티 플랫폼을 지원하게 변경되었다고 합니다.

전 개인적으로 APS나 ASP.NET은 사용해 본적이 없습니다. 간혹 병원 사이트들이 ASP로 된걸 본적이 있는데 항상 저런 사이트들은 어떻게 만들어지고, 유지보수 되는지 좀 의문이 들더군요.

사실 한국에서는 웹개발자가 JAVA, JSP만 해도 향후 10년은 먹고사는데 지장이없어 보이는 구조이긴합니다만 게시판 정도는 만들수 있게 좀 독학을 해보고 싶네요.

참고사이트 : 나무위키

Posted by Joseph514
IT이야기/입코딩2017. 4. 20. 09:59


-PHP란 무엇일까요?



2000년도 초반에 제가 처음으로 접한 웹 언어이며, 현재까지도 취미(?)로 가지고 노는 언어입니다.

Rasmus Lerdorf (라스무스 러돌프)에 의해 최초개발되어졌으며, 오픈소스입니다. 공식사이트 링크

대표적인 서버사이드 스크립트 언어로 한국을 비롯한 전 세계 수많은 웹 시스템의 기반이 되는 언어라고 합니다. 

비슷한 언어로는 ASP, JSP, CGI, ROR 등이 있습니다. 

C-like 문법(이전 버전에서는 C언어와 유사한 문법이라 써있었으나 php 해보면 C보다 오히려 perl과 유사함을 알 수 있다. 다만 C언어 문법에서 파생된 문법을 사용하므로 C-like로 바꿈.)을 사용합니다. 

소규모 웹 페이지 제작시 쉽고 빠르다는 점에서 사용자, 사용처가 많다고 합니다.

PHP라는 이름은 원래 Personal Home Page Tools이나, 지금은 PHP: Hypertext Preprocessor라는 재귀 약자를 사용하고 있습니다.

워드프레스, 미디어위키 등의 많은 애플리케이션이 PHP로 짜여져있습니다. 

의외로 웹서핑을 해보면 쓰이는 곳이 많습니다. 우리나라 한정으로 엄청난 점유율을 보이는 XpressEngine과 그누보드 역시 PHP로 된 CMS 솔루션입니다. 

한때 포털사이트나 기업이 운용하는 웹사이트에서도 PHP를 사용하긴 하였는데, 속도면이나 협업이 힘들다는 이유로 현재는 Java 계열의 JSP나 C# 계열의 ASP.NET으로 옮겨갔습니다. 

참고로 JSP나 ASP.NET은 로드 밸런싱 기능이 포함되어 있어서 상대적으로 웹 서버의 부하를 줄여주는 효과가 있으며, PHP에 비해 협업환경에서 사용이 유용하도록 설계되었습니다. 

이러한 단점 때문에 IT관련 기업 외부노출 페이지를 PHP로 짠다면 제대로 된 회사가 아니라는 얘기까지 있을 정도이더군요. 

페이스북은 이전에는 PHP를 주 언어로 사용하다가 2014년 자사에서 PHP 기반으로 개발한 Hack이라는 언어를 사용합니다. 

링크


PHP의 문제점 중 가장 큰 문제는 언어 구조 및 설계상 안정하지 않다는 점입니다. 

대표적으로 표준 라이브러리의 함수 이름에 일관성이 없는 점이 있습니다. 

이는 PHP가 처음부터 면밀한 디자인적 고려 없이 개인 웹페이지만을 위해 만들어진 언어였기 때문이라고 합니다. 

설계 당시 협업환경을 고려하지 않은 채 설계해서 생긴 문제인 것이라고 하네요.

개인 웹호스팅 쪽으로 내려오면 여전히 PHP가 강세 입니다. 

JSP의 경우에는 아파치 HTTP 서버나 IIS말고도 톰캣이란 별도의 서버툴을 설치해야 되는데 설치는 둘째치고 코드가 갱신될 때마다 톰캣 서버쪽에도 반영을 해줘야 합니다. 

이게 서버 관리자 입장에서는 은근히 귀찮습니다. 

ASP.NET은 일단 .NET이 기반이라 마이크로소프트의 운영체제와 IIS를 설치해야 되는데 문제는 이게 다 라이센스비 깨지는 것들입니다.

본인이 꼭 필요하다면 지원하는 곳을 찾을 수는 있는데 비용이 꽤 많이 든다는 점을 염두에 두어야 합니다.

예전에는 협업이 쉽지 않은 언어였습니다.

MVC 패턴을 적용하기에는 PHP가 주로 사용되는 개발 환경상의 난점이 있었고, 프레임워크도 그동안 변변치 않았기 때문입니다. 

물론 이건 모두 과거형으로, 2010년 이전의 내용입니다. 

당연한 이야기지만 시간이 지나면서 꽤 많이 해결된 문제로, MVC 패턴은 Codeigniter와 Laravel이 나오면서 거의 대부분 해소되었습니다. 

적용 문제는 상술했듯이 개발 환경과 개발자들의 문제가 대다수이고 언어 자체에 결함이 있는 것은 아닙니다. 

특히 Laravel 프레임워크가 대중화되면서 가장 많이 사용되고 있습니다. 

XE도 이번에 개발되는 버전 3부터 적용한다고 하네요. 

추가로 Framework Interop Group에서 제안한 PSR 규칙으로 인해 많은 프레임워크들이 정규화되어가는 추세입니다.

종종 JSP와 비교되기도 하지만 PHP와 JSP는 둘 다 태생적 한계가 있으므로 각 언어의 특징 정도로 알아두는 것이 좋습니다. 

한국 한정으로 PHP 개발자에서 JSP 개발자로 넘어가는 일이 상당히 많은데, 이는 돈 많이 주는 정부가 JSP로 만들어진 사이트를 시스템 통합 업체에 요구하기 때문이라고 하네요. 

덕분에 영향을 받은 많은 회사들이 JSP로 개발을 하다 보니 PHP 개발자는 찬밥신세를 못 면하고 JSP로 넘어가는 것입니다.

나무위키에 적힌 예전 글들을 보면 JSP 예찬론자가 작성한건지 의심될 정도로 PHP의 단점만 상당히 부각시키고 심지어 있지도 않은 단점을 만들기까지 해놓았더군요. 웹 상에 올라와 있는 PHP 비판 문서는 유심히 봐야 합니다. 

잘못된 내용을 기재하는 경우도 있고, 현 시점에서 해결된 문제도 떡하니 올려놓는 경우도 많습니다. 4.x때 버전들의 문제점들이 대부분입니다. 

후자는 대부분 최신 버전이 5.x 대였을 시절에 작성된 글이 대다수입니다. 

날짜를 잘 보고 현 시점에서 2년 이상 지난 글이라면 무시하는 편이 낫다고 이야기하네요.

출처 : 나무위키

Posted by Joseph514
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