Bremen

Javaの注意点

0 コメント
views
0 フォロー

可読性が上がるなら積極的に三項演算子を使う事が推奨されます。

ファイルにはtry-with-resources文を使うことが強く推奨されます。

できれば、正規表現の習得が推奨されます。

できれば、「オブジェクト指向プログラミング、総称型(Generics)」の習得が推奨されます。
オブジェクト指向プログラミングに関しては下記デモを参考にして下さい。

Javaデモ:オブジェクト指向プログラミング
http://pleiades.vs.land.to/utf8/smt.cgi?r twilight/&bid 00000406&tsn 00000406&bts 2023/06/28 11:59:18&

GUIコンポーネントの設定はイベント・ディスパッチ・スレッドで設定しなければならなくなりました(下記ページ参照)。

Java Swing/「JFrameスケルトン・テンプレート」(7)
http://pleiades.vs.land.to/utf8/smt.cgi?r sara/&bid 00000428&tsn 00000428&bts 2021/01/20 16:41:48&

(知らぬ間に)古いタイプのThreadが非推奨に?、(正式な非推奨では無いかもしれないが)そんなクズみたいなモノを何時までも使わないでくれよ、って話。
なお 新しいJavaでも古いタイプのThreadを使ってたら意味ないので注意して下さい。
下記 動画を参照して下さい、青色がCUPの未使用率、緑色がCUPの使用率だと思われます。
その動画のコンソール入力に注目すると、「ConcurrencyTest」を実行すると、CUPの使用率が ほぼ100%になり、圧倒的に効率が上がります(逆に言うと古いタイプのThreadが如何にクズかと言うことでも有りますが)。
なお Android Javaの場合は、中身は素のJavaとは別モノなのでスレッドは「Concurrency Utilities」を使わなくてもおkです。

Concurrency Utilities for EE 7
https://yoshio3.com/2013/05/15/concurrency-utilities-for-ee-7/

スレッドは排他制御(synchronized)、最適化の抑制(volatile)の理解が必要です。
なお スレッドは「Concurrency Utilities」のスレッドが強く推奨されます。
もし 「Concurrency Utilities」、排他制御(synchronized)、最適化の抑制(volatile)を勉強したいなら、下記で勉強してみると良いでしょう。

Javaデモ/Swing「Sin グラフを横スクロールさせる」(007)
http://pleiades.vs.land.to/utf8/smt.cgi?r sara/&bid 00000632&tsn 00000632&bts 2022/04/30 19:18:11&

余裕があるなら、「Stream API、ラムダ式」も勉強してみると良いでしょう。

Javaの小技
http://pleiades.vs.land.to/utf8/smt.cgi?r sara/&bid 000000E0&tsn 000000E0&bts 2018/07/30 20:54:02&

Stringの文字列結合はクソ遅い(アマチュアなら それほど気にしなくても良い)。
注意点、StringBufferはスレッドセーフ、StringBuilderはスレッドアンセーフ。

【Java】文字列結合の速度比較
https://qiita.com/nkojima/items/0098dccbe4a593bc0306

Mostly-Concurrent Mark & Sweep GC のアルゴリズム
http://www.nminoru.jp/~nminoru/java/cms/concurrent_mark_sweep.html

>メモリの低価格・大容量化、64 ビットプロセッサの普及に伴って JavaVM が使える・使うメモリ量は増大している。 STW(Stop-the-World) 型 GC アルゴリズムの多くは、GC が管理しているメモリ量、生存しているオブジェクトの個数、生存しているオブジェクトの参照数のいずれかに比例するため、GC 停止時間がどんどん伸びる傾向があるのである。 ギガバイトを越えるようなメモリを使用した場合、GC による停止時間が 10 秒を越えるようなパターンの現れている。

この「GC による停止時間が 10 秒を越えるようなパターン」とは、ギガバイトを越えるようなメモリを使用した場合なので、一般の話では有りません。
このGC による停止は「STW(Stop-the-World)」とも呼ばれる。

Java8のHotSpotVMからPermanent領域が消えた理由とその影響
http://equj65.net/tech/java8hotspot/

現在、オプションで圧倒的にパフォーマンスの良いZGC(Z Garbage Collector)がサポートされている(オプションなので明示的にパラメータを指定しないとZGC(Z Garbage Collector)にはならないですが)。

ZGC | What’s new in JDK 16
https://logico-jp.io/2021/03/31/zgc-whats-new-in-jdk-16/

>ZGCプロジェクトを開始したときの目標は、GCポーズ(Stop-the-World)に10msec以上の時間をかけないことでした。当時、10msecは野心的な目標に思えました。

>最初の目標である10msecを達成した後、私たちは再度目標を定め、より野心的な目標、GCのポーズ(Stop-the-World)時間は1msecを超えてはならないという目標を設定しました。JDK 16で、この目標も達成できたことをご報告します。

「従来のEJBは存在自体が間違いだった」,軽量コンテナ「Spring Framework」開発者のRod Johnson氏吠える
https://xtech.nikkei.com/it/free/NSW/NEWS/20050621/163065/

>エンティティBean(EJB:Enterprise JavaBeansに含まれるデータベース・アクセスのカプセル化機能)なんてないほうがよかった

ano
作成: 2025/08/28 (木) 18:42:55
通報 ...