프리메이커
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
프리메이커는 템플릿 언어를 사용하여 동적 웹 사이트, 이메일, 보고서 등 다양한 형태의 문서를 생성하는 템플릿 엔진이다. 벤자민 지어와 마이크 바이어가 2003년에 개발한 프리메이커 1을 시작으로, 조나단 레부스키의 주도하에 템플릿 언어의 엄격성을 강화한 프리메이커 2가 출시되었다. 2015년 아파치 소프트웨어 재단에 기증되어 아파치 인큐베이터 과정을 거쳐 2018년 정식 아파치 프로젝트가 되었다. 프리메이커는 템플릿과 데이터를 분리하여 유연하고 재사용 가능한 콘텐츠 생성을 가능하게 하며, 객체 래핑 기술을 통해 데이터와 디자인을 분리하여 템플릿의 가독성과 유지 보수성을 높인다.
더 읽어볼만한 페이지
- 자바 플랫폼, 엔터프라이즈 에디션 - IBM 웹스피어
IBM 웹스피어는 IBM에서 출시한 기업용 소프트웨어 제품군 브랜드로, 다양한 애플리케이션 인프라, 비즈니스 프로세스 통합, 정보 통합 및 개발 도구를 포함한다. - 자바 플랫폼, 엔터프라이즈 에디션 - 자카르타 서버 페이지
자카르타 서버 페이지(JSP)는 웹 애플리케이션 개발에 사용되는 서버 측 스크립팅 기술로, 서블릿으로 변환되어 실행되고 HTML 형태로 결과를 반환하며, 지시어, 스크립틀릿, 표현식, 액션 등의 문법 요소, 표현 언어(EL), JSTL을 통해 동적인 웹 페이지를 구현하고 개발 편의성을 높였다. - 공식 웹사이트에 알 수 없는 변수를 사용한 문서 - 브루클린 미술관
브루클린 미술관은 1823년 브루클린 견습생 도서관으로 시작하여 현재 약 50만 점의 소장품을 보유한 뉴욕 브루클린 소재의 미술관으로, 다양한 분야의 예술 작품을 전시하며 특히 아프리카 미술과 여성주의 미술에 대한 기여가 크다. - 공식 웹사이트에 알 수 없는 변수를 사용한 문서 - 광주지방기상청
광주지방기상청은 광주광역시와 전라남도 지역의 기상 예보, 특보, 관측, 기후 정보 제공 등의 업무를 수행하는 기상청 소속 기관으로, 1949년 광주측후소로 설치되어 1992년 광주지방기상청으로 개편되었으며, 기획운영과, 예보과, 관측과, 기후서비스과와 전주기상지청, 목포기상대를 두고 있다.
프리메이커 - [IT 관련 정보]에 관한 문서 | |
---|---|
기본 정보 | |
![]() | |
개발자 | Jonathan Revusky, Attila Szegedi, Dániel Dékány 등 |
출시 | 2000년 |
최신 버전 | 2.3.33 |
운영 체제 | 크로스 플랫폼 |
프로그래밍 언어 | 자바 |
장르 | 템플릿 엔진 |
라이선스 | 아파치 라이선스 2.0 |
웹사이트 | 프리마커 공식 웹사이트 |
리포지토리 | FreeMarker Repository |
2. 역사
프리메이커는 2004년경까지 여러 차례의 패러다임 전환을 겪으며 발전했다. 초기에는 벤자민 지어와 마이크 바이어가 프리메이커 1(현재 프리메이커 클래식)을 개발했다. 2002년부터 조나단 레부스키가 프로젝트를 이끌며 프리메이커 2를 출시, 템플릿 언어를 개선하고 자동 객체 래핑을 도입하는 등 변화를 주었다. 2004년 3분기에 출시된 2.3 버전은 안정화되었고, 2022년 현재까지 하위 호환성을 유지하고 있다. 2015년 말, 아파치 소프트웨어 재단에 기증되어 2018년 3월 21일 아파치 프로젝트가 되었다.
2. 1. 초기 개발
2004년경까지 프리메이커는 여러 차례의 패러다임 전환 및 기타 중요한 변화로 인해 다소 혼란스러운 역사를 거쳤다. 프리메이커 1(현재는 프리메이커 클래식으로 알려져 있으며, 별도의 프로젝트임)은 원래 벤자민 지어와 마이크 바이어가 작성했다.[1]2. 2. 프리메이커 2
2002년부터 새로운 프로젝트 리더는 조나단 레부스키였으며, 그는 여러 실질적인 변화의 시작을 알리는 프리메이커 2를 출시했다. 이러한 변화의 주요 목표는 템플릿 언어를 더욱 엄격하게 만들어, 오타 및 기타 일반적인 실수를 최대한 많이 감지하는 것이었다. 또한 자동 객체 래핑이 도입되었으며, 템플릿 언어의 타입 시스템이 점진적으로 발전했다. 이 언어는 더욱 강력한 매크로 프로그래밍 기능과 네임스페이스와 같은 많은 파워 유저 기능을 갖추게 되었다. 이 언어는 2004년 3분기에 출시된 버전 2.3을 통해 상당히 안정된 상태에 도달했다.[1] 2022년 현재까지 이 제품은 하위 호환성을 유지하고 있으며, 향후 프리메이커 2 시리즈에서 호환되지 않는 중요한 변경 사항은 없을 것으로 예상된다.[1]2. 3. 아파치 재단 합류
2015년 말, 프리메이커는 아파치 소프트웨어 재단에 기증되었고, 아파치 인큐베이터에 들어갔으며, 2018년 3월 21일에는 완전한 아파치 프로젝트가 되었다.3. 사용 예시
다음은 프리메이커 템플릿과 그 결과물을 보여주는 간단한 예시이다.
```html
Hello ${name}! You have the following messages:
<#list messages as m>
${m.from}: ${m.body}
#list>
```
위 템플릿은 프리메이커를 통해 다음과 같이 처리된다.
```html
Hello Joe! You have the following messages:
Tim: Please don't forget to bring the conference papers!
Cindy: Can you give me a visit this afternoon?
Richard: Don't forget the papers this time!
```
`name`과 `messages`와 같은 변수는 템플릿 외부에서 제공되므로, 템플릿 작성자는 표현 문제만 처리하면 된다. 템플릿은 이러한 변수가 데이터베이스, 쿠키 등 어떤 방식으로 계산되었는지와 관계없이 동일하게 유지된다. 객체 래핑 기술을 사용하면 프리메이커에서 값의 정확한 자바 API를 숨길 수 있다. 예를 들어 `messages`는 `from`과 `body` 속성을 가진 자바빈즈 목록이나 배열처럼 보이지만, 객체 래퍼가 적절히 사용되면 템플릿에 영향을 주지 않고 완전히 다른 것일 수도 있다.[1]
3. 1. 템플릿
다음은 템플릿 예시이다.```html
Hello ${name}! You have the following messages:
<#list messages as m>
${m.from}: ${m.body}
#list>
```
위 템플릿은 프리메이커에 의해 다음과 같이 처리된다.
```html
Hello Joe! You have the following messages:
Tim: Please don't forget to bring the conference papers!
Cindy: Can you give me a visit this afternoon?
Richard: Don't forget the papers this time!
```
`name`과 `messages` 같은 변수는 템플릿 외부에서 제공되므로, 템플릿 작성자는 표현 문제만 처리하면 된다. 템플릿은 이러한 변수가 데이터베이스, 쿠키 등 어떤 방식으로 계산되었는지와 관계없이 동일하게 유지된다. 객체 래핑 기술을 사용하면 프리메이커에서 값의 정확한 자바 API를 숨길 수 있다. 예를 들어 `messages`는 `from`과 `body` 속성을 가진 자바빈즈 목록이나 배열처럼 보이지만, 객체 래퍼가 적절히 사용되면 템플릿에 영향을 주지 않고 완전히 다른 것일 수도 있다.
3. 2. 결과물
htmlHello Joe! You have the following messages:
Tim: Please don't forget to bring the conference papers!
Cindy: Can you give me a visit this afternoon?
Richard: Don't forget the papers this time!
```
"name"과 "messages" 같은 변수는 템플릿 외부에서 제공되므로 템플릿 작성자는 표현 문제만 처리하면 된다. 템플릿은 이러한 변수가 데이터베이스, 쿠키, 또는 다른 방식으로 계산되었는지 여부와 관계없이 동일하게 유지된다. 또한 객체 래핑이라는 기술을 사용하여 프리메이커에서 값의 정확한 자바 API(따라서 클래스)를 숨길 수 있다. 예를 들어 "messages"는 "from" 및 "body" 속성이 있는 자바빈즈 목록 또는 배열인 것처럼 보이지만, 객체 래퍼가 적절하게 사용되는 한 템플릿에 영향을 미치지 않고 완전히 다른 것일 수도 있다.[1]
4. 주요 특징
프리메이커는 템플릿 기반 엔진으로, 다음과 같은 주요 특징을 갖는다.
- 데이터와 디자인 분리: 템플릿 작성자는 표현 문제에만 집중할 수 있도록 데이터와 디자인을 분리한다. 템플릿에서 사용되는 변수는 외부에서 제공되므로, 템플릿 작성자는 데이터의 출처나 계산 방식에 대해 신경 쓸 필요가 없다.[1]
- 객체 래핑: 객체 래핑 기술을 사용하여 값의 정확한 자바 API를 숨길 수 있다. 이를 통해 템플릿은 데이터의 실제 구현 방식과 무관하게 작동할 수 있다.[1]
4. 1. 데이터와 디자인 분리
프리메이커는 데이터와 디자인을 분리하여 템플릿 작성자가 표현 문제에만 집중할 수 있도록 한다. 예를 들어, `name`, `messages`와 같은 변수는 템플릿 외부에서 제공된다. 따라서 템플릿 작성자는 이러한 변수가 데이터베이스, 쿠키 등 어디에서 어떻게 계산되었는지 신경 쓸 필요가 없다.[1]다음은 템플릿 예시이다.
```html
Hello ${name}! You have the following messages:
<#list messages as m>
${m.from}: ${m.body}
#list>
```
이 템플릿은 프리메이커에 의해 처리되면 다음과 같은 결과를 생성한다.
```html
Hello Joe! You have the following messages:
Tim: Please don't forget to bring the conference papers!
Cindy: Can you give me a visit this afternoon?
Richard: Don't forget the papers this time!
```
또한, 객체 래핑 기술을 사용하여 프리메이커에서 값의 정확한 자바 API (따라서 클래스)를 숨길 수 있다. 예를 들어, `messages`는 `from` 및 `body` 속성이 있는 자바빈즈 목록 또는 배열처럼 보이지만, 객체 래퍼가 적절하게 사용되는 한 템플릿에 영향을 미치지 않고 완전히 다른 것일 수도 있다.[1]
4. 2. 객체 래핑
"name"과 "messages" 같은 변수는 템플릿 외부에서 제공되므로 템플릿 작성자는 프레젠테이션 문제만 처리하면 된다. 템플릿은 이러한 변수가 데이터베이스, 쿠키, 또는 다른 방식으로 계산되었는지 여부에 관계없이 동일하게 유지된다. 또한 객체 래핑이라는 기술을 사용하여 프리메이커에서 값의 정확한 자바 API(따라서 클래스)를 숨길 수 있다. 예를 들어 "messages"는 "from" 및 "body" 속성이 있는 자바빈즈의 목록 또는 배열인 것처럼 보이지만, 객체 래퍼가 적절하게 사용되는 한 템플릿에 영향을 미치지 않고 완전히 다른 것일 수도 있다.참조
[1]
웹사이트
Apache Calcite, FreeMarker, Gora, Phoenix, and Solr updated
https://sdtimes.com/[...]
2017-03-27
[2]
간행물
Survey on Template Engines in Java
EDP Sciences
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com