2012-09-05 2 views
3

EMF 모델 (예 : 자신이 정의한 메타 모델)의 인스턴스 인 EMF 모델을 출력하는 모델의 변환 시퀀스가 ​​있습니다.Xtext 또는 XTend를 사용하여 기존 EMF 모델의 코드 생성기를 구현하십시오.

이 코드를 생성하는 좋은 방법을 찾고 있습니다. 물론, XPand가 있는데, 다른 프로젝트에서이 프로젝트를 사용했지만 XText 또는 XTend가 적합한 대안인지 궁금합니다. (너무 적극적으로 개발 된 이후입니다.)

다른 말로하면 EMF 모델이 있으므로 편집기가 필요하지 않으므로 (목적을 위해 XText가 필요하지 않음) 코드 생성기를 작성해야합니다. 해당 부분에만 XText를 사용할 수 있습니까?

XPand 또는 Acceleo를 권장합니다.

조언이 도움이 될 것입니다.

답변

3

나는 도구 들간의 공정한 비교를 시도하지만 실제로 어렵습니다.

Xtext는 코드 생성과 관련이 없습니다. 편집자와 파서를 만드는 데 사용됩니다.

Xtend2는 유사한 구문으로 Xpand의 후속 모델로 설계되었습니다. 그러나 코드 생성에 특별히 맞춰진 것이 아니라 코드 생성에도 잘 사용할 수있는 범용 언어로 만들어졌습니다. 다른 세대 엔진과의 주요 차이점은 소스 코드 레벨에서 작업한다는 것입니다 (기본적으로 Xtend2는 Java로 변환됩니다). 그리고 세대를 주도하는 자체 엔진을 제공해야합니다. 물론 Modeling Workflow Engine을 Xpand의 경우와 마찬가지로 이러한 이유가 있습니다.

간단한 코드 생성을 위해 Acceleo가 더 적합합니다. 구문은 코드 생성을위한 OMG 사양을 기반으로하며 코드 생성을 개발할 수있는 완전한 기능의 IDE를 제공합니다. 그러나 코드 생성 중에 복잡한 제어 구조가 필요한 경우 최상의 솔루션이 아닐 수도 있습니다.

Chris가 제안한대로 M2T-JET에 관해서는 매우 구체적인 요구 사항을 제외하고 투표 할 것입니다. 개발 지원은 훨씬 약합니다 (예 : 편집기). Xpand/Xtend/Acceleo의 규칙 기반 접근 방식과는 대조적으로 출력용 단일 템플릿을 사용한다는 생각에 기반합니다. 따라서 코드 생성 중에 성능이 어느 정도 향상되지만 템플릿을 이해하기가 더 어려워지는 경우가 있습니다.이 단락이 너무 부정적이므로이 단락을 무시하십시오.

EMF 모델 만 사용하는 경우 Acceleo와 Xtend 모두 코드 생성에 적합한 선택 일 수 있으므로 자신 또는 팀의 전문 지식과보다 구체적인 요구 사항에 따라 선택해야합니다. EMF 모델과 다른 데이터 소스를 모두 지원해야하는 경우 Acceleo가 최선의 선택이 아닙니다. 그러나 JET와 Xtend는 입력이 EMF 모델이라는 사실을 토대로하고 있지만 Java 코드를 쉽게 호출 할 수있는 방법을 제공합니다.

+0

네, 맞습니다. 죄송합니다. 나는 JET에 대해 부정적이지 않기를 바랬다. 그 기능은 거기에 있습니다, 그것은 단지 나를 사용하기 더 귀찮은 느낌. 그 단락을 삭제 된 것으로 표시했습니다. –

+0

은 xtend를 시도 할 것입니다. sven efftinge 역시 트위터에 나에게 제안했습니다.내가 모델을 입력으로 얻기 위해 어떤 일을해야한다는 것을 알지만, 사물의 웅장한 계획에서, 이것은 아마도 많은 일이 아니다. XTend가 XP보다 훨씬 빠르게 실행되는 곳을 읽었습니다. –

+0

@ChrisGerken 저는 Swing 편집기 (심지어 CRUDS), ESB 중재 및 Spring/JPA/Flex 응용 프로그램을 생성하기 위해 Acceleo를 사용했습니다. JET가 Acceleo/XTend보다 복잡하다는 사실은 JET가 가능한 한 완벽하다는 사실과 충돌하지 않습니다. – Tcharl

-1

나는 M2T-JET을 권장한다. 하나의 입력 모델에서 여러 템플릿을 사용하여 프로젝트, 폴더 및 파일을 생성하는 텍스트 템플릿 기반 변환입니다. 모델은 EMF가 될 수 있으며 템플리트를 통해 모델을 탐색하고 반복하여 사용자가 염두에두고있는 Eclipse 자원을 생성 할 수 있습니다.

+0

JET를 이해하지 못한다는 것이 증명되었습니다. 명확하지 않은 편견이있을 때 특히 이해하지 못하는 기술에 대해서는 언급하지 마십시오. –

관련 문제