IT이야기/입코딩2017. 7. 11. 10:25

-[IT용어]스프링부트(Spring Boot)


요 몇년전부터 스프링 프레임워크가 아니라 스프링 부트라는 이름을 어디선가 들어봤었습니다.

그래서 무언가 찾아보니 스프링 프레임워크에 잡다하게 xml 설정하고, 세팅할 필요없이 손쉽게 만들수 있다고 하더군요. 인터넷에 예제를 보거나 Github에 보면 스프링 부트로 만든 게시판이나 블로그 소스들 예제를 볼수 있습니다.

설정을 최소하 하여 pom.xml, web.xml 수정하고 왜 안되는지 구글링해보고 하던 시간을 상당히 단축시킬수 있다는 이야기군요.



Spring Tool Suite에서 발췌하였습니다.

링크


영어 능력이 별로 안되다 보니, 긁어서 구글번역을 돌리고 몇몇 말이 안되는 부분만 수정했습니다.



제작 준비가 된 Spring 애플리케이션을 구축하는 것에 대한 의견이 많습니다. 

Spring Boot는 컨벤션보다 컨벤션을 선호하며, 가능한 한 빨리 당신을 기동시키고 실행할 수 있도록 고안되었습니다.

Spring Boot를 사용하면 "바로 실행"할 수있는 독립 실행 형, 프로덕션 급 Spring 기반 응용 프로그램을 쉽게 만들 수 있습니다. 우리는 Spring 플랫폼 및 써드 파티 라이브러리에 대한 의견이 많으므로 최소한의 소동으로 시작할 수 있습니다. 대부분의 Spring Boot 응용 프로그램은 Spring 구성이 거의 필요하지 않습니다.


Features

독립 실행 형 Spring 애플리케이션 작성

Tomcat, Jetty 또는 Undertow를 직접 임베드 (WAR 파일을 배치 할 필요 없음)

의견이 분명한 '스타터'POM을 제공하여 Maven 구성을 간소화하십시오.

가능한 경우 자동으로 Spring 설정

메트릭, 상태 확인 및 외부 구성과 같은 프로덕션 기능을 제공합니다.

XML 생성을위한 절대 코드 생성 및 요구 사항 없음

참조 가이드에는 모든 기능에 대한 자세한 설명과 일반적인 사용 사례를위한 광범위한 하우투가 포함되어 있습니다.


Quick Start

자바 개발자 인 경우 start.spring.io를 사용하여 기본 프로젝트를 생성하거나 아래 "빠른 시작"예제를 따르거나 참조 설명서 시작 안내서를 읽으십시오.

프로젝트에서 spring-boot를 사용하기 시작하는 데 권장되는 방법은 종속성 관리 시스템을 사용하는 것입니다. 

아래의 스 니펫을 복사하여 빌드에 붙여 넣을 수 있습니다. 

도움이 필요하다? Maven 및 Gradle을 사용하여 빌드하는 방법에 대한 시작 안내서를 참조하십시오.


<parent>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-parent</artifactId>

    <version>1.5.4.RELEASE</version>

</parent>

<dependencies>

    <dependency>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-web</artifactId>

    </dependency>

</dependencies>


스프링 부트 CLI

스프링 부트는 스프링으로 신속하게 프로토 타입을 작성하려는 경우 사용할 수있는 명령 행 도구와 함께 제공됩니다. 

Groovy 스크립트를 실행할 수 있습니다. 

즉, 코드가 너무 많이 작성되지 않아도 익숙한 Java와 유사한 구문을 사용할 수 있습니다. 

Spring Boot CLI를 설치하려면 주요 문서의 지침을 따르십시오.


저 사이트에 들어가보면 레퍼런스들도 제공되고 있네요.



스프링 부트에 관한 설명입니다.


이클립스에 STS를 설치하거나, STS용으로 나온 이클립스를 받아서, Spring Starter Project를 실행해서 만들면 됩니다.

이렇게 편하고 좋은 방법들이 나오는데, 저는 익숙하지 않다고 안쓰고 있었네요.




Posted by Joseph514
IT이야기/입코딩2017. 7. 1. 23:26

