MPS Java との互換性
The Java コンパイラー configuration tab in the preferences window only holds a single setting - Project bytecode version.
この設定は、MPS によってコンパイルされたすべての Java クラスのバイトコードバージョンを定義します。これらのクラスには、言語の側面から生成されたクラス、ランタイムソリューションのクラス、サンドボックスソリューションのクラスなどがあります。
デフォルトでは、バイトコードのバージョンは JDK Default に設定されています。つまり、コンパイルされたクラスのバージョンは、MPS が実行されている Java のバージョンと同じになります。例: MPS を JDK 1.8 で実行し、JDK Default が選択されている場合、バイトコードのバージョンは 1.8 になります。
Each module can specify the Java level in its module properties on the Java tab. This way only the features of the chosen language level will be enabled in BaseLanguage code of that module.
ビルドスクリプト
Also, dont forget to set java compliance level in the build scripts of your project. It should be the same as the project bytecode version.
JDK 1.8 でコンパイルされた java クラスを使用する
MPS モジュールプールには、実行中の Java のクラスを保持する JDK ソリューションがあります。そのため、JDK 1.8 で MPS を起動すると、JDK ソリューションで最新の Java プラットフォームクラスが利用可能になります。
You can also use any external Java classes, compiled under JDK 1.8 by adding them as Java stubs.
デフォルトのインターフェースメソッド
Java 8 ではデフォルトのメソッドも導入されました。これらはインターフェースに直接実装されたメソッドです。ここでデフォルトのメソッドについて読むことができます: http://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html(英語)
これらのメソッドは、通常のインスタンスメソッドとまったく同じように呼び出すことができます。ただし、クラスが実装しているインターフェースから直接デフォルトのメソッドを呼び出す必要がある場合があります。例: クラスが複数のインターフェースを実装していて、それぞれが同じシグネチャーを持つデフォルトのメソッドを含んでいるときに多重継承の場合。
In that case foo() can be called explicitly on one of the interfaces via a SuperInterfaceMethodCall construction, which is newly located in the jetbrains.mps.baseLanguage.jdk8 language.
The jetbrains.mps.baseLanguage.jdk8 language allows users to create the 'default' methods in BaseLanguage interfaces.
The 'default' keyword is implemented by the DefaultModifier concept which extends the Modifier concept in the BaseLanguage.
変換 / 代替メニュー + いくつかの居心地の良いインテンションも提供されています。
Java プラットフォーム API の使用
Java 8 ではラムダ式が導入されました。これについては、ここで詳しく説明します。http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html(英語)
MPS はラムダ式に生成される言語をまだ持っていません。代わりに、新しい Java API と互換性のある独自のクロージャ言語があります。
新しい JDK 8 Collections API との対話の例を示します。
The forEach() method is the new default method of java.lang.Iterable. It takes a Consumer interface as a parameter. Consumer is a functional interface as it only has one method. In Java 8 it would be possible to pass a lambda expression to forEach(). In MPS you can pass the MPS closure. A closure knows the type of the parameter taken by forEach() while generating and it will be generated exactly to the correct instance of the Consumer.
関連ページ:

基本言語拡張スタイルガイド
基本言語は MPS の中ではるかに最も拡張された言語です。一般的な MPS プロジェクトでは、さまざまなソースや言語ベンダからのさまざまな拡張機能を使用する可能性が非常に高いため、コミュニティはすべての言語で統一されたスタイルを使用することでメリットを得ることができます。この文書では、作成者がすべての基本言語拡張に適用すべき規約について説明します。クイックリファレンス:. ドット [LeftBracket]RightBracket{LeftBrace}RightBrace= + - * / % +...

BaseLanguage の拡張機能用のジェネレーターを実装する
この記事では、LValue 式で動作する BaseLanguage エクステンションのジェネレーターを書くための慣用的な方法を紹介します。代入式の左側で使用できる場合、BaseLanguage 式は左辺値であると言います。このような式を導入する概念は、動作の側面でインスタンスメソッド Expression#isLValue() または静的メソッド Expression#lvalue() をオーバーライドする必要があります。この調査は 2 つの独立した言語で構成されており、どちらも BaseLanguag...