JavaとRust の記事7件
JavaとRust、これから――境界は動くが、消えはしない
両者のロードマップを並べると、Javaは値型でRustに近づきながらメモリ配置の制御という壁を残し、Rustは非同期の穴を埋めようとしながら「安全性が最も弱い領域が、最も拡大したい領域と重なる」という矛盾を抱えている。今後5年で実際に判断を迫られる場面を、確定した日付とともに整理する。連載最終回。
JavaとRust、AIとの関係――「どちらがAIに向くか」は数字で答えられない
AI時代の言語選択は三つの別々の問いで、三つとも答えが違う。言語別スコアを公開するSWE-bench MultilingualではRustが58.14%で1位、Javaが53.49%で2位。ただし件数では43問中25問と23問、差は2問である。課題が言語ごとに別である以上、この2問から結論は出ない。コンパイラの射程の限界を、実際に動かしたコードで確かめる。連載第6回。
JavaとRust、いま強い領域――取引所は誰も実装言語を公開していない
どちらがどこで使われているのかを、組織自身の公開資料だけで確かめた。Androidは全書き換えを否定して新規のみRustにし、脆弱性比率を76%から20%未満へ下げた。UbuntuのRust版sudoは長期サポート版に載ったが、cpとmvとrmはいまもGNU版のまま。そして世界の主要取引所は、どこも実装言語を公開していない。連載第5回。
JavaとRust、並行処理――夜中に呼び出されるバグの種類が変わる
同じ共有マップを4スレッドから触ると、Javaは4万件のはずが毎回違う件数で静かに壊れ、Rustはコンパイルが通らない。だがRustでもデッドロックは書けて実際に止まる。仮想スレッドとasyncは同じ問題を解く道具ではない。防ぐバグと防がないバグの線引きを、実際に動かしたコードで引く。連載第4回。
Rustには継承がない――Javaのinterface・抽象クラス・DIは何に置き換わるのか
interface・抽象クラス・DIというJavaの設計語彙は、Rustで何に対応し、何に対応しないのか。「網羅性検査があるのはRust」という古い通説を実機で正し、traitとinterfaceの本当の違い――後付け実装と継承の不在――を、コンパイルして動かしたコードで確かめる。連載第2回。
JavaとRust、メモリとリソース――GCがない世界で、コストはどこへ行くのか
「GCがあるから遅い」も「GCがないからコストがない」も、どちらも誤りだった。Javaはオブジェクトの割り当てをポインタ加算で済ませ、Rustは100万要素の解放で実測8ミリ秒止まる。違うのはコストの量ではなく、時間的な分布の形状である。テールレイテンシ・スループット・フットプリントを分けて、実際に動かしたコードで確かめる。連載第3回。
JavaとRust、二つの出発点――何を自動化し、何を人に書かせたか
AIにコードを書かせる場面が増えるにつれ、Rustを見かける機会も増えた。JavaScript実行環境のBunは53万行をRustへ書き換えた。ではRustとは何なのか。長くJavaでやってきた読者のために、両者の設計判断の違いを、実際にコンパイルして動かしたコードで並べて見る。連載第1回。