Front end dev skills

https://www.frontendhandbook.com/practice/skills.html


프론트 엔드(front-end) 개발자의 기본 스킬입니다.
보통 html, css, javascript 정도 생각하실텐데
프론트 엔드라는 정의가 애매하기도 하고
이런이런 스킬들이 있다고 정리해 두면 좋을거같네요.

* Content Management Systems (aka CMS)
* Node.js
* Cross-Browser Testing
* Cross-Platform Testing
* Unit Testing
* Cross-Device Testing
* Accessibility / WAI-ARIA
* Search Engine Optimization (aka SEO)
* Interaction or User Interface Design
* User Experience
* Usability
* E-commerce Systems
* Portal Systems
* Wireframing
* CSS Layout / Grids
* DOM Manipulation (e.g., jQuery)
* Mobile Web Performance
* Load Testing
* Performance Testing
* Progressive Enhancement / Graceful Degradation
* Version Control (e.g., GIT)
* MVC / MVVM / MV*
* Functional Programming
* Data Formats (e.g., JSON, XML)
* Data APIs (e.g Restful API)
* Web Font Embedding
* Scalable Vector Graphics (aka SVG)
* Regular Expressions
* Content Strategy
* Microdata / Microformats
* Task Runners, Build Tools, Process Automation Tools
* Responsive Web Design
* Object-Oriented Programming
* Application Architecture
* Modules
* Dependency Managers
* Package Managers
* JavaScript Animation
* CSS Animation
* Charts / Graphs
* UI Widgets
* Code Quality Testing
* Code Coverage Testing
* Code Complexity Analysis
* Integration Testing
* Command Line / CLI
* Templating Strategies
* Templating Engines
* Single Page Applications
* XHR Requests (aka AJAX)
* Web/Browser Security
* HTML Semantics
* Browser Developer Tools

Posted by Joseph514
IT이야기/입코딩2017. 6. 9. 18:00

-[IT용어정의]스프링 프레임워크(Spring Framework)에 대해 알아보겠습니다.



한국에서 SI, SM으로 대기업 및 공공기관에 프로젝트를 뛸때 빠질수없는 단어가 있습니다.


스프링 프레임워크(Spring Framework)

보통 스프링으로 사이트를 관리하거나 제작한다는 이야기를 많이 듣습니다.

공부할적에는 집에 컴퓨터에 게시판 만들때는 jdk 설치하고, 그냥 이클립스에서 스프링 프로젝트 띄워서 tomcat이랑 mysql 연동해서 뚝딱 만들어봤겠죠.


WAS서버는 톰켓이 아니라 JEUS나 웹로직을 사용하고, DB는 oracle이나 db2, mssql을 사용하겠죠.

model2 형식의 게시판이나 사이트가 운영되는 곳도 종종있겠지만 대부분은 스프링프레임워크를 이용하는것으로 알고 있습니다.


스프링 프레임워크는 자바 플랫폼을 위한 오픈소스로 애플리케이션 프레임워크로서 간단히 스프링(Spring)이라고도 불립니다.

동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공하고 있습니다. 

대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준프레임워크의 기반 기술로서 쓰이고 있습니다.

3개월 국비지원 자바학원에가면 100이면 100 다 가르치는 것 같더군요.


간혹가다가 좀 프로그램에 무지한 인력업체 해드헌터들이 요즘 스프링 안쓴다,전자정부 프레임워크 쓴다 라는 아주 재미없는 농담을 하시는 때가 있는데. 무시하셔도 될만큼 무사합니다.

사실 컴퓨터공학과 전공자이라면 스프링 프레임워크를 손될 일이 없습니다. 웹개발자를 하면서 독학으로 따로 배울 확률이 크죠.


길다면 긴 시간이긴 한데 역사가 그렇게 오래되진 않은것 같습니다.

로드 존슨이 2002년에 출판한 자신의 저서인 Expert One-on-One J2EE Design and Developement 에 선보인 코드를 기반으로 시작하여 점점 발전하게 되었다고 합니다. 

2003년 6월에 최초로 아파치 2.0 라이선스로 공개되었다고 합니다.


