Ugrás a tartalomhoz

JetBrains MPS

A Wikiszótárból, a nyitott szótárból


Főnév

JetBrains MPS (tsz. JetBrains MPSs)

  1. (informatika) A JetBrains MPS (Meta Programming System) egy különleges, erőteljes fejlesztőeszköz, amelynek célja domain-specifikus nyelvek (DSL-ek) létrehozása, bővítése és integrálása. Ellentétben a legtöbb hagyományos IDE-vel, nem csak programokat lehet írni benne, hanem új nyelveket is lehet kitalálni és implementálni, majd más fejlesztők által is használhatóvá tenni.



🧠 Mi is az MPS?

A JetBrains MPS egy structure-based (strukturális szerkesztő), projectional editing-et alkalmazó környezet, amely eltér a klasszikus, karakteralapú szövegszerkesztéstől. Itt nem szöveget írsz, hanem absztrakt szintaxisfákat (AST – abstract syntax tree) manipulálsz egy vizuális szerkesztőben.

Ez azt jelenti, hogy a nyelv szintaxisa nem feltétlenül szövegalapú. Lehet például Excel-szerű, táblázatos, diagram-alapú, vagy akár saját, teljesen egyedi megjelenésű.


🎯 Mire használható?

JetBrains MPS-t tipikusan a következő területeken alkalmazzák:

  • Domain-specific language (DSL) tervezés
  • Saját szabályrendszerrel rendelkező modellező nyelvek
  • Generált kód alapú fejlesztés
  • Formális modellezés (például: állapotgépek, matematikai nyelvek)
  • Compiler frontend fejlesztés (parsing helyett AST szerkesztés)
  • Low-code / no-code eszközök backendje



🧰 Főbb jellemzők

Funkció Leírás
Projectional editing Nem szöveget, hanem szintaxisfát szerkesztesz
DSL-ek definiálása Saját nyelvek struktúrája, szintaxisa, típusrendszere, editora
Nyelvbővítés Létező nyelvek bővítése új szintaktikai elemekkel
Code generation A saját DSL-ekből kód generálható pl. Java, C, XML, SQL
Integráció más nyelvekkel Cross-language editor, referenciák, validációk
Modularitás Nyelvek modulárisan újrahasznosíthatók, kombinálhatók
IDE-szintű támogatás Refaktorálás, navigáció, hibajelzés, autokomplettálás saját nyelvhez is



🧱 Alapfogalmak MPS-ben

1. Language

Egy teljesen új nyelv (vagy nyelvkiterjesztés). A következő komponenseket tartalmazza:

  • Structure: az AST szerkezete – hogyan néz ki egy program “belülről”
  • Editor: hogyan jelenik meg a nyelvi elem a képernyőn
  • Constraints: típusellenőrzés, szabályok, hogy mi érvényes
  • Behavior: hogyan viselkednek az elemek (pl. evaluáció)
  • Typesystem: típusok kezelése, típusellenőrzés
  • Generator: hogyan generáljunk kódot (pl. Java kódot)

2. Model

Egy konkrét “program” vagy rendszer, amit az adott nyelven írsz.

3. Solution

Egy vagy több modell együttese, amelyek a nyelvet használják.

4. Module

Általános fogalom, amely lehet Language, Solution, vagy DevKit.



📐 Példa: Saját DSL létrehozása

Tegyük fel, hogy készíteni akarunk egy “Workflow DSL”-t. Ebben lépések (step), döntések (decision), ágak (branch) szerepelnek.

Lépések:

  1. Language létrehozása
    • workflow.dsl
  2. Structure definiálása
    • Step, Decision, Workflow osztályok
  3. Editor szerkesztése
    • Step elem megjelenik: step: <name>
  4. Generator írása
    • A DSL elemekből például Java kódot generálunk: minden Step egy Runnable



🛠️ Kódgenerálás

Minden DSL-elemhez megadhatjuk, hogy milyen más nyelvi kódot generáljon (pl. Java, XML).

Példa:

workflow "Example" {
  step "Login"
  decision "Authenticated?" {
    yes -> step "Dashboard"
    no  -> step "Error"
  }
}

Ez fordítás után például ilyen Java kóddá alakulhat:

if (user.isAuthenticated()) {
    showDashboard();
} else {
    showError();
}

🧪 Validáció és típusrendszer

Az MPS lehetőséget ad saját típusellenőrző szabályok írására. Például:

  • A Decision elemnek mindig két branch ága kell hogy legyen.
  • Egy Step-nek csak egy next kapcsolata lehet.

Ezt az MPS typesystem DSL-ben lehet deklarálni.



📚 Integráció más nyelvekkel

  • Az MPS képes Java API-t meghívni, Java kódot generálni, Java környezetben futni.
  • Támogatja a nyelvek egymásba ágyazását is: pl. SQL kód egy DSL struktúrában.
  • Több célnyelvre is generálhatunk: pl. Java backend + SQL lekérdezés.



💡 Hasznos képességek

  • Versioning és diff támogatás AST szinten
  • Live templates saját DSL-ekhez
  • Nyelvi modulok újrafelhasználhatósága
  • Nyelvkompozíció: meglévő nyelvek összeillesztése új DSL-ekhez
  • Beépített hibakereső és validátor



📦 MPS vs hagyományos IDE

Tulajdonság JetBrains MPS VS Code / IntelliJ
Szöveg alapú szerkesztés ❌ (AST-alapú) ✔️
Saját nyelv definiálás ✔️ strukturálisan ✖️
Nyelvkompozíció ✔️ ✖️
Kódgenerálás irányítása ✔️ (template engine) Csak plugin szinten
Szokásos kódírás ✔️ (Java, XML stb.) ✔️
Tanulási görbe Meredek Enyhébb



📦 Telepítés és használat

  1. Letöltés: https://www.jetbrains.com/mps/
  2. Projekt létrehozása:
    • New Project → Add Language + Solution
  3. Nyelv szerkesztése:
    • Structure → Editor → Generator
  4. Program írása:
    • Model/Solution modulban
  5. Generált kód megtekintése:
    • GenerateShow Generated Files



📚 Hasznos források



✅ Összefoglalás

A JetBrains MPS nem egy hagyományos kódszerkesztő – ez egy nyelvépítő eszköz, amely lehetővé teszi, hogy:

  • Saját nyelveket hozz létre
  • Más nyelvekkel ötvözd őket
  • Strukturálisan szerkeszd és generáld a kódot

Ha például egy banknál, ipari cégnél vagy tudományos területen egyedi szabályrendszerek szerint működő szoftvert írsz, az MPS kiváló alap lehet egy domain-specifikus nyelv megvalósításához.