App Engine Java 8 ランタイムのよくある質問

App Engine Java 8 スタンダード ランタイムについてよく寄せられる質問を以下に示します。

Java 7 スタンダード ランタイムと Java 8 スタンダード ランタイムの違いは何ですか?

一般に、Java 7 ランタイムで使用できる機能はすべて、Java 8 ランタイムでも使用できます。

アプリケーション コードの動作が Java セキュリティ マネージャーの制御を受けるように設定されている場合、または Java 7 セキュリティ サンドボックスによる一部のクラスの読み込み制限が公開されている場合は、アプリケーションが異なる動作をすることがあります。お客様の要求に対応する前に、必ずアプリケーションを Java 8 ランタイムでテストしてください。

Java 8 ランタイムで Kotlin を使用できますか?

はい。GitHub レポジトリにある Kotlin サンプルを確認してください。

App Engine で IntelliJ IDEA Community Edition を使用できますか?

はい。組み込みの Maven 統合を使用します。

また、IntelliJ Ultimate Edition も使用できます。Ultimate Edition には、より多くのウェブ アプリケーション開発機能が用意されており、App Engine 開発プロセスとの緊密な統合を実現します。

App Engine Cloud Endpoints v1.0 は Java 8 ランタイムで動作しますか?

いいえ。Cloud Endpoints Frameworks バージョン 2.0 に移行する必要があります。

再パッケージ化されたクラスで java.lang.NoClassDefFoundError が表示されるのはなぜですか?

com/google/appengine/repackaged/com/google/common/collect/ImmutableList などの再パッケージ化された内部クラスは、以前のバージョンの App Engine API JAR で定義されていたとしても、Java 8 ランタイムではもう使用できません。

Java 8 アプリで再パッケージ化されたクラスを使用する必要がある場合は、appengine-web.xmlappengine.api.legacy.repackaging を true に設定します。次に例を示します。

<system-properties>
  <property name="appengine.api.legacy.repackaging" value="true">
</system-properties>

これらのクラスは、再パッケージ化されていないパブリック クラスに置き換えることをおすすめします。

Java 7 と Java 8 の間でトラフィック分割を実行できますか?

はい。各サービス / モジュール バージョンでは、異なるランタイム バージョンを使用でき、トラフィック分割がサポートされます。

インスタンスがリクエストを受け取っていないとき、Java 8 スレッドはどのように処理されますか?

App Engine API で作成されたスレッドは、引き続き以前と同様に動作します。

自動スケーリング 手動スケーリング 基本スケーリング
インスタンスはリクエストがないために終了します。 インスタンスは最後のリクエストの後(デフォルト: 5 分)に終了します。 動作し続けます。

App Engine Java 8 ランタイムでは、どのようなメタデータ サーバー機能がサポートされますか?

App Engine Java 8 ランタイムでは、次のメタデータ サーバー URL がサポートされます。

/computeMetadata/v1/project/numeric-project-id (pending)
/computeMetadata/v1/project/project-id
/computeMetadata/v1/instance/zone
/computeMetadata/v1/instance/service-accounts/default/aliases
/computeMetadata/v1/instance/service-accounts/default/email
/computeMetadata/v1/instance/service-accounts/default/scopes
/computeMetadata/v1/instance/service-accounts/default/token
/computeMetadata/v1/instance/service-accounts/{account}/aliases
/computeMetadata/v1/instance/service-accounts/{account}/email
/computeMetadata/v1/instance/service-accounts/{account}/scopes
/computeMetadata/v1/instance/service-accounts/{account}/token
/computeMetadata/v1beta1/project/numeric-project-id  (pending)
/computeMetadata/v1beta1/project/project-id
/computeMetadata/v1beta1/instance/zone
/computeMetadata/v1beta1/instance/service-accounts/default/aliases
/computeMetadata/v1beta1/instance/service-accounts/default/email
/computeMetadata/v1beta1/instance/service-accounts/default/scopes
/computeMetadata/v1beta1/instance/service-accounts/default/token
/computeMetadata/v1beta1/instance/service-accounts/{account}/aliases
/computeMetadata/v1beta1/instance/service-accounts/{account}/email
/computeMetadata/v1beta1/instance/service-accounts/{account}/scopes
/computeMetadata/v1beta1/instance/service-accounts/{account}/token

リクエストがハングするのはなぜですか?

リクエストに対してスレッドプールを作成する場合は、現在のリクエストが終了する前にスレッドプールを明示的にシャットダウンする必要があります。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Java 8 の App Engine スタンダード環境