Tutorial de Java para AWS Cloud9 - AWS Cloud9

AWS Cloud9 ya no está disponible para nuevos clientes. Los clientes existentes de AWS Cloud9 pueden seguir utilizando el servicio con normalidad. Más información

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Tutorial de Java para AWS Cloud9

importante

Si utiliza un entorno de desarrollo de AWS Cloud9 respaldado por una instancia de EC2 con 2 GiB o más de memoria, recomendamos que active la compatibilidad con Java mejorada. Esto proporciona acceso a características de productividad clave como la finalización de código, lint de errores, acciones específicas del contexto y opciones de depuración, como puntos de interrupción e incrementos.

Para obtener más información, consulte Compatibilidad con el desarrollo de Java mejorada.

Este tutorial le permite ejecutar código de Java en un entorno de desarrollo de AWS Cloud9.

El uso de este tutorial y la creación de esta muestra pueden generar cargos en su cuenta de AWS. Entre estos se incluyen posibles cargos por servicios como Amazon EC2 y Amazon S3. Para obtener más información, consulte Precios de Amazon EC2 y Precios de Amazon S3.

Requisitos previos

Antes de utilizar este ejemplo, asegúrese de que su configuración cumpla los siguientes requisitos:

  • Debe tener un entorno de desarrollo de AWS Cloud9 EC2. En este ejemplo, se da por hecho que ya tiene un entorno de EC2 que está conectado a una instancia de Amazon EC2 que ejecuta Amazon Linux o Ubuntu Server. Si tiene otro tipo de entorno o sistema operativo, es posible que tenga que adaptar las instrucciones de este ejemplo para configurar herramientas relacionadas. Para obtener más información, consulte Crear un entorno en AWS Cloud9.

  • Ya tiene abierto el IDE de AWS Cloud9 para el entorno existente. Al abrir un entorno, AWS Cloud9 abre el IDE de ese entorno en el navegador web. Para obtener más información, consulte Apertura de un entorno en AWS Cloud9.

Paso 1: Instalar las herramientas necesarias

En este paso, instalará un conjunto de herramientas de desarrollo de Java en su entorno de desarrollo de AWS Cloud9. Si ya tiene un conjunto de herramientas de desarrollo de Java como Oracle JDK u OpenJDK instalado en su entorno, continúe en Paso 2: Agregar el código. Esta muestra se desarrolló con OpenJDK 8, que puede instalar en su entorno realizando el siguiente procedimiento.

  1. Confirme si OpenJDK 8 ya está instalado. Para ello, en una sesión del terminal en el IDE de AWS Cloud9, ejecute la versión de la línea de comandos del ejecutador de Java con la opción -version . (Para iniciar una nueva sesión del terminal, en la barra de menús, seleccione Window [Ventana], New Terminal [Nuevo terminal]).

    java -version

    En función del resultado del comando anterior, realice una de las siguientes acciones:

    • Si el resultado indica que no se encuentra el comando java, continúe con el paso 2 de este procedimiento para instalar OpenJDK 8.

    • Si el resultado contiene valores que comienzan con Java(TM), Java Runtime Environment, Java SE, J2SE o Java2, el OpenJDK no está instalado o no se ha establecido como el conjunto de herramientas de desarrollo de Java predeterminado. Continúe con el paso 2 de este procedimiento para instalar OpenJDK 8 y, a continuación, cambie a OpenJDK 8.

    • Si el resultado contiene valores que comienzan por java version 1.8 y OpenJDK, continúe en Paso 2: Agregar el código. OpenJDK 8 se instala correctamente para esta muestra.

    • Si el resultado contiene un java version menor que 1.8 y valores que comienzan por OpenJDK, continúe con el paso 2 de este procedimiento para actualizar la versión de OpenJDK instalada a OpenJDK 8.

  2. Asegúrese de que las últimas actualizaciones de seguridad y correcciones de errores están instaladas. Para ello, ejecute la herramienta yum (para Amazon Linux) o la herramienta apt (para Ubuntu Server) con el comando update .

    Para Amazon Linux:

    sudo yum -y update

    Para Ubuntu Server:

    sudo apt update
  3. Instale OpenJDK 8. Para ello, ejecute la herramienta yum (para Amazon Linux) o la herramienta apt (para Ubuntu Server) con el comando install y especifique el paquete OpenJDK 8.

    Para Amazon Linux:

    sudo yum -y install java-1.8.0-openjdk-devel

    Para Ubuntu Server:

    sudo apt install -y openjdk-8-jdk

    Para obtener más información, consulte Cómo descargar e instalar paquetes OpenJDK preconfigurados en el sitio web de OpenJDK.

  4. Cambie o actualice el conjunto de herramientas de desarrollo Java predeterminado a OpenJDK 8. Para ello, ejecute el comando update-alternatives con la opción --config. Ejecute este comando dos veces para cambiar o actualizar las versiones de la línea de comandos del ejecutor y compilador de Java.

    sudo update-alternatives --config java sudo update-alternatives --config javac

    En cada solicitud, escriba el número de selección para OpenJDK 8 (el que contiene java-1.8).

  5. Confirme que las versiones de la línea de comandos del ejecutor y el compilador de Java utilizan OpenJDK 8. Para ello, ejecute las versiones de la línea de comandos del ejecutor y el compilador de Java con la opción -version.

    java -version javac -version

    Si OpenJDK 8 está instalado y configurado correctamente, la salida de la versión del ejecutador de Java contiene un valor que comienza por openjdk version 1.8 y la salida de la versión del compilador de Java comienza por el valor javac 1.8.

