前回の記事のまとめで、以下のように述べました。
TypeScriptはWebアプリの迅速な開発に、Javaはエンタープライズシステムの高性能処理に、それぞれ最適化されている
しかし、「エンタープライズシステムでJavaが選択される理由ってそれだけなのか?」と疑問を持ちました。
そこでさらに調べてみると意外な事実を発見、またある条件を満たせばTypeScriptをエンタープライズシステムでも採用してもいいことが分かりました。
そもそもエンタープライズシステムとは
大企業や組織が業務を行うために使用する大規模なシステムで、以下の特徴を持ちます。
- 大量のデータ処理
- 高い可用性・信頼性が必要
- セキュリティ要件が厳格
- 複雑なビジネスルール
- 多数のユーザーが同時利用
例:
- SAP(世界最大のERPシステム)
- Salesforce(世界最大のCRMシステム)
- 金融システム(銀行ATMシステムなど)
- セブン-イレブンの店舗システムなど
→ エンタープライズシステムは「絶対に止まってはいけない、間違ってはいけない」システムなので、Javaの堅牢性が重宝される
(Web系は「素早く作って改善していく」スタイルで、TypeScriptの開発速度が求められる)
いや、待てよ
JavaがTypeScript起因のWebアプリより実行が速いのは、あくまで長時間実行(数分〜数時間のタスク)に限ってのこと
※詳しくは前回の記事より
実際の速度要求と実行時間の関係
多くのエンタープライズシステムでは...
- 1回の処理は数秒以内
- 大量の短時間処理を並列実行
- リアルタイムレスポンスが重要
つまり、JavaのJIT効果が活かされにくい領域です。
具体例での比較
ATM残高照会(1秒以内必須)
# 処理時間比較
TypeScript/Node.js: 200ms(起動済み)
Java: 300ms(JVM起動済み、JIT効果前)
# この場合、TypeScriptの方が速い可能性
1日に100万回の小さな処理
// Javaの場合
for (int i = 0; i < 1000000; i++) {
processCustomer(customers[i]); // 各処理0.1秒
}
// JIT効果で後半は高速化
// TypeScriptの場合
for (let i = 0; i < 1000000; i++) {
processCustomer(customers[i]); // 各処理0.1秒
}
// 一定速度で処理
なぜエンタープライズでJavaが選ばれるのか
短時間処理中心なら、実際にはTypeScriptの方が速い可能性の中、何故Javaなのかと、最大の要因は...
Oracle、IBM等の企業によるサポートを受けるため
※「絶対に止まってはいけない、間違ってはいけない」システムなので
つまり、技術的な性能よりも、ビジネス要件(安定性、保守性、企業サポート) でJavaを採用されてるのでは、と私は推察します。
(あとOracleのデータベースを使ってたらJava使った方が親和性高いとか)
まとめ
エンタープライズシステムでJavaが選ばれる理由は、必ずしも「高性能処理」だけではなく、むしろ:
- 企業による長期サポート
- 既存システムとの親和性
- 豊富な実績による安心感
といったビジネス要件も大きな要因となっている
