タイトルで言いたいことをほぼ言い切っているし、Base64かつJavaならよくある話なので、ググったらいくらでも出てくるのですが、2025年時点の最新でそれなりに自分で計測してみた。 というだけの話。 apache-commons以外も実験しろよ!!!とか、decodeもやれよ!などあると思いますが、ググったら(多少古いけど)もう少し色々やっているの出てくるし、あるいは皆さん自分で試しましょう。 以下実験したコードや条件と結果。 パラメーターあまり変えたりしてないけれど、一応ちゃんとjmhで計測しました。 10689097.969 / 200796.409 で53倍の差が出ました。 さすがによくある処理だからJVM側で特殊処理してるんでしょうね、おそらく(知らんけど) とはいえ Array[Byte] のsize固定だったので、その部分など変えたら多少は違う結果になるのかもしれませんが。
ぼくもAIコーディングエージェントを作ったほうがいいんじゃないか、ということで、かろうじてコーディングエージェントと呼べるものを作りました。 指示したJavaファイルを作って保存して実行してエラー出なくなるまでやりなおすというものです。 ただまあ、このレベルだと、コーディングエージェントといっても、ファイル読み書きとコード実行ができればいいと思います。 なので、とりあえずこんな感じでsaveCodeとexecuteCodeのTool Callingを用意。見易さのためにUI関係の処理は削ってます。 @Tool(""" save the code into the file with givin name. \ parameter: filename - file name to save; code - generatedJava source code""") void saveCod

この記事では、Java アプリケーションをコンテナー化するための推奨される戦略と設定の概要について説明します。Java アプリケーションをコンテナー化する場合は、コンテナーで使用可能なCPU 時間を慎重に検討してください。 次に、メモリの合計量とJava 仮想マシン (JVM) のヒープ サイズの両方で使用可能なメモリの量を検討します。 コンテナー化された環境では、アプリケーションはすべてのプロセッサにアクセスできるため、複数のスレッドを並列で実行できる可能性があります。 ただし、コンテナーにはCPU へのアクセスを調整する可能性があるCPU クォータが適用されているのが一般的です。 JVM には、CPU クォータに基づいて "使用可能なプロセッサ" の数を決定するヒューリスティックがあります。これは、Java アプリケーションのパフォーマンスに大きく影響する可能性があります。

原文はこちら。 This article was written by BrianGoetz (Java Architect,Oracle). http://cr.openjdk.java.net/~briangoetz/valhalla/erasure.html ジェネリクスの方向性を語る前に、まず、ジェネリクスの現在の状況とそこまでの経緯を語る必要があります。この文書では、現在のジェネリクスが、いま作ろうとしている「より良い」ジェネリクスへどのように影響を与えるかの礎として、主として現在のジェネリクスがどのようにしてできあがったのか、そしてその理由についてフォーカスします。 特に、2004年にJavaにジェネリクスを追加する際には、実際にはerasure(消去、ここではtype erasure、つまり型消去を意図している)が賢明で実用的な選択であったこと、そして、erasureによ

「Java 23」正式リリース。JavaDocのコメントでマークダウンが使えるように、ジェネレーショナルZGCがデフォルトになど新機能 オラクルはJavaの最新バージョン「Java 23」正式版をリリースしました。Java 23 is now available! #Java23 #JDK23 #OpenJDK Download Now: https://t.co/JIB36qx4Tc Releasenotes: https://t.co/oocLYX51n5APIJavadoc: https://t.co/NDHWlhXfNi Features: https://t.co/W3FoI7EMLaBlog: https://t.co/gCkxujzmIN pic.twitter.com/iZecs977td —Java (@java) September 17, 2024 Jav

Javaでコンパイラを書くと大きな利点がいくつかあるとわかる。次のようなことだ。 コンパイラエンジニアが新規に加わる際のハードルが非常に低くなる。 コンパイラにおいてメモリ安全になる。 コンパイラ開発で成熟したJavaのツール群を活用できる。 新しいコンパイラ機能のプロトタイプをより早く作れる。 コンパイラがHotSpotから独立したものとなる。 コンパイラが自分自身をコンパイルでき、自分自身のより速いJITコンパイルされたバージョンを生成できる。 Graalは新しいJVMコンパイラインタフェース (JVMCI) を使っている。これはHotSpotにプラグインできるようJEP 243として提供されているが、GraalVMの主要な部分としても使われている。この技術はもう存在しており、現時点でリリースされているが、Java 10ではまだかなり実験的な技術である。次のようにすると新しいJITコン

AI・機械学習チームのブログリレーも9日目になりました。同チームの横本@yokomotodです。本日はJavaとGoを題材に並行プログラミングまわりの自由研究をしたお話をしてみたいと思います。 3部構成で、パート1では発端となった「排他制御」について、パート2では「メモリの可視化」について、それぞれJavaとGoを比べてみました。 最後にパート3では、それらの動作を規定する「メモリモデル」について、わかりやすく解説されているリソースを紹介します。 長過ぎる! 3行で!! パート1: synchronized = 「排他制御」?Java synchronized vsGo sync.MutexGoで再入可能なロック? 仮にGoで再入可能なロックを実装するなら?Javaが再入可能を選択した理由 パート2. sycnhronized = 「排他制御」+「メモリ可視性の保証」Javaの
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の設定決定方法について理解を深めるために利用できる診断

