翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS Cloud9 の Java チュートリアル
重要
2 GiB 以上のメモリを搭載する EC2 インスタンスでサポートされている AWS Cloud9 開発環境を使用する場合、Java の拡張サポートを有効にすることをお勧めします。有効にすると、コード補完、エラーの linting、コンテキスト固有のアクション、ブレークポイントやステッピングなどのデバッグオプションを含む生産性向上機能が使用できます。
詳細については、「Java 開発のサポートの強化」を参照してください。
このチュートリアルでは、AWS Cloud9 開発環境でいくつかの Java コードを実行できます。
このチュートリアルに従って、このサンプルを作成すると、AWS アカウントに料金が発生する可能性があります。Amazon EC2 や Amazon S3 などのサービスに対して発生する可能性がある料金も含まれます。詳細については、「Amazon EC2 料金表
トピック
前提条件
このサンプルを使用する前に、設定が次の要件を満たしていることを確認します。
-
既存の AWS Cloud9 EC2 開発環境が存在している必要があります。このサンプルは、Amazon Linux または Ubuntu Server を実行する Amazon EC2 インスタンスに接続された EC2 環境が既にあることを前提としています。別のタイプの環境またはオペレーティングシステムがある場合、このサンプルの指示を関連ツールを設定する必要がある場合があります。詳細については、「での環境の作成 AWS Cloud9」を参照してください。
-
既存の環境に既に AWS Cloud9 IDE が開いています。環境を開くと、AWS Cloud9 によってその環境の IDE がウェブブラウザで開かれます。詳細については、「AWS Cloud9 で環境を開く」を参照してください。
ステップ 1: 必要なツールをインストールする
このステップでは、一連の AWS Cloud9 開発ツールを開発環境にインストールします。Oracle JDK や OpenJDK などの Java 開発ツールのセットが環境にインストール済みである場合は、ステップ 2: コードを追加する に進むことができます。このサンプルは、OpenJDK 8 で開発されました。次の手順を実行して、環境にインストールすることができます。
-
OpenJDK 8 が既にインストールされているかどうかを確認します。これを行うには、AWS Cloud9 IDE のターミナルセッションで、
-version
オプションを使用して Java ランナーのコマンドラインバージョンを実行します。(新しいターミナルセッションを開始するには、メニューバーで、[Window (ウィンドウ)]、[New Terminal (新しいターミナル)]の順に選択します。)java -version
上記のコマンドの出力に基づいて、次のいずれかの操作を行います。
-
java
コマンドが見つからないことを出力が示している場合は、この手順のステップ 2 に進み、OpenJDK 8 をインストールします。 -
出力に
Java(TM)
、Java Runtime Environment
、Java SE
、J2SE
、またはJava2
から始まる値が含まれている場合、OpenJDK がインストールされていないか、デフォルト Java 開発ツールセットとして設定されていません。この手順のステップ 2 に進んで OpenJDK 8 をインストールし、OpenJDK 8 の使用に切り替えます。 -
出力に
java version 1.8
およびOpenJDK
で始まる値がある場合は、ステップ 2: コードを追加する に進みます。このサンプルの OpenJDK 8 が正しくインストールされます。 -
出力に
java version
未満の1.8
とOpenJDK
で始まる値が含まれている場合、この手順のステップ 2 に進んで、インストールされた OpenJDK バージョンを OpenJDK 8 にアップグレードします。
-
-
最新のセキュリティ更新およびバグ修正がインストールされていることを確認します。これを行うには、yum ツール (Amazon Linux の場合) または apt ツール (Ubuntu Server の場合) を
update
コマンドを実行します。Amazon Linux の場合:
sudo yum -y update
Ubuntu Server の場合:
sudo apt update
-
OpenJDK 8 をインストールします。これを行うには、yum ツール (Amazon Linux の場合) または apt ツール (Ubuntu Server の場合) を
install
コマンドを使用して OpenJDK 8 パッケージを実行します。Amazon Linux の場合:
sudo yum -y install java-1.8.0-openjdk-devel
Ubuntu Server の場合:
sudo apt install -y openjdk-8-jdk
詳細については、OpenJDK ウェブサイトで「How to download and install prebuilt OpenJDK packages
」を参照してください。 -
デフォルトの Java 開発ツールセットを OpenJDK 8 に切り替えるかアップグレードします。これを行うには、
--config
オプションを使用してupdate-alternatives
コマンドを実行します。このコマンドを 2 回実行し、Java ランナーおよびコンパイラのコマンドラインバージョンに切り替えるかアップグレードします。sudo update-alternatives --config java sudo update-alternatives --config javac
各プロンプトで、OpenJDK 8 の選択番号を入力します (
java-1.8
を含む番号)。 -
Java ランナーおよびコンパイラのコマンドラインバージョンが OpenJDK 8 を使用していることを確認します。これを行うには、
-version
オプションを使用して Java ランナーおよびコンパイラのコマンドラインバージョンを実行します。java -version javac -version
OpenJDK 8 が適切にインストールされて設定されている場合、Java ランナーバージョンの出力には
openjdk version 1.8
で始まる値が含まれており、Java コンパイラバージョンの出力は値javac 1.8
から始まります。
ステップ 2: コードを追加する
AWS Cloud9 IDE で、以下のコードのファイルを作成し、hello.java
という名前で保存します。(メニューバーでファイルを作成するには、ファイル、New File (新しいファイル)を選択します。 ファイルを保存するには、ファイル、保存を選択します。)
public class hello { public static void main(String []args) { System.out.println("Hello, World!"); System.out.println("The sum of 2 and 3 is 5."); int sum = Integer.parseInt(args[0]) + Integer.parseInt(args[1]); System.out.format("The sum of %s and %s is %s.\n", args[0], args[1], Integer.toString(sum)); } }
ステップ 3: コードを構築して実行する
-
Java コンパイラのコマンドラインバージョンを使用して、
hello.java
ファイルをhello.class
ファイルにコンパイルします。これを行うには、AWS Cloud9 IDE でターミナルを使用し、hello.java
ファイルと同じディレクトリから、 Java コンパイラを実行してhello.java
ファイルを指定します。javac hello.java
-
Java ランナーのコマンドラインバージョンを使用して
hello.class
ファイルを実行します。これを行うには、hello.class
ファイルと同じディレクトリから、追加する 2 つの整数 (hello
とhello.java
など) を使用して、5
ファイルで宣言した9
クラスの名前を指定します。java hello 5 9
-
出力を比較します。
Hello, World! The sum of 2 and 3 is 5. The sum of 5 and 9 is 14.
ステップ 4: AWS SDK for Java を使用できるように設定する
このサンプルを強化して AWS SDK for Java を使用し、Amazon S3 バケットの作成、利用可能なバケットの一覧表示、さらに作成したバケットの削除を行うことができます。
このステップでは、Apache Maven
Maven を使用して設定する
-
環境に Maven をインストールします。Maven がインストール済みであるかどうかを確認するには、AWS Cloud9 IDE でターミナルを使用し、
-version
オプションを使用して Maven を実行します。mvn -version
成功すると、出力に Maven のバージョン番号が表示されます。Maven が既にインストールされている場合、この手順のステップ 4 に進んで Maven を使用し、環境で新しい Java プロジェクトを生成します。
-
ターミナルを使用して次のコマンドを実行し、Maven をインストールします。
Amazon Linux の場合、以下のコマンドは、Maven が保存されているパッケージリポジトリに関する情報を取得し、この情報を使用して Maven をインストールします。
sudo wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo sudo sed -i s/\$releasever/6/g /etc/yum.repos.d/epel-apache-maven.repo sudo yum install -y apache-maven
上記のコマンドの詳細については、Fedora Project Wiki ウェブサイトの「Extra Packages for Enterprise Linux (EPEL)
」を参照してください。 Ubuntu サーバーでは、代わりに以下のコマンドを実行します。
sudo apt install -y maven
-
-version
オプションを指定して Maven を実行し、インストールされていることを確認します。mvn -version
-
新しい Java プロジェクトを生成するには Maven を使用します。これを行うには、ターミナルを使用して、Maven によってプロジェクトを生成するディレクトリから次のコマンドを実行します (環境のルートディレクトリなど)。
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
前述のコマンドは、環境でプロジェクトの次のディレクトリ構造を作成します。
my-app |- src | `- main | `- java | `- com | `- mycompany | `- app | `-App.java |- test | `- java | `- com | `- mycompany | `- app | `- AppTest.java `- pom.xml
上記のディレクトリ構図の詳細については、Apache Maven プロジェクトウェブサイトの「Maven Quickstart Archetype
」と「Introduction to the Standard Directory Layout 」を参照してください。 -
プロジェクトのプロジェクトオブジェクトモデル (POM) ファイルを変更します (POM ファイルは Maven プロジェクトの設定を定義します)。これを行うには、[Environment (環境)]ウィンドウで
my-app/pom.xml
ファイルを開きます。エディタで、ファイルの現在の内容を次のコードに置き換えて、pom.xml
ファイルを保存します。<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.mycompany.app</groupId> <artifactId>my-app</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>3.6.0</version> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <mainClass>com.mycompany.app.App</mainClass> </manifest> </archive> </configuration> <executions> <execution> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk</artifactId> <version>1.11.330</version> </dependency> </dependencies> </project>
上記の POM ファイルには、以下のように宣言を指定するプロジェクト設定が含まれています。
-
artifactid
のmy-app
設定は、プロジェクトのルートディレクトリを設定し、group-id
のcom.mycompany.app
設定はcom/mycompany/app
およびpackage
ファイルでApp.Java
サブディレクトリ構造とAppTest.java
宣言を設定します。 -
artifactId
のmy-app
設定に加えて、packaging
のjar
設定、version
の1.0-SNAPSHOT
設定、descriptorRef
のjar-with-dependencies
設定は、出力 JAR ファイルのmy-app-1.0-SNAPSHOT-jar-with-dependencies.jar
の名前を設定します。 -
plugin
セクションは、構築されるすべての依存関係が含まれている単一の JAR を宣言します。 -
com.amazon.aws
のgroupId
設定とaws-java-sdk
のartifactId
設定を含むdependency
セクションには、AWS SDK for Java ライブラリファイルが含まれています。使用する AWS SDK for Java バージョンは、version
設定で宣言します。別のバージョンを使用するには、このバージョン番号を置き換えます。
-
ステップ 5: 環境で AWS 認証情報管理を設定する に進んでください。
Gradle を使用して設定する
-
環境に Gradle をインストールします。Gradle がインストール済みであるかどうかを確認するには、AWS Cloud9 IDE でターミナルを使用し、
-version
オプションを指定して Gradle を実行します。gradle -version
成功すると、出力に Gradle のバージョン番号が表示されます。Gradle が既にインストールされている場合、この手順のステップ 4 に進んで Gradle を使用し、環境で新しい Java プロジェクトを生成します。
-
ターミナルを使用して以下のコマンドを実行し、Gradle をインストールします。以下のコマンドでは、SDKMAN! ツールをインストールして実行し、次に SDKMAN! を使用して最新バージョンの Node.js をインストールします。
curl -s "https://get.sdkman.io" | bash source "$HOME/.sdkman/bin/sdkman-init.sh" sdk install gradle
上記のコマンドの詳細については、SDKMAN! ウェブサイトの「Installation
」と Gradle ウェブサイトの「Install with a package manager 」を参照してください。 -
-version
オプションを指定して Gradle を実行し、インストールされていることを確認します。gradle -version
-
Gradle を使用して、環境に新しい Java プロジェクトを生成します。これを行うには、ターミナルを使用し、次のコマンドを実行してプロジェクトのディレクトリを作成した後、そのディレクトリに切り替えます。
mkdir my-app cd my-app
-
次のコマンドを実行して、Gradle が 環境の
my-app
ディレクトリに新しい Java アプリケーションプロジェクトを生成するようにします。gradle init --type java-application
前述のコマンドは、環境でプロジェクトの次のディレクトリ構造を作成します。
my-app |- .gradle | `- (various supporting project folders and files) |- gradle | `- (various supporting project folders and files) |- src | |- main | | `- java | | `- App.java | `- test | `- java | `- AppTest.java |- build.gradle |- gradlew |- gradlew.bat `- settings.gradle
-
プロジェクトの
AppTest.java
を変更します (これを行わない場合、プロジェクトが正常にビルドまたは実行されない可能性があります)。これを行うには、[Environment (環境)]ウィンドウでmy-app/src/test/java/AppTest.java
ファイルを開きます。エディタで、ファイルの現在の内容を次のコードに置き換えて、AppTest.java
ファイルを保存します。import org.junit.Test; import static org.junit.Assert.*; public class AppTest { @Test public void testAppExists () { try { Class.forName("com.mycompany.app.App"); } catch (ClassNotFoundException e) { fail("Should have a class named App."); } } }
-
プロジェクトの
build.gradle
ファイルを変更します (build.gradle
ファイルは Gradle プロジェクトの設定を定義します)。これを行うには、[Environment (環境)]ウィンドウでmy-app/build.gradle
ファイルを開きます。エディタで、ファイルの現在の内容を次のコードに置き換えて、build.gradle
ファイルを保存します。apply plugin: 'java' apply plugin: 'application' repositories { jcenter() mavenCentral() } buildscript { repositories { mavenCentral() } dependencies { classpath "io.spring.gradle:dependency-management-plugin:1.0.3.RELEASE" } } apply plugin: "io.spring.dependency-management" dependencyManagement { imports { mavenBom 'com.amazonaws:aws-java-sdk-bom:1.11.330' } } dependencies { compile 'com.amazonaws:aws-java-sdk-s3' testCompile group: 'junit', name: 'junit', version: '4.12' } run { if (project.hasProperty("appArgs")) { args Eval.me(appArgs) } } mainClassName = 'App'
上記の
build.gradle
ファイルには、以下のように宣言を指定するプロジェクト設定が含まれています。-
io.spring.dependency-management
プラグインでは、AWS SDK for Java 部品表 (BOM) をインポートしてプロジェクトの AWS SDK for Java 依存関係を管理します。使用するバージョンはclasspath
で宣言します。別のバージョンを使用するには、このバージョン番号を置き換えます。 -
com.amazonaws:aws-java-sdk-s3
には、AWS SDK for Java ライブラリファイルの Amazon S3 の部分が含まれています。使用するバージョンはmavenBom
で宣言します。別のバージョンを使用する場合、このバージョン番号を置き換えます。
-
ステップ 5: 環境で AWS 認証情報管理を設定する
AWS SDK for Java を使用して AWS のサービスを呼び出すたびに、呼び出しに一連の AWS 認証情報を指定する必要があります。これらの認証情報は AWS SDK for Java にその呼び出しを行う適切なアクセス許可があるかどうかを判別します。認証情報に適切なアクセス権限がない場合は、呼び出しは失敗します。
このステップでは、環境内に認証情報を保存します。これを行うには、AWS Cloud9 の環境から AWS のサービス の呼び出し の手順を実行してから、このトピックに戻ります。
詳細については、AWS SDK for Java デベロッパーガイドの「開発用の AWS 認証情報とリージョンのセットアップ」を参照してください。
ステップ 6: AWS SDK コードを追加する
このステップでは、Amazon S3 を操作してバケットを作成し、使用可能なバケットの一覧を表示した後、作成したバケットを削除するコードを追加します。
[Environment (環境)]ウィンドウから、Maven の場合は my-app/src/main/java/com/mycompany/app/App.java
ファイルを開き、Gradle の場合は my-app/src/main/java/App.java
ファイルを開きます。エディタで、ファイルの現在の内容を次のコードに置き換えて、App.java
ファイルを保存します。
package com.mycompany.app; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.AmazonS3Exception; import com.amazonaws.services.s3.model.Bucket; import com.amazonaws.services.s3.model.CreateBucketRequest; import java.util.List; public class App { private static AmazonS3 s3; public static void main(String[] args) { if (args.length < 2) { System.out.format("Usage: <the bucket name> <the AWS Region to use>\n" + "Example: my-test-bucket us-east-2\n"); return; } String bucket_name = args[0]; String region = args[1]; s3 = AmazonS3ClientBuilder.standard() .withCredentials(new ProfileCredentialsProvider()) .withRegion(region) .build(); // List current buckets. ListMyBuckets(); // Create the bucket. if (s3.doesBucketExistV2(bucket_name)) { System.out.format("\nCannot create the bucket. \n" + "A bucket named '%s' already exists.", bucket_name); return; } else { try { System.out.format("\nCreating a new bucket named '%s'...\n\n", bucket_name); s3.createBucket(new CreateBucketRequest(bucket_name, region)); } catch (AmazonS3Exception e) { System.err.println(e.getErrorMessage()); } } // Confirm that the bucket was created. ListMyBuckets(); // Delete the bucket. try { System.out.format("\nDeleting the bucket named '%s'...\n\n", bucket_name); s3.deleteBucket(bucket_name); } catch (AmazonS3Exception e) { System.err.println(e.getErrorMessage()); } // Confirm that the bucket was deleted. ListMyBuckets(); } private static void ListMyBuckets() { List<Bucket> buckets = s3.listBuckets(); System.out.println("My buckets now are:"); for (Bucket b : buckets) { System.out.println(b.getName()); } } }
ステップ 7: AWS SDK コードを構築および実行する
前のステップからコードを実行するには、ターミナルから以下のコマンドを実行します。これらのコマンドは、Maven または Gradle を使用してプロジェクトの実行可能な JAR ファイルを作成した後、Java ランナーを使用して JAR を実行します。Amazon S3 に作成するバケットの名前 (my-test-bucket
など) と、バケットを作成する AWS リージョンの ID (us-east-2
など) を入力として使用し、JAR が実行されます。
Maven の場合、以下のコマンドを実行します。
cd my-app mvn package java -cp target/my-app-1.0-SNAPSHOT-jar-with-dependencies.jar com.mycompany.app.App my-test-bucket us-east-2
Gradle の場合、以下のコマンドを実行します。
gradle build gradle run -PappArgs="['my-test-bucket', 'us-east-2']"
結果を以下の出力と比較します。
My buckets now are: Creating a new bucket named 'my-test-bucket'... My buckets now are: my-test-bucket Deleting the bucket named 'my-test-bucket'... My buckets now are:
ステップ 8: クリーンアップする
このサンプルを使用し終わった後 AWS アカウントで料金が継続的に発生するのを防ぐには、環境を削除する必要があります。手順については、「AWS Cloud9 で環境を削除する」を参照してください。