※本記事は、Alexa Morales による “The code underpinning the Brazilian healthcare system—and other world-changing Java applications” を翻訳したものです。
Java の偉大なアプリ 25選に対する読者の反応
August 28, 2020
Javaの偉大なアプリケーション、フレームワーク、プラットフォーム、ライブラリ25選の掲載にあたっては、少しばかり不安がありました。何と言っても、開発者の皆さんは要求の厳しい方々です。しかしこの記事には、Reddit、Slashdot、Hacker News、Twitterなどで数多くのコメントが寄せられ、編集長宛てのメッセージも多数届きました。また、米国国家安全保障局やa.i. solutionsなど、25選に掲載された方々がソーシャル・メディアに喜びの声を投稿していました。

米国国家安全保障局は、本誌がGhidraバイナリ逆コンパイル・ツールに気づいたことをひそかに喜んでいました。

a.i. solutionsのチームも、DSTE軌道設計ツールが掲載されたことに満足していました。
その内容は、ポジティブで丁重なものでした。Java開発者の優れた特性がここに表れているのではないでしょうか。しかし、開発者の本質として、25選に何が記載されるべきだったかという意見も数多くありました。
Javaが世界を変えたのは素晴らしいことですが、25選に米国以外の世界が十分には反映されていなかったことは反省材料です。たとえば、ブラジルの医療情報システムと税システムを管理するために書かれたJavaコード(2005年のDuke’s Choice Award受賞)があります。また、世界人口の30 %を占める、低中所得の72か国で採用されているJavaベースの国家医療管理情報システムDHIS2(実は世界最大)もあります。このシステムの新しいCOVID-19監視パッケージは、モバイルでの使用に最適化されており、各政府が地域において行うパンデミック追跡に役立てられています。
思い出に感謝
思い出を楽しく振り返ったという多くのコメントをいただきました。たとえばPeter Van Wazer氏は、1990年代後半にIBMの20人からなるプログラマーのチームでThin Client Managerを書いていたころのことを思い出したそうです。同氏によれば、Thin Client Managerは「Javaで書かれた初めての大規模ビジネス・アプリ」だったということです。
Van Wazer氏は、AS/400ミニコンピュータが誕生した米国ミネソタ州ロチェスターにあるIBMの事業所でJavaを初めて学んだ人々の中の1人でした。各タスクがネットワーク・ステーションとの間で情報を送受信するために実装しなければならない一連のインタフェースを作成するため、Javaでシン・クライアントのタスク管理ツールをコーディングしていました。実行時に問題が起きてもアプリケーション全体が停止しないように、タスク管理ツールでエラーの処理を行いました。
Van Wazer氏は、「マネージャーはSun Microsystemsから、『このタスク管理ツールはJavaで書かれた初めてのフレームワークであり、Java言語で意図したとおりのものだ』と言われました」と振り返っていました。
Van Wazer氏は現在もロチェスターにいて、Mayo Clinicで契約Java開発者として働いています。
開発者ソフトウェアの決定版
前述のブラジルのソフトウェアは、Java ChampionでMicrosoftのJavaプロダクト・マネージャーであるBruno Borges氏が指摘してくださったものですが、それ以外に25の偉大なJavaアプリに欠けていたものは何でしょうか。
Java ChampionのVlad Mihalcea氏は、Hypersistence Optimizerを提案しました。このソフトウェアは、開発者がJava Persistence APIやHibernate(このツール自体も、複数の読者が25選に含めるべきだったと考えています)を使用し、Javaオブジェクトをリレーショナル・データベースにマッピングするという困難な作業を進める際に役立つものです。
別のTwitterコメントでは、Cassandra、Spring Framework、Apache Spark、Hazelcastオープンソース・インメモリ・データ・グリッド、Apache Kafkaが挙げられていました。同感ではありますが、25という数にはこだわりたかったのです。
Javaベースの言語であるLinotteは、フランス語で書かれたコードだけでプログラミングを教えるものです。この話題は、今回の記事に関するTwitterスレッドに登場しました。そこから思い当たったのが、Javaベースのビジュアル・プログラミング環境であるVRL-Studioです。ドイツのゲーテ大学フランクフルトのリサーチ・サイエンティストであり、Java ChampionのMichael Hoffer氏が開発しました。
頼れる金融ソフトウェア
Twitterでは、thinkorswimデスクトップ・トレーディング・アプリは完全にJavaで書かれているという情報も寄せられました。TD Ameritradeがその事実を認めたのは筆者にとって幸運でした。さらに言えば、2019年にTD Ameritradeを買収したCharles Schwabもthinkorswimソフトウェアの採用を計画しています。
読者のVictor Duran氏は、「スウェーデンの経済全体をキャッシュレス化した」として、SwishというJavaアプリを推薦しました。2020年5月にSwishで取り扱われた金額は、250億スウェーデン・クローナでした。米ドルに換算すると28億ドル余りになります。Swishを運営する会社の広報担当者によると、バックエンドの一部がJavaで書かれているということです。
ゲームと視覚化
もちろん、Javaゲームにもたくさんの選択肢がありますが、RunescapeとOld School Runescapeを含めていないという声もありました。この2つは、現在に至るまで数百万人が楽しんでいるJavaベースの人気アプリケーションです。
Java Magazineで多数の記事を執筆しているIan Darwin氏が、JavaベースのCrossFireは世界トップクラスのクロスワード・パズル作成プログラムであると記していました。このプログラムは、New York Times、Washington Post、Times of Londonやその他の出版社に向けてパズルを作成している多くのエキスパートが使用しています。New York Timesのパズルを作成しているWill Shortz氏のためのカスタム・エクスポート形式まで存在するそうです。「そしてもちろん、クロス・プラットフォームです」とDarwin氏は述べています。
Redditを利用しているある読者は、Jake2が含まれていなかったのが残念だと述べていました。Jake2は、すでにメンテナンスが終了しているQuake2ゲーム・エンジンを移植したものです。ただし、Jake3のWebページはLightweight Java Game Libraryにもリンクされています。このライブラリは、JavaバインディングによってVulkan、OpenCL、OpenAL、LibOVRなどにアクセスし、GPUや仮想現実に関連した機能をクロス・プラットフォームで実現するためのものであり、活発に開発が行われている模様です。
Art of Illusionは、高度なモデリングとレンダリングが可能な、無料のオープンソース・スタジオです。グラフィック言語を使い、サブディビジョン・サーフェスを使ったモデリング、スケルトン・アニメーション、テクスチャやマテリアルの作成などを行うことができます。
Project Looking Glassを挙げたコメントもありました。2006年以降は活動が途絶えていますが、Project Looking GlassはSunがスポンサーとなっていた3Dデスクトップ環境です。川原英哉氏が開発を始め、サンフランシスコで開催されたLinuxWorld Expo 2003でデモが行われました。Looking Glassは、その後に誕生したユーザー・インタフェースのさまざまな面に影響を与えました。
Project Looking Glassのリバーシブル・ウィンドウ
効率的な通信
コメントで寄せられたように、WordPressとTelegramのモバイル・アプリはどちらもJavaで書かれています。そして、Telegramは自己破壊型の暗号化チャット機能により、アクティブ・ユーザーが4億人を超える、世界屈指の人気アプリとなりました。
Jitsiは、JavaおよびWebRTCベースの一連のアプリケーションで、テレビ会議、録画、サイマルキャストを安全に実現します。現在、Jitsiは企業向け通信会社である8×8が所有していますが、強力な開発者コミュニティも存在し、オープンソース・プロジェクトを支えています。開発者が無料のミーティングのために使う以上の何かを行う場合、おそらく一番簡単な方法はアプリケーションにJavaScript APIを埋め込むことです。そうすれば、meet.jit.siにホストされた安全なテレビ会議ウィンドウを開くことができます。その裏で、meet.jit.siは偶然にもOracle Cloud Infrastructureで動作しています。
科学と AI のアプリケーション効率的な通信
最後のカテゴリでは、CERNの複数の研究者から、大型ハドロン衝突型加速器(LHC)のソフトウェアやその他のデータ分析ソフトウェアの一部がJavaで書かれているという声が寄せられました。このJavaで書かれているソフトウェアの中に、LHCのデータを取得して保存するLHC Logging Serviceがあります。こちらの2006年の論文からわかるように、LHC Logging Serviceでは長年にわたってJavaが使われています。
読者のMike Tung氏は、自ら起業した会社Diffbotについて教えてくれました。「私たちはAIを使って世界最大の自律型知識グラフを構築しており、現在では、エンティティが10億個、事実が1兆個をそれぞれ突破しています。私たちは、おそらく最大級のJavaインフラストラクチャを運用しており、主にJavaで書かれたAIを使っています。数千個のCPUコアを使い、Web全体をクロールして分析しています」とTung氏は説明しました。
Tung氏は、DiffbotのチームにPure Javaによる最速の行列乗算ライブラリの作者や、Javaベースの有名な知識グラフの作者がいることも付け加えました。
そこでひらめいたのが、Oracle Labsで新しく公開された、Tribuoです。この機械学習ライブラリには、分類、回帰、クラスタリングのツールに加え、Javaプログラムからscikit-learnやPyTorchを使えるインタフェースが含まれています。
もう1つあります。Aftab Ahmad氏は、「人間の脳のデータに関するものが何もなかったので、驚いています。1990年代は、Javaだけでなく、脳の時代でした」と記していました。
Ahmad氏は、最初の言語としてJavaを学びたい工学分野の学生向けに開講される大学院レベルのコースで教える準備をしており、実際の研究プロジェクトに活用できる優れたAPIを探しています。
2013年にDuke’s Choice Awardを受賞した、Neuroph Javaニューラル・ネットワーク・フレームワークは候補の1つかもしれません。このフレームワークを使って人工頭脳を作る方法を説明したチュートリアルまであります。もっと優れた候補をご存じの方がいらっしゃいましたら、ぜひお知らせください。
さらに詳しく
- Java の偉大なアプリ 25選
- Java 14、Java 15、Java 16、およびそれ以降でのプレビュー機能の役割
- JDK 最優秀機能トーナメント
- Java の 25 年:テクノロジー、コミュニティ、ファミリー(英語)
- パーソナル・メトリック:開発者が生産性を高めるための5つのヒント(英語)
- 2020年のJava(英語)
- Javaプログラミングのキャリアを加速させる(英語)
- Javaの昔と今:企業をサポートし続けてきた25年(英語)

Alexa Morales
オラクルの開発者コンテンツ担当ディレクター。Software Development誌の元編集長。15年超にわたり、テクノロジー・コンテンツ・ストラテジストおよびジャーナリストとして活動している。
