サーチ…


備考

Javaプログラミング言語は...

  • 汎用 :幅広いアプリケーションドメインでソフトウェアを作成するために設計されており、特定のドメインに特化した機能が欠けています。

  • クラスベース :そのオブジェクト構造はクラスで定義されます。クラスインスタンスは、常にそのクラス定義で指定されたフィールドとメソッドを持っています(「 クラスとオブジェクト 」を参照)。これは、JavaScriptなどの非クラスベースの言語とは対照的です。

  • 静的型付き :コンパイラは、変数型が尊重されることをコンパイル時にチェックします。たとえば、メソッドがString型の引数を必要とする場合、メソッドが呼び出されると、その引数は実際には文字列でなければなりません。

  • オブジェクト指向 :Javaプログラムの大部分は、クラスインスタンス、つまり状態(フィールド)と振る舞い(データを操作し、オブジェクトのインタフェースを外部世界に形成するメソッド)です。

  • Portablejavacを使用して任意のプラットフォームでコンパイルすることができ、結果のクラスファイルはJVMを持つ任意のプラットフォームで実行できます。

Javaは、アプリケーション開発者に「一度書いてみよう」(WORA)を可能にします。つまり、コンパイルされたJavaコードは、再コンパイルを必要とせずにJavaをサポートするすべてのプラットフォームで実行できます。

JavaコードはJava仮想マシン(JVM)によって解釈されるバイトコード( .classファイル)にコンパイルされます。理論的には、1つのJavaコンパイラで作成されたバイトコードは、異なる種類のコンピュータ上であっても、すべてのJVMで同じ方法で実行する必要があります。 JVMは、(実際のプログラムでは)頻繁に実行されるバイトコードの部分をネイティブマシンコマンドにコンパイルすることがあります。これは「ジャストインタイム(JIT)コンパイル」と呼ばれています。

Java Editionおよびバージョン

Sun / Oracleによって定義されたJavaの「エデ​​ィション」は3つあります。

  • Java Standard Edition(SE)は、一般向けに設計されたエディションです。
  • Java Enterprise Edition(EE)には、Javaで「エンタープライズグレード」サービスを構築するためのさまざまな機能が追加されています。 Java EEは別途対象となります。
  • Java Micro Edition(ME)は、 Java SEのサブセットに基づいており、限られたリソースを持つ小型デバイスでの使用を目的としています。

Java SE / EE / MEエディションには別のトピックがあります。

各エディションには複数のバージョンがあります。 Java SEのバージョンは以下のとおりです。

Javaのインストール

Java(Standard Edition)のインストールについては別のトピックがあります。

Javaプログラムのコンパイルと実行

別のトピックがあります:

次は何ですか?

ここには、Javaプログラミング言語の学習と理解を継続するためのテーマへのリンクがあります。これらの科目は、Javaプログラミングの基本であり、あなたを始めてくれます。

テスト

Javaには標準ライブラリでのテストはサポートされていませんが、テストをサポートするように設計されたサードパーティライブラリがあります。 2つの最も一般的なユニットテストライブラリは次のとおりです。

その他

  • Javaのためのデザインパターンがで覆われているデザインパターン
  • Android用プログラミングはAndroidでカバーされています
  • Java Enterprise Editionテクノロジーは、 Java EEでカバーされています
  • OracleのJavaFXの技術はで覆われているJavaFXの

OracleはそのパブリックダウンロードサイトへのJava SEの更なる更新情報を掲載停止する時期バージョン 1.セクションエンド・オブ・ライフ(無料)日付です。重要なバグ修正やセキュリティ修正、Java SEの一般的なメンテナンスに継続的にアクセスする必要があるお客様は、 Oracle Java SEのサポートを通じて長期的なサポートを受けることができます。

バージョン

