問題タブ [java-8]

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.

0 投票する
2 に答える
463 参照

java - java.policy をデプロイする

いくつかの Java アプレットを作成し、それらを署名付き JAR にバンドルしました。アプレットは署名されていますが、java.policyファイルに関してクライアントで何らかの変更を加える必要があります。たとえば、印刷ジョブを実行します。

エンド ユーザーを支援するために、ユーザーは小さな Swing アプリを含む別の JAR をダウンロードして、.java.policy.

私の質問:

展開/配布/インストールするよく知られたライブラリはありjava.policyますか?

小さなアプリケーションは単に.java.policy. 複数回実行すると、プログラムは同じデータを複数回追加します。エントリを一度だけ追加した方がよいでしょう。そのためには、を解析し.java.policyて書き戻す必要があります。java.policyエントリを操作するライブラリはありますか?

0 投票する
2 に答える
380 参照

java - Javaのクロージャにより、API設計が言語設計に取って代わることができるようになりますか?

クロージャの利点のいくつかを見ることができます。たとえば、既存のライブラリを簡素化し、将来の設計をより簡単かつ効率的にする方法などです。

ただし、提案案(http://www.javac.info/consensus-closures-jsr.html)で言及されている重要なポイントの1つは、セクション2.5のポイントeにあります。

(仕様は言語を改善します)

e) Javaプラットフォームを拡張するための言語設計を置き換える将来のAPI設計を可能にします。

私はこれがどのように当てはまるかを知るのに苦労しています、確かに言語の設計はまさにそれです-言語自体の設計であり、Javaが言語を変更するためのクロージャを使用してあらゆる種類の奇妙なAPIを開かない限りAPIに置き換えることはできません(これが起こるかどうかは非常に疑わしいです。)

誰かがこれに光を当てて、以前は言語の変更が必要だったが、クロージャが追加されたため、もはや言語の変更が不要になった例を提供できますか?

0 投票する
2 に答える
2724 参照

scala - Scala のクロージャーと Java のクロージャー

少し前に、Oracle は Java 8 に Closures を追加するのは良い考えだと判断しました。当初からクロージャがあった Scala と比較して、設計上の問題がどのように解決されているのだろうか。

javac.infoからの未解決の問題の引用:

  1. 関数型にメソッド ハンドルを使用できますか? それを機能させる方法は明らかではありません。1 つの問題は、メソッド ハンドルが型パラメーターを具体化することですが、関数のサブタイピングを妨げる方法です。

  2. 「スロー」型パラメーターの明示的な宣言を取り除くことはできますか? アイデアは、宣言された境界がチェックされた例外型である場合は常に分離型推論を使用することです。これは厳密な下位互換性はありませんが、実際の既存のコードを壊す可能性は低いです。ただし、構文のあいまいさのために、おそらく型引数の「スロー」を取り除くことはできません。

  3. 古いスタイルのループ インデックス変数で @Shared を許可しない

  4. 複数のメソッドを定義する Comparator などのインターフェイスを処理します。1つを除くすべてのメソッドは、Object から継承されたメソッドによって実装されます。「単一のメソッドとのインターフェース」の定義は、オブジェクトのメソッドによって実装されないメソッドのみをカウントする必要があり、それらの 1 つを実装するとそれらすべてが実装される場合は、複数のメソッドを 1 つとしてカウントする必要があります。主に、これには、インターフェースが単一の抽象メソッドのみを持つことが何を意味するかについて、より正確な仕様が必要です。

  5. 関数型からインターフェイスへのマッピングを指定します:名前、パラメーターなど。関数型からシステム生成インターフェイスへのマッピングを正確に完全に指定する必要があります。

  6. 型推論。型推論の規則は、例外型パラメータの推論に対応するために拡張する必要があります。同様に、クロージャ変換で使用されるサブタイプの関係も反映する必要があります。

  7. 例外の透明性を改善するために、例外タイプのパラメーターを削除しました。 おそらく、除外された例外タイプのパラメーターが境界を意味するようにします。これにより、java.util.concurrent.Callable など、例外の型パラメーターを持たない既存の汎用インターフェイスを、新しい汎用例外パラメーターを追加することで後付けできます。

  8. 関数型のクラス リテラルはどのように形成されますか? #void().class ですか? もしそうなら、オブジェクトタイプが消去された場合、どのように機能しますか? #?(?).class ですか?

  9. システム クラス ローダーは、関数型インターフェイスを動的に生成する必要があります。 関数型に対応するインターフェイスは、ブートストラップ クラス ローダーによってオンデマンドで生成される必要があるため、それらをすべてのユーザー コードで共有できます。プロトタイプの場合、javac にこれらのインターフェースを生成させて、プロトタイプで生成されたコードをストック (JDK5-6) VM で実行できるようにすることができます。

  10. ラムダ式の評価は毎回新しいオブジェクトを生成する必要がありますか? うまくいけば、そうではありません。たとえば、ラムダが外側のスコープから変数をキャプチャしない場合は、静的に割り当てることができます。同様に、他の状況では、ループ内で宣言された変数をキャプチャしない場合、ラムダを内側のループの外に移動できます。したがって、仕様がラムダ式の結果の参照同一性について何も約束しないのが最善であり、そのような最適化はコンパイラーによって実行されます。

