1 / 36

Extending Java And Developing DSLs With JetBrains MPS

Extending Java And Developing DSLs With JetBrains MPS. Konstantin Solomatov JetBrains Lead Developer for JetBrains MPS Project. 1. Agenda. Extending languages. Why bother? Problems and solutions Composability Language support MPS’ approach Idea behind it Hands-on demo

breena
Download Presentation

Extending Java And Developing DSLs With JetBrains MPS

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Extending JavaAnd Developing DSLsWith JetBrains MPS Konstantin Solomatov JetBrains Lead Developer for JetBrains MPS Project 1

  2. Agenda • Extending languages. Why bother? • Problems and solutions • Composability • Language support • MPS’ approach • Idea behind it • Hands-on demo • MPS & domain-specific languages 2

  3. Why Bother? • Specific domains = specific entities • Drawbacks of general-purpose languages: • Limited set of generic constructs • Domains are described too verbosely • Low code maintainability • Domain-specific extensions • Higher abstraction level • Higher maintainability 3

  4. Implicit Language Extensions • Domain-specific constructs in Java: • synchronized block in Java • enhanced for in Java • typesafe enums in Java • Desired constructs: • closures • yield • better support for regexps • whatever else you are missing 4

  5. MPS DEMO Closure & UI Language samples. 5

  6. Language Extensions • Existing extensions • Cover domain-specific needs • Are built into existing languages • Further extensions • Hard to integrate • Too long to wait until JCP accepts them  • Risks of incompatibility 6

  7. Agenda • Extending Languages. Why bother? • Problems and Solutions • Composability • Language support • MPS’ Approach • Idea behind it • Hands-on Demo • MPS & Domain-Specific Languages 7

  8. Composability Definition: Components are composable when they can be used together even if created by different parties 8

  9. ComposabilityDesired Goal Java Libraries Hibernate Spring Joda Time Java Extensions DB Language DI Language Dates Language 9

  10. ComposabilityLibraries vs. Extensions • Libraries are composable: • Java + Hibernate => OK • Java + Spring => OK • Java + Hibernate, Spring => OK • Language extensions are not • Java + extension A => OK • Java + extension B => OK • Java + extensions A, B => possible ambiguity 10

  11. ComposabilityGrammar Ambiguity Sample With String Interpolation Extension “A”: int resultsCount = <some_code>;string s = “Found ${resultCount} results”; Extension “B”: int resultCount = <some_code>;string t = “Found {resultCount} results”; “A”+“B” => ambiguity for the compiler: string a = “Account balance is ${balance}”; 11

  12. Language SupportRequirements • Generic infrastructure • Abstract grammar • Type system • Compiler • Etc. • IDE infrastructure • Editor • Error highlighting • Refactoring • Version control • Etc. 12

  13. Language SupportProblems • Time- and resource-consuming task • Complicated algorithms for processing code • Highly qualified developers required • Resulting infrastructure compatibility • Type systems to be compatible with different extensions • Refactorings should support potential extensions • Etc. 13

  14. Existing SolutionsPros & Cons 14

  15. Common Problem • Existing solutions provide: • Either composable language extensions • Ora decent infrastructure • Not both 15

  16. Agenda • Extending Languages. Why bother? • Problems and Solutions • Composability • Language support • MPS’ Approach • Idea behind it • Hands-on Demo • MPS & Domain-Specific Languages 16

  17. Our Solution to the Problem • JetBrains MPS • Workbench for defining and extending languages • IDE for new languages and extensions 17

  18. Idea Behind It Text-based grammars lead to ambiguities Another approach needed MPS works with Abstract Syntax Tree directly 18

  19. Idea Behind ItEditing Abstract Syntax Tree • Former attempts • Diagram-based editing • Limited domain of application • MPS solution • Keeps user in habitual environment • Supports text-like editing 19

  20. Idea Behind ItProjectional Editor • Each node of a syntax tree has its projectionin the MPS Editor 20

  21. Idea Behind ItProjectional Editor • Each node – in a dedicated cell • A node is shown in its text/symbol representation • Instantly synchronized editor and syntax tree 21

  22. Idea Behind ItProjection vs. Text • Text-like projectional editor • Has its pros & cons • Reasonable learning curve: approx. 2 weeks 22

  23. MPS DEMO Projectional editor in use. 23

  24. Idea Behind ItLanguage Support • User-defined language infrastructure • Abstract grammar • Type system • Editor • Compiler • Etc. • Programming assistance • Completion • Find usages • Rename • Etc. 24

  25. Idea Behind It Existing Languages & Extensions • Java™ re-implemented with MPS + Extensions • Collections language • Dates language • Closures language • Regexp language • Etc. • Language definition languages • Implemented with themselves i.e. bootstrapped • Misc languages (XML, etc.) 25

  26. Hands-On DemoGoal Java ReadWriteLock l = … l.readLock().lock(); try { //code } finally { l.readLock().unlock(); } Java + Extension ReadWriteLock l = … read (l) { //code } 26

  27. Hands On DemoWorkflow • We will define • Structure • Editor • Typesystem • Generator 27

  28. MPS DEMO Adding lock statement to Java 28

  29. Agenda • Extending Languages. Why bother? • Problems and Solutions • Composability • Language support • MPS’ Approach • Idea behind it • Hands-on Demo • MPS & Domain-Specific Languages 29

  30. Domain-Specific Languages • MPS suits nicely for creating DSLs • Common language parts can be reused (e.g., expression language) • You can embed general-purpose languages (e.g., Java) inside DSLs 30

  31. Domain-Specific LanguagesExample 31

  32. Existing Applications • Charisma – bug tracking system • Completely developed with MPS • Used internally • Languages for Web Development • DNQ • Webr • Spring language 32

  33. Licensing/Pricing Almost fully open-sourced Apache 2.0 License MPS is absolutely FREE 33

  34. Q & A 34

  35. More info http://www.jetbrains.com/mps - MPS page http://blogs.jetbrains.com/mps - MPS blog 35

  36. Thank You Konstantin Solomatov konstantin.solomatov@jetbrains.com Lead Developer for JetBrains MPS Project http://www.jetbrains.com/mps

More Related