JetBrains MPS

Last updated
Meta Programming System
Developer(s) JetBrains
Stable release
6472 [1] (October 18, 2011)
Repository
Operating system Cross-platform
License Apache License, Version 2.0 [2]
Website www.jetbrains.com/mps/   OOjs UI icon edit-ltr-progressive.svg

JetBrains MPS (Meta Programming System) is a language workbench developed by JetBrains. MPS is a tool to design domain-specific languages (DSL). It uses projectional editing which allows users to overcome the limits of language parsers, and build DSL editors, such as ones with tables and diagrams. [3]
It supports language-oriented programming [ citation needed ]. MPS is an environment for language definition, a language workbench, and integrated development environment (IDE) for such languages. [4] [5] [6]

Contents

Composable languages

While domain-specific language extensions can often be useful in general-purpose programming languages, their text-based nature means that adding domain-specific language extensions can lead to ambiguity in text-based syntax. MPS avoids this grammatical ambiguity by working with the abstract syntax tree directly. In order to edit this tree, a text-like projectional editor is used.

Because MPS directly uses the abstract syntax tree, MPS supports composable language definitions. This means that languages can be extended, and embedded, and these extensions can be used in the same program in MPS and will not conflict. [7] [8]

Reusable language infrastructure

MPS provides a reusable language infrastructure which is configured with language definition languages. MPS also provides many IDE services automatically: editor, code completion, find usages, etc.

Existing languages

MPS applications

Mbeddr

mbeddr is an embedded development system based on MPS. It has languages tailored to embedded development and formal methods: [9]

YouTrack

In October 2009, JetBrains released the YouTrack bug tracking system - the first commercial software product developed with MPS. [10]

Realaxy editor

In April 2010, the Realaxy ActionScript Editor beta was released, the first commercial IDE based on the MPS platform.

PEoPL

PEoPL is a tool for software product line engineering realised in MPS. [11]

GDF (Gamification Design Framework)

GDF is a framework for designing and deploying gameful applications. GDF consists of domain-specific languages allowing for stepwise refinement of application definitions, from higher levels of abstraction towards implementation code to be run on a gamification engine. [12]

According to GDF's case study from Jetbrains, [13] MPS was chosen for three main reasons: the need to provide text-based DSLs, the availability of language extension mechanisms conveying consistency management between abstraction layers, and the provision of generators to automatically derive implementation code.

Licensing

The MPS source code is released under the Apache License.

See also

Related Research Articles

An integrated development environment (IDE) is a software application that provides comprehensive facilities for software development. An IDE normally consists of at least a source-code editor, build automation tools, and a debugger. Some IDEs, such as IntelliJ IDEA, Eclipse and Lazarus contain the necessary compiler, interpreter or both; others, such as SharpDevelop and NetBeans, do not.

<span class="mw-page-title-main">Martin Fowler (software engineer)</span> American software developer, author and public speaker

Martin Fowler is a British software developer, author and international public speaker on software development, specialising in object-oriented analysis and design, UML, patterns, and agile software development methodologies, including extreme programming.

In computer science, a preprocessor is a program that processes its input data to produce output that is used as input in another program. The output is said to be a preprocessed form of the input data, which is often used by some subsequent programs like compilers. The amount and kind of processing done depends on the nature of the preprocessor; some preprocessors are only capable of performing relatively simple textual substitutions and macro expansions, while others have the power of full-fledged programming languages.

<span class="mw-page-title-main">Apache Groovy</span> Programming language

Apache Groovy is a Java-syntax-compatible object-oriented programming language for the Java platform. It is both a static and dynamic language with features similar to those of Python, Ruby, and Smalltalk. It can be used as both a programming language and a scripting language for the Java Platform, is compiled to Java virtual machine (JVM) bytecode, and interoperates seamlessly with other Java code and libraries. Groovy uses a curly-bracket syntax similar to Java's. Groovy supports closures, multiline strings, and expressions embedded in strings. Much of Groovy's power lies in its AST transformations, triggered through annotations.

A domain-specific language (DSL) is a computer language specialized to a particular application domain. This is in contrast to a general-purpose language (GPL), which is broadly applicable across domains. There are a wide variety of DSLs, ranging from widely used languages for common domains, such as HTML for web pages, down to languages used by only one or a few pieces of software, such as MUSH soft code. DSLs can be further subdivided by the kind of language, and include domain-specific markup languages, domain-specific modeling languages, and domain-specific programming languages. Special-purpose computer languages have always existed in the computer age, but the term "domain-specific language" has become more popular due to the rise of domain-specific modeling. Simpler DSLs, particularly ones used by a single application, are sometimes informally called mini-languages.

<span class="mw-page-title-main">IntelliJ IDEA</span> Integrated development environment

IntelliJ IDEA is an integrated development environment (IDE) written in Java for developing computer software written in Java, Kotlin, Groovy, and other JVM-based languages. It is developed by JetBrains and is available as an Apache 2 Licensed community edition, and in a proprietary commercial edition. Both can be used for commercial development.