私が理解している限り、2.、6.、および 7. は Scala では問題ではありません。Scala は、Java のようなある種の「シャドウ型システム」として Checked Exceptions を使用しないためです。

残りはどうですか?

0 投票する
1 に答える
982 参照

swing - Java 8はSwingの別のリリースを持つことができますか?

Project Jigsaw for Java 8(JDKをモジュール化するため)を考慮に入れると、「新しい」Swingフレームワークを考慮に入れることができますか?

対価とは:

  • 誰かが実際にそれを書き直している
  • JDKリリースに含める

モジュールをJDKに含めることができるので、Swingの新しいフレームワークを作成して、新しいアプリケーション開発者が使用できるように提供できますが、レガシーアプリケーションの場合は、現在のSwingフレームワークが含まれると思います。

新しいSwingを書き直して、それを新しいJDKに含めることは、Java 8のオプションでしょうか?(このタスクで考慮すべきあなたの意見と考慮事項は何ですか?)

0 投票する
2 に答える
3277 参照

java - Java - SAM タイプの最適化

プロジェクト Lambdaの状態を説明する作業ドキュメントでは、いわゆる SAM (単一抽象メソッド) タイプについて言及しています。私が知る限り、現在のラムダの提案は、ラムダ式からこれらの型への自動変換を可能にすることにより、ランタイムだけに影響を与えることはありません。

理想的な状況では、SAM 型のインスタンスを内部的に関数ポインターで表すことができると思います。したがって、JVM はこれらのインスタンスのメモリ割り当てを回避できます。

最新の仮想マシンがそのような最適化を提供できるかどうか疑問に思っています.

0 投票する
1 に答える
714 参照

java-8 - 310OffsetDateタイプを正当化するユースケースは何ですか?

OffsetDateは、ゾーンオフセットのある日付を表します。このクラスの目的がわかりません。その存在を正当化する主なユースケースは何ですか?

0 投票する
8 に答える
20020 参照

java - JDK 8 のデフォルトは Java の多重継承の形式ですか?

JDK 8 で導入された新機能により、バイナリ互換性を維持しながら既存のインターフェースに追加できます。

構文は次のようになります

このように、既存のすべての実装でSomeInterface、この新しいバージョンにアップグレードするときに、すべてが突然コンパイル エラーになるわけではありませんnewInterface()

これは素晴らしいことですが、実装していない新しいデフォルト メソッドを両方とも追加した 2 つのインターフェイスを実装するとどうなるでしょうか。例を挙げて説明しましょう。

これはまだJDK 8の一部として定義されていますか?

Java の神々がhttp://cs.oswego.edu/pipermail/lambda-lib/2011-February/000068.htmlで同様のことについて話しているのを見つけましたが、それはプライベート メーリング リストの一部であり、直接尋ねることはできません。

JDK 8 でデフォルトがどのように使用されるか、およびコレクション インターフェイスを拡張してラムダをサポートする方法の詳細については、 https ://oracleus.wingateweb.com/published/oracleus2011/sessions/25066/25066_Cho223662.pdf を参照してください。

0 投票する
5 に答える
76930 参照

java - EclipseでJDK8を使用してプロジェクトをコンパイルするにはどうすればよいですか?

ここで入手できる新しいjdk8を試していますhttp://jdk8.java.net/lambda/

コマンドラインからプロジェクトをコンパイルして実行できます。

この新しいJDKをInstalled JREsEclipseに追加することもできます。ただし、このJDKを使用してプロジェクトをコンパイルおよび実行するためのEclipseを使用することはできません。

設定を変更しようとしていますProject Properties/Java Compilerが、Use [JDK] compliance from execution environment on the 'Java Build Path'チェックボックスが無効になっていて、このページを何をクリックしても機能しません。

Eclipseプラットフォームバージョン:3.7.1を使用しています

何か案は?

どうも

0 投票する
2 に答える
312 参照

java - Java 8ラムダ構文で引数の型を指定する必要がある理由はありますか?

http://cr.openjdk.java.net/~briangoetz/lambda/lambda-state-4.htmlを読みましたが、interface-function宣言からすでにわかっているにもかかわらず、すべての例で引数の型が明示的に宣言されていることに気付きました。 。

ただで行けない

更新JSR-335ドラフトで、推論されたタイプのパラメーターがサポートされる可能性が最も高いことがわかりました

0 投票する
5 に答える
3815 参照

java - 今後のJava8リリースでの仮想拡張メソッド

次のようなコードスニペットを見ると

一つ質問があります。Javaで十分なsh*tをすでに取得していませんか?なぜこれが必要なのですか?