最初のプログラムをJavaで書く方法

筆者は、寄付文筆活動プログラムの一環として、フリーソフトウェアとオープンソースの基金を受け取るために選択しました。

イントロダクション

Javaは幅広い用途に使用される、成熟かつ設計がしっかりとされたプログラミング言語です。授業で学ぶだけでなく、商用アプリケーションの開発にも利用されています。その特長の一つは、クロスプラットフォームであることです。Javaプログラムを一度作成すると、Linux/Unixをはじめとするサーバー、WindowsやmacOS、Linuxをはじめとするデスクトップ、そしてAndroidやiOSをはじめとするモバイルオペレーティングシステムなど、多くのオペレーティングシステム上で実行することができます。

Javaは高いパフォーマンスを実現するため、コンパイル(つまり、機械最適化された)コードを実行します。開発者にとっては、実行する前にソースコードをコンパイルする必要があります。もしPHPやPythonなどのソースコードを直接実行できる言語に慣れている場合、コードを最初にコンパイルすることは開発プロセスにおける新しいステップとなるでしょう。

このチュートリアルでは、Javaで「Hello, World!」プログラムを作成します。 「Hello, World!」プログラムは、コンピュータプログラミングにおける古典的で伝統的なものです。初心者向けの完全な初めてのプログラムであり、環境が正しく設定されていることを確認する良い方法です。 「Hello, World!」プログラムを作成することで、Javaの基本的な構文やJavaプログラムのコンパイルと実行のプロセスを学び始めます。終了したら、基本的なJavaコードの記述と実行が可能になります。

前提条件

このチュートリアルでは、次のものが必要です。

  • Java (version 11 or above) installed on your machine. For Ubuntu and Debian, follow the steps for Option 1 in our tutorial, How To Install Java with Apt on Ubuntu 22.04. For other operating systems, including Mac and Windows, see the download options for Java installation.
  • A compiler provided by the Java Development Kit (JDK). To compile the source code, you’ll use the default Java compiler called javac. You can compile your source either on your local computer or on a remote server in the cloud. For Ubuntu, you can follow the JDK installation instructions in Option 1 from How To Install Java with Apt on Ubuntu 22.04. For other platforms, see Oracle’s JDK Installation Guide or the official instructions for installing OpnJDK version 11 or above.(Optional) A Java Runtime Environment (JRE) that will execute the compiled code. The JRE is part of the JDK, so you don’t have to install it additionally if you have already installed the JDK. Otherwise, you can install the JRE separately. This can be useful if you intend to run your code on a remote server where you don’t want to compile code for security reasons. In this kind of server-oriented scenario, you can download and install the JRE via the native package manager. For Ubuntu and Debian, use sudo apt install openjdk-11-jre. For other distributions, use the respective package managers and search for the keyword jre and choose version 11 or above.
  • A terminal in which to execute commands. Java is well supported on all major operating systems, which means you can follow the instructions on your local computer and use a terminal to connect to a remote server. For guidance on connecting to remote servers, follow our Initial Server Setup Guide.
  • A text editor such as nano. To get started writing Java code, you can use any text editor. However, to code efficiently, consider using an integrated development environment (IDE), such as Eclipse IDE. IDEs are useful because they correct your syntax, autocomplete your code, and allow you to test the code directly, saving you the manual compilation step. However, IDEs are not always intuitive and may confuse you if you haven’t used them before. For your first Java program, it may be easier to use the text editor you are used to.

Javaで「Hello, World!」プログラムを書くと実行する。

多くの人にとって、彼らの最初のJavaプログラムはしばしば彼らの最後のJavaプログラムでもあります。問題は、最も単純なコードさえ複雑すぎるように思え、それを完全に理解するためにはいくつかの新しいことを学ばなければならないことです。このよくある落とし穴を避けるために、まずコードを書き、実行し、それがどのように機能するかを学ぶことから始めます。

はじめに、このチュートリアルのためのコードを配置するために、hello-worldという新しいディレクトリを作成してください。プロジェクトディレクトリを作成し、それに移動するためには、ターミナルで以下のコマンドを実行してください。

  1. mkdir hello-world
  2. cd hello-world

 

次に、nanoまたはお気に入りのテキストエディタを使用して、Hello.javaというファイルを作成します。nanoの場合、以下のコマンドを使用してください。

  1. nano Hello.java

 

次のコードをファイルに追加してください。これはコンソールに「Hello, World!」メッセージを表示するための最小限のコードです。

こんにちは、世界/Hello.java
  1. public class Hello {
  2. public static void main(String[] args) {
  3. System.out.println(“Hello, World!”);
  4. }
  5. }

 

このプログラムは、「Hello, World!」というメッセージをコンソールに出力します。ファイル名(この場合は、拡張子が .java の Hello)は、ソースコード内の公開クラスの名前(Hello)と一致しなければなりません。ファイル名とソースコード内の公開クラス名を一致させることは、Javaの一般的な慣例です。(役立つコードが見つかった場合には、Javaのソースコードファイルの命名方法を知ることができるので、この慣例を覚えておくと便利です。)