Java SEバージョンコード名エンド・オブ・ライフ(無料1発売日
Java SE 9(アーリーアクセス) 無し 未来 2017-07-27
Java SE 8 クモ未来 2014-03-18
Java SE 7 イルカ 2015-04-14 2011-07-28
Java SE 6 マスタング 2013-04-16 2006-12-23
Java SE 5 2009-11-04 2004年10月4日
Java SE 1.4 マーリン 2009年11月4日より前 2002-02-06
Java SE 1.3 チョウゲンボウ 2009年11月4日より前 2000-05-08
Java SE 1.2 遊び場 2009年11月4日より前 1998年12月8日
Java SE 1.1 無し 2009年11月4日より前 1997-02-19
Java SE 1.0 オーク 2009年11月4日より前 1996年1月21日

最初のJavaプログラムを作成する

HelloWorld.javaという名前のテキストエディタまたはIDEで新しいファイルを作成します。次に、このコードブロックをファイルに貼り付けて保存します。

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

Ideoneでライブ実行

注意: Javaをpublic classとして認識し( コンパイル時エラーをスローしないため )、ファイル名は拡張子が.javaのクラス名(この例ではHelloWorld )と同じでなければなりません。それの前にpublicアクセス修飾子もなければなりません。

命名規則では、Javaクラスは大文字で始まり、 キャメルケース形式(各単語の最初の文字が大文字になります)であることが推奨されています。この規則では、アンダースコア( _ )とドル記号( $ )を使用することをお勧めします。

コンパイルするには、ターミナルウィンドウを開き、 HelloWorld.javaのディレクトリに移動します。

cd /path/to/containing/folder/

注: cdはdirectoryを変更するterminalコマンドです。

次のように、 javac続いてファイル名と拡張子を入力します。

$ javac HelloWorld.java

'javac' is not recognized as an internal or external command, operable program or batch file.というエラーを得るのはかなり一般的'javac' is not recognized as an internal or external command, operable program or batch file. JDKをインストールしていても、 IDEからプログラムを実行することができます。 eclipseパスは、デフォルトで環境に追加されていないので、など。

場合は、Windows上でこれを取得、解決するには、まずjavac.exeパスを参照してみてください、それはおそらくあなたのC:\Program Files\Java\jdk(version number)\binます。それから、以下でそれを実行してみてください。

$ C:\Program Files\Java\jdk(version number)\bin\javac HelloWorld.java

以前はjavacを呼び出していたとき、上記のコマンドと同じでした。その場合、あなたのOSjavacがどこに存在しているかを知っていました。今度は、毎回パス全体を入力する必要はありません。これをPATHに追加する必要があります

Windows XP / Vista / PATH環境変数を編集するには:

  • コントロールパネル⇒システム⇒高度なシステム設定
  • [詳細設定]タブ⇒環境変数
  • 「システム変数」で下にスクロールして「PATH」を選択します⇒編集

これを元に戻すことはできませんので注意してください。まず、既存のパスをメモ帳にコピーします。次にjavacへの正確なPATHを取得するにはjavac存在するフォルダを手動で参照し、アドレスバーをクリックしてコピーします。それはc:\Program Files\Java\jdk1.8.0_xx\binように見えるはずです

「変数値」フィールドに、既存のすべてのディレクトリのIN FRONTとそれに続くセミコロン(;)を貼り付けます。既存のエントリは削除しないでください。

Variable name  : PATH
Variable value : c:\Program Files\Java\jdk1.8.0_xx\bin;[Existing Entries...]

今これは解決するはずです。

Linuxベースのシステムでは、 ここで試してみてください

注意: javacコマンドはJavaコンパイラを起動します。

コンパイラはHelloWorld.classというバイトコードファイルを生成し、 Java仮想マシン(JVM)で実行することができます。 Javaプログラミング言語コンパイラjavacは、Javaプログラミング言語で記述されたソースファイルを読み込み、 bytecodeクラスファイルにコンパイルします。オプションで、コンパイラは、 Pluggable Annotation Processing APIを使用して、ソースファイルおよびクラスファイルにあるアノテーションを処理することもできます。コンパイラはコマンドラインツールですが、JavaコンパイラAPIを使用して呼び出すこともできます。

プログラムを実行するには、 java後にmainメソッド(この例ではHelloWorld )を含むクラスの名前を入力します。 .classがどのように省略されているかに注意してください:

$ java HelloWorld

注: javaコマンドはJavaアプリケーションを実行します。

これはコンソールに出力されます:

こんにちは世界!

最初のJavaプログラムを正常にコーディングしてビルドしました!

注意: Javaコマンド( javajavacなど)が認識されるようにするには、次のことを確認する必要があります。

JVMが提供するコンパイラ( javac )とエグゼキュータ( java )を使用する必要があります。インストールしたバージョンを確認するには、コマンドラインでjava -versionjavac -versionと入力しjava -version 。プログラムのバージョン番号が端末に表示されます( 1.8.0_73 )。


Hello Worldプログラムを詳しく見る

"Hello World"プログラムには、 HelloWorldクラス定義、 mainメソッド、およびmainメソッド内のステートメントで構成される単一のファイルが含まれています。

public class HelloWorld {

classキーワードは、 HelloWorldクラスのクラス定義を開始します。すべてのJavaアプリケーションには、少なくとも1つのクラス定義( クラスに関する詳細情報 )が含まれています。

    public static void main(String[] args)  {

これはJVMがプログラムを実行できるエントリーポイントメソッドです(名前とpublic static void main(String[])シグネチャで定義されています)。すべてのJavaプログラムには1つが必要です。それは:

  • public :メソッドはプログラムの外側からでもどこからでも呼び出すことができます。詳細については、 Visibilityを参照してください。
  • static :オブジェクトが存在し、クラスレベルでオブジェクトを作成せずにそれ自身で実行できることを意味します。
  • void :値を返さないことを意味します。 注:これはCやC ++と異なり、 intなどのリターンコードが必要です(Javaの方法はSystem.exit() )。

この主な方法は以下を受け入れる:

これのほとんどはJavaのエントリーポイントメソッドに必要です。

必須ではない部品:

  • 名前argsは変数名なので、通常はargsと呼ばれますが、任意の名前で呼び出すことができます。
  • 配列がvarargsに渡されるので、そのパラメータ型が配列( String[] args )かVarargsString... args )かどうかは関係ありません。

注: 1つのアプリケーションには、エントリーポイント( main )メソッドを含む複数のクラスが存在する場合があります。アプリケーションのエントリポイントは、 javaコマンドの引数として渡されるクラス名によって決まります。

mainメソッドの内部では、次の文が表示されます。

        System.out.println("Hello, World!");

このステートメントを要素ごとに分解しましょう:

素子目的
System これは、後続の式がjava.langパッケージのSystemクラスを呼び出すことを示します。
. これは「ドット演算子」です。ドット演算子はクラスメンバー1へのアクセスを提供します。すなわちそのフィールド(変数)とそのメソッド。この場合、ドット演算子を使用すると、参照することができますout内の静的フィールドをSystemクラス。
out これは、標準出力機能を含むSystemクラス内のPrintStream型の静的フィールドの名前です。
. これは別のドット演算子です。このドット演算子は、 out変数内のprintlnメソッドへのアクセスを提供outます。
println これはPrintStreamクラス内のメソッドの名前です。特にこのメソッドは、パラメータの内容をコンソールに出力し、その後に改行を挿入します。
( この括弧は、メソッドがアクセスされている(フィールドではない)ことを示し、 printlnメソッドに渡されるパラメータを開始します。
"Hello, World!" これは、パラメータとしてprintlnメソッドに渡されるStringリテラルです。各端の二重引用符は、テキストを文字列として区切ります。
) この括弧は、 printlnメソッドに渡されるパラメータのクロージャを示します。
; このセミコロンはステートメントの終わりを示します。

注: Javaの各ステートメントは、セミコロン( ; )で終わらなければなりません。

メソッド本体とクラス本体が閉じられます。

    }  // end of main function scope
}      // end of class HelloWorld scope 

