EMML, or Enterprise Mashup Markup Language, is an XML markup for creating enterprise mashups, which are software applications that are often used in the production of data. Mashups are presented in graphical user interfaces as mashlets, widgets, or gadgets. EMML can also be considered a declarative mashup domain-specific language (DSL). A mashup DSL eliminates the need for complex, time-consuming, and repeatable procedural programming logic to create enterprise mashups. EMML also provides a declarative language for creating visual tools for enterprise mashups. The primary benefits of EMML are mashup design portability and interoperability of mashup solutions. These benefits are expected to accelerate the adoption of enterprise mashups by creating transferable skills for software developers and reducing vendor lock-in. The introduction of EMML is expected to help accelerate the trend towards the integration of Web-based applications and service-oriented architecture (SOA) technologies. Bank of America was a high-profile early supporter of EMML. Other prominent early supporters included Hewlett-Packard, Capgemini, Adobe Systems, and Intel.
Raj Krishnamurthy (chief architect at JackBe Corporation) and Deepak Alur (VP engineering at JackBe Corporation) started working on EMML in 2006. Their objective was to enable user-oriented and user-enabled mashups by creating what was then a new type of middleware called an Enterprise Mashup Platform. Raj Krishnamurthy has become the leading language designer and implementer of EMML and EML-based EMML IDE called Mashup Studio. This work evolved into the EMML reference implementation that was donated to the Open Mashup Alliance. Raj Krishnamurthy continues to be one of the key contributors to EMML through the Open Mashup Alliance.
EMML language provides a rich set of high-level mashup-domain vocabulary to a variety of Web data-sources in flexible ways. EMML provides a uniform syntax to invoke heterogeneous service styles: REST, WSDL, RSS / ATOM, RDBMS, and POJO. The EMML language also provides ability to mix various data formats: XML, JSON, JDBC, JavaObjects, and primitive types. High-level EMML language features include: statement filters the content of a variable using an XPath expression and places the result in a new variable. Code sample for filtering west-coast customers using data-item: provides the ability to group and aggregate data sets. Standard XPath aggregation operations can be used as an extension mechanism for adding user-defined functions. Nested Grouping of hierarchical data sets are also supported. There is a functional merges hierarchical document structures. Code sample that merges Yahoo! News, Financial News, and Reuters feeds: how do you go from there? Code sample where output variable contains a child with data from the variable named reviews:
EMML is a declarative language, but provides programmatic scripting extensions for performing complex mashup logic. JavaScript, JRuby, Groovy, POJO, and XQuery scripting environments are supported. Data flows seamlessly between EMML and scripting environments. Code sample where JavaScript is used to extract authentication