Java初心者として、私は疑問に思っています。世界中のすべての言語の中で、なぜJavaはエンタープライズアプリケーションで頻繁に使用されるのですか?他の言語に?今後数年間はこのようになり続けるのでしょうか?
私はあなたの洞察に感謝します。前もって感謝します :)
一言:図書館。 Javaには、エンタープライズアプリケーションを開発するときに解決する必要のある一般的な問題のほとんどを解決するための優れたライブラリが多数あります。多くの場合、特定のニーズに対応するための適切な選択肢は複数あります。多くの場合、これらのライブラリは、ビジネスフレンドリーなライセンスの下で無料でオープンソースです。
実際、Javaエコシステムには選択肢が多すぎて、Javaでエンタープライズソフトウェアを開発するには、開発者が多数を作成する必要がある」と主張する人もいます。良くも悪くも最終製品に広範囲にわたる影響を与える可能性のある決定の結果これはおそらく、選択肢が少ないという評判がある.NETのような代替案の人気を推進するのに役立ちましたが、より適切に統合されているという利点がありますアプリケーションスタックとツールセット。どの方向を選択するかは、「選択の自由」と「選択の自由」のどちらを重視するかによって決まると思います。
大企業(エンタープライズソリューションを採用するタイプ)がJavaを選択する理由はたくさんあります。これらすべての理由が正しいまたは有効であると言っているわけではないことに注意してください。しかし、関連する点は、MegaCorpのCTOには有効であるように見えるということです。
学習曲線
Javaは、Cファミリーの他のメンバーの柔軟性をあまり持たない単純な言語であり、これは両方の方法をカットしますが、プログラマーの軍隊が使用するための単純な言語と見なされています。エンタープライズプロジェクトには、(正しいか間違っているかを問わず)多数の開発者が関与する傾向があり、C++よりもJava)で開発者を最低限の能力に到達させる方がはるかに簡単です。おそらく主にJavaで教育を受けた卒業生。
選択
Javaには、膨大な数のライブラリ、フレームワーク、ツールとIDE、およびサーバープロバイダーがあります。たとえそれが価格交渉の際の交渉チップとして使用するためだけであっても、企業にとっては選択肢があるのは良いことです。この言語は、企業標準の実施を可能にするコード品質ツールに適しています(前述のように、これらのツールはたくさんあります)。
プラットフォームの独立性
Javaは一度書き込み、どこでも実行(まあ、デバッグ)します。 Sunは、複数のベンダーがソリューションを実装できるようにするオープンスタンダードを積極的に奨励しています。これらの標準により、特定のベンダーが不足したり、追加料金を請求したりした場合に、あるベンダーから別のベンダーに移行できるという安心感が得られます。もちろん、実際には、各ベンダーは、顧客を非常にうまく結び付ける「付加価値」機能を提供するために最善を尽くしています。
成熟度
かなり長い間、多くのサーバーを実行していました。 Webアプリケーションが「シックスシグマ」などである必要があり、MegaCorp CTOである場合、RoRでそれを実行したい開発者のJoeを親切に見ることはありません。
タイミング/マーケティング
Javaは、プログラミングがWebに移行するときに登場しました。それは巧妙に配置され、Web開発の早い段階で強力な位置を占めました。オープンスタンダードのため、これらのプラットフォームを製造している非常に大規模な企業がいくつかあり、それらのプラットフォームを販売するのはかなり難しいJava)。
慣性
大企業は氷河期のペースで前進しているため(5がリリースされてから5年後も多くの企業がJava 1.4を使用しています))、Javaを選択した後、別の企業に移行するには莫大な投資が必要です。プラットフォーム。日々、移行する必要のあるJava)が増えています。これらの企業のほとんどは、主にコーディングショップではないため、納得させるのは非常に困難です。数千万ドルを費やしてコードベース全体を書き直し、すぐにビジネス上の利益を得ることはありません。
もう1つの理由は、SunがJava下位互換性を維持するために取った注意です。Javaコードの大部分は、最新バージョンのJVMで実行できます。問題。Javaの時代を考えると、これはかなりの成果です。一方、Javaは、これらすべての年でそれほど変わっていないと主張するかもしれません。
企業はプラットフォームの安定性を好みます。
SunはJavaをターゲットにして、早い段階で企業のニーズに対応します。これは、あらゆるレベルでベンダーの独立性を促進する標準を推進します。プラットフォームに依存しない、データベースに依存しない、アプリケーションサーバーに依存しないなど。
さらに、メッセージング、トランザクション管理、および企業が懸念しているその他の事項に関して、エンタープライズレベルのツールを宣伝しました。
Javaが登場する前は、エンタープライズレベルの作業はC++で行われる傾向があり(例外はたくさんありましたが(PowerBuilderを覚えている人はいますか?)、それがルールでした)、JavaはC++の後継として適しています。そのようなメモリ管理はお金を払う価値のないものであるビジネスアプリケーション。
これらすべてに加えて、演算子のオーバーロードなど、コードベースを実際に台無しにする可能性のある、正しく取得するのが難しい構造を回避するという点で、言語自体が企業に語りかけます。エンタープライズレベルのアプリケーションは、多くの異なる手によって処理される傾向がありますが、そのすべてが最高のプログラマーであるとは限りません。足を撃たないように安全なネットを用意することは望ましいことです。
それはまた、適切な時期にやって来ました。複数のベンダーを組み合わせてMicrosoftと競争する能力を約束した新しいパラダイム(これは.NETが存在するかなり前のことです)は、IBMやOracleなどを採用し、新たな要件である新しい穴を埋めました。 C++がもはや明白な選択ではなくなったWebアプリケーションを開発するため。
私はこれを言うべきではありませんが...
本当の理由は、コーヒーにちなんで名付けられたからです!
ビジネスとは、時間、お金、そして機会です。
Javaを使用すると、ポインタが難しいという理由だけで、コード内のエラーの数が減ります。GCを使用すると、コードからエラーのクラス全体が即座に削除されます。
第二に、Javaは、事前に作成された関数ライブラリを備えた最初の言語の1つであり、実際には多くの開発フェーズをカバーしていました。これにより、処理方法が制限されましたが、それは人々はより速く学ぶことができ、自由に使えるツールが多く、ネットワーク、GUI、Web、暗号化などを行うための優れたライブラリのセットを持っていました。Java言語は実際にはそうではなかったので、それ自体で 'それは特別ですが、JavaプラスJava APIでした。
したがって、エラーが少なく、無料でインフラストラクチャが多い言語を使用している場合は、より少ない時間でより多くのコードを使用できるようになります。確かに、コードは癌を治しません。同じタスクを達成するのにC++コードほど速くはありませんが、アプリケーションを取得するというビジネスの目標は達成されます。
より多くのコードをより少ないお金で作ると、より多くの機会を追求することができます。次に、Javaにすでに実装されているコードの観点から、テーブルに慣性をもたらし、ビジネスが快適ゾーンから離れたくない理由を理解し始めます。
個人的には、1つの大きな理由はクロスプラットフォームの問題だと思います。
「正しく」(基盤となるオペレーティングシステムを想定せずに)記述されたJavaプログラムは、任意のJVMで実行できます。これは、Windowsと結婚する.NETとは異なり、特定のプラットフォームに縛られていないことを意味します。
Javaコードがメインフレーム、Linuxルーター、Oracleデータベース内、そして当然のことながらPCで実行されるのを見てきました。
また、クライアントサーバーアプリケーションの場合、同じJ2EEインターフェイス(IBM WebSphere、BEA Weblogic、JBoss)を備えた本番品質のアプリサーバーの選択肢が豊富にあります。または、EJBが不要であると確信している場合は、サーブレットAPIに準拠するApacheTomcatなどのサーバーでSpringFrameworkを使用できます。 .NETとは対照的に、アプリサーバーに関して選択肢を見つけるのは困難です。
ORMツール、ロギング、コレクション、キャッシング、Web UIなど、特定のタスクのフレームワークに関しては豊富な選択肢があります。車輪の再発明を行う必要はほとんどありません。
最後に、Java言語の非常に現実的な欠点を嘆くのは最近流行していますが、それは人々が物事を成し遂げる方法と特定のアンチパターンを回避する方法を知っている言語です。
他の答えはすべて良いです。追加する必要があるのは、企業標準と時流効果の2つです。エンタープライズシステムを構築したい場合は、会社の確立された標準を使用しないというかなり強力なケースが必要です。これは主にJavaEEです。また、プロジェクトにリソースを提供する必要がある場合は、たとえばErlangよりもJavaプログラマーを採用する方がはるかに簡単です。
安価で、RAD、クロスプラットフォーム、そして開発者がたくさんいます。
C++での開発は遅すぎて費用がかかり、.NETは十分長い間存在していません。ビジネスの慣性は非常に大きいことを忘れないでください。
企業は、プロのプロバイダー(つまり、Sunのような会社)が支援する言語を望んでおり、会社によって作成されていないという単純な理由で、オープンソース言語を避けていることがよくあります。