問題タブ [java-9]
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 - Java Swing での HiDPI サポートによる複数のルック アンド フィール
一部の Swing アプリケーションに Hi-DPI サポートを追加しようとしていますが、自分のニーズを満たす十分なソリューションを見つけることができませんでした。複数のルック アンド フィールをサポートする必要があるため、状況は私が見つけた他の投稿よりもかなり複雑に思えます (「フォント サイズに合わせて UI サイズを調整する」ことを提案する傾向があります)。
いくつかの実験ではUIManager
、アプリケーションを Hi-DPI フレンドリーにするための良いスタートを切るために微調整できる多くのメトリックが含まれていることがわかりました。( UIManager-Defaultsユーティリティは、これらを調査するのに非常に役立ちます!) 私が見つけたのは、L&F が互いに完全に異なる動作をしているように見えるということです:
Windows L&F は適切な (完全ではない) デフォルトのフォント サイズを提供し、組み込みのアイコン (チェックボックスやウィンドウ アイコンなど) は適切なサイズに設定されていますが、他の多くの指標はまだうまくいきません。
UIManager
Metal では、フォントを個別に更新できます。ちょっとした作業で、組み込みのIconUIResource
s を一致するようにスケーリングできます。Nimbus では、単一のデフォルト フォントを更新するだけで、他のフォントが適切な位置に収まります... しかし、組み込みのアイコンをスケーリングし、コンボ ボックス、ラジオ ボタン (など) を正常にレンダリングする方法は、私には理解できません!
いろいろ試してみて感じたのは、L&F 固有の特定の微調整のリストを個別に作成できるはずだということです。Font
これには、 、Icon
、Integer
およびのデフォルトを微調整する可能性がありますDimension
。
誰かがこれに対する良い解決策を思いつきましたか?
UIDefaults
標準的な L&F の調整が必要な決定的なリストを共有できる人はいますか?
Metal と Windows を一貫してサポートするソリューションに満足しています。
このようなソリューションは再利用可能で、さまざまな Swing アプリで同じ問題を解決できると思います。そのようなユーティリティがまだ存在していないように見えることに驚いています。(そうでない場合は教えてください!)もちろん、このアプローチですべてが解決されるわけではありません(たとえば、setPreferredSize
などの呼び出しを手動でスケーリングする必要があります。また、複数の L&F を既にサポートしているアプリは、とにかくそれを呼び出すことを避ける傾向があります。)それでも、多くのアプリが良いスタートを切ることができると思います.
JDK-9が完全なHi-DPI サポートを約束していることは承知していますが、それほど長く待つことはできません。
java - Java 9でJavaFXウィンドウのHWNDを取得することは何とか可能ですか?
Java 9 では、プライベート API へのアクセスが制限されます。これは、リフレクションを使用してウィンドウ hwnd を取得する既知の方法が機能しなくなることを意味します。
それらを取得する方法はまだありますか?タスクバーを操作するための API を提供するライブラリがあるため ( Java9が提供するのと同様の方法で)、質問します。Java 9 API はまだ AWT 用なので、Java 9 と JavaFX 用にプロジェクトをセットアップできることを願っています。
以前はプライベート メソッドを呼び出すだけでしたが、これは機能しなくなります。どんな解決策でも大歓迎です。JNA または BridJ を使用して実行できる場合、ネイティブ呼び出しは問題ありません。
java - Java 9 の新しい文字列実装とは?
文字列はJava 9の内部でどのように実装されていますか? 各文字は 1 バイトまたは 2 バイトとして格納されますか?
java - Java 9 を使用してカスタム JMOD をモジュール パスに追加する
JMOD
このようなjmodツールで簡単なファイルを作成しました
次に、次のコマンドを実行して、そのモジュール内でクラスを実行しようとしました。
その結果、次の例外が発生しました。
classes
(JMOD ファイルの作成に使用した) ディレクトリを modulepath として設定するだけで、すべてが期待どおりに機能します。
通常、モジュールパスにJMOD
ファイルを配置することはできませんか? また、もしそうなら何か理由はありますか?
java - Java 9 モジュールで module-info.class なしで依存関係を使用することは可能ですか?
私は 2 つの小さなプロジェクトde.app1とde.app2を作成しました。ここで、App
from de.app1はTest
from de.app2を使用します。
最初のプロジェクトのmodule-info.javaには、module de.app1 {}
2 番目のプロジェクトをコンパイルし、jar ファイルを作成しました。
そして、次のように最初のプロジェクトをコンパイルしようとしました:
Test
見つからなかったため失敗しました。module-info.javaなしでプロジェクトをコンパイルすると、すべてが通常どおり機能します。
Java 9モジュール内でJava 9モジュールではないjarからクラスを使用することは何とか可能ですか? 特にサードパーティのプロジェクト (apache-commons など) に依存するプロジェクトでは、このようなものが必要になると思います。
java - 非対話型アプリケーションで 150GB ヒープを処理する
こんにちは、インメモリ データ グリッドを使用した 150GB ヒープ メモリ プログラムのケースがあります。運用部門から、単一のマシンを使用するというクレイジーな要件があります。これで、並列ガベージ コレクタが 150GB を超えて使用された場合に何が起こるかがわかりました。おそらく、FULL GC が呼び出された場合、数十分のガベージ コレクションになります。
私の希望は、Java 9 で Shenandoah 低一時停止 GC が来ることでした。残念ながら、私が見たところ、Java 9 での配信にはリストされていません。それについて何か知っている人はいますか?
とはいえ、G1 GC がこの量のヒープ メモリに対してどのように機能するのか気になります。
そして最後の質問です。2時間で完了するはずの非インタラクティブなバッチアプリケーションがあるので、言ってみましょう。ここでの主な目標は、フル GC が開始されないようにすることです。メモリが十分にあることを確認した場合、到達可能な最大ヒープが 150 で、250 GB を割り当てると、自信を持ってフル GC がGC が開始されることはありませんか? 通常、新しい世代と古い世代が最大ヒープに達すると、フル GC がトリガーされます。別の方法でトリガーできますか?
この質問が重複していない理由をここで説明しようとします。最初に、150GB ヒープについて話します。これは、質問にまったく異なる次元を追加します。次に、前述の質問にあるように RMI を使用していません。3 つ目は、行間にある G1 ガベージ コレクタについて質問しています。 <32GB ヒープに関する質問は、ヒープ >32GB に関する質問と同じです Java 7 からインスタンス PermSpace が存在しないため、状況が少し変わったことは言うまでもありません。
java - sendAsyncMulti / multiResponseAsync を使用した Java 9 HttpClient
Java 9 で実験しようとしていますHttpClient
。
HttpRequest の javadoc のような基本的な例は、問題なく動作します。
ただし、使用しようとするsendAsyncMulti
と機能しません。ではファイルが作成されずE:\foo
、println
アフターjoin
に達せず、例外もありませんが、基本的にはHttpResponse.multiFile
の Javadocから例をコピーしました。一部の HTTP 応答がそのディレクトリに保存されることを期待していました。また、HTTP2 と followRedirects、Google などの他の URL を削除しようとしましたが、何も変わりませんでした。私は何を間違っていますか?
関連する場合、これは私が使用しているバージョンです(JDK 9の最新バージョン):
jaxb - JAXB XJC オプション: com.sun.tools.xjc.Options の代替であり、Java9 と OSGi に適しています。
私たちのフレームワークでは、パブリック API にこのメソッドとのインターフェースがあります。
実装では、次のようにします。
ただし、OSGi と Java 9 のジグソーはどちらもcom.sun.tools.xjc.Options
、私たちの実装ではなく、特にパブリック API インターフェイスで を使用することを好みません。
どうすればそれを取り除くことができますか?
java - なぜ StructuredArray を構築不可能にする必要があるのですか?
34:00 からのこの講演StructuredArray
では、Java 用の s の設計について説明します。物事を除いて、すべてがかなり明確です:
つまり、インスタンスは、newInstanceなどの静的ファクトリ メソッドによってのみ取得可能である可能性があります。同時に、それらはサブクラス化可能である必要があります。つまり、パブリック コンストラクターが存在する必要があり、実行時に非構築可能性が保証されます。これは非常にハックに聞こえるので、なぜだろうか?
一般的なファクトリの利点と、特に静的ファクトリ メソッドの利点については認識しています。しかし、ハッキングを受け入れられるようにするために、ここで何が得られるのでしょうか?
java - OJDK Java バージョン 9 を使用した SBT のインストール
を実行しようとするとsbt update
、ログ ファイルに次のように表示されます。
および次のエラー メッセージ:
Java バージョン:
Scala バージョン
どうすれば問題を解決できますか。私はウェブ上でこれを回避する方法を知りません。