Web-Based Modeling Tools Theia And
Total Page:16
File Type:pdf, Size:1020Kb
Building Web-based Modeling Tools with Theia and Che Philip Langer & Maximilian Koegel EclipseSource © 2019 EclipseSource | https://eclipsesource.com | Dres. Langer and Koegel | Building Web-based Modeling Tools with Theia and Che 1 Why web-based tools? ● Accessibility ○ No client installation ○ Access through a web link ○ Simple client updates ○ Physical resource sharing ● Usability ○ Modern UI look and feel ○ SWT vs. HTML5 ○ GEF 3 vs. SVG ● Maintainability ○ Room for evolution ○ Availability of developers © 2019 EclipseSource | https://eclipsesource.com | Dres. Langer and Koegel | Building Web-based Modeling Tools with Theia and Che 2 A prototypical (modeling) tool Workbench Forms Diagrams Text Analysis Generator © 2019 EclipseSource | https://eclipsesource.com | Dres. Langer and Koegel | Building Web-based Modeling Tools with Theia and Che 3 Key enablers for building domain-specific, web-based tools ● Eclipse Theia ○ Extensible cloud IDE ○ Default frontend for Eclipse Che ● Eclipse Che ○ Kubernetes-native IDE platform ○ Management of workspaces and dev environments ● Monaco & Language server protocol (LSP) ○ Protocol enabling the separation of editor (front-end) and language implementation (back-end) ○ Feature-rich and broadly adopted (VS Code) ⇒ Related talk: “Eclipse Theia and Che, explained and explored!”, Today 17:00, Theater Stage © 2019 EclipseSource | https://eclipsesource.com | Dres. Langer and Koegel | Building Web-based Modeling Tools with Theia and Che 4 Reinventing the wheel? ● Which components can be reused? ● What needs to be reimplemented? ● How do we separate frontend and backend functionality? Domain-specific Modeling Environment codegen DSML validation simulation © 2019 EclipseSource | https://eclipsesource.com | Dres. Langer and Koegel | Building Web-based Modeling Tools with Theia and Che 5 Typical reuse example: Code Generation Browser: JS/TS Eclipse Theia frontend FrontendGenerator extension UI Node.js: JS/TS Eclipse Theia backend GeneratorBackend extension Launcher JVM: Java Code Generator © 2019 EclipseSource | https://eclipsesource.com | Dres. Langer and Koegel | Building Web-based Modeling Tools with Theia and Che 6 Overall tool architecture JSON Forms GLSP EMF.cloud Model Server LSP © 2019 EclipseSource | https://eclipsesource.com | Dres. Langer and Koegel | Building Web-based Modeling Tools with Theia and Che 7 Demo overview ● One connected model for coffee makers ○ Structural model ○ Behavioral model ● Example IDE with the following features: ○ Tree-Editor for structural modeling with forms ○ Graphical editor for behavioral model ○ Code generation ○ Working with source code ○ Textual Modeling ○ Model Analysis ○ Multi-User Support © 2019 EclipseSource | https://eclipsesource.com | Dres. Langer and Koegel | Building Web-based Modeling Tools with Theia and Che 8 Demo: Form-based editing © 2019 EclipseSource | https://eclipsesource.com | Dres. Langer and Koegel | Building Web-based Modeling Tools with Theia and Che 9 Form-based editing ● Tree Browser Theia frontend Coffee Tree-Editor ○ Based on Theia Tree Widget ○ LabelPovider and ContentProvider Node.js Theia backend Model Connector ● Detail-Form ○ Based on JSON Forms JVM: Java Model Server ○ Declarative approach: JSON + UI Schema ● Synchronization ○ Based on EMF.cloud Model Server ○ Typescript-based Model Server client API ■ Push changes as commands ■ Subscribe to updates ⇒ Related talk: “Property editors in space”, Thursday 1pm, Theater Stage © 2019 EclipseSource | https://eclipsesource.com | Dres. Langer and Koegel | Building Web-based Modeling Tools with Theia and Che 10 Demo: Graphical Modeling © 2019 EclipseSource | https://eclipsesource.com | Dres. Langer and Koegel | Building Web-based Modeling Tools with Theia and Che 11 Graphical Modeling ● Graphical Language Server Platform (GLSP) Browser Theia frontend GLSP Editor ○ LSP for Graphical Editors ○ GLSP client: Node.js Theia backend GLSP Connector ■ generic ■ renders graphical visualization ○ GLSP server: JVM: Java GLSP Core Coffee GLSP Server ■ specific to DSL ■ maps model to graphical visualization ■ synchronization with model server JVM: Java Model Server ○ Based on Eclipse Sprotty ⇒ Related talk: “Diagrams in web and space with GLSP”, Thursday 15:10pm, Bürgersaal 2 © 2019 EclipseSource | https://eclipsesource.com | Dres. Langer and Koegel | Building Web-based Modeling Tools with Theia and Che 12 Demo: Model Server JSON Forms GLSP EMF.cloud Model Server LSP © 2019 EclipseSource | https://eclipsesource.com | Dres. Langer and Koegel | Building Web-based Modeling Tools with Theia and Che 13 Model Server JSON Forms GLSP EMF.cloud Model Server LSP © 2019 EclipseSource | https://eclipsesource.com | Dres. Langer and Koegel | Building Web-based Modeling Tools with Theia and Che 14 Model Server ● Component of EMF.cloud Eclipse project ● Features ○ Command-based change interface ○ Notification mechanism via sockets ○ Convenient model access with client APIs EMF.cloud Model Server ⇒ Related talk: “Lifting the greatness of EMF into the cloud with EMF.cloud”, Wednesday 12:35pm © 2019 EclipseSource | https://eclipsesource.com | Dres. Langer and Koegel | Building Web-based Modeling Tools with Theia and Che 15 Demo: Generators - Model to Text © 2019 EclipseSource | https://eclipsesource.com | Dres. Langer and Koegel | Building Web-based Modeling Tools with Theia and Che 16 Generators: Model to Text ● Based on Eclipse Xtend ● Generator jar build with Maven ● Launched on demand via CLI ● Generates into selected Theia workspace folder © 2019 EclipseSource | https://eclipsesource.com | Dres. Langer and Koegel | Building Web-based Modeling Tools with Theia and Che 17 Demo: Working with source code © 2019 EclipseSource | https://eclipsesource.com | Dres. Langer and Koegel | Building Web-based Modeling Tools with Theia and Che 18 Working with source code ● Enablers: Browser Theia frontend LSP Editor Debug UI ○ Language Server Protocol (LSP) ○ Debug Adapter Protocol (DAP) DAP Node.js Theia backend LSP Connector Connector ● Theia Code Editor ○ Monaco-based (VS Code) Java Debug JVM: Java JDT jdt.ls ○ Uses LSP to “understand” language Server ● Theia Debug Extension (DAP) Your Java ○ Uses DAP to support language debug JVM: Java Program © 2019 EclipseSource | https://eclipsesource.com | Dres. Langer and Koegel | Building Web-based Modeling Tools with Theia and Che 19 Demo: Textual Modeling © 2019 EclipseSource | https://eclipsesource.com | Dres. Langer and Koegel | Building Web-based Modeling Tools with Theia and Che 20 Textual Modeling ● Frontend: Theia Editor (Monaco) Browser Theia frontend LSP Editor ● Backend: Node.js Theia backend LSP Connector ○ DSL modeled as XText grammar ○ XText LSP Server for DSL JVM: Java Activity Provider Xtext LSP Server JVM: Java Model Server © 2019 EclipseSource | https://eclipsesource.com | Dres. Langer and Koegel | Building Web-based Modeling Tools with Theia and Che 21 Demo: Model Analysis © 2019 EclipseSource | https://eclipsesource.com | Dres. Langer and Koegel | Building Web-based Modeling Tools with Theia and Che 22 Model Analysis ● Frontend: ○ Uses D3 to visualize analysis results Browser Theia frontend Analysis UI Node.js Theia backend Analysis Connector ● Backend: ○ Fetches data from model server JVM: Kotlin Analysis Service ○ Calculates analysis result from data JVM: Java Model Server © 2019 EclipseSource | https://eclipsesource.com | Dres. Langer and Koegel | Building Web-based Modeling Tools with Theia and Che 23 Multi-User Support © 2019 EclipseSource | https://eclipsesource.com | Dres. Langer and Koegel | Building Web-based Modeling Tools with Theia and Che 24 Running Theia on Che WS Theia Che Server Config WS A Config Workspace 1 Workspace 2 Workspace 3 © 2019 EclipseSource | https://eclipsesource.com | Dres. Langer and Koegel | Building Web-based Modeling Tools with Theia and Che 25 Excursion: Running applications on Kubernetes Pod Master Node Node Node Node Node Node © 2019 EclipseSource | https://eclipsesource.com | Dres. Langer and Koegel | Building Web-based Modeling Tools with Theia and Che 26 Excursion: Running Che and Theia on Kubernetes Theia Browser Master Node Che WS Config Che ServerNode Node Node © 2019 EclipseSource | https://eclipsesource.com | Dres. Langer and Koegel | Building Web-based Modeling Tools with Theia and Che 27 Summary ● Web-based modeling tools are feasible today ● Reuse and migration easier than expected ● Web technology can leverage unique advantages ○ Modern UI and styling ○ Zero installation for users ○ Enables “cloud” business models ● There is open-source components ○ Eclipse Theia and Eclipse Che ○ EMF.cloud, LSP, GLSP, JSON Forms, XText, Sprotty and D3 ○ Existing business logic can often be reused ● Demo code available: https://github.com/eclipsesource/coffee-editor → Important now: Define strategy and timeplan, build POC © 2019 EclipseSource | https://eclipsesource.com | Dres. Langer and Koegel | Building Web-based Modeling Tools with Theia and Che 28 Please this WITH Thank you! © 2019 EclipseSource | https://eclipsesource.com | Dres. Langer and Koegel | Building Web-based Modeling Tools with Theia and Che 29 Towards a migration strategy ● Now: Define a strategy and timeplan, build POC ● Short-term: Consider for architectural decisions ● Mid-term: ○ Prepare architecture for migration iteratively ○ Migrate high-value use cases iteratively ○ Single-source components, enable reuse Image © by Foofy ● Long-term: ○ Migrate use-case by use-case iteratively ○ Deprecate desktop-based solution © 2019 EclipseSource | https://eclipsesource.com