ここでは、オブジェクト指向のパラダイムを示す別の例があります。 1つの(はい、1つ!)メンバーでフットボールチームをモデル化してみましょう。もっと多くのことがあるかもしれませんが、私たちが配列になったときにそれについて議論します。

まず、 Teamクラスを定義しましょう:

public class Team {
    Member member;
    public Team(Member member) {  // who is in this Team?
        this.member = member;  //  one 'member' is in this Team!
    }
}

では、 Memberクラスを定義しましょう:

class Member {
    private String name;
    private String type;
    private int level; // note the data type here
    private int rank; // note the data type here as well

    public Member(String name, String type, int level, int rank) {
        this.name = name; 
        this.type = type;
        this.level = level;
        this.rank = rank;
    }
}

なぜ私たちはここでprivateを使用しますか?まあ、あなたの名前を知りたい人は、あなたのポケットに入ってあなたの社会保障カードを引き出す代わりに、あなたに直接尋ねるべきです。このprivateは、外部のエンティティがあなたの変数にアクセスするのを防ぎます。 privateメンバーは、ゲッター関数(以下に示す)を介してのみ返すことができます。

すべてをまとめてゲッターとメインメソッドを追加した後は、次のようになります。

public class Team {
    Member member;
    public Team(Member member) {  
        this.member = member;  
    }

    // here's our main method
    public static void main(String[] args) {
       Member myMember = new Member("Aurieel", "light", 10, 1); 
       Team myTeam = new Team(myMember); 
       System.out.println(myTeam.member.getName());
       System.out.println(myTeam.member.getType());
       System.out.println(myTeam.member.getLevel());
       System.out.println(myTeam.member.getRank());
    }
}

class Member {
    private String name;
    private String type;
    private int level;
    private int rank;

    public Member(String name, String type, int level, int rank) {
        this.name = name; 
        this.type = type;
        this.level = level;
        this.rank = rank;
    }
    
    /* let's define our getter functions here */
    public String getName() { // what is your name?
        return this.name; // my name is ...
    }
   
    public String getType() { // what is your type?
        return this.type; // my type is ...
    }
    
    public int getLevel() { // what is your level?
        return this.level; // my level is ...
    }
    
    public int getRank() { // what is your rank?
        return this.rank; // my rank is
    }
}

出力:

Aurieel
light
10
1

イデオンで走る

もう一度、 Testクラスのmainメソッドは、プログラムのエントリポイントです。 mainメソッドがなければ、Java仮想マシン(JVM)にプログラムの実行開始位置を伝えることはできません。


1 - HelloWorldクラスはSystemクラスとの関連が少ないため、 publicデータにのみアクセスできます。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow