
この記事は、ウラジミール・アラルコンとナサニエル・モンソンによる英語の記事からの翻訳です 。 この記事は、Raspberry Piを使用したJavaプログラミングの実用的な基本を説明する一連の記事の最初の記事です。
必要なもの:
- Raspberry PiおよびRaspbian OS。
- SDカードに150 MBの空き容量。
- 基本的なプログラミングの知識。
- 基本的なコマンドラインスキル。
エントリー
この記事では、Raspberry PiでJavaプログラムを作成して実行する方法を説明します。
Javaはオブジェクト指向プログラミング言語であり、プログラムのソースコードをバイトコードに変換して、オペレーティングシステムに関係なく、再コンパイルの必要なしにそれらを実行します。 Javaには、実行結果に不可欠なWebサイトのクラスターや高負荷のアプリケーションの起動などの分野の問題を解決するために設計された幅広いテクノロジーも含まれています。 この記事では、この言語の基本のみを説明します。 その基礎を学べば、Javaテクノロジーのより詳細な説明とそれらのより複雑な例を含むインターネット上のWebサイトを簡単に見つけることができます。
最初に、Raspberry PiにJavaをインストールする方法を示します。 次に、いくつかの簡単なJavaプログラムを作成します...そして、それらを起動します! 記事の最初の部分では、一般に例を実行する方法を学習し、その後、その動作の原理について詳しく説明します。 アイデアは、実際のJavaプログラムの作成の基本を簡単に確認できるようにすることです。そして、自分でそれらの新しい要素を作成し、必要な機能を設定することができます。 これをどのように行うことができるか、最初のプログラムを書いて実行した後に説明しようとします。
1.インストール
プログラムを作成、コピー、実行するには、テキストエディターとJDKの2つが必要です。 任意のテキストエディタを使用して、Javaプログラムを作成できます。 Geanyは構文の強調表示をサポートしているため、 Geanyが好きですが、 LeafpadまたはGEditもサポートしています。 JDKとしてOpenJDK 7を選択しましたが、デフォルトでは、JDKパッケージにはコンパイラーとJava仮想マシン(JVM)が含まれています。 コンパイラはソースコードから実行するプログラムを生成し、JVMがそれらの起動を提供します。
端末ウィンドウを開き、次のように入力して、GeanyとOpenJDK 7をインストールします。
sudo apt-get install -y openjdk-7-jdk geany
必要なパッケージをすべてダウンロードしてインストールするのに約9分かかりますが、インターネット接続の速度に依存するため、時間がかかる場合があります。
完了したら、すべてが正しくインストールされたことを確認します。 これを行うには、Raspbianメインメニューの[プログラミング]タブからGeanyを開きます。 OpenJDK 7をテストするには、ターミナルウィンドウを開いて次のように入力します。
java -version
画面には、次で始まる数行が表示されます。
java version "1.7... OpenJDK ...
2.最初のプログラムの起動
プログラムを保存するディレクトリを作成することから始めましょう。 私は彼に「cupofjava」という名前を選択しましたが、必要に応じて他の名前を選択できます。 ターミナルウィンドウを開き、次のように入力します。
mkdir cupofjava
では、最初のJavaプログラム(クラス)の作成を始めましょう。 HiThereと呼びます。 Javaはオブジェクト指向プログラミング言語であり、すべてのプログラムはクラスであり、他のクラスで使用できることを忘れないでください。
テキストエディタ(私の場合はGeany )を開いてHiThere.javaファイルを作成し、以前に作成したディレクトリに保存します。 このファイルに、プログラムの次のソースコードを入力(またはコピー)します。
public class HiThere { public static void main(String[] args) { System.out.println("A Java Pi!"); } }
コンパイルします。 ターミナルウィンドウを使用して、プログラムを作成する前に「cupofjava」ディレクトリに移動します。
cd cupofjava
そしてタイプ:
javac HiThere.java
javacチームはJavaプログラムをコンパイルします。 彼女は、入力したソースコードを分析して、実行するプログラムを生成します。 15秒程度後に、このコマンドは実行を完了します。 あなたが間違えた場合、彼女はそれを報告し、この問題が発生した場所を示します。 修正するには、テキストエディターに戻り、コードを確認して誤りを修正し、ファイルを保存して、もう一度コンパイルを実行してください。 これ以上エラーがなければ、コンパイルは成功しました。 次に、現在のディレクトリに新しいHiThere.classファイルがあります。 これはプログラムであり、あなたによって起動されます。
では、プログラムを実行しましょう。 ターミナルウィンドウで、次のように入力します。
java HiThere
.class拡張子を指定する必要はありません。 違いは何ですか? javacコマンドがプログラムをコンパイルし、 javaコマンドがプログラムを開始します。
プログラムが起動して実行されます。
Hi there!
すばらしい...おめでとうございます! Raspberry Piで最初のJavaプログラムを作成して起動しました。
おそらく、プログラムがこのメッセージを書くのに数秒かかったことにお気づきでしょう。 なぜそんなに長いの? 実際、Javaは非常に高速です。 プログラム全体の実行には数ミリ秒しかかかりませんでした。残りの時間は、JVM環境の開始時にJavaコードを実行するためにロードするのにかかりました。 しかし、JVMをロードした後、プログラムが非常に迅速に動作するという良いニュースがあります。
さて、今、私たちはプログラムをより慎重に検討することができます。 基本的に1行のみを実行します。 これは次の行です。
System.out.println("A Java Pi!");
残りの行では、クラスの名前 "HiThere"(1行目)と、3行目のメインメソッドの名前を指定しています。 このクラスは、他のJavaクラスと同様に多くのメソッドを含むことができますが、この例ではメインメソッドmainを 1つだけ使用します。
タスク#1を複雑にしてみましょう:アクション。 ソースファイルをテキストエディタで開き、引用符で囲まれたメッセージを「A Java Pi!」から「My name is Name。」(名前を入力)に変更し、結果を保存します。 端末ウィンドウで、プログラムを再度コンパイルし、すでに使用されているjavacおよびjavaコマンドを使用して実行します。 すべてが正しく行われた場合、プログラムはあなたの名前を表示します。 あなたは素晴らしい仕事をしました!
注: Javaプログラムを記述する構文(コマンドの語彙と句読点)は、Cの構文に非常に似ています。Cに精通しているプログラマーなら誰でも、Javaの基本を簡単に学ぶことができます。
3. Java変数と制御構造
次の例は、変数と制御構造の使用を示しています。 最初のプログラムを保存したのと同じディレクトリに、 DiceRoller.javaを呼び出して2番目のプログラムを作成します。 以下のソースコードを入力(またはコピー)します。
import java.util.Random; public class DiceRoller { public static void main(String[] args) { Random generator = new Random(); int d = 0; while (d < 4) { System.out.print("Rolling... "); int face = 1 + generator.nextInt(6); System.out.print("I got a "+ face + ". "); if (face == 1) { System.out.print("Wow! An ACE!"); } System.out.println(); d = d + 1; } } }
ファイルに保存します。 次の2つのコマンドを入力して、新しいプログラムをコンパイルして実行します。
javac DiceRoller.java java DiceRoller
次のようなものが表示されます。
Rolling... I got a 2. Rolling... I got a 1. Wow! An ACE! Rolling... I got a 4. Rolling... I got a 5.
プログラムは4つのサイコロを振って、ユニットが勝つ1つのサイコロが勝ちます。 これがどのように機能するか知りたいですか?
この例では、いくつかの興味深いことが実証できます。 このプログラムは、2つの変数dとfaceを使用します。 d変数は、3回でも5回でもなく4回だけスローするときに適用され、 face変数は各スローで受信した値を記憶します。 プログラムは、 args変数で一連の行も受け取ります。 この変数は、設定した場合にコマンドラインパラメーターを渡しますが、この例ではそうではありません。
それでも、Javaクラスは他のクラスを使用できることを覚えていますか? この例では、これはジェネレーター変数です。 それを介して、プログラムは、擬似乱数の生成を実行する外部クラスRandomにアクセスします。 この場合、 nextInt()メソッドの1つだけを呼び出して、0〜5の範囲の乱数を取得します。
さらに、中括弧{と}は、ブロックで呼び出されるコマンドの範囲を決定するためにJavaで使用されます。 各ブロックは空であるか、1つ以上のコマンドが含まれている場合があります。 必要に応じて、制御構造を使用して、既存のブロック内のサブブロックを選択できます。
そして今、あなたはそれについて話すことができます。 この例では、 ifとwhileの 2つの制御構造が使用されます。 if制御コントロールは、括弧内の論理式がtrueの場合にのみブロックの実行を開始します 。 そして、制御中のコントロールは逆に機能しますが、括弧内の論理式がfalse( false )になるまでブロックが実行されます。 また、Javaでは、 for 、 do-while 、 switch 、 if-elseなどの制御構造が使用されます 。
この例では、 ifは式face == 1の真偽をチェックします。 これによると、勝利についてのメッセージは、ユニットがドロップアウトしたときにのみ表示されます。
構築中の制御は、変数dの値が4未満の間にブロックを4回開始します。この変数の初期値は0であり、ブロックの各サイクルで1ずつ増加します。したがって、ブロックは最初の4回実行されます(0、1、2、3)、そして、5回目(変数dが4のとき)だけ中断されます。
タスク#2を複雑にしましょう :7つのサイコロを振ってプログラムを変更し、可能な値の範囲を10に増やします。ターミナルウィンドウでプログラムを再度コンパイルし、既に使用されているjavacおよびjavaコマンドを使用して実行します。 すべてが正しく行われた場合、プログラムは7つのサイコロの値を表示します。 そして今、仕事のために!
翻訳者のメモ:リポジトリgithub.com/svininykh/magpi-issue14-ru/tree/master/cup-of-javaのソースコード、記事のテキスト、Scribusのレイアウトを見つけることができます。