Language-oriented programming (LOP) is a software-development paradigm where "language" is a software building block with the same status as objects, modules and components, and rather than solving problems in general-purpose programming languages, the programmer creates one or more domain-specific languages (DSLs) for the problem first, and solves the problem in those languages. Language-oriented programming was first described in detail in Martin Ward's 1994 paper Language Oriented Programming.

In computer programming, Intentional Programming is a programming paradigm developed by Charles Simonyi that encodes in software source code the precise intention which programmers have in mind when conceiving their work. By using the appropriate level of abstraction at which the programmer is thinking, creating and maintaining computer programs become easier. By separating the concerns for intentions and how they are being operated upon, the software becomes more modular and allows for more reusable software code.

Model-driven engineering (MDE) is a software development methodology that focuses on creating and exploiting domain models, which are conceptual models of all the topics related to a specific problem. Hence, it highlights and aims at abstract representations of the knowledge and activities that govern a particular application domain, rather than the computing concepts.

A structure editor, also structured editor or projectional editor, is any document editor that is cognizant of the document's underlying structure. Structure editors can be used to edit hierarchical or marked up text, computer programs, diagrams, chemical formulas, and any other type of content with clear and well-defined structure. In contrast, a text editor is any document editor used for editing plain text files.

<span class="mw-page-title-main">Scripting language</span> Programming language for run-time events

A scripting language or script language is a programming language that is used to manipulate, customize, and automate the facilities of an existing system. Scripting languages are usually interpreted at runtime rather than compiled.

YouTrack is a proprietary, commercial browser-based bug tracker, issue tracking system, and project management software developed by JetBrains.

Nemerle is a general-purpose, high-level, statically typed programming language designed for platforms using the Common Language Infrastructure (.NET/Mono). It offers functional, object-oriented, aspect-oriented, reflective and imperative features. It has a simple C#-like syntax and a powerful metaprogramming system.

Xtext is an open-source software framework for developing programming languages and domain-specific languages (DSLs). Unlike standard parser generators, Xtext generates not only a parser, but also a class model for the abstract syntax tree, as well as providing a fully featured, customizable Eclipse-based IDE.

<span class="mw-page-title-main">JetBrains</span> Czech software company

JetBrains s.r.o. is a Czech software development private limited company which makes tools for software developers and project managers. The company has its headquarters in Prague, and has offices in China, Europe, and the United States.

Kotlin is a cross-platform, statically typed, general-purpose high-level programming language with type inference. Kotlin is designed to interoperate fully with Java, and the JVM version of Kotlin's standard library depends on the Java Class Library, but type inference allows its syntax to be more concise. Kotlin mainly targets the JVM, but also compiles to JavaScript or native code via LLVM. Language development costs are borne by JetBrains, while the Kotlin Foundation protects the Kotlin trademark.

<span class="mw-page-title-main">PlantUML</span> Open-source software tool

PlantUML is an open-source tool allowing users to create diagrams from a plain text language. Besides various UML diagrams, PlantUML has support for various other software development related formats, as well as visualisation of JSON and YAML files.

A language workbench is a tool or set of tools that enables software development in the language-oriented programming software development paradigm. A language workbench will typically include tools to support the definition, reuse and composition of domain-specific languages together with their integrated development environment. Language workbenches were introduced and popularized by Martin Fowler in 2005.

The Language Server Protocol (LSP) is an open, JSON-RPC-based protocol for use between source code editors or integrated development environments (IDEs) and servers that provide "language intelligence tools": programming language-specific features like code completion, syntax highlighting and marking of warnings and errors, as well as refactoring routines. The goal of the protocol is to allow programming language support to be implemented and distributed independently of any given editor or IDE. In the early 2020s LSP quickly became a "norm" for language intelligence tools providers.

References

  1. reference URL: https://github.com/JetBrains/MPS/releases/tag/6472, retrieved: June 17, 2019, title: Release 6472, publication date: October 18, 2011
  2. reference URL: https://confluence.jetbrains.com/display/MPSD20183/FAQ#FAQ-HowisMPSlicensed, retrieved: February 19, 2019
  3. "What is MPS?". Design your own DSLs
  4. Martin Fowler. "Language Workbenches: The Killer-App for Domain Specific Languages?".
  5. Martin Fowler. "IntentionalSoftware".
  6. Fabien Campagne (2014). "The MPS Language Workbench: Volume I."
  7. Srini Penchikala. "JetBrains Meta Programming System Supports Language Oriented Programming and DSLs".
  8. "Language Oriented Programming: The Next Programming Paradigm". Archived from the original on 2010-01-30.
  9. "mbeddr official site". 9 June 2010.
  10. Charles Humble (2009-10-15). "Evolving Java Without Changing the Language".
  11. "PEoPL | Projectional Editing of Product Lines". peopl.de. Retrieved 2017-06-19.
  12. Bucchiarone, Antonio; Cicchetti, Antonio; Marconi, Annapaola (September 2019). "Exploiting Multi-level Modelling for Designing and Deploying Gameful Systems". 2019 ACM/IEEE 22nd International Conference on Model Driven Engineering Languages and Systems (MODELS). pp. 34–44. doi:10.1109/MODELS.2019.00-17. ISBN   978-1-7281-2536-7. S2CID   208206029.
  13. "MPS and GDF Case Study" (PDF).