이 프로그램의 종류 애플리케이션 프레임워크로, 개발자는 피보탈 소프트웨어입니다. 자세한 정보는 없군요.최근 버전은 4.3.8까지 요즘에 나왔습니다.

운영 체제로는 크로스 플랫폼 (멀티 플랫폼)입니다. JAVA 웹개발자들이 쓰므로 당연하지만 플랫폼은 자바 가상 머신을 사용합니다.

현재는 2017년 기준 4.3.8버전까지 나왔습니다.


위키피디아에 등제된 스프링 프레임워크의 특징입니다.

사실 깊게 파고들면, 두꺼운 책 한권으로 알아먹지도 못할 용어들로 내용을 가득채워져있었던 기억이 나네요.

전반적으로 이런 특징이 있다 정도고, 실제로는 예제 따라해 가면서 게시판을 만들어보면 이게 어떤건지 어느정도 감이 옵니다.


스프링은 다른 프레임워크에 비해 다음과 같은 특징을 가집니다.

경량 컨테이너로서 자바 객체를 직접 관리합니다. 

각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있습니다.


스프링의 특징입니다.

POJO(Plain Old Java Object) 방식의 프레임워크입니다.. 일반적인 J2EE 프레임워크에 비해 구현을 위해 특정한 인터페이스를 구현하거나 상속을 받을 필요가 없어 기존에 존재하는 라이브러리 등을 지원하기에 용이하고 객체가 가볍습니다.

제어 반전(IoC : Inversion of Control)을 지원한다. 컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어서 필요에 따라 스프링에서 사용자의 코드를 호출합니다.

의존성 주입(DI : Dependency Injection)을 지원한다. 각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜줍니다.

관점 지향 프로그래밍(AOP : Aspect-Oriented Programming)을 지원한다. 따라서 트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리할 수 있습니다.

영속성과 관련된 다양한 서비스를 지원한다. iBATIS나 Hibernate 등 이미 완성도가 높은 데이터베이스 처리 라이브러리와 연결할 수 있는 인터페이스를 제공합니다.

확장성이 높다. 스프링 프레임워크에 통합하기 위해 간단하게 기존 라이브러리를 감싸는 정도로 스프링에서 사용이 가능하기 때문에 수많은 라이브러리가 이미 스프링에서 지원되고 있고 스프링에서 사용되는 라이브러리를 별도로 분리하기도 용이합니다.


스프링에서 사용되는 주요 모듈은 다음과 같습니다.

-제어 반전 컨테이너

제어 반전(IoC: Inversion of Control) 컨테이너는 스프링의 가장 중요하고 핵심적인 기능으로서 자바의 반영(reflection)을 이용해서 객체의 생명주기를 관리하고 의존성 주입(Dependency Injection)을 통해 각 계층이나 서비스들간의 의존성을 맞춰줍니다. 

이러한 기능들은 주로 환경설정을 담당하는 XML 파일에 의해 설정되고 수행됩니다.


-관점 지향 프로그래밍 프레임워크

스프링은 로깅이나 보안, 트랜잭션 등 핵심적인 비즈니스 로직과 관련이 없으나 여러 곳에서 공통적으로 쓰이는 기능들을 분리하여 개발하고 실행 시에 서로 조합할 수 있는 관점 지향 프로그래밍(AOP)을 지원합니다. 

기존에 널리 사용되고 있는 강력한 관점 지향 프로그래밍 프레임워크인 AspectJ도 내부적으로 사용할 수 있으며, 스프링 자체적으로 지원하는 실행시(Runtime)에 조합하는 방식도 지원합니다.


-데이터 액세스 프레임워크]

스프링은 데이터베이스에 접속하고 자료를 저장 및 읽어오기 위한 여러 가지 유명한 라이브러리, 즉 JDBC, iBATIS(MyBatis), Hibernate 등에 대한 지원 기능을 제공하여 데이터베이스 프로그래밍을 쉽게 사용할 수 있습니다.


-트랜잭션 관리 프레임워크

스프링은 추상화된 트랜잭션 관리를 지원하며 XML 설정파일 등을 이용한 선언적인 방식 및 프로그래밍을 통한 방식을 모두 지원합니다.


