User Tools

Site Tools


gramar_defined

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
Last revision Both sides next revision
gramar_defined [2016/06/28 11:09]
chrisgerken created
gramar_defined [2016/08/12 18:18]
chrisgerken [Background]
Line 3: Line 3:
 noun **|** **gram** - ar **|** \ˈgra-mər\ noun **|** **gram** - ar **|** \ˈgra-mər\
  
-Simply put, a gramar is a tool that can generate up to 95% (historically speaking, ex business logic) of a component for almost any given software architecture. ​ Past examples of supported ​architectures include:+gramar is a lightweight development ​tool that can generate up to 95% (historically speaking, ex business logic) of a component for almost any given software architecture. ​ Past examples of generated ​architectures include:
  
-1. Hadoop applications (Storm topologies, Mapreduce job flows, Kafka components) +  - Hadoop applications (Storm topologies, Mapreduce job flows, Kafka components, Oozie flows, Sqoop jobs
-2. Database persistence layers, both relational and NoSQL (HBase, Cassandra, Elasticsearch) +  ​- ​Database persistence layers, both relational and NoSQL (HBase, Cassandra, Elasticsearch) 
-3. J2EE programming models (Servlets, EJB'​s, ​portlets, JSP tag libraries) +  ​- ​J2EE programming models (Servlets, EJB'​s, ​ESB's, Portlets, JSP tag libraries) 
-4. Eclipse tools (Text editors, Multi-page editors, UML schemas, Popup actions) +  ​- ​Eclipse tools (Text editors, Multi-page editors, UML schemas, Popup actions) 
-5. Gramars themselves+  - Documentation (HTML, wiki) 
 +  - Gramars themselves
  
 To be a bit more formal, a gramar is a set of production rules for source and other files in a component implementation adhering to a specific software architecture. Each gramar has an associated schema that models the allowed points of variability between instances of that software architecture. Each production describes how to generate a file from those points of variability and is often applied multiple times, depending on the cardinality of the model. A grammar does not describe the meaning of the generated files nor what can be done with them.  It only captures and generates their content. To be a bit more formal, a gramar is a set of production rules for source and other files in a component implementation adhering to a specific software architecture. Each gramar has an associated schema that models the allowed points of variability between instances of that software architecture. Each production describes how to generate a file from those points of variability and is often applied multiple times, depending on the cardinality of the model. A grammar does not describe the meaning of the generated files nor what can be done with them.  It only captures and generates their content.
Line 27: Line 28:
   - As a single zip file, again deployed on the file system or the classpath   - As a single zip file, again deployed on the file system or the classpath
   - As a jar file   - As a jar file
 +  - As a project in an Eclipse workspace
 +  - As an Eclipse plugin (although technically that's just another variant of a class path)
  
 ==== Productions ==== ==== Productions ====
Line 32: Line 35:
 A production is a text file whose boilerplate content generally resembles the file content it's meant to generate. ​ Imbedded in its text content are gramar tags that can: A production is a text file whose boilerplate content generally resembles the file content it's meant to generate. ​ Imbedded in its text content are gramar tags that can:
  
-  - Read data from the model and insert in-place within the template boilerplate+  - Read data from the model using standard XPath expressions ​and insert in-place within the template boilerplate ​
   - Transform and write data back into the model   - Transform and write data back into the model
   - Conditionally process nested boilerplate and tags.  The conditional processing includes **if**, **case** and **iterative** behaviors.   - Conditionally process nested boilerplate and tags.  The conditional processing includes **if**, **case** and **iterative** behaviors.
Line 38: Line 41:
  
 As such, the processing of a production is effectively top-down procedural with possible side effects to the model and, in the case of **main.prod**,​ the creation of projects, folders and files. As such, the processing of a production is effectively top-down procedural with possible side effects to the model and, in the case of **main.prod**,​ the creation of projects, folders and files.
- 
 ==== Background ==== ==== Background ====
  
-Gramar is a next-generation ​greenfield implementation ​of both Eclipse Model-to-Text JET and, before that, the Design pattern Toolkit from IBM.  A gramar can be applied not just in Eclipse, but in IntelliJ, as a stand-alone java application,​ within a web application or in any other environment.+Gramar is a complete, ​next-generation ​rewrite ​of Eclipse Model-to-Text JET and, before that, the Design pattern Toolkit from IBM.  A gramar can be applied not just in Eclipse, but in IntelliJ, as a stand-alone java application,​ within a web application or in any other Java execution ​environment. 
 + 
 +Back to [[start|Home]]
gramar_defined.txt · Last modified: 2016/10/14 02:37 by chrisgerken