ファイルを保存して閉じてください。nanoを使用して、終了するにはCTRL+Xを押し、保存するにはYを押し、ファイル名を確認してファイルを閉じるにはENTERを押してください。

ターミナルで、Hello.javaファイルがあるディレクトリと同じ場所からjavacを実行し、コードをコンパイルしてください。

  1. javac Hello.java

 

元のJavaコードは、ファイル名を指定してjavacを使用してコンパイルする必要があります。

最後に、このようにjavaの実行可能ファイルでプログラムを実行してください。 (Saigo ni, kono yō ni java no jikkōkanō fairu de puroguramu o jikkō shite kudasai.)

  1. java Hello

 

コンパイルされたコードを実行するには、javaコマンドの後ろにクラスの名前(この例ではHello)を入力する必要があります。コードの実行時には、.javaや.classなどのファイル名の拡張子は使用できません。

出力結果は次のようになります:

出力
Hello, World!

あなたのプログラムは成功裏に実行されました!基本的なJavaプログラムを作成し、コンパイルして実行しました。次に、それがどのように動作するかを見ていきます。

「Hello, World!」プログラムの理解

「PythonやJavaScriptでコードを書くことに慣れている方は、Javaにはいくつかの違いがあります。たとえ小さなプログラムでも、すべてのJavaプログラムには少なくとも2つの要素が必要です。」

  • A class for your code.
  • A main method inside your class.

Javaはオブジェクト指向言語であるため、クラスが必要です。全てのコードはクラスの一部である必要があります。クラスは機能的に関連するコードであり、通常、単独では動作しませんが、オブジェクトを作成するためのテンプレートとして機能します。オブジェクトはクラスの具体的なインスタンスであり、コード内で使用することができます。オブジェクトにはプロパティがあり、それらのメソッドがトリガーされると動作します。

あなたのプログラムでは、クラスはHelloです。

こんにちは、世界/Hello.java
  1. public class Hello {
  2. public static void main(String[] args) {
  3. System.out.println(“Hello, World!”);
  4. }
  5. }

 

コードの最初の行は、クラスの開始を示しています。クラスは常にクラスの後に続くもので始まります。この場合、クラスの名前はHelloであり、.java拡張子のファイルの名前と一致しています。その後、コードスニペットの末尾に開き中括弧({)と閉じ中括弧(})があり、その中にクラスのコードを配置します。

そのクラスにはアクセス修飾子があります(メソッドも同様です)。この場合、その修飾子はpublicですが、それは完全にアクセス可能であることを意味します。

一つのファイルにつき、クラスは一つにするのがベストプラクティスであり、コードを読みやすくします。ただし、公式の要件にはそのような制限はありませんし、一つのファイル内に無制限の数のクラスを持つことができます。ただし、ファイル内のクラスのうち、公開(public)とすることができるのは一つだけであり、そのクラスは大文字と小文字を区別する同じ名前にする必要があります。

クラスに加えて、プログラムにはmainメソッドもあります。メインメソッドはクラスの実行の始まりの地点であり、このチュートリアルではプログラム全体の始まりでもあります。非常に具体的な構文があります:public static void main(String[] args)。

こんにちは世界/Hello.java
  1. public class Hello {
  2. public static void main(String[] args) {
  3. System.out.println(“Hello, World!”);
  4. }
  5. }

 

publicはアクセス修飾子であり、メソッドの呼び出しに制限がないことを意味します。

staticは、メソッド(この場合は)またはプロパティが新しいオブジェクトを明示的に作成する必要なく呼び出すことができることを示す特別なキーワードです。これには多くの用途がありますが、特にプログラムの最初のオブジェクトをオブジェクト自体の一部でないコードで作成できるようにする「鶏と卵の問題」を解決します。

戻り値の型はvoidで、それは呼び出し元に何も返されないことを意味します。この場合、メッセージを画面に表示し、実行結果を直接消費します。voidはここでは何も返さないものの、他の場合ではメソッドはしばしば、英数字、整数、またはオブジェクトなどのさまざまな情報を返します。

主なメソッドの引数または入力はString[] argsです。 文字列の連続または文字列は、英数字の情報を保存します。角括弧([ ])は、単一の文字列ではなく、文字列の配列であることを示しています。この配列の名前はargsです。この場合、main()には引数はありませんが、もし引数があれば、この配列に含まれます。

もしもメインメソッドの属性(例えば、publicであるという事実)のいずれかを見落とすと、構文エラーは起こりませんが、意図した通りに機能しなくなる可能性があります(始まりのポイントとして)。

テキストをコンソールに出力するには、System.out.println() メソッドを使用します。

「こんにちは、世界/Hello.java」というプログラムファイル
  1. public class Hello {
  2. public static void main(String[] args) {
  3. System.out.println(“Hello, World!”);
  4. }
  5. }

 

コンピュータに対して行動を実行する方法をメソッドと言います。メソッドであることを示すために、括弧 () を使用します。メソッド自体はprintln()であり、印刷されるテキストの1つの引数を受け入れます。System.outはメソッドがJavaのコア(System)機能である出力(out)の一部であることを指定するために前に付けられます。