Paso 2: Agregar el código

En el IDE de AWS Cloud9, cree un archivo con el siguiente código y guárdelo con el nombre hello.java. (Para crear un archivo, en la barra de menús, elija File [Archivo], New File [Archivo nuevo]. Para guardar el archivo, elija File [Archivo], Save [Guardar]).

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)); } }

Paso 3: Compilar y ejecutar el código

  1. Utilice la versión de la línea de comandos del compilador de Java para compilar el archivo hello.java en un archivo hello.class. Para ello, con el terminal del IDE de AWS Cloud9, desde el mismo directorio que el archivo hello.java, ejecute el compilador de Java y especifique el archivo hello.java.

    javac hello.java
  2. Utilice la versión de la línea de comandos del ejecutador de Java para ejecutar el archivo hello.class. Para ello, desde el mismo directorio que el archivo hello.class, ejecute el ejecutador de Java, especificando el nombre de la clase hello que se declaró en el archivo hello.java, con dos enteros para añadirlos (por ejemplo, 5 y 9).

    java hello 5 9
  3. Compare sus resultados.

    Hello, World! The sum of 2 and 3 is 5. The sum of 5 and 9 is 14.

Paso 4: Configurar el uso del AWS SDK for Java

Puede mejorar esta muestra para utilizar el AWS SDK for Java y crear un bucket de Amazon S3, mostrar una lista de los buckets disponibles y, a continuación, eliminar el bucket que acaba de crear.

En este paso, instale Apache Maven o Gradle en su entorno. Maven y Gradle son sistemas de automatización de compilación comunes que se pueden utilizar con proyectos Java. Después de instalar Maven o Gradle, se usa para generarlo un nuevo proyecto Java. En este nuevo proyecto, añada una referencia al AWS SDK for Java. Este AWS SDK for Java proporciona una forma práctica de interactuar con los servicios de AWS como Amazon S3, desde su código Java.

