2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

TypeScript VS Java 追:エンタープライズでJavaが選ばれる本当の理由を調べてみた

Posted at

前回の記事のまとめで、以下のように述べました。

TypeScriptはWebアプリの迅速な開発に、Javaはエンタープライズシステムの高性能処理に、それぞれ最適化されている

しかし、「エンタープライズシステムでJavaが選択される理由ってそれだけなのか?」と疑問を持ちました。

そこでさらに調べてみると意外な事実を発見、またある条件を満たせばTypeScriptをエンタープライズシステムでも採用してもいいことが分かりました。

そもそもエンタープライズシステムとは

大企業や組織が業務を行うために使用する大規模なシステムで、以下の特徴を持ちます。

  • 大量のデータ処理
  • 高い可用性・信頼性が必要
  • セキュリティ要件が厳格
  • 複雑なビジネスルール
  • 多数のユーザーが同時利用

例:

  • SAP(世界最大のERPシステム)
  • Salesforce(世界最大のCRMシステム)
  • 金融システム(銀行ATMシステムなど)
  • セブン-イレブンの店舗システムなど

→ エンタープライズシステムは「絶対に止まってはいけない、間違ってはいけない」システムなので、Javaの堅牢性が重宝される
(Web系は「素早く作って改善していく」スタイルで、TypeScriptの開発速度が求められる)

いや、待てよ

image.png
エンタープライズシステムでも実行速度は求められないのか?

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が選ばれる理由は、必ずしも「高性能処理」だけではなく、むしろ:

  • 企業による長期サポート
  • 既存システムとの親和性
  • 豊富な実績による安心感

といったビジネス要件も大きな要因となっている

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?