13

私はJavaを学んでいます。私は Ruby を学び、使ってきました。Ruby の本は常に、Java に対する Ruby の利点を説明しています。しかし、いくつかの利点があるに違いありません。それが、多くの人々 (特に企業) が Ruby ではなく Java を使用する理由です。Ruby に対する Java の絶対的な (哲学的ではない!) 利点を教えてください。

4

16 に答える 16

18
  • Ruby よりも Java を経験した開発者の数がはるかに多い。
  • Java には多くの既存のライブラリがあります (これは JRuby にも役立ちます)。
  • 静的型チェック (長所と短所の両方と見なすことができます)。
  • 維持する必要がある既存のコードベース。
  • 優れたツール サポート。
  • より詳細なドキュメントとチュートリアル。
  • 優れたプラクティスと落とし穴に関するより多くの経験。
  • より多くの商用サポート。それは企業にとって興味深いことです。

これらの利点の多くは、Java エコシステムが Ruby よりも成熟した結果です。これらのポイントの多くは、静的型付けと動的型付けのように主観的なものです。

于 2009-08-20T09:33:05.970 に答える
12

Ruby はよくわかりませんが、次の点を推測できます。

  • Java にはより多くのドキュメント(書籍、ブログ、チュートリアルなど) があります。全体的なドキュメントの品質は非常に良好です
  • Java には、より多くのツール(IDE、ビルド ツール、コンパイラなど) があります。
  • Javaの方がリファクタリング機能が優れています(静的型システムのためだと思います)
  • Java は Ruby よりも広く採用されています
  • Javaには明確に指定されたメモリモデルがあります
  • 私の知る限り、Java はスレッド化と Unicode をより適切にサポートしています (ここでは JRuby が役立つかもしれません)。
  • 最近の Java の全体的なパフォーマンスは非常に良好です (ホットスポット、G1 の新しいガベージ コレクターなどにより)。
  • 現在、Java には非常に魅力的で安価なサーバー ホスティングがあります
于 2009-08-20T09:44:57.490 に答える
7

Ruby に対する Java の絶対的な利点を教えてください

プログラマーが絶対値を扱うことはめったにありません。

あえて言いますが、原則として、静的型付け (Java) は動的型付け (Ruby) よりも優れていると言えます。これは、エラーをより迅速に認識し、潜在的に困難な単体テストを行う必要がないためです1)

静的な型チェックを備えた強力な型システムをインテリジェントに利用すると、時間を大幅に節約できます。


1)私は単体テストに反対しません! しかし、優れた単体テストは困難であり、コンパイラーは必要なテスト ケースの数を大幅に削減するのに大いに役立ちます。

于 2009-08-20T09:34:10.197 に答える
5

理由その1。そこには多くのレガシー Java コードがあります。Ruby は新しいものです。Ruby を知っているプログラマーはそれほど多くなく、それが得意なプログラマーはさらに少数です。同様に、Ruby よりも Java で利用できるライブラリ コードがはるかに多くあります。

したがって、Ruby が Java よりも優れているという技術的な理由があるかもしれませんが、ビジネス上の理由を尋ねている場合は、Java が依然として優れています。

于 2009-08-20T09:34:16.093 に答える
3

The Java Virtual Machine, which has had over a decade of improvements including:

  • just in time compilation in the HotSpot compiler (JIT - compiling byte code to native code)
  • a plethora of garbage collection algorithms and tuning parameters
  • runtime console support for profiling, management etc. of your application (JConsole, JVisualVM etc)
于 2009-08-20T10:15:09.303 に答える
2

言語。

私の意見では、Java 言語自体の特定の特性が、IDE とツールの強力な機能につながっていると思います。これらの機能は、非常に大きなコード ベースを処理する必要がある場合に特に役立ちます。

これらのプロパティを列挙しようとすると、次のようになります。

  • もちろん強力な静的型付け
  • 言語の文法は LALR(1) 文法であるため、パーサーを構築するのは簡単です
  • 完全修飾名 (パッケージ)