Configuración con Maven

  1. Instale Maven en su entorno. Para determinar si Maven ya está instalado, use el terminal del IDE de AWS Cloud9 y ejecute Maven con la opción -version .

    mvn -version

    Si es así, el resultado contendrá el número de versión de Maven. Si Maven ya está instalado, vaya al paso 4 de este procedimiento para utilizar Maven con el fin de generar un nuevo proyecto Java en su entorno.

  2. Instale Maven utilizando el terminal para ejecutar los siguientes comandos.

    Para Amazon Linux, los siguientes comandos obtienen información sobre el repositorio de paquetes donde se almacena Maven y, a continuación, utilizan esta información para instalar 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

    Para obtener más información sobre los comandos anteriores, consulte Paquetes Extra para Enterprise Linux (EPEL) en el sitio web wiki del proyecto Fedora.

    Para Ubuntu Server, ejecute en cambio el siguiente comando.

    sudo apt install -y maven
  3. Confirme la instalación ejecutando Maven con la opción -version .

    mvn -version
  4. Utilice Maven para generar un nuevo proyecto Java. Para ello, utilice el terminal para ejecutar el siguiente comando desde el directorio donde desea que Maven genere el proyecto (por ejemplo, el directorio raíz de su entorno).

    mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

    El comando anterior crea la siguiente estructura de directorios para el proyecto en su entorno.

    my-app |- src | `- main | `- java | `- com | `- mycompany | `- app | `-App.java |- test | `- java | `- com | `- mycompany | `- app | `- AppTest.java `- pom.xml

    Para obtener más información sobre la estructura de directorios anterior, consulte Arquetipo de inicio rápido de Maven e Introducción al diseño de directorios estándar en el sitio web del proyecto Apache Maven.

  5. Modifique el archivo Project Object Model (POM) del proyecto. (Un archivo POM define la configuración de un proyecto Maven). Para ello, en la ventana Environment (Entorno), abra el archivo my-app/pom.xml. En el editor, reemplace el contenido actual del archivo por el siguiente código y, a continuación, guarde el archivo 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>

    El archivo POM anterior incluye la configuración del proyecto que especifica declaraciones como las siguientes:

    • La configuración artifactid de my-app establece el nombre del directorio raíz del proyecto y la configuración group-id de com.mycompany.app establece la estructura de subdirectorios com/mycompany/app y la declaración package en los archivos App.Java y AppTest.java.

    • La configuración artifactId de my-app, con la configuración packaging de jar, la configuración version de 1.0-SNAPSHOT y la configuración descriptorRef de jar-with-dependencies establece el nombre del archivo JAR de salida de my-app-1.0-SNAPSHOT-jar-with-dependencies.jar.

    • La sección plugin declara que se creará un único JAR, que incluye todas las dependencias.

    • La sección dependency con la configuración groupId de com.amazon.aws y la configuración artifactId de aws-java-sdk incluye los archivos de biblioteca de AWS SDK for Java. La versión de AWS SDK for Java que se usará se declara mediante la configuración version. Para utilizar otra versión, reemplace este número de versión.

Vaya a Paso 5: Configurar la administración de credenciales de AWS en su entorno.

Configuración con Gradle

  1. Instale Gradle en su entorno. Para determinar si Gradle ya está instalado, utilice el terminal del IDE de AWS Cloud9 y ejecute Gradle con la opción -version .

    gradle -version

    Si es así, el resultado contendrá el número de versión de Gradle. Si Gradle ya está instalado, vaya al paso 4 de este procedimiento para utilizar Gradle con el fin de generar un nuevo proyecto Java en su entorno.

  2. Instale Gradle utilizando el terminal para ejecutar los siguientes comandos. Estos comandos instalan y ejecutan la herramienta SDKMAN! y, a continuación, utilizan SDKMAN! para instalar la última versión de Gradle.

    curl -s "https://get.sdkman.io" | bash source "$HOME/.sdkman/bin/sdkman-init.sh" sdk install gradle

    Para obtener más información sobre los comandos anteriores, consulte Installation en el sitio web de SDKMAN e Install with a package manager en el sitio web Gradle.

  3. Confirme la instalación ejecutando Gradle con la opción -version .

    gradle -version
  4. Utilice Gradle para generar un nuevo proyecto Java en su entorno. Para ello, use el terminal para ejecutar los siguientes comandos con el fin de crear un directorio para el proyecto y, a continuación, cambie a ese directorio.

    mkdir my-app cd my-app
  5. Ejecute el siguiente comando para que Gradle genere un nuevo proyecto de aplicación Java en el directorio my-app de su entorno.

    gradle init --type java-application

    El comando anterior crea la siguiente estructura de directorios para el proyecto en su entorno.

    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
  6. Modifique AppTest.java para el proyecto. (Si no lo hace, es posible que el proyecto no se compile ni ejecute del modo previsto). Para ello, en la ventana Environment (Entorno), abra el archivo my-app/src/test/java/AppTest.java. En el editor, reemplace el contenido actual del archivo por el siguiente código y, a continuación, guarde el archivo 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."); } } }
  7. Modifique el archivo build.gradle para el proyecto. (Un archivo build.gradle define la configuración de un proyecto Gradle). Para ello, en la ventana Environment (Entorno), abra el archivo my-app/build.gradle. En el editor, reemplace el contenido actual del archivo por el siguiente código y, a continuación, guarde el archivo 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'

    El archivo build.gradle anterior incluye la configuración del proyecto que especifica declaraciones como las siguientes:

    • El complemento io.spring.dependency-management se utiliza para importar la lista de materiales (BOM) de AWS SDK for Java de Maven para administrar las dependencias AWS SDK for Java del proyecto. classpath declara la versión que se utilizará. Para utilizar otra versión, reemplace este número de versión.

    • com.amazonaws:aws-java-sdk-s3 incluye la parte de Amazon S3 de los archivos de la biblioteca de AWS SDK for Java. mavenBom declara la versión que se utilizará. Si desea utilizar otra versión, reemplace este número de versión.

Paso 5: Configurar la administración de credenciales de AWS en su entorno

Cada vez que utilice el AWS SDK for Java para llamar a un servicio de AWS, debe proporcionar un conjunto de credenciales de AWS con la llamada. Estas credenciales determinan si el AWS SDK for Java tiene los permisos adecuados para realizar esa llamada. Si las credenciales no cubren los permisos adecuados, la llamada no se realizará correctamente.

En este paso, se almacenan las credenciales dentro del entorno. Para ello, siga las instrucciones de Llamar a los Servicios de AWS desde un entorno en AWS Cloud9 y, a continuación, vuelva a este tema.

Para obtener más información, consulte Configurar las credenciales y la región de AWS para el desarrollo en la Guía para desarrolladores de AWS SDK for Java.

Paso 6: Agregar el código de AWS SDK

En este paso, agregará código para interactuar con Amazon S3 y crear un bucket, enumerará los buckets disponibles y, a continuación, eliminará el bucket que acaba de crear.

En la ventana Environment (Entorno) abra el archivo my-app/src/main/java/com/mycompany/app/App.java para Maven o el archivo my-app/src/main/java/App.java para Gradle. En el editor, reemplace el contenido actual del archivo por el siguiente código y, a continuación, guarde el archivo 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()); } } }

Paso 7: Compilar y ejecutar el código de AWS SDK

Para ejecutar el código desde el paso anterior, ejecute los siguientes comandos desde el terminal. Estos comandos usan Maven o Gradle para crear un archivo JAR ejecutable para el proyecto y, a continuación, usan el ejecutador de Java para ejecutar el archivo JAR. El archivo JAR se ejecuta con el nombre del bucket que se va a crear en Amazon S3 (por ejemplo, my-test-bucket) y el ID de la región de AWS para crear el bucket como entrada (por ejemplo, us-east-2).

Para Maven, ejecute los siguientes comandos.

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

Para Gradle, ejecute los siguientes comandos.

gradle build gradle run -PappArgs="['my-test-bucket', 'us-east-2']"

Compare sus resultados con la siguiente salida.

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:

Paso 8: Eliminación

Para evitar que se apliquen cargos continuos en su cuenta de AWS después de terminar de usar esta muestra, debe eliminar el entorno. Para obtener instrucciones, consulte Eliminación de un entorno en AWS Cloud9.