この場合、親パッケージである System の一部であるサブパッケージの out からメソッドを使用しています。Javaでクラスがどのように組織化されているかをよりよく理解するために、クラスの階層がファイルシステムの階層と似ていると想像してください。親フォルダと関連のある依存するサブフォルダのようなものです。Javaでは、これらのフォルダをパッケージと呼びます。関連するクラスは、階層がどれだけ細かいかに応じて、1つのパッケージまたはサブパッケージにまとめられます。

System.out.println()の引数は、文字列”Hello, World!”です。文字列は常にダブルクォーテーションで囲まれているため、それが文字列であることを私たちは知っています。PHPなどの他の言語と異なり、シングルクォーテーションはJavaの文字列には使用できません。

Javaの文法の一つの特異な点は、各文の最後にセミコロンが必要であることです。例えば、テキストを出力するための文には以下のようなものがあります:System.out.println(“Hello, world!”);。

Note

注意:もしIDEまたはJava構文サポートのあるテキストエディタを使用している場合、自動的にセミコロンの不足などの構文上の問題は心配する必要はありません。これらのプログラムが自動的に処理してくれます。

このセクションでは、プログラムを一行ずつ確認して、その動作原理を理解しました。次のセクションでは、プログラムをコンパイルして実行した際に何が起こるかを見ていきます。

「こんにちは、世界!」プログラムをコンパイルして実行する

このセクションでは、Javaプログラムのコンパイルと実行時に何が起こるかについて確認します。コードをコンパイルするために、JDKからjavacを使用しました。

  1. javac Hello.java

 

javacはソースコードを読み取り、構文エラーをチェックし、最適化を適用し、Hello.classというバイトコードファイルを生成します。Javaの.classファイルは、JREが解釈して実行できる機械語です。

プロジェクトディレクトリからlsコマンドを実行することで、Hello.classファイルを表示することができます。

  1. ls

 

このコマンドは、現在のディレクトリにあるファイルを一覧表示します。

Output

Hello.class Hello.java

コードをコンパイルした後は、JREからのjava実行ファイルで実行します。

  1. java Hello

 

JREはコンパイルされたコードのみを実行し、標準の人が読めるファイルからのコードの実行はできません。同様に、標準のテキストエディタでコンパイルされた.classファイルを読もうとしてもできません。しかし、Java Decompilerなどのツールを使用すれば、ソースコードがないプログラムのデバッグ時に役立つコンパイル済みファイルを読むことができます。

このコマンドを使用すると、JRE実行可能ファイルのJavaに、Hello.classファイルに保存されているHelloというクラスを処理するよう指示します。

コンソールに「Hello, World!」というメッセージが表示されると、以下が確認されました。

  • You have a correctly working Java environment in which you are able to compile and execute code.
  • Java has successfully located the code for the Hello class, and it is able to access it.
  • The execution flow started from the main() method. There, the method System.out.println() has been invoked with the string argument Hello, World!. The welcome message has been printed on the screen.
  • Since there is no other code, the program successfully exited.

Javaを起動することで、Java仮想マシン(JVM)と呼ばれる仮想マシンの一種が始まります。仮想マシンについての一般的な情報については、当サイトの記事「仮想マシンとは何ですか?」を参照してください。

以下のように日本語で言い換えます(オプションは1つのみ):
JVMは、外部環境、ライブラリ、またはホスティングオペレーティングシステム全体に依存せず、十分に隔離されています。JVMは、さまざまなオペレーティングシステム上で非常に似たような動作をします(正確に同じと言っても差し支えありません)。これによってJavaは移植性があり、予測可能で安全となります。これは、PHPなどの他の言語とは対照的であり、PHPインタープリタはオペレーティングシステムから多くのネイティブライブラリに依存しています。

Javaは独自の仮想マシンを実行することでそのような隔離を実現しているため、そのプロセスはかなりのメガバイトのメモリを消費します。しかし、Javaは効率的にリソースを管理するために最適化されています。Javaは独自の仮想マシンを実行することに関連するリソースの消費にもかかわらず、大規模で複雑で長時間実行されるプログラムにおいて優れたパフォーマンスを発揮します。

言い換えると、他の言語では画面に表示するメッセージをプログラミングするためにもっと簡単で効率的な方法があるかもしれません。しかし、Javaを使うことで、さまざまなオペレーティングシステムと互換性のある複雑なプログラムを作成することができます。

結論

おめでとうございます!最初のJavaプログラムが書けましたね。

Hello.javaファイル内のコードを引き続き使って、テキストを変更した場合やセミコロンを削除した場合の動作を確認してみてください。ただし、Hello.javaファイルを変更するたびにコードをコンパイル(javac Hello.java)することを忘れないでください。

もっとJavaについて知りたい場合は、当社のJavaでのコーディングシリーズをご覧ください。

コメントを残す 0

Your email address will not be published. Required fields are marked *