Ruby
 Computer >> コンピューター >  >> プログラミング >> Ruby

JavaとRubyの7つの主な違い

JavaからRubyにどのように移行しますか?

このガイドでは、主な違いについて学習します あなたがジャンプをするのを助けるために2つの言語の間で。

これは、Java / C#からRubyへの移行を検討している多くの人々にとって素晴らしいことです。

しかし…

違いに興味があるだけなら、これもあなたにぴったりです。

やってみましょう!

静的型付けと動的型付け

どちらのプログラミング言語のコードを見る場合でも、入力スタイルは最大かつ最も顕著な違いです。

状況は次のとおりです

  • Javaは静的型付けを使用します
  • Rubyは動的型付けを使用します

正確にはどういう意味ですか?

入力とは、変数とメソッドの引数がどのように機能するかを指します。

強く(または静的に)型付けされた言語は、すべての変数が受け入れることができる型(クラス)を宣言する必要があります。

このように見えます

int n = 1;

intの場所 タイプは、この場合はInteger

なぜそれが役立つのですか?

この変数に他のタイプのオブジェクトを割り当てようとすると、コンパイラがエラーを発生させ、プログラムが実行されないためです。

これは、作業しているオブジェクトの種類を常に把握できることを意味します。

柔軟性が低いという欠点があります。

対照的に…

動的型付けは柔軟性がすべてであり、変数は特定の型に関連付けられていないため、型を変更できます。

ここに例があります

n = 1
n = "abc"

欠点は、コードがずさんで、コードを読むときにそれほど多くのエラーが発生しない場合に、より多くのエラーが発生する可能性があることです。

これが大きな違いの1つです!

次のセクションで詳しく説明します。

構文:Simple Things&Boilerplate

Javaは定型文の王様です。

ボイラープレートは、コードを構文的に有効にするためだけに追加する必要のあるすべての「セットアップ」コードです。

結果として…

Javaは単純なことを複雑にします!

JavaのHelloWorld

class Hello {
  static public void main() {
    System.out.println("Hello World");
  }
}

次に、これをクラスファイルにコンパイルして実行する必要があります。

2つのステップ!

(IDEはこれを支援します。)

もう1つの違いは、Javaの式はセミコロンで終わることです。これは、Rubyでは必要ありません。ほとんどの場合、Rubyでは括弧を省略できます。

RubyのHelloWorld

puts "Hello World"

うん。

それだけです。

Rubyの方がコードがきれいになっているようです。同意しますか?

その上に…

このコードは、端末から1つのコマンドで実行できます!

コンパイル手順は必要ありません。

コードで遊ぶ:組み込みREPL

Rubyにはirbが付属しているため、コードをすばやくテストできます。

ファイルを保存する必要もありません。

または、エディターを開きます!

Javaにはこれが組み込まれていません。少なくとも、Java9までは組み込まれていません。

ファイル名とファイル編成

Javaは、特定のファイルの命名構造と編成を強制します。

Helloという名前の(パブリック)クラスがある場合 、ファイル名はHello.javaである必要があります 。

これはRubyには当てはまりません。

また、Rubyにはプライベートクラスの概念がありません。

例外処理

Javaには2種類の例外があります:

  • チェックされた例外
  • チェックされていない例外

違いは?

チェックされた例外を処理する必要があります!

または、プログラムは実行されません。

Rubyには1種類の例外しかありません。

必要に応じて処理できます。通訳者はそれについて文句を言うことはありませんが、プログラムがクラッシュする可能性があります。

コンパイラと言語のライセンス

最後に、ライセンスについて話しましょう。

これは通常、プログラミング言語では問題になりません。

なぜですか?

彼らはオープンソースであり、1人がヘッドメンテナー兼デザイナーです。

ここではJavaが異なります。

大企業(Oracle)にとっては、ライセンスに影響があります。

実際

Javaランタイムには「OracleJDK」という2つのバージョンがあり、バージョン9以降は(私が正しく理解していれば)商用製品です。

次に、これもOracleに属する「OpenJDK」があります。

ただし、オープンソースライセンスがあります。

ライブラリとコードの配布

もう1つの大きな違いは、Rubyに関する私のお気に入りの1つ(Matzのお気に入りでもあります)はRubyGemsです。

ライブラリ(HTTPクライアントなど)の配布がはるかに簡単になります。

なぜなら

  • 中央リポジトリがあります
  • 言語に統合されています
  • 多くのオープンソースの宝石が利用可能で、簡単に見つけることができます

私の知る限り、Javaにはこれに近いものはないので、これは大きな勝利です。 Rubyの場合。

概要

JavaとRubyの主な違いについて学びました。静的型付け、定型文、ファイル命名などが含まれます。

これで、Rubyを理解する準備が整い、正しい判断を下せるようになりました。

読んでくれてありがとう! 🙂


  1. コレクションとJavaのコレクションの違いは?

    コレクション はインターフェースですが、コレクション ユーティリティです Javaのクラス。 セット、リスト、 およびキュー コレクションのサブインターフェイスの一部です インターフェース、マップ インターフェースもコレクションの一部です フレームワークですが、コレクションを継承しません インターフェース。 収集の重要な方法 インターフェースはadd()、remove()、size()、clear() などとコレクション クラスには静的のみが含まれます sort()、min()、max()、fill()、copy()、reverse()などのメソッド など コレクションインターフェイスの構文

  2. Javaのwait()メソッドとsleep()メソッドの違いは?

    sleep()メソッド 静的です スレッドの方法 クラスであり、現在実行中のスレッドを「実行不可」状態に送信できます 一方、 wait() メソッドはインスタンスメソッドであり、スレッドオブジェクトを使用して呼び出しており、そのオブジェクトに対してのみ影響を受けます。 sleep() 時間切れ後のメソッドウェイクアップまたはinterrupt()の呼び出し メソッド、 wait() 時間切れ後のメソッドウェイクアップまたはnotify()の呼び出し またはnotifyAll() 方法。 sleep() メソッドはロックまたはモニートを解放しません r待機中、 wait() メソッドは、待機