列挙型、JavaでいうならEnum型、使っていますか。使わないわけにいきませんよね。 でも、Enumを使っていたせいで辛い目にあったことありませんか。ないですか。それならきっともうすぐに辛い目にあうと思います。 Enumはすべてのプログラマに等しく辛みを与えてくれるからです。そんな辛みについて、ちょっと一緒に直視してみましょう。 エムスリーエンジニアリンググループ、Unit1(製薬企業向けプラットフォームチーム)三浦(@yuba@reax.work) [記事一覧 ]がお送りいたします、エムスリー Advent Calendar2023の6日目です。 アプリケーションプログラミング上の辛み 1. 既存のif文が偶発的に意図しない方に倒れる 2.switch文に至っては「どちらでもない」で処理不発に アプリケーションプログラミング上の対策 1. 分岐条件をEnumに持たせる 2. swi
オラクルはJavaをサーバレス環境で実行するのに最適化した技術「GraalOS」を発表しました。 同時に、Oracle Cloudのサーバレス実行基盤である「Oracle Cloud Functions」でGraalOSの機能を提供することも発表されました。Javaをコンパイルし、ネイティブバイナリを実行 GraalOSは名称にOSと付いているものの、LinuxやWindowsのようなOSではなく、Javaをデプロイする新たな技術とその基盤を指します。 具体的には、同社が提供しているJava実行環境である「GraalVM」のコンパイラを用いてJavaをコンパイルしてネイティブバイナリを生成し、それをサーバレス基盤にデプロイし実行することで、サーバレスアプリケーションの瞬時の起動と高速な実行などを実現するというものです。 参考:Javaのネイティブバイナリ生成可能なGraalVMの全機能が

switch式の結果javapしたらhttps://t.co/xMc0YEYsrgjava.lang.runtime.SwitchBootstraps と tableswitch が使われることに気がついたが、これ巨大なswitch式をJDK 21以降で書いた場合、同等の巨大なmatch式をScalaで書くよりも速度が速い可能性があるのでは??? これScalaで活用できるか?というと— Kenji Yoshida (@xuwei_k) September 25,2023switch式の結果javapしたら https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/runtime/SwitchBootstraps.htmljava.lang.runtime.SwitchBootstraps と ta
Red Hat のソリューションアーキテクトの瀬戸です。 この記事はRed Hat Developerのブログ記事、What's new for developers in JDK 21 | Red Hat Developer を、許可をうけて翻訳したものです。Java開発者にとってエキサイティングな情報として、今年 9 月 19 日に JDK 21 がリリースされました。 このリリースには、仮想スレッド(Virtual Thread)、レコードパターン(Record Patterns)、順序付コレクション(Sequenced Collections)など、Javaのエコシステムに利益をもたらす多くの新機能が含まれています。JDK 21 のプレビューには、文字列テンプレート(StringTemplates)、スコープ付値(Scoped Values)、構造化並列処理(Structure

Java 21が2023/9/19にリリースされました。 https://mail.openjdk.org/pipermail/jdk-dev/2023-September/008267.html The Arrival ofJava 21! LTSであり、パターンマッチングや仮想スレッドが正式化され、プレビューとして入ったStringTemplatesや無名クラス&インスタンスメインメソッドも面白い機能なので、大切なリリースになっていると思います。 詳細はこちら JDK 21 ReleaseNotesJava SE 21 Platform JSR 396 OpenJDK JDK 21 GA ReleaseAPIドキュメントはこちら Overview (Java SE 21 & JDK 21) 追加されたAPIまとめはこちら https://docs.oracle.com/en/

「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'rejust 1 day away fro

Javaは、企業のITシステムの開発になくてはならないプログラミング言語としての地位を確立している。一方で、PythonやJavaScriptといった若い世代に人気がある言語と比較すると、煩雑な記法が多く堅苦しいイメージは否めない。 こうしたイメージを一新してJavaの生産性を高める試みが「Project Amber(プロジェクト・アンバー)」だ。同プロジェクトではこれまで、Javaプログラムの可読性を高めるために数々の記法の改良を行ってきた。 その成果の1つとして、2023年秋に公開予定の「JDK(Java Development Kit) 21」に導入されるのが、Javaプログラムの実行の起点である「mainメソッド」の大幅な簡略化だ。Javaの新機能は「JEP(JDK拡張提案)」として管理されており、mainメソッドの簡略化は「JEP 445」で規定されている。Javaの開発にかか

みなさん、今日もパブリックスタティックヴォイドメインしてますか? ジャバと言えばパブリックスタティックヴォイドメインですよね。 最近は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

リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く