javaに関するmtzkyのブックマーク (82)

  • Spring Boot でアプリケーションサーバーを同梱するなら Java 実行環境も添えればいいじゃない (Java 11, 2019年12月版) | そるでぶろぐ

    こんにちは、ソリューション開発部の柴崎です。 Spring Boot でウェブアプリケーションを実行可能な Jar/War 形式として作る場合、依存ライブラリだけでなくアプリケーションサーバーも単一のファイルに含まれます。ライブラリだけでなくミドルウェアも同時にアップデートにできる便利な世界になりました。同じように Java 実行環境も簡単にアップデートしたいというのは当然の発想かと思います。 Project Jigsaw の登場により、必要なモジュールのみで構成された Java 実行環境を作ることできるようになり、Java 実行環境のディスク使用量を節約できます。使用容量が減ることにより、Java 実行環境も併せて配布しやすくなります。Docker を使うという場合でも、より小さいイメージを作れる可能性がありますので、方法を知っておいて損はないかと思います。 まとめ2019年12月時点で

    Spring Boot でアプリケーションサーバーを同梱するなら Java 実行環境も添えればいいじゃない (Java 11, 2019年12月版) | そるでぶろぐ
  • 改・Spring Boot でアプリケーションサーバーを同梱するなら Java 実行環境も添えればいいじゃない (Java 11, 2020年1月版) | そるでぶろぐ

    こんにちは、ソリューション開発部の柴崎です。 前回、以下の記事で Java 11 の jdeps/jlink を使い、Spring Boot ウェブアプリケーションを動かすための最小構成の Java 実行環境の作成に挑戦しました。一応の解決をみせましたが、--print-module-deps オプションを指定するとエラーになっている部分を深堀りできていませんでした。今回の記事でさらなる解決を目指してみます。 まとめJDK 内部 API は使わない。自分たちのコードだけでなく依存するライブラリにも気をつける。特に JDK 内部 API で削除されたクラス (JDK removed internal API) に依存するライブラリがないか要確認。 JDK 内部 API で削除されたクラス (JDK removed internal API) を参照していると、jdeps の --print-

    改・Spring Boot でアプリケーションサーバーを同梱するなら Java 実行環境も添えればいいじゃない (Java 11, 2020年1月版) | そるでぶろぐ
  • Javaのマイクロフレームワーク ― この新トレンドは見逃せない | POSTD

    この記事は、JavaScalaの例外分析・パフォーマンス監視のツール Takapiblog に投稿されたものです。 Javaのマイクロフレームワークとは何か、推奨される理由とは? どんなプログラミング言語にも、長所と短所はあるものです。例えばJavaは、安全性の高さや、厳しいテストを経ていること、後方互換性などの利点を持つ言語です。しかし、その代償として、アジリティ(俊敏性)や合理性といった面が少なからず犠牲になっています。冗長で、Java自体が肥大化しているという事実も否定できません。とはいえ、新規開発や大規模な開発を行いたい場合、JVM(Java仮想マシン)はバックエンドとして非常に魅力的です。JVMはパワフルな上に、非常に厳しい環境でテストされています。このような利点があるため、結果的にJavaは広く使用され、積極的にデプロイされているのです。 しかし、このJavaの現状を皆

    Javaのマイクロフレームワーク ― この新トレンドは見逃せない | POSTD
    mtzky
    mtzky 2015/07/14
  • DDD の Java EE 実装サンプル - Cargo Tracker を読み解く - Qiita

    Cargo Tracker とは エリック・エヴァンスのドメイン駆動設計 で紹介されている様々なパターンを実際に使用して、有志が作成したサンプル Web アプリのこと。 DDD Sample Application - Introduction オリジナルは Spring Framework を使用している。 一方、この実装を Java EE 7 で置き換えたサンプルが公開されている。 Cargo Tracker この実装を読みながら、 DDD で紹介されている以下のパターンがどのように実装されているのかを確かめてみる。 レイヤ化アーキテクチャ エンティティ 値オブジェクト 集約 リポジトリ サンプルアプリを動かす ソースのダウンロード このページ の一番下に zip のリンクがあるので、そこからダウンロードする。 環境準備 以下のソフトウェアをインストールする。 JDK 7 以上 Mav

    DDD の Java EE 実装サンプル - Cargo Tracker を読み解く - Qiita
  • Java の AST を解析できる javaparser がアツい!!! - tokuhirom's blog

    https://github.com/javaparser/javaparser javaparser は Java をパースして AST にしてくれるライブラリである。 この手のライブラリは数多あるのだが、ほとんどのものが Java 1.5 ぐらいでメンテナンスが止まっている。 実際このライブラリもメンテナンスが止まっていたのだが、Java 1.8 対応版とし開発が再開されたものだ。 このライブラリはパーサーライブラリであるから、文字列をパースして AST を構築してくれるというものになっている。 実際どのような AST が構築されるのかが気になるところなので、構築された AST をダンプできるツールを groovy で書いた。 #!/usr/bin/env groovy @Grab('com.github.javaparser:javaparser-core:2.1.0') impor

    mtzky
    mtzky 2015/05/21
  • JIS2004に含まれるサロゲートペア。Javaでの文字列操作を検証してみた | 株式会社メイプルシステムズ

    最近のマイブームは、映画「アナと雪の女王」関連の色んな動画を子供と一緒に見ることです。でも映画自体はなかなか観に行けずにいます。おにです。 ここのところ、タイトルにある「サロゲートペア(4バイトで1文字を表す文字)」に関わる時間が多く、油断すると錯覚(幻覚?)で「アナと雪の女王」の文字もサロゲートペアに見えて来そうです。(まだ老眼にはなってません。) 今回はその「サロゲートペア」が含まれた文字列のJavaでの文字列操作について試してみたいと思います。 サロゲートペアってなに? サロゲートペアは、上位サロゲートと下位サロゲートを組み合わせて1文字を表現する4バイトのUnicode文字です。Windows Vista(JIS2004)で追加された文字にサロゲートペアは304文字存在します。 Windows XPでは表示できなかった文字なのであまり馴染みはありませんが、Windows XPのサポ

    JIS2004に含まれるサロゲートペア。Javaでの文字列操作を検証してみた | 株式会社メイプルシステムズ
  • How to: Get source JARs from Maven repository | SevenNet

  • Java: 本番環境でのデバッグスキルを磨く - ワザノバ | wazanova

    https://www.youtube.com/watch?v=7KS4L-mA_-c 1 comment | 0 points | by WazanovaNews ■ comment by Jshiike | 約1時間前 Takipi のFounderであるTalWeissのSan Francisco Java User Groupミートアップでの講演。番環境で役に立つデバッグテクニックの紹介です。 1. スレッド名の活用 スレッド名はmutable(EJB除く)である。コードのコンテキストにあわせて、Thread.currentThread().setName(Context, TID, Params, Time,...);のようにすれば、トランザクションID、Serveletパラメータ、キューメッセージID、起動時間など、スタックトレースに役に立つ情報を表示できるようになる。 J

    mtzky
    mtzky 2015/02/10
  • 恐怖の JVM 大量メモリ消費!メモリリークの謎を追え!! - Cybozu Inside Out | サイボウズエンジニアのブログ

    こんにちは、ミドルウェア開発チームの青木(@a_o_k_i_n_g)です。将来の夢は川口浩探検隊に入ることです。 先日、弊社のアプリケーションサーバーで大量にメモリを消費するという現象に遭遇しました。アクセス頻度の低いサーバーがメモリを大量消費するという謎深いものでした。 発生当初の状況はこんな感じです。 アプリケーションサーバーでは Jetty が稼働 現象が発生した JVM は 5GB 程度のメモリを消費しており、明らかに通常ではない量のメモリを消費している 複数台のサーバーで発生していたが、全てで発生したわけではない。 また、発生したサーバーはいずれもアクセス頻度が少ないサーバーだった。 ヒープ、パーマネント、スタック ひとまず、JVM でトラブルが発生した時は何はともあれヒープダンプとスレッドダンプを見るに限ります。各種情報の取得をインフラ部隊へ依頼し、得られたヒープを解析すると、

    恐怖の JVM 大量メモリ消費!メモリリークの謎を追え!! - Cybozu Inside Out | サイボウズエンジニアのブログ
  • dfltweb1.onamae.com – このドメインはお名前.comで取得されています。

    このドメインは お名前.com から取得されました。 お名前.com は GMOインターネットグループ(株) が運営する国内シェアNo.1のドメイン登録サービスです。 ※表示価格は、全て税込です。 ※サービス品質維持のため、一時的に対象となる料金へ一定割合の「サービス維持調整費」を加算させていただきます。 ※1 「国内シェア」は、ICANN(インターネットのドメイン名などの資源を管理する非営利団体)の公表数値をもとに集計。gTLDが集計の対象。 日のドメイン登録業者(レジストラ)(「ICANNがレジストラとして認定した企業」一覧(InterNIC提供)内に「Japan」の記載があるもの)を対象。 レジストラ「GMO Internet Group, Inc. d/b/a Onamae.com」のシェア値を集計。 2023年5月時点の調査。

    dfltweb1.onamae.com – このドメインはお名前.comで取得されています。
    mtzky
    mtzky 2014/10/25
  • Javaエンジニアがいまさら始めるRuby開発環境 - Qiita

    Editorは、人によって大きく違うと思うけど、大体こんな感じだと思います。 Rubyでは、Vim,Emacsなどのエディタ + Plugin + 開発支援なgem Javaでは、Eclipse,NetBeans,IntelliJなどのIDE Javaの人はIDEが無いと辛いと思うかもしれませんが、Vim Pluginや開発支援するgemを使えば、IDEと遜色なく使えるのではないかと思います。 例えば、エディタ上で以下のことはできます。 コード補完 ブレイクポイントを置いて、ステップ実行 カーソル上のクラスやメソッドに飛ぶ(gemRuby体のC言語も含む) 知りたいクラスやメソッドなどのドキュメントやソースの表示 保存時にコーディング規約違反の表示 homebrew mac標準のrubyでまずはhomebrewをインストールします。 $ ruby -e "$(curl -fsSL ht

    Javaエンジニアがいまさら始めるRuby開発環境 - Qiita
  • 最近のJava関係イベントの個人的なまとめと感想 - Splash of waters - 2nd. Season

    デブサミやJava Day Tokyoなど、会社の許可をもらってイベントにありがたく行かせてもらっているけど、ちゃんとレポートできていなかったということで、社内勉強会で話すことにしました。 まとめ資料を作ったので、このブログにて先行して公開してしまいます*1。少し前のエントリで資料をアップロードしたのはこのための準備でした。 資料の位置づけ 古いJavaの知識で止まっている人(自分含め)やこれから格的にJavaを学ぼうと思っている人に、最近のJava関連の新機能などをざっくりつかんでもらうための資料です。内容の深さ・広さは、聴く人のJavaスキルに合わせた一応合わせたつもりです。 Java SE 8がリリースされて、その界隈では「for文禁止」などと言われる一方で、会社の新人研修で教えるJavaでは、「ループはforやwhileを使って書きます」みたいに教えるわけで、その辺のギャップを埋

    最近のJava関係イベントの個人的なまとめと感想 - Splash of waters - 2nd. Season
    mtzky
    mtzky 2014/06/16
  • JavaしかかけないおいらがiPhoneアプリをリリースするまで - しんさんの出張所 はてなブログ編

    今回の内容は前回よりだいぶましだぞ・・・。 業務系Java屋がMixiアプリをリリースするまで Javaしかかけないおいらがmixiアプリ第2弾をリリースするまで mixiアプリ第3弾「コレオススメ!」リリースするまで Javaしかかけないおいらがmixiアプリ第4弾をリリースするまで JavaしかかけないおいらがAndroidアプリをリリースするまで の続きになります。 正直実装的にはmixiアプリ第2弾のエントリ(GWT+Flash+JavaSEとの互換レイヤでサクサク開発)が飛びぬけていると思いますが、それ以来くらいのインパクトはあると思います。 長文です。 iOS版を開発するぞ マモノバスター2のAndroid版は無事だせました。読んでない人は上に並んでる過去のエントリを読んでみてください。 AndroidJavaSEと同じJava言語ということで、JavaSEと互換のレイヤーを

    JavaしかかけないおいらがiPhoneアプリをリリースするまで - しんさんの出張所 はてなブログ編
  • Javaトラブルに備えよう #jjug_ccc #ccc_h2

    オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)

    Javaトラブルに備えよう #jjug_ccc #ccc_h2
    mtzky
    mtzky 2014/05/18
  • JavaでノンブロッキングIOを使ったネットワークアプリを学ぶのに最適なNetty 3.5系のGetting Startedを日本語訳しました - sifue's blog

    Nettyと言えばJavaのノンブロッキングIOのAPIであるNIOをラップしたフレームワークとして、TwitterのFinagleなどで分散ネットワークアプリケーションシステムで使わていて高速で実績のあるライブラリとして有名ですが、ノンブロッキングIOでイベント駆動のサーバークライアントのネットワークアプリケーションを知るのに非常に良い題材ですので、素人翻訳ですがその日語訳を公開することにしました。 ちなみにNettyがどれぐらいパフォーマンスに優れているのかというと、Herokuの仮想インスタンスを利用した実験の結果が参考になります。Scala(Finagle)がNettyの実装を利用したものになりますが、秒間6000リクエスト時の1dyno(APサーバー)の応答が秒間4000レスポンスで、C(Accept)、Java(Jetty)、Java(Tomcat)、Js(Node)、Pyt

    JavaでノンブロッキングIOを使ったネットワークアプリを学ぶのに最適なNetty 3.5系のGetting Startedを日本語訳しました - sifue's blog
  • Netty の基本 - hozumiの日記

    ここ数日、Nettyについて調べていたので理解できたことを書きます。 JBoss Netty Netty は Java で非同期、イベント駆動のネットワークアプリを作るためのフレームワークです。Netty を使うと早くて簡単にハイパフォーマンス、ハイスケールでメンテナンス性がいいものが作れます。いいとこ取りの全部乗せです。 なぜハイパフォーマンス、ハイスケールか? Netty は Java NIO(New I/O)をラップしていて、ノンブロッキングなIO操作ができます。そのため、1つのコネクションにずっと1スレッドを割り当てる必要がないため効率のよいリソース消費をします。従来のブロッキングなOIO(Old I/O)もサポートしており、僅かな変更で好きな方を使えます。また、NIOの複雑なByte BufferをChannelBufferというオブジェクトに抽象化し、不必要なコピーが発生しない

    Netty の基本 - hozumiの日記
  • Java 7 CMS GCの基本的な情報の整理 - nekop's blog

    バッチ処理などスループット重視のアプリケーションはデフォルトのパラレルGCで良いが、Java EEアプリケーションサーバなどレスポンスタイム重視のものやHadoopなどのクラスタ系ソフトウェアで死活監視に引っ掛る系などのstop the worldをなるべく避けたいいわゆるサーバ系ソフトウェアを運用する場合には、UseConcMarkSweepGCを付与して停止時間の短いCMS GCを使う。その場合にCMSのチューニングに踏み込もうとするとなんだか難しい記述がいっぱいで若干困るので、簡単なガイドをメモとして書いておく。 対象バージョンは以下。 $ java -version java version "1.7.0_51" OpenJDK Runtime Environment (fedora-2.4.5.1.fc20-x86_64 u51-b31) OpenJDK 64-Bit Serve

    Java 7 CMS GCの基本的な情報の整理 - nekop's blog
    mtzky
    mtzky 2014/03/27
  • Java のクラスアンロード (Class Unloading)

    作成日:2004.05.18 更新日:2005.06.21 今後、随時書き足して行きます。多分。 はじめに Java は動的にクラスのロードとアンロードが行われる仕組みになっている。 クラスはクラスファイルの形でディスク上やネットワークに配置され、プログラム中でそれらが当に必要になった段階で JavaVM 上に読み込まれる。 またクラスはその使用が終わった段階でガーベージコレクターによって動的に回収され JavaVM からアンロードされる。 Servlet / J2EE サーバーなどはこの性質を利用して運用中にプログラムの一部を入れ替えるホットスワップ (Hot Swap) を実現している。 だがこの仕組みを実装するには少し工夫がいる。 この文書ではクラスのアンロードを実現するやり方について述べる。 1. クラスのロードとアンロードの基的な仕組み クラスローダー Java VM がクラ

    mtzky
    mtzky 2013/07/29
    ClassLoader
  • バイナリーデータから画像の種類を判別する - プログラムdeタマゴ

    というの↑が意外にもググっても出てこなかったので、ヘッダだけから種類を調べる簡易関数を作ってみた。 ImageType.java 対応フォーマットは JPEG PNG GIF BMP TIFF PICT です。 関数は 関数 説明 getFormat(byte[] b) b:バイナリデータ getFormat(InputStream i) i:読み込むデータ 例外IOException getFormat(File f) f:読み込むファイル 例外IOException いずれも戻り値はFormat列挙型。 Format列挙型は JPEG PNG GIF BMP TIFF PICT UNKNOWN(いずれでもない) です。 また、ImageTypeクラスには定数フィールドとして JPEG="jpg" PNG="png" GIF="gif" BMP="bmp" TIFF="tif" PICT

    mtzky
    mtzky 2013/06/10
  • Shift_JIS → Windows-31Jマッピング変換コード - CLOVER🍀

    近々仕事で書くことになりそうなので、久しぶりにShift_JISとWindows-31Jのマッピング変換コードでも。 public class CodeReviser { public static void main(String[] args) { String target = args[0]; System.out.println("Before [" + target + "] Hex[" + toHexString(target) + "]"); String converted = reviseCode(target); System.out.println("After [" + converted + "] Hex[" + toHexString(converted) + "]"); } public static String reviseCode(String tar

    Shift_JIS → Windows-31Jマッピング変換コード - CLOVER🍀