-모델-뷰-컨트롤러 패턴

스프링은 웹 프로그램밍 개발 시 거의 표준적인 방식인 Spring MVC라 불리는 모델-뷰-컨트롤러(MVC) 패턴을 사용합니다.

DispatcherServlet이 Contoller역할을 담당하여 각종 요청을 적절한 서비스에 분산시켜주며 이를 각 서비스들이 처리를 하여 결과를 생성하고 그 결과는 다양한 형식의 View 서비스들로 화면에 표시될 수 있습니다.


-배치 프레임워크

스프링은 특정 시간대에 실행하거나 대용량의 자료를 처리하는데 쓰이는 일괄 처리(Batch Processing)을 지원하는 배치 프레임워크를 제공합니다. 

기본적으로 스프링 배치는 Quartz 기반으로 동작합니다.


사실 요 스프링 프레임워크라는게, 자바개발자의 시작이자 끝일거같다는 생각이듭니다.

아직 제 짧은경력으로 뭐라 그러긴 어렵지만, 최소 향후 10년까지는 프로젝트에서 스프링 프레임워크 다룰줄 아는 개발자를 뽑을것이고(금융권, 공공기관등) 제대로 익혀두면 좋겠더군요.

model2 형식으로 jsp에서 각 페이지마다 쿼리 만들고, 디비 연결해서 게시판 만들던거를 생각해보면 훨씬 업무가 간단해 지고, 유지보수도 용이해집니다.



Posted by Joseph514
IT이야기/입코딩2017. 5. 17. 09:31

이전에 웹표준에 대해서 포스팅하였습니다.


이번엔 웹접근성(web accessibility)에 대한 정의를 한번 알아보겠습니다.

제법 규모가 있는 사이트들은 일년에 몇회 이상 웹 접근성 컨설팅 업체를 통해서 검사를 받습니다.


W3C의 정의에 의하면 웹 표준성은 접근성, 사생활 보호, 보안, 국제화의 측면을 고려해야 합니다. 

이 중에 접근성을 흔히 '웹접근성'이라고 하고 웹 표준성과 함께 많이 언급되는 개념입니다. 

웹접근성은 장애 여부에 상관없이 누구나 원활하게 웹페이지를 이용할 수 있어야 한다는 것을 의미합니다. 

예를 들어 시각장애인의 경우 화면을 눈으로 볼 수 없기 때문에 그렇지 않은 사람과 같은 방식으로는 웹페이지를 이용할 수 없습니다. 

그래서 '스크린 리더'라는 별도의 소프트웨어를 컴퓨터에 설치해서 인터넷을 이용합니다. 

스크린 리더는 모니터에 비춰지는 내용을 인식해서 음성, 점자로 출력해주는 역할을 합니다. 

화면에 '메뉴'라는 텍스트가 있으면 이를 인식해서 '메뉴'라는 음성이 나오는 방식이라고 합니다. 

시각장애인은 이를 이용해 눈으로 보는 대신 소리로 들으면서 웹페이지에 담긴 정보를 이해할 수 있습니다. 

하지만 스크린 리더는 소프트웨어에 불과하므로 스스로 웹페이지의 내용을 분석해서 이건 무슨 내용이고 저건 무슨 내용이다라는 걸 이해할 수 없습니다. 

특히 이미지의 경우가 그렇습니다. '메뉴'라고 텍스트로 집어 넣지 않고 메뉴라고 그려진 이미지를 사용하면 비 시각 장애인의 눈에는 똑같이 메뉴라고 보이지만 소프트웨어 입장에서는 그저 이미지일 뿐입니다. 

그 이미지 안에 그려진 내용을 인식하는 것은 불가능합니다. 

그래서 되도록 이면 이미지를 사용하지 말고 소스 코드에 내용을 그대로 담는 것이 권장되며, 부득이하게 이미지를 사용할 경우 반드시 이 이미지가 어떤 내용인지 설명을 추가해야 합니다. 


<button>메뉴</button>

<img src="images/button.jpg" alt="메뉴 버튼" />


