問題タブ [jsr335]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - JVM で JSR-335 の特別なサポートはありますか? 機能的な JVM ベースの言語を後押ししますか?
JSR-335 は、Java 8 とともにまもなく登場すると言われています。これにより、クロージャーと仮想拡張メソッドがサポートされます。JVMレベルでこれに対する特定のサポートがあるのだろうか? もしそうなら、クロージャと拡張メソッドのような機能 (scala のトレイトや暗黙関数など) を提供する JVM ベースの関数型言語の速度向上を期待できますか?
編集: Brian Goetz によるJava 8 に関するこの oracle プレゼンテーションを読むと、次のように見えます: - クロージャは必要ありません - 仮想拡張メソッドは特定の JVM サポートを必要とします。
これは、scala では、暗黙の要素とトレイトの一部をより効率的に再実装できることを意味するのでしょうか?
java - Javaラムダ(JSR 335):「バインドされていない内部クラスのコンストラクター参照のサポートを排除する」のはなぜですか?
現在の JSR 335 ドラフトでは、0.6.0の変更ログエントリで、「バインドされていない内部クラス コンストラクター参照のサポートが削除された」と言及されています。
説明のために、 という名前の外部クラスと という名前A
の内部クラスがあり、を受け取って新しいインスタンスを作成B
する関数が必要だとします。A
B
0.6.0 より前では、コンストラクタ参照構文を使用して同じことを行うこともできます ( State of the Lambdaにも記載されています)。
前述のとおり、この構文は 0.6.0 ではサポートされなくなりました。その理由を知りたいです。
lambda-spec-experts
およびメーリング リストのアーカイブを調べましたが、lambda-dev
それに関する情報は見つかりませんでした。
java - Java 8 インターフェイス メソッドで「同期」が許可されない理由は何ですか?
Java 8 では、次のように簡単に記述できます。
クラスでも使用できる完全な同期セマンティクスを取得します。synchronized
ただし、メソッド宣言で修飾子を使用することはできません。
ここで、 onと onのコントラクトInterface2
を確立することを除いて、2 つのインターフェイスは同じように動作すると主張できます。これは、コントラクトよりも少し強力です。もちろん、実装は具体的な実装状態について仮定を行うべきではない、またはそのようなキーワードは単にその重みを引き出すことができないと主張することもできます。method1()
method2()
Interface1
default
質問:
synchronized
JSR-335 専門家グループがインターフェイス メソッドをサポートしないことにした理由は何ですか?