タグ

Code_Javaに関するarata3da4のブックマーク (19)

  • JDK 21のswitch式でpattern match書いたら10倍以上遅い件 - xuwei-k's blog

    switch式の結果javapしたらhttps://t.co/xMc0YEYsrg java.lang.runtime.SwitchBootstraps と tableswitch が使われることに気がついたが、これ巨大なswitch式をJDK 21以降で書いた場合、同等の巨大なmatch式をScalaで書くよりも速度が速い可能性があるのでは??? これScalaで活用できるか?というと— Kenji Yoshida (@xuwei_k) September 25, 2023 switch式の結果javapしたら https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/runtime/SwitchBootstraps.html java.lang.runtime.SwitchBootstraps と ta

    JDK 21のswitch式でpattern match書いたら10倍以上遅い件 - xuwei-k's blog
  • Home - SDKMAN! the Software Development Kit Manager

    The Software Development Kit Manager Meet SDKMAN! – your reliable companion for effortlessly managing multiple Software Development Kits on Unix systems. Imagine having different versions of SDKs and needing a stress-free way to switch between them. SDKMAN! steps in with its easy-to-use Command Line Interface (CLI) and API. Formerly known as GVM, the Groovy enVironment Manager, SDKMAN! draws inspi

    Home - SDKMAN! the Software Development Kit Manager
  • コンテナ時代における最新のJava&JVM監視 - #chiroito ’s blog

    私は、OpenJDKのCommitter業や仕事でミドルウェアのSolution Architectとして活動している関係上、最近はコンテナ上でJavaアプリケーションを動かすことが非常に多いです。 KubernetesJavaアプリを監視する場合には、Elasticsearch+KibanaやPrometheus+GrafanaなどでログやMBeanを監視する方法が一般的に行われています。 Java 11では有償JDKに含まれていた機能がOpenJDKへ寄贈され、JDK Flight Recorder (JFR)として生まれ変わりました。JFRはJVMの内部の情報やその上で動くJavaアプリケーションの様々な情報をほとんど負荷無く記録し、ファイルとして取得できます。このファイルをJDK Mission Controlなどのツールを使って確認し、これまでより詳細に分析できます。 これまで

    コンテナ時代における最新のJava&JVM監視 - #chiroito ’s blog
  • オンライン広告入札システムとZGC ( JJUG CCC 2021 Spring )

    1. ULS Copyright © 2011-2021 UL Systems, Inc. All rights reserved. Proprietary & Confidential オンライン広告入札システムとZGC 2. ULS Copyright © 2011-2021 UL Systems, Inc. All rights reserved. Proprietary & Confidential 1 アジェンダ 1.自己紹介 2.この資料のねらい 3.ZGCへの期待 4.ZGCのパラメータチューニング 5.番環境におけるZGCとG1GCの比較 6.まとめ

    オンライン広告入札システムとZGC ( JJUG CCC 2021 Spring )
  • 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エンジニアとして生きる
  • Javaアプリケーションを自動的にDockerイメージにビルドしてくれる「Jib」、Googleがオープンソースで公開 - Publickey

    Javaアプリケーションを自動的にDockerイメージにビルドしてくれる「Jib」、Googleがオープンソースで公開 Googleは、Javaアプリケーションを自動的にDockerコンテナ化するツール「Jib」をオープンソースで公開しました。 JavaのビルドツールであるMavenもしくはGradleのプラグインとしてJibをインストールすることで、Docker環境の構築やDockerfileなどを記述することなく、ビルドプロセスのなかで構成を読み取り、Dockerコンテナのイメージを生成、Dockerコンテナのレジストリへの登録まで自動的に行ってくれます。 これまでJavaアプリケーションをDockerコンテナ化するには、JavaアプリケーションをビルドしたうえでDocker環境を用意してDockerfileを記述し、そこでDockerイメージを生成するといった手順が必要でした。 Ji

    Javaアプリケーションを自動的にDockerイメージにビルドしてくれる「Jib」、Googleがオープンソースで公開 - Publickey
  • JDK、Oracle JDK、OpenJDK、Java SEってなに? - Qiita

    JDKとかJava SEとかようわからん 2017/9にOracleJavaサポート体制やリリースサイクルの変更がアナウンスされて、いろいろOpenJDKがどうだとかOracle JDKがどうだとかいう話が流れるようになりましたが、いまいち整理されてません。 ここでは、Javaの中心的な実装をあらわすっぽい用語について、整理しておこうと思います。 長文めんどい人は まとめだけ見るといいと思います。 そもそもJavaとは Javaという用語に関しての明確な定義は難しいですが、ひとつだけ確実なのは、オラクルの商標であるということです。 会話として使われる「Java」は、Java SE仕様を中心としたソフトウェア実装や開発環境、ライブラリ、それらの開発者・団体、コミュニティ、利用プロダクトの傾向といった、「Java」という言葉のもとで語られる技術的なさまざまが含まれたものだと思います。 これは

    JDK、Oracle JDK、OpenJDK、Java SEってなに? - Qiita
  • Javaジェネリクス再入門 - プログラマーの脳みそ

    ジェネリクスでは、「型」を変数にした「型変数」というものを取り扱う。型変数で何が嬉しいかというと、メジャーな例ではコレクションAPIが挙げられる。java.util.Listとかjava.util.Mapとかのデータを格納するタイプのユーティリティクラスのことだ。 2004年にJavaのバージョンが5.0となるまでは、Javaにはジェネリクスの機能はなかった。なので、Listにデータを格納し、取得する場合は List list = new ArrayList(); list.add("hello!"); String str = (String) list.get(0); といったソースコードになる。 add()の引数はObject型で宣言されており、どんな参照型でもadd()することができた。 get()の戻り値もObject型で宣言されておりキャストが必要だった。このキャストはプログラ

    Javaジェネリクス再入門 - プログラマーの脳みそ
  • Lineにおけるspring frameworkの活用

    より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)NTT DATA Technology & Innovation

    Lineにおけるspring frameworkの活用
  • Javaの謎のパフォーマンス劣化現象との戦い - Cybozu Inside Out | サイボウズエンジニアのブログ

    こんにちは。アプリケーション基盤チームの横田です。 Javaの謎のパフォーマンス劣化にまつわる調査をしていたのですが、1ヶ月の苦労の末に原因がわかりましたので、報告させていただきます! 公開後に頂いたはてなブックマークでのご指摘・社内でのタイポ・読みにくいなどの指摘を受けてたので、謹んで修正させいただきます。 修正した内容につきましては、記事の最後を参照してください。 忙しい人のためのまとめ jdk-7u4以降のjdk-7 *1 でJavaのパフォーマンスが劣化する謎の現象 CodeCacheの容量限界に近づくとJITコンパイラを停止してコンパイルしたコードを捨てる機能が原因だった 起動オプションで回避できるので、長期運用するときは -XX:-UseCodeCacheFlushing, -XX:ReservedCodeCacheSize=128m をつける 上のオプションを設定した時に、C

    Javaの謎のパフォーマンス劣化現象との戦い - Cybozu Inside Out | サイボウズエンジニアのブログ
  • logbackでJavaシステムプロパティを利用する - けみかるはてな

    logbackでJavaシステムプロパティを参照するには、「${propname}」といった表記を使用する。同様の表記で環境変数も参照できる。 コマンドライン java -Dlog.home=/path/to/log ClassNamelogback.xml <property name="LOG_HOME" value="${log.home}" />なお、Javaシステムプロパティが存在しなかった場合、「propname_IS_UNDEFINED」をいう値が設定される。 変数のデフォルト値設定 Javaシステムプロパティが設定されていなかった時のデフォルト値を定義するためには、「${propname:-defaultValue}」といった表記を使用する。 logback.xml <property name="LOG_HOME" value="${log.home:-/default/

    logbackでJavaシステムプロパティを利用する - けみかるはてな
  • SLF4J/LogbackでJSON形式のログ出力 - Qiita

    はじめに Fluentd の in_tail プラグインでログファイルを読み込む際に、 特別な形式ではないフォーマットだと正規表現を駆使して頑張る必要がありますが JSON形式でログを出力してしまえばそんな手間も無くなります。 (grepビリティは低いですが・・・) 依存ライブラリの定義 バージョンは現時点で最新のものを埋め込んでいます。 Mavenを使っている場合 <dependencies> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.12</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId

    SLF4J/LogbackでJSON形式のログ出力 - Qiita
  • シングルトンパターンの遅延初期化をスレッドセーフにするには - じゅんいち☆かとうの技術日誌

    前回、前々回と割とヘビーな仕様の話だったので、今回は若干実用的なネタとして、シングルトンパターンの遅延初期化をメモリモデルの視点から、どのようにすればスレッドセーフになるか考えてみたいと思います。 そのシングルトンの遅延初期化はスレッドセーフか 以下のようなシングルトンパターンは日常的に使うデザインパターンの一つだと思います。 ただ、今回はSingletonクラスのgetInstanceメソッドに、わざとロックを掛けずに実装してみました。この場合にどういうことが起こりうるか考えてみたいと思います。 public class Singleton { private static Singleton instance; public static Singleton getInstance() { // バリアがない if (instance == null) { // Normal Load

    シングルトンパターンの遅延初期化をスレッドセーフにするには - じゅんいち☆かとうの技術日誌
    arata3da4
    arata3da4 2015/04/19
    volatile
  • PIT Mutation Testing

    Real world mutation testing PIT is a state of the art mutation testing system, providing gold standard test coverage for Java and the jvm. It's fast, scalable and integrates with modern test and build tooling. Get Started Pro Version Issues Source Maven Central Mutation testing is conceptually quite simple. Faults (or mutations) are automatically seeded into your code, then your tests are run. If

    arata3da4
    arata3da4 2015/02/12
    mutation testing
  • サービス提供終了のお知らせ

    日頃より、アレスネットをご愛顧いただきまして誠にありがとうございます。 「ホームページサービス」のサービス提供は2016年1月31日をもちまして終了させていただきました。 これまで長らくご利用いただき、誠にありがとうございました。 今後も、皆様によりよいサービスをご提供させていただけるよう、サービス品質向上に努めて参りますので、何卒、ご理解いただけますようお願 い申し上げます。 <アレスネットをご契約のお客様へ> 後継サービスとして「userwebサービス」を提供させていただいております。 詳しくは、以下のリンクをご参照ください。 ▼「userwebサービス」のご案内 http://www.ejworks.info/userhp/alles/index.html 今後ともアレスネットをご愛顧いただけますようお願い申し上げます。 株式会社イージェーワークス アレスネット カスタマーサポート

  • 【Java】Antを使ってjarファイルを作成するサンプル。【build.xml】

    ←フエルチラシノウラ。トップページへもどる。 【Java】Antを使ってjarファイルを作成するサンプル。【build.xml】 Java Ant build.xml antスクリプト ビルド デプロイ Javaプロジェクトをビルドする際に重宝するのがantです。Eclipseにはデフォルトで入っていますね。 このantをスクリプトを使ってsrcをビルドし、jarファイルを生成してみしましょう。 ant用のスクリプトはbuild.xmlと命名するのが一般的です。 build.xmlはEclipseのパッケージエクスプローラView上から、右クリック>実行>Ant ビルド で実行できます。 build.xmlにエラーがある場合は、ちゃんとエラーも吐いてくれます。 build.xmlサンプル。 <?xml version="1.0" encoding="UTF-8"?> <!-- name属

  • Java8でBDDっぽくテストを書けるかもしれないアイデア — 裏紙

    JasmineでJavaScriptのテスト書いたりJava8のラムダに思いを馳せていたらなんとなく思いつきました。 ラムダにインスタンスイニシャライザを組み合わせたらこんな感じでテストが書けそうです。 package app; public class CalcSpec extends Specs {{ it("1 足す 2 は 3", () -> { expect(() -> 1 + 2).toEqual(3); }); it("1 割る 0 は例外", () -> { expect(() -> 1 / 0).toThrow(ArithmeticException.class); }); }} うむ、Jasmineぽい。 まあ実はBDDぽいとかよく分かっていませんが。 itメソッドを呼ぶと第一引数のテスト名をkey、第二引数のRunnableのようなオブジェクトをvalueとするマップ

  • 第3回 システムトラブルの原因はGCの実装を知れば見えてくる | gihyo.jp

    原因は大きく分けて3つあります。 1つめは、リソース不足です。たとえば、CPUのクロックやコアが足りず、処理の完了待ちであることなどが原因として考えられます。 図1 CPUのリソース不足の例 2つめは、M/W(ミドルウェア)からアプリケーションに提供されるスレッドや、コネクションのプールにあるリソースが不足していて、その提供待ち(無応答)になっている可能性です。 M/Wでプールしているリソースが不足した状況は、会社の書籍棚に1冊しかないを社員で順番待ちしている状況に似ています。1冊しかないため、今借りている人が返すまでは他の人は借りれません。 図2 M/Wでプールされたリソースが不足しているケース 1つめのケースで問題がGCにある場合、GCに割り当てるリソースのバランスが悪いことが原因です。たとえば、特定のプロセスに対するCPUリソースの割り当てが大きい場合、GCが起きると、CPUリソー

    第3回 システムトラブルの原因はGCの実装を知れば見えてくる | gihyo.jp
  • 【即席】コピペでできる暗号化/符号化処理 Java編【3日目】 | DevelopersIO

    こんにちは。いつの間にか、サーバー側のこむろです。 最近、クライアント側も高性能になってきたため、色々な大事な情報を格納したりすることも増えてきました。またサーバーとの通信によって最新の情報を取得することも多いです。そんな中、暗号化や符号化は重要な技術ですが、自分で実装するのはなかなか骨が折れます。 しかし、最近のプログラム言語では、1から自分で実装しなくても、便利なクラスやライブラリが含まれていることが多いと思います。今回は自分の備忘録も含めて、自分のよく使う暗号化やら符号化やらのプログラムの断片をまとめてみました 今回は、Javaを例にサンプルコードをざざっと記述してみました。Javaには元から色々な便利な暗号に関するクラスやライブラリが用意されているので、存分に利用していきたいと思います。 Base64 Encode/Decode バイナリ等のダメ文字を含むデータを、64種類の印字可

  • 1