위와 같이 메뉴 버튼을 두 가지 방식으로 구현할 수 있습니다. 

윗줄은 <button> 태그를 이용해서 구현하는 방식이고 아래 줄은 버튼 모양의 이미지를 쓰는 방식입니다. 

둘 중 어느 방식을 쓰던 버튼의 기능은 그대로 구현할 수 있습니다. 하지만 되도록이면 윗줄의 방식을 쓰는것이 권장됩니다. 

이미 <button> 태그를 쓰고 있기 때문에 스크린 리더가 메뉴라는 텍스트가 담긴 '버튼'이라는 것을 사용자에게 올바르게 전달할 수 있기 때문입니다. 

하지만 부득이하게 이미지를 쓴다면 특히 버튼 특유의 회색 그라데이션을 견딜 수 없다면 alt라는 속성을 추가한 뒤 이 이미지가 무슨 이미지인지 설명하는 텍스트를 추가해주어야 합니다. 

이렇게 할 경우 비 시각 장애인의 눈에는 alt 속성에 쓰여진 '메뉴 버튼'이라는 텍스트는 볼 수 없습니다. 

하지만 스크린 리더는 이를 '메뉴 버튼'이라는 이미지로 인식해 사용자에게 정보를 전달하게 됩니다. 

이처럼 장애가 있는 경우에도 웹페이지를 원활하게 이용할 수 있도록 지켜야 하는 사항을 웹접근성이라고 합니다.



위키피디아에 등제된 웹접근성에서 고려해야 할 사항입니다.


시각: 실명, 색각 이상, 다양한 형태의 저시력을 포함한 시각 장애

운동성: 파킨슨병, 근육병, 뇌성마비, 뇌졸중과 같은 조건으로 인한 근육 속도 저하, 근육 제어 손실로 말미암아 손을 쓰기 어렵거나 쓸 수 없는 상태

청각: 청각 장애

발작: 깜박이는 효과나 시각적인 스트로보스코프를 통해 일어나는 뇌전증성 발작

인지: 문제 해결과 논리 능력, 집중력, 기억력에 문제가 있는 정신 지체 및 발달 장애, 학습 장애 (난독증, 난산증 등)



웹접근성 지침 한글번역본

자세한 웹접근성 지침에 관한 정보들이 있습니다.


네이버에서 '널리'라는 프로젝트의 일환으로 네이버 사옥 그린팩토리 2층에 '웹접근성 체험 부스'를 오픈했습니다. 

이 곳에 방문하면 누구나 무료로 실제 장애가 있는 경우 어떤 식으로 인터넷을 이용하는지 직접 체험해 볼 수 있다고 합니다.


널리 공식 홈페이지


웹접근성 연구소 아래에 사이트에 가입하고 들어가서, 코딩한 페이지가 접근성에 맞는지 문의할 수도 있더군요.

웹접근성 연구소


웹사이트는 모두가 사용할 수 있어야 합니다. 

별거 아닌거같아 보였는데 웹사이트를 만들려면 여러가지 고려해야 할 사항들이 많네요.



출처 : 나무위키, 위키피디아

Posted by Joseph514
IT이야기/입코딩2017. 5. 7. 15:22

-부트스트랩 프레임워크(Bootstrap Framework)에 대해서 알아보겠습니다.

요즘 웹에서 유행하고 있는 부트스트랩 프레임워크에 대해서 한번 알아보겠습니다. 

일단 부트스트랩 프레임워크는 트위터에서 시작된 HTML5 기반의 오픈 소스 웹 디자인 프레임워크입니다. 

시작은 디자이너 하나와 트위터의 한 개발자였지만 지금은 트위터에서 주도적으로 개발하고 있지는 않다고 합니다.

일단 부트스트랩의 장점들을 한번 알아보겠습니다.

트위터에서 사용하는 각종 레이아웃, 버튼, 입력창 등의 디자인을 CSS와 JavaScript로 만들어 놓은 것이라고합니다. 

웹 디자이너나 개발자 사이에서는 웹 디자인의 혁명이라고 불릴 정도로 폭발적인 반응을 얻는 프레임워크입니다.

