Java全般目次ページ

Optinal修行

       if (dinner != null) {
           shop.setDinnerPrice(dinner.text());
       }
       // 以下に置換可能
       Optional.ofNullable(dinner).ifPresent(element -> shop.setDinnerPrice(dinner.text()));
      // initParam はmap
      String hoge = "DEFAULT";
      if (initParam != null) {
          hoge = initParam.get("key");
      }
      // 以下に置き換え可能
      String hoge = Optional.ofNullable(initParam)
               .map(param -> param.get("key"))
               .filter(str -> !str.isEmpty())
               .orElse("DEFAULT");
      // ifpresetとgetを使わないやり方
       Optional<String> optTest = Optional.empty();
       return optTest.map("SOME_VALUE"::equals).orElse(false);                

JDKバージョンアップ対応

JDK11

IDE

派生言語

  1. groovy
  2. scala
  3. kotlin

SDKMAN!

sdkコマンド一発で関連ツールをインストールできる

SDKMAN!インストール

curl -s get.sdkman.io | bash

OpenJDKの場所

readlink $(readlink $(which java))

これでOpenJDKの場所が判明する。

JVM

JVMチューニング

http://d.hatena.ne.jp/learn/20090218/p1

JVMオプション

個人の開発環境のTomcatであればチューニングやタイプなど気にする必要もないが、実際の運用に入っているところでもあまり気にかけていないところが多いのではないか?

-clientオプションを指定する。立ち上がりは早い。しょっちゅう再起動する用途向け
-serverオプションを指定する。立ち上がりは遅いが長く使っているとよく使うクラスにおいてはパフォーマンスがよくなってくるらしい。あまり再起動しない用途向け。Tomcat6.0で試したら立ち上がりまでclientVMの3倍程度時間がかかっていた。

ファイルを指定することもできるが、何も指定しないとコンソールに出力。

-verbose:gc

ファイル名を指定するには下記オプション追加

-Xloggc:c:/gc.log
-verbose:class
-Xms64m 最小ヒープサイズ
-Xmx256m 最大ヒープサイズ
-XX:MaxPermSize=256m

OutOfMemory

ユーザー作成のプロセス(thread)が多すぎるときに発生するらしい。

デコンパイラ(逆コンパイラ)

最新版のソースがなく確実に実行環境で動いているものでソースを確かめたい場合に重宝する。Jadが一番手軽で使いやすい。インストールは解凍して、jad.exe(Windows)を実行するだけ。

jar

jar xvf xxx.jar
jar xvf xxx.jar META-INF/hogehoge.txt

Java8

関数型インターフェースの種類

Supplier以外はstreamの中で使えそうだ。

種類オーバーライドメソッド備考
Supplierget引数を取らず値を返す
Functionapply引数をとって値を返す。mapなど
Consumeraccept戻り値を返さない。foreachなど
PredicateBooleanを返す。filterなど

lambda

Stream.of(XXXEnum.values()).filter(p -> p.getCode() <= max.getCode()).collect(Collectors.toSet());
       Map<String, String> synonymMap = synonymList.stream().collect(
               Collectors.toMap(Synonym::getKana, Synonym::getConvertedKana));

bean validation

記事一覧

Counter: 14914, today: 2, yesterday: 0

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2022-10-14 (金) 13:16:53