タグ

javaに関するHHRのブックマーク (166)

  • 他のロギングライブラリの呼び出しをLog4j2へ転送する+α - CLOVER

    Log4j2は、他のロギングライブラリの呼び出しを、Log4j2に転送するコンポーネントを提供しています。 要は、他のロギングライブラリのふりをしてLog4j2へ流すコンポーネントがあるということですね。 以下のパターンがあります。 Log4j 1.2 → Log4j2 Commons Logging(JCL) → Log4j2 SLF4J → Log4j2 Log4j2 → SLF4J 最後だけ、逆ですね。これが+αの部分です。 それぞれのMaven依存関係は、こちらに網羅されています。 Maven and Ivy Artifacts http://logging.apache.org/log4j/2.x/maven-artifacts.html では、それぞれ簡単に使っていってみます。なお、基的にこれらのAPIを動作させるのに、物のライブラリ(例えばLog4j 1.2のJARファイ

    他のロギングライブラリの呼び出しをLog4j2へ転送する+α - CLOVER
    HHR
    HHR 2018/08/21
    slf4j <--> log4j
  • Gson User Guide を和訳 - Qiita

    最終更新日:2015/07/12 間違いや和訳ミスがあれば随時ご指摘ください。 また、内容の間違いには一切の責任を持ちませんのでご了承ください。 Overview Gson は Java Object を JSON へ変換するためのライブラリである また JSON 文字列から Java Object への変換も可能である。 Gson は http://code.google.com/p/google-gson によって提供されるオープンソースプロジェクトである Gson は任意の Java Object で利用可能で、ソースコード上にまだ存在しない Java Object であっても取り扱える。 Goals for Gson toString() や Factory Method のコンストラクタのように簡単に利用し、Java Object と JSON の間でコンバートすることができる

    Gson User Guide を和訳 - Qiita
    HHR
    HHR 2018/08/20
    gson
  • Java の上の JavaScript エンジン Nashorn の基本 - A Memorandum

    Nashorn とは Java から Nashorn を使う Java オブジェクトを渡す JavaScript の関数を Java から呼び出す JavaScript のオブジェクトを Java から呼び出す JavaScript 内で Java クラスを利用する JavaScriptJava の型 文字列 数値 配列 リストとマップ ラムダ Java クラス・パッケージのインポート JavaScriptJava インターフェースを実装する JavaScript 関数を Java インターフェースの実装として利用する スクリプトを事前コンパイルする Nashorn で REPL する jjs でシェルコマンドを使う nashorn をシェルスクリプトとして使う 例えば まとめ Nashorn とは Java7 までは JavaScript スクリプティングエンジンとして Ri

    Java の上の JavaScript エンジン Nashorn の基本 - A Memorandum
    HHR
    HHR 2018/08/19
    ScriptEngineManager
  • Java で引数の null チェックで迷った話 - yukungのブログ

    これは Java Advent Calendar 2015 の 15 日目の記事です。 昨日は @opengl_8080 さんの Byteman 使い方メモ+α でした。明日は @irof さんです。 前置き ついこないだチームでちょっとだけ話題に上って、みんなある程度指針は持っているものの、割と悩みつつ明確に答えを出せなかったので、もっと良い意見があればと思って晒してみます。まぁよくある話だし、Java 8 で Optional が使えるようになって null について語られるケースが増えたと思うので、再考するちょうどよい機会になればいいなーと思います。初心者向けです。 どう処す?処す? こんな状況の時にあなたならどうしますか? // Generics なのは例です。String でもなんでもいいです public T doSomething(T input) { // input が

    Java で引数の null チェックで迷った話 - yukungのブログ
    HHR
    HHR 2018/08/16
    Optionalとか便利なメソッドとか
  • JSR 303 Bean Validationで遊んでみるよ! - Yamkazu's Blog

    その名のとおりJavaBeansの為のValidationの仕様であるJSR303ですが、近頃でもないですがHibernateはもちろん、その他SpringやOvalなどの周辺フレームワークの対応が進んでずいぶん使いやすくなってきました。 ところでアプリケーション作っててValidationの仕組みって毎回悩みませんか?私がJavaでWebアプリケーションつくりはじめた頃なんかだとStruts1.xが全盛期でvalidation.xml、validation-rule.xmlとか使って書いてましたが(今考えれば二度とやりたくないですねw)、今でも毎回どのチェックをどのレイヤ(アプリケーションレイヤ?ドメインレイヤ?)に持たせるかとか、データストアに問い合わせしないといけないValidationって画面の入力だけでチェックできるのとどう管理しようかなとか、色々と悩むこともしばしばです。最近D

    JSR 303 Bean Validationで遊んでみるよ! - Yamkazu's Blog
    HHR
    HHR 2018/07/10
    springのvalidアノテーションの実態はこれ。hibernate-validatorがほぼほぼリファレンス実装っぽい?
  • What is the default encoding of the JVM?

    HHR
    HHR 2018/06/30
    file.encodingの決定方法とlocaleの関係性
  • Java 8 update 151 でのJCE無制限強度管轄ポリシーの適用方法 - もふぐらみんぐ

    JavaSE8u144まではAES256のような強度の高い暗号を利用するにはJCE無制限強度管轄ポリシーファイルをJRE(またはJDK)とは別途Oracleのサイト(Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files for JDK/JRE 8 Download)からダウンロードして /lib/security/ ディレクトリにある local_policy.jar と US_export_policy.jar とを差し替える必要がありました。 JavaSE8u151では、 JAVA_HOME/lib/security/policy/unlimited/ ディレクトリに 2つのJCE無制限強度管轄ポリシーファイルが既にあるので、 JAVA_HOME/lib/security/java.

    Java 8 update 151 でのJCE無制限強度管轄ポリシーの適用方法 - もふぐらみんぐ
    HHR
    HHR 2018/06/19
  • 3分で理解するG1ガベージコレクション - Qiita

    -XX:G1HeapRegionSize=Nフラグを使い自分でサイズを指定することも可能。0はデフォルト値。 Nは2のべき乗である必要があり、それ以外の値が指定された場合は最も近い2のべき乗値へ切り下げられる。 ほとんどの場合、デフォルト値でもOKだが次のようなケースではチューニングを求められる。 例えばヒープの変動幅が大きい場合(-Xms4G -Xmx16G)、デフォルトではリージョンサイズは1MBとなり、ヒープが拡大さるとリージョン個数が16,000個となる。G1GCはリージョン個数が2,048程度を前提に設計されているためGC効率が悪くなる。このようなケースでは上記オプションの指定によりリージョン個数が2,048個前後になるようサイズ調整する。 G1GCのアルゴリズム G1では主に4つの処理が行われる。 young領域へのGC eden空間がいっぱいになるとyoung領域へのGCが発

    3分で理解するG1ガベージコレクション - Qiita
    HHR
    HHR 2018/06/19
    G1GC 絵的でわかりやすい。振る舞いが図で紹介されている。
  • Regular Expression Test Drive

    Regular Expression Test Drivefor Java Developer Java正規表現の動作確認ができるサイトです。正規表現をその場でテストできます

  • JVMのチューニング - ITエンジニアとして生きる

    前回、JVMとGCのしくみ - ITエンジニアとして生きるでJVMとGCのしくみについて書いた。 今回はその続きということでJVMのチューニングについて書きたいと思う。 JVMチューニングって -Xms ・・・ ヒープ全体(New領域+Old領域)の初期値 -Xmx ・・・ ヒープ全体(New領域+Old領域)の最大値 くらいしか話題に上がらないし意識しないことが多い(気がする)。 でもホントはこれだけではダメで、前回のようにPermanent領域、New領域、Old領域を意識したチューニングが必要になる。 VMチューニングを考えるその前に・・・チューニングの話をする前にまずVMの起動モードについて話したいと思う。 VMには大きく以下2つの起動モードがあり、それぞれ以下のような特徴を持つ。 ◆クライアントVMモード 起動時間を短縮し、メモリサイズを縮小するように調整されている。 VM起動時

    JVMのチューニング - ITエンジニアとして生きる
    HHR
    HHR 2018/05/24
    -Xms -Xmx
  • jsonschema2pojo

    { "type":"object", "properties": { "foo": { "type": "string" }, "bar": { "type": "integer" }, "baz": { "type": "boolean" } } }

    HHR
    HHR 2018/05/05
    jsonからPOJO作成
  • JNIメモ(Hishidama's Java native interface Memo)

    Solarisの例: % cc -G -I /usr/java/include -I /usr/java/include/solaris JniJikken.c -o libJniJikken.so Solarisでのmakefileの例: all: libJniJikken.so lib%.so: %.c %.h cc -G $< -I /usr/java/include -I /usr/java/include/solaris -o $@ %.h: %.class javah $* %.class: %.java javac $< ↑この例の場合、javaのコンパイル・javahでの生成まで含んでいる。 VC++の例: インクルードパスの追加方法参照。 ↓JDK1.6の場合 C:\Program Files\Java\jdk1.6.0\include,C:\Program Files\

    HHR
    HHR 2018/04/24
    jniで.soを使う
  • Java8の日時APIはとりあえずこれだけ覚えとけ - Qiita

    Javaで日付/時間を扱うには従来はDate/Calendar/DateFormat等のクラスを使っていたが(以下、旧API)、Java8からはjava.timeパッケージに新しくAPIが追加された(以下、新API)。 しかし新APIはパッケージ数が5、クラス数は69もあり最初はどれをどう使うのか戸惑ってしまう。 そこで最低限これだけ覚えておけば旧APIと同じ事ができるという程度の情報をまとめてみた。 新APIの特徴 旧APIとは全く別のAPI。 データを格納するクラスは、日時/日付のみ/時間のみなど保持する要素やタイムゾーンの有無などで、複数のクラスから選べるようになった。 データ保持と日付操作(年/月/日フィールドの取得/変更など)が1クラスで出来るようになった。 (旧APIではデータ保持はDateクラス、日付操作はCalendarクラスと分かれていた) 日時クラスはImmutable

    Java8の日時APIはとりあえずこれだけ覚えとけ - Qiita
    HHR
    HHR 2018/03/08
    Date/Calendar/DateFormat等はjava8以降は使わない
  • 軽い気持ちでLinkedListを使ったら休出する羽目になった話 - Qiita

    ざっくり言うと リスト構造のデータに対してランダムアクセスはしちゃだめだぞ。お兄さんとの約束だ! 発端 数年前に他部署の支援で作ったJavaのシステムに、ちょっとデカめのデータを突っ込んだらありえないほど遅いので助けてくれ、と連絡が入った。 まぁクエリとかインデックスをちょっと見れば直るっしょ・・・と鼻をほじりながら支援に向かった。 処理内容 遅い部分の処理は以下のようなものであった。 処理対象のデータをListで受け取る。 それをforループで1件ずつ前処理する。 処理結果をオブジェクトに格納し、ORマッパーでDBにINSERTする。 これだけ? そう、これだけだ。並列処理なんて高級なことはもちろんやってない。 インフラ調査 処理中のサーバのようすを調査する。今回のインフラは典型的な3層3サーバ構成。 WEBサーバはなにもかもが余裕。 APサーバではCPUを1つ使い切っている。 14コア

    軽い気持ちでLinkedListを使ったら休出する羽目になった話 - Qiita
    HHR
    HHR 2018/02/19
    あるある。知識としては知っているのに踏むんだよなー
  • 来月にはJava 10が登場し、9月にはJava 11が登場予定。新しいリリースモデルを採用した今後のJava、入手方法やサポート期間はこう変わる(OpenJDKに関する追記あり)

    来月にはJava 10が登場し、9月にはJava 11が登場予定。新しいリリースモデルを採用した今後のJava、入手方法やサポート期間はこう変わる(OpenJDKに関する追記あり) 2017年9月に「Java 9」が登場したばかりですが、いまから1カ月後の2018年3月には早くもJavaの新バージョン「Java 10」がリリースされます。そしてその6カ月後の9月にはさらに次の「Java 11」がリリース予定です。 Java 9以後のJavaは、毎年3月と9月の年2回メジャーバージョンアップを行う、タイムベースのリリースモデルを採用することになりました。今年はその最初の年となります。 オラクルによるJDKの提供方法やサポートポリシーも、これから大きく変更されることが明らかになっています。一般公開され無償でダウンロードできたOracle JDKの公開はJava 10が最後となり、サポートは3年

    来月にはJava 10が登場し、9月にはJava 11が登場予定。新しいリリースモデルを採用した今後のJava、入手方法やサポート期間はこう変わる(OpenJDKに関する追記あり)
    HHR
    HHR 2018/02/08
  • タイムゾーン呪いの書 - Qiita

    コメント欄で「Software Design 誌 (2018/12) に寄稿した内容や修正などをこちらの記事にも適用したい」と言ったあと、やるやる詐欺でずっと放置していましたが、三年近く経ってようやく 2021年 7月に大幅に改訂し、同時に Zenn に引っ越すことにしました。 タイムゾーン呪いの書 (知識編) タイムゾーン呪いの書 (実装編) タイムゾーン呪いの書 (Java 編) なにやら長くなりすぎたので三部構成になっています。 この Qiita 版は、しばらく (最低一年は) 改訂前のまま残しておきます。 タイムゾーンの存在はほぼ全ての人が知っていると思います。ソフトウェア・エンジニアなら多くの方が、自分の得意な言語で、タイムゾーンが関わるなにかしらのコードを書いたことがあるでしょう。ですが、日に住んで日仕事をしていると国内時差もなく1 夏時間もない2 日標準時 (Japa

    タイムゾーン呪いの書 - Qiita
    HHR
    HHR 2018/02/06
  • 無償のコードエディタVSCode、実行中のJavaアプリのコードを動的に書き換えて修正できる「Hot Code Replacement」(ホットコード置換)を実現

    VSCodeで、JavaのHot Code Replacement(ホットコード置換)がサポートされた。ホットコード置換を用いると実行中のアプリケーションのコードを実行したまま動的に修正できるため、トライアンドエラーが容易になる。 アプリケーションのコードを修正した場合、その修正を反映させるためには、コンパイル型の言語であれば再コンパイルする必要があり、インタープリタ型の言語であればアプリケーションの再実行が必要となります。 しかしコードを書き換え、実行し、動作を確認するということを何度も繰り返す開発作業では、いちいち再コンパイルをしたり、再実行する手間はなんとも面倒です。 そこでJavaには、「Hot Code Replacement」(ホットコード置換)と呼ばれる機能が用意されています。これはコードを再コンパイルすることなく変更した内容をJavaVMに転送し、反映できるというものです。

    無償のコードエディタVSCode、実行中のJavaアプリのコードを動的に書き換えて修正できる「Hot Code Replacement」(ホットコード置換)を実現
    HHR
    HHR 2018/02/05
  • Java総称型メモ(Hishidama's Java Generics Memo)

    メソッドの総称型 メソッドのみに総称型を適用した定義を行うことも出来る。[2007-06-12] 戻り値の型の直前に「<仮型引数, 仮型引数…>」を置くだけ。後はクラスの場合と同様。 public static <T> T notNull(T arg1, T arg2) { T ret; if (arg1 != null) { ret = arg1; } else { ret = arg2; } return ret; } このメソッドを呼び出す側は、クラスの場合とは異なり、明示的に型引数を指定する必要は無い。 指定した引数の値に応じて、自動的に型が判断される。 String s = notNull("abc", "def"); //型引数はString Long l = notNull(new Long(1), new Long(2)); //型引数はLong int i = notNu

    HHR
    HHR 2018/01/14
    ジェネリクス。よく忘れて、その度にググるのでブクマ
  • Java ジェネリクスのポイント - Qiita

    久しぶりにジェネリクスを多用するライブラリを作成していて、忘れていたことやはまりどころがあったので、今更ですが備忘録的にポイントをまとめておきます。 用語 ジェネリクスは似たような用語があって混乱しやすいので、まずは用語をきちんと抑えておく。 以下は、Effective Javaの項目23からの抜粋である。 用語 例

    Java ジェネリクスのポイント - Qiita
    HHR
    HHR 2018/01/14
    Genericsまとめ
  • 連載: IBM Watson Workspace #鬼わか アプリケーション開発: 第 7 回: IBM Watson Workspace で AI を利用したアプリ連携の実現 #鬼わか 解説(前編)

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    連載: IBM Watson Workspace #鬼わか アプリケーション開発: 第 7 回: IBM Watson Workspace で AI を利用したアプリ連携の実現 #鬼わか 解説(前編)
    HHR
    HHR 2018/01/14
    ThreadはRuntimeExceptionでひっそりと死ぬという話。Threadはもう使うべきではないが、フレームワークで使用されている等、使わざるを得ないときに読む。