2024年1月7日に行われたFukuoka Engineers Dayでの登壇資料です。
「Java 21」正式リリース。仮想スレッドが正式版に、入門者向けに「void main」と簡潔な記述、世代的ZGCなど新機能 オラクルはJavaの最新バージョン「Java 21」正式版を今日リリースします。 Java 21は長期でセキュリティパッチやバグフィクスなどが提供されるLTS(Long Term Support:長期サポート)版です。企業向けのシステム開発などで安定したJavaのバージョンをある程度長期間使いたい場合には、このJava 21は有力な候補となるでしょう。 日本時間22時からJava 21のローンチイベントも開催予定です。「with a few surprise reveals」(いくつかサプライズ発表があるよ)というのが少し気になります。今年は昨年復活したJavaOneがないので、その代わりに何かあるのでしょうか。 We're just 1 day away fro
久々に古い知識を整理していて、けっこう更新されているものが多いのでここにまとめる。 JDK Mission Control (JMC) JMCはOracleのウェブサイトからダウンロードできる。 標準ではOS標準のロケールが利用される。UIを日本語化する場合は jmc.ini で user.language システムプロパティを設定する。これはJVMに渡す設定なので必ず -vmargs よりも後ろに書く(Eclipseの設定と同じ)。 -Duser.language=ja 利用するJVMは jmc.ini で -vm システムプロパティを設定する。これはJVM起動前に使うので -vmargs よりも前に書く。 -vm C:\Program Files\Java\jdk-17.0.7.7\bin\javaw.exe ThreaddumpとJFR 昔はThreaddumpファイルを複数取ってI
みなさん、今日もパブリックスタティックヴォイドメインしてますか? ジャバと言えばパブリックスタティックヴォイドメインですよね。 最近はIDEでmain[tab]と入力すれば補完してくれるとはいえ、コードを読むときには目に入ってきたりしますね。 そんなパブリックスタティックヴォイドメインの呪文から解放される日が近づいています。 TL; DR 9月リリースのJava 21の試用機能として void main() { System.out.println("Hello"); } をhello.javaで保存したら、java hello.javaで実行できるようになります。 (Java 21では--enable-preview --source 21が必要) Javaではプログラムを開始するときにpublicなclassなどにStringの配列を受け取るpublicでs
-08; -0800; -08:00 パターン文字は、その数で正確な表現が決まるため、通常繰り返されます。 テキスト: フォーマット時に、パターン文字の数が4以上の場合はフル形式を使用します。そうでない場合、短い形式または省略された形式があれば、それを使用します。解析には、パターン文字の数値にかかわらず、どちらの形式も受け付けられます。 数値: フォーマット時に、パターン文字の数は最小桁数です。これより短い数値は、この桁数までゼロ埋めされます。解析には、2つの隣接するフィールドを区切る必要がないかぎり、パターン文字の数は無視されます。 年:フォーマッタのCalendarがグレゴリオ暦の場合は、次に示すルールが適用されます。 パターン文字の数が2の場合、フォーマットには年が2桁に短縮されます。そうでない場合は、数値として解釈されます。 解析には、パターン文字の数が2以上の場合、年は桁数にかか
JavaVM で JavaScript エンジンを動かして、DSLとして JavaScript を利用したいようなケースは結構あったはずだが、JavaVM に標準で搭載されているJavaScriptエンジン Nashorn はすでに Java11 で非推奨となっていて、プロダクションで使っている勢にとっては不安の種となっている。 Nashorn 非推奨の理由は、最新の ECMAScript 仕様に追随しきれないというもの。 確かにモダンなESを使いたいモチベーションはあるが、それが足枷となってJVMそのものの進化のスピードが律速されてしまうのであれば、非推奨としてJVM本体の進化のペースとは切り離すという判断は合理的。 ではどうしたらいいのか。Alt JVM として開発されている他言語対応JVM GraalVM を使うというのが第一の選択肢である。GraalVM に関しては色々なところで触
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の差分はこちら。
Red Hat で Java Platform Advocate として OpenJDK を担当している伊藤ちひろ(@chiroito)です。 この記事は、Red Hat Developerのブログ記事、My advice for updating use of the Docker Hub OpenJDK image | Red Hat Developer の翻訳記事です。 コンテナ内のJava実行環境は、今後数カ月でアップデートを受けられなくなる可能性があります。そろそろ手を打つべきでしょう。この記事では、この問題を引き起こした原因である決定事項を説明し、解決策を提案します。 OpenJDK と Java SE のアップデート OpenJDKは、Java Platform, Standard Edition (Java SE)のオープンソース実装で、複数の企業やコントリビューターが共同
メジャーバージョンは機能に大きな変更があった場合、マイナーバージョンは後方互換性を保つ変更があった場合、パッチバージョンはバグ修正が行われた場合に大きくなります。 これらの数値は 1.10.12 のように2桁以上になることも可能です。 もし多くの人に使ってほしい安定版を公開するなら、安定バージョンの公開を検討しましょう。 後述するmaven-release-pluginを使えば、安定バージョンが満たすべき条件を自動的に検証してくれます。 安定バージョンとは、前述のように数値とピリオドだけで構成されたものです。 反面、実装やインタフェースが安定しない開発途上のものを公開するなら、修飾子を用いて安定版でないことを明示するとよいでしょう。
Windows JDK環境切替バッチファイル¶ 目次Windows JDK環境切替バッチファイルはじめにバッチファイルのリポジトリ 使用イメージ動作の原理JDKをインストールすると生成されるレジストリJDK 8までのレジストリ構造JDK 9からのレジストリ構造 Windows OS 64bit版での32bit環境用レジストリ バッチファイルの作成コマンドライン引数コマンドライン引数の仕様コマンドライン引数の処理 変数の有効範囲の制御コメントについてREMはコメントではなく何もしないコマンド JDKのレジストリキーの新旧対応レジストリキーの検索CurrentVersionの値の取得指定したバージョンのJDKのサブキーを検索指定したキーのJavaHomeの値を取得 はじめに¶ Javaプログラミング環境では、複数のJava Development Kit(JDK)バージョンをインストールしてお
Java 「創るJava」 の著者である、きしださんが「Java8時代の文字列連結まとめ」という面白い記事を書いてくれた。 文字列連結だと Java8 での Stream API でコネコネしても感動的な結果は得られず残念な結果となった。 つまり文字列連結は今まで通りのほうが速いよってことのようです。 さて、それではあまりにも Java8 の Stream API が可愛そうなので Stream API 威力を発揮するようなプログラムを組んでみます。 といっても簡単でシンプルなものにします。 みんな大好き素数を表示させるプログラムです。 素数と言えばエラトステネスの篩だと誰もが思うのですが、それは無かったことにしてください。( ̄。 ̄;) それでは一番シンプルで Java8 じゃないプログラムを組んでみました。 package jp.yucchi.primenumber_old; impor
はじめに 初期化処理が重いインスタンスってありますよね。代表的な例だとJDBCコネクションとか。Factoryパターンで初期化を隠蔽するような奴は概ね重いのはどの言語でも一緒だと思います。 こういった重い処理を例えばループなどで大量に初期化してしまうのはかなりのコストになってしまい、特にバッチのようなチリツモな処理では無視できないほど実行時間に影響を与えてしまう恐れがあります。 そういった場合はSingletonなどを使ってインスタンスの生成コストを隠蔽しますが、マルチスレッド環境下だと影響が出る場合もあります。以前、そういうケースでバグってるのに出くわした事があるので、記憶の整理がてらまとめておこうと思います。 コード例はJavaですが、あまりJavaかどうかには依存しない考え方になっていると思うので、他の言語が得意な人は疑似コード程度に思っておいてください。 なお、JDBCを始めとした
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く