그 이유는, 글자, 인용문, 목록, 표, 입력폼, 버튼, 이미지, 아이콘 등의 자잘한 것 뿐만이 아니라, 드롭다운 메뉴, 버튼, 탭, 리스트, 메뉴바, 페이지 이동 바, 알림 메시지, 썸네일, 진행 바 등의 웹 페이지에서 많이 쓰이는 요소를 거의 전부 내장하고 있기 때문입니다. 이 때문에 웬만한 웹 페이지는 부트스트랩의 CSS와 JavaScript, 관련 이미지만 설치하고 미리 지정된 CSS 클래스나 JavaScript 함수만 불러오면 트위터에서 쓰는 것과 엇비슷한 디자인이 뚝딱 만들어집니다. 거기다 PC용 디자인 뿐만 아니라 태블릿이나 스마트폰 같은 모바일용 디자인도 지원합니다. 

이 때문에 디자인을 할 시간이 크게 줄어들고, 여러 웹 브라우저를 지원하기 위한 크로스 브라우징에 골머리를 썩일 필요가 없습니다. 

크로스 브라우징을 위한 각종 핵도 들어 있기 때문이라고 합니다. 거기다 웹 브라우저 크기에 따라 자동으로 정렬되는 "그리드 시스템"을 채용하고 있기 때문에 하나의 웹 페이지를 데스크탑, 태블릿, 스마트폰 모두에서 무리없이 보게 만들 수 있습니다. 즉 반응형 웹 디자인을 지원한다는 의미입니다.

다들 아시겠지만 반응형 웹이란 웹 디자인 기법 중 하나로 웹(Web)에 접속하는 디바이스에 반응하는(Responsive) 디자인(Design)을 말합니다. 모바일 페이지를 따로 만들필요없이, 웹페이지 하나로 다 나온다는 이야기군요.

거기다 이게 오픈소스입니다. GPL은 아니고 MIT 허가서를 사용하는데, 재배포 면에서는 GPL보다 휠씬 자유로운 라이선스입니다. 

단 같이 들어 있는 아이콘은 CCL BY 3.0을 사용하므로 출처를 밝혀야 한다고 합니다. 소스까지 오픈되어있다 보니 여기서 파생된 프로젝트만 해도 수백 개를 넘어가더군요.

그렇다면 부트스트랩의 단점들은 어떤것이 있는지 알아보겠습니다.

단점은 디자인이 정형화 되어 있다 보니 비슷한 디자인의 페이지가 양산될 수 있다는 것입니다. 대게 부트스트랩으로 만든 사이트들은 모양이 고만고만합니다. 그러나 이건 오픈소스의 힘으로 극복이 가능하다고 합니다. 오픈소스이다 보니 사용자가 커스터마이징 하는 것도 자유롭고, 이 커스터마이징 한 것을 재배포해도 됩니다. 심지어는 상업적으로 판매하는 것도 허용한다고 합니다. 

하지만 우리나라에서는 심플한 디자인보다는 이미지를 많이 쓰는 화려한 디자인을 선호하는지라 부트스트랩으로 만드려면 소스를 처음부터 뜯어 고치다시피 코딩을 해야하다보니 인기가 없다고 합니다. 이것 이외에는 HTML5에 맞춰져 있다 보니 구형 브라우저 지원이 미흡하다고 합니다. 이 때문에 HTML5가 제대로 지원되지 않는 IE7,8의 경우에는 강제로 HTML5를 인식시키는 JavaScript 코드가 필요하고, 가뜩이나 JavaScript 해석이 느린 IE 구버전을 더 느려지게 하는 주범이 됩니다. 결국 이 때문인지 3.0에서는 IE8부터 정식 지원합니다.

부트스트랩이 적용된 사이트로는 나무위키, 리그베다위키, 리브레 위키, 티비플, 위키닷, XpressEngine 공식홈페이지 등이 있다고 합니다.

디자인에 크게 신경쓰지 않고 사이트를 뚝딱만들수 있어서 참 유용했는데, 웹디자인 프레임워크 치고는 좀 불편하다는 이야기도 있더군요.


출처 : 나무위키, 본인생각

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