はじめに こんにちは、虎塚です。 この記事はJava Advent Calendar 2014 の22日目の記事です。昨日はすふぃあ (@empressia) さんの「JavaEEなWebアプリケーションを作ろうとしたときのお話: すふぃあの記憶」でした。 この記事では、「Javaクラスファイルの読み方・増補版」と題しまして、12月20日(土)に開催したJavaクラスファイル入門という勉強会でお話しした内容の補足をお届けします。なお、勉強会のターゲットは、 Javaプログラムは書いたことがあるけど、JVMのことは全然知らない Javaクラスファイルのバイナリを見たことがない といった初心者の方や新人さんでした。なので、Javaに興味さえあれば、どなたでもお読みいただける内容かと思います。 JVM仕様とは JavaとJVM Javaプログラム(.java)をコンパイルすると、中間コードと呼ば
これまでちゃんと使ったことがなかったRuntime#addShudownHookと、個人的にメモとして書き残しておきたいsun.misc.SignalHandlerについて、ちょっと書いておきます。 それぞれどんなものなのかですが、Runtime#addShutdownHookはJavaアプリケーションの終了時に実行させるThreadを登録することができるものです。これを使うことで、Javaアプリケーションの終了時に何らかの処理を実行することができます。まあ、いついかなる時も実行されるというわけではありませんが。 sun.misc.SignaHandlerは、sum.miscという推奨されないパッケージですが、Javaでシグナルを扱うことができる(シグナルハンドラを登録することができる)ようになります。 以下に、順に使っていってみましょう。 推奨は、Runtime#addShutdownH
やりたいこと JavaプログラムでaddShutdownHookに指定したThreadがどのシグナルで終了したときに呼び出されるのかを確認する。 Runtime (Java Platform SE 8) 確認方法 以下のJavaプログラムを実行する 起動したプログラムにkillコマンドでシグナルを投げて「call shutdown hook」が標準出力に出るか確認する。 public class SignalTest { public static void main(String [] args) { Runtime.getRuntime().addShutdownHook(new Thread( () -> System.out.println("call shutdown hook") )); while(true) { try { Thread.sleep(5000); Syste
Red Hat で Java Platform Advocate として OpenJDK を担当している伊藤ちひろ(@chiroito)です。 この記事は、Red Hat Developerのブログ記事、Java 17: What’s new in OpenJDK's container awareness | Red Hat Developer の翻訳記事です。 OpenJDKは、以前からLinuxコンテナ(DockerやPodman、またKubernetesのようなコンテナオーケストレーションフレームワークなど)を意識してきました。コンテナ対応とは、OpenJDKがコンテナ内で動作していることを検出することを意味します。この記事では、コンテナ対応がなぜ有用なのか、OpenJDKのその領域で最近何が変わったのか、そして、開発者がJVMの設定決定方法について理解を深めるために利用できる診断
はじめに 先日、JakartaOne Live Japan 2022というイベントで登壇させていただく機会を頂きました。 QuarkusやHelidonのような新しめのEEフレームワークがこれまでのPayaraやWebLogicとどう違うのか? CloudRunのようなサーバレス環境でMicroProfileのどの機能が効果的に働くのか? という点を最近のWeb開発周りのトレンドと絡めながら話ました。上記のようにアーカイブ動画も公開されていますが、せっかくなのでQuarkusがサーバレス環境で実行に最適化されるまでの周辺事情等をまとめたいと思います。Javaだけに留まらず最近の環境事情の整理にも役立つかと思います。 TL;DR Quarkus/Helidonは軽量で高速な新しいEEフレームワーク コンテナや、サーバレス、クラウドネイティブなど最新のトレンドに基づいた設計 GCPのCloud
Java 19が2022/9/20にリリースされました。 https://mail.openjdk.org/pipermail/jdk-dev/2022-September/006933.html 今回、正式導入された機能がほとんどありませんが、Record PatternsやVirtual Threadは注目すべき機能です。 こちらの配信で解説しています。 詳細はこちら JDK 19 Release Notes Java SE 19 Platform JSR 394 OpenJDK JDK 19 GA Release APIドキュメントはこちら Overview (Java SE 19 & JDK 19) 追加されたAPIまとめはこちら https://docs.oracle.com/en/java/javase/19/docs/api/new-list.html APIの差分はこちら。
仮想スレッド/ネイティブイメージ/CRaC/ノンブロッキングにも対応! msで起動しオンプレからサーバレスまで幅広く利用できる 軽量OSSフレームワークQuarkus
Javaでの開発をしている際に、Javaオブジェクト(インスタンス)のメモリサイズを把握したい場合があると思います。 そのような場合に役に立つツール群を以下に記載しました。 これらを使えば少しコードを書くだけで簡単にメモリサイズを取得することができます。 (以下に記載した(サンプルコードの)実行結果は、全て64bitのJRE環境下でのものとなります) java.SizeOf ■ツール(jar)の入手先 java.sizeOf project からダウンロードしてください ■主に使うAPI Javaオブジェクトのメモリサイズを取得するためには基本的に以下を使用します SizeOf#deepSizeOf ■サンプルコード サンプルコードは以下の通りです。 import net.sourceforge.sizeof.SizeOf; public class ArraySizeCheck { pr
現実逃避シリーズ第2弾(苦笑). とめどもさんが日記でJTAとJTSについて混乱されているようなので,ちょっと書いてみるてすと(またしても弱気,ほとんどうろ覚えなので). Java以前の分散トランザクション 正確には非Java環境での分散トランザクションですが,重要な仕様が二つあります. X/Open*1 DTP(Distributed Transaction Processing) この仕様は,80年代後半に作業が始まって,90年前後に最初の仕様がリリースされた(と記憶している)もので,簡単に言ってしまうとTUXEDO*2やEncina*3といったTPモニタのための仕様です(超乱暴). 初期のDTPのモデルはとても簡単(これが大事)で,主な構成要素は次の3つです. Application(AP) Transaction Manager(TM) Resource Manager(RM) こ
Last updated on The following information represents Oracle's plans for changes to the security algorithms and associated policies/settings in the Oracle Java Runtime Environment (JRE) and Java SE Development Kit (JDK). The information on this site is intended for releases currently supported by Oracle (as described in the Java SE Support Roadmap) and Early Access releases when applicable. The Ora
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? Java 16が2021/3/16にリリースされました。 多くのプログラマに関係ありそうな変更は、record、instanceofパターンマッチの正式化、Stream.toListです。またTLS1.0と1.1が無効になっているので古いMySQLなどへの接続でハマることがあるかもしれません。 詳細はこちら Java SE 16 Platform JSR 391 JDK 16 GA Release APIドキュメントはこちら Overview (Java SE 16) MacやLinuxでのインストールにはSDKMAN!をお勧めします
参照: http://stackoverflow.com/questions/2348399/why-does-java-net-urls-hashcode-resolve-the-host-to-an-ip 公式ドキュメントによると: public boolean equals(Object obj) … 2 つの URL オブジェクトが等しいのは、同じプロトコルを持ち、同じホストを参照し、ホスト上のポート番号が同じで、ファイルとファイルのフラグメントが同じ場合です。 2 つのホストが等価と見なされるのは、両方のホスト名が同じ IP アドレスに解決されるか、どちらかのホスト名を解決できない場合は、大文字小文字に関係なくホスト名が等しいか、両方のホスト名が null に等しい場合です。 ホスト比較には名前解決が必要なので、この操作はブロック操作です。 java.net.URL#equals
仕事でJava 8とJava 11を行ったり来たりしたり、Javaの特定のマイナーバージョンでのみ発生する問題の調査などをしないといけないケースが出てきて、最初は都度環境変数で切り替えていたのですが、切り替え忘れてうっかり別のバージョンでコンパイルしてしまうということが増えてきたのでjenvというツールを試してみました。 github.com Macの場合はbrewでインストールできます。 $ brew install jenv jenvはデフォルトでは~/.jenvに設定などを保存するようです。以下のディレクトリを手動で作成しておく必要がありました。*1 $ mkdir -p ~/.jenv/versions .bash_profileなどに以下を追加。 eval "$(jenv init -)" JDKはbrew caskでインストールできるようなのですが、手元にはすでにインストールし
Java 14正式版が登場。テキストブロック、インストーラー作成ツールなど新機能。Solaris/SPARC版はついに引退 Java 14正式版が登場しました。 2017年9月に登場したJava 9以降、Javaは6カ月ごとに「フィーチャーリリース」と呼ばれるメジャーアップデートが行われています。Java 14は、昨年9月に登場したJava 13に続くメジャーアップデートです。 Oracle is proud to announce the availability of #Java 14! Download: https://t.co/RppJOsT0WZ Release Notes: https://t.co/PA5jibv7o1 Documentation: https://t.co/0aGT8pWp80 Blog: https://t.co/rtiBtagTvm pic.twitt
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? この記事の目的 「Javaの環境構築」で絶対にハマったり、錯綜する情報にいつも惑わされる人に向けた記事です。 2017年以降のJavaは、移り変わりが激しい世界になりました。このことを認識し、「軸となる考え方」や「重要な動向」を把握できるように、調べた情報をまとめました。 **「5年ぶりに(Java|JVM言語)触るんだけど環境周りが全然わからん」とか、「CorrettoとかAdoptOpenJDKとか、みんな何を言っているんだ」**という人(つまりちょっと前の筆者)が、「今後に渡って2度とハマらないための基礎知識を得られること」を目的
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く