これまでに IDE で得たもの、たとえば Eclipse:

  • 非常に大規模なコード ベースを探索する優れた機能。すべての参照、呼び出し階層、クラスまたはパブリックおよび保護されたメンバーの使用法を明確に見つけることができます。これは、プロジェクトのコードを調べたり、何かを変更したりするときに非常に役立ちます。
  • 非常に役立つコード エディター。Eclipse の Java エディターでコードを書いているときに、実際には呼び出しまたはメソッドの名前だけを手で入力していて、Ctrl+1 を押すと、エディターが多くのものを生成してくれることに気付きました。そして、Eclipse が特に良いのは、コードが実際に書かれる前であっても、最初にコードの使用法を書くことを奨励することです。したがって、メソッドを作成する前にメソッド呼び出しを行うと、エディタがメソッド スタブを生成します。または、メソッドまたはコンストラクターを呼び出すときに、その場所に追加の引数を追加し、エディターが署名を変更します。さらに複雑なこともあります - あるインターフェースを受け入れるメソッドにあるオブジェクトを渡します - そしてオブジェクトのクラスがこのインターフェースを実装していない場合 - エディターはあなたのためにそれを行うことができます...など。興味深いことがたくさんあります。

Java用のツールはたくさんあります。優れたツールの 1 つの例として、Maven について言及したいと思います。実際、コードの再利用は、Maven のようなツールがある場合にのみ可能であるというのが私の意見です。その周りに構築されたインフラストラクチャと IDE との統合により、非常に興味深いことが可能になります。例: m2eclipse プラグインがインストールされています。Eclipse に新しい空のプロジェクトがあります。リポジトリのどこかに使用する必要がある(実際に再利用する)必要があるクラスがあることはわかっています。たとえば、StringUtils としましょう。コードに 'StringUtils' を書きます。Eclipse のエディターは、プロジェクトにそのようなクラスはなく、赤で下線が引かれていることを教えてくれます。Ctrl+1 を押すと、パブリック リポジトリ (実際にはリポジトリ自体ではなくインデックス) でこのクラスを検索できることがわかります。いくつかのライブラリが見つかりました。

つまり、プログラマーの生産性がすべてです。

JVM。

私の意見では、JVM (特に Sun の HotSpot) は、最近最も興味深いソフトウェアの 1 つです。もちろんここでのポイントは演奏です。しかし、HotSpot JVM の現在の実装では、非常に優れたパフォーマンスを達成するための非常に最先端の方法を模索しています。静的コンパイルよりもジャストインタイム コンパイルのすべての利点を探り、JIT コンパイルの前にコードの使用状況の統計を収集し、可能な場合は仮想呼び出しを最適化し、静的コンパイラができるより多くのものをインライン化できます。そして、ここで素晴らしいことは、これらすべてが JVM にありますが、言語自体にはありません (例としての C# とは対照的に)。実際、Java 言語を学んでいるだけの場合は、JVM の最新の実装の詳細を学ぶことを強くお勧めします。そうすることで、実際にパフォーマンスを損なうものとそうでないものを理解できます。

つまり... 実際にはIDEとツールがすべてですが、何らかの理由で、他の言語やプラットフォーム用ではなくJava用に用意されています(もちろん、.NETはWindowsの世界で大きな競争相手です)。

于 2009-08-20T13:53:35.617 に答える
2

これはおそらく完全に打ちのめされていますが、私の個人的な意見では、Ruby は、習得が容易で読みやすく、 Web アプリとして十分な速度を備えた、迅速に作成される Web アプリ (およびフレームワーク) に優れているということです。

生の筋肉とスピードにはJavaの方が適しています。

たとえば、192 MB のテキスト ファイルを MongoDB コレクションに変換する Ruby プログラムを作成しました。Rubyの実行には数時間かかりました。また、Ruby コードは可能な限りシンプルで最適化されています (1.9.2)。

Java で書き直したところ、4 分で実行されます。はい。時間から 4 分。だから、それが価値があるものだと思ってください。

于 2011-04-02T03:24:45.807 に答える
2

ネットワーク効果。Java には、より多くの人が Java を使用できるという利点があります。より多くの人が Java を使用しているため、誰が Java を使用しているか。

于 2011-04-04T00:01:02.117 に答える
2

I like this Comparison(Found on link Given by Markus!Thanks!)... Thanks to all... i am also expecting some more discrete advantages

Java-Ruby Comparison


And its Great!!

于 2009-08-20T10:14:27.823 に答える
1

Java の欠点:

  • Java で使用できるライブラリとフレームワークには多くの重複があります。
  • Java 開発者/コミュニティは、単純な問題に対して複雑なソリューションを作成する傾向があります。
  • Java には、維持すべきレガシーがさらにたくさんあります。
  • ビジネス ユーザーに迎合しすぎると、中間管理職の気分を良くする粗雑さが生まれます。言い換えれば、Java の哲学の中には、仕事を成し遂げることよりも BS に関心があるものがあります。これが、企業が Java を好んで使用する理由です。
  • 通常、Ruby よりも Java の方が多くのコードを記述する必要があります。
  • Ruby で完全に機能する Java 開発環境を実現するには、より多くの構成/インストール/セットアップが必要です。

Java の長所:

  • スピード。
  • ドキュメンテーション。
  • 必要に応じて、良いことにも悪いことにもなり得る、Ruby よりも低レベルの言語。

私の主張はどれも非常に科学的ではありませんが、Java と Ruby の背後にある哲学と個性の違いが、それらを互いに非常に異なるものにしていると思います。

于 2009-08-23T13:15:21.373 に答える
1

大きなソフトウェアを構築する必要がある場合は、協力する必要があります。多くのプログラマーがいれば、元の開発者が会社を辞めたとしても、ソフトウェアの保守を依頼できる人が必ずいるでしょう。

静的型チェックと優れた Java IDE は魔法を提供しません。これは、Ruby の代わりに多くのメンテナーに適しています。

于 2009-08-20T09:41:26.017 に答える
1

java が静的に型付けされ、ruby が動的に型付けされていることを示すだけでは不十分です。

私が間違っていたら訂正してください。しかしこれは、Ruby では実行時にプログラム (クラス定義、メソッド定義など) に追加したり変更したりできるという事実をカバーしていますか? 私の知る限り、「動的」ではない動的に型付けされた言語を使用できます(実行時に変更できます)。

Ruby では実行時にプログラムを変更できるため、実際にプログラムを実行してみるまでプログラムがどのように動作するかわかりません。あなたが書いてテストしているコードを呼び出した他のコードによって変更されました。

この予測可能性は、状況によっては Java の利点です。これが利点となる状況の 1 つは、さまざまなスキル レベルの多くの開発者がかなり大規模なエンタープライズ アプリケーションに取り組んでいる場合です。

于 2009-08-20T09:58:40.053 に答える
0

これを読んでください:RubyはJavaと同じくらいクロスプラットフォームですか?Ruby に対する Java の少なくとも 1 つの事実上の利点を認識させられました。

java の J2ME 互換部分は ruby​​ より移植性が高い

JRuby が J2ME で実行されない限り、それは永遠かもしれません

于 2009-08-21T08:02:59.647 に答える
0

より多くの選択肢があります:

  • 開発者 - たくさん雇う
  • ライブラリ - すでに発明された多くのホイール。
  • IDE - 多くの開発環境から選択できます。vi/emacs + a shell だけではありません。
  • ランタイム - システムで使用している JVM が何らかの理由で気に入らない場合は、別の実装をダウンロードまたは購入することができます。Ruby の実装はいくつありますか?

これはLANGUAGES自体とは何の関係もないことに注意してください:)

于 2009-08-21T07:57:01.890 に答える
0

パフォーマンスの向上

于 2009-08-20T09:34:57.777 に答える