[{"data":1,"prerenderedAt":399},["ShallowReactive",2],{"content-svc-lambda-guides-effectively-running-java-on-serverless-cdk":3},{"markdown":4,"frontMatterAttributes":5,"bodyRaw":10,"menu":11,"menuType":390,"isCollapseableMenu":14,"nextDocItem":327,"previousDocItem":316,"contributorPaths":391,"contentName":398,"slug":326,"readingTime":275},"\u003Cp>The \u003Ca href=\"https:\u002F\u002Fdocs.aws.amazon.com\u002Fcdk\u002Fv2\u002Fguide\u002Fhome.html\">AWS Cloud Development Kit (AWS CDK)\u003C\u002Fa> is an open-source software\ndevelopment framework\nto model and provision your cloud application resources using Java, TypeScript, JavaScript, C#, Python, and Go.\u003C\u002Fp>\n\u003Cp>AWS CDK apps are composed of building blocks known as Constructs, which are composed together to form stacks and apps.\u003C\u002Fp>\n\u003Cp>There are three main components of the CDK:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Core framework\u003C\u002Fli>\n\u003Cli>AWS Construct Library\u003C\u002Fli>\n\u003Cli>AWS CDK ToolKit\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Core Framework\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>With the core framework, you can create and structure App that consists of one or multiple stacks.\nStacks are logical units of infrastructure which contains multiple resources and mapped 1:1 to CloudFormation Stacks.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"\u002Fassets\u002Fexternal\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fassets\u002Fiac_cdk_core.jpg\" alt=\"CDKCore\">\u003C\u002Fp>\n\u003Cp>\u003Cstrong>AWS Construct Library\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>CDK constructs are the basic building blocks AWS CDK apps.\nA construct may represent a single AWS service or can be a higher level abstraction.\nExamples of such constructs include an ECS service with ALB and VPC or 3rd parties from the community or your own\nlibraries.\nThe AWS construct library is a set of components crafted by AWS to create resources for specific services.\nThis helps to decouple libraries and use only the dependencies you need in your project.\nFor example,\nthe \u003Ca href=\"https:\u002F\u002Fdocs.aws.amazon.com\u002Fcdk\u002Fapi\u002Fv2\u002Fdocs\u002Faws-cdk-lib.aws_s3.Bucket.html\">s3.Bucket\u003C\u002Fa> class represents an Amazon\nS3 bucket,\nand the \u003Ca href=\"https:\u002F\u002Fdocs.aws.amazon.com\u002Fcdk\u002Fapi\u002Fv2\u002Fdocs\u002Faws-cdk-lib.aws_dynamodb.Table.html\">dynamodb.Table\u003C\u002Fa> class\nrepresents an Amazon DynamoDB table.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"\u002Fassets\u002Fexternal\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fassets\u002Fiac_cdk_constructs_lib.jpg\" alt=\"ConstructsLibrary\">\u003C\u002Fp>\n\u003Cp>\u003Cstrong>AWS CDK Toolkit\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>The AWS CDK Toolkit, the CLI command \u003Ccode>cdk\u003C\u002Fcode> is the primary tool for interacting with the AWS CDK.\nIt initializes project\nstructure, inspects differences between deployments, produces and deploys the AWS CloudFormation templates generated by\nthe AWS CDK.\u003C\u002Fp>\n\u003Cp>The AWS CDK Toolkit is installed with the Node Package Manager\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\">npm install -g aws-cdk             # install latest version\nnpm install -g aws-cdk@X.YY.Z      # install specific version\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cimg src=\"\u002Fassets\u002Fexternal\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fassets\u002Fiac_cdk_toolkit.jpg\" alt=\"CDKToolkit\">\u003C\u002Fp>\n\u003Cp>Here’s a sample code that creates a CRUD application using Amazon API Gateway, AWS Lambda, and Amazon RDS:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-java\">public class Main {\n  public static void main(String[] args) {\n    App app = new App();\n\n    Environment environment = Environment.builder()\n      .account(System.getenv(&quot;CDK_DEFAULT_ACCOUNT&quot;))\n      .region(System.getenv(&quot;CDK_DEFAULT_REGION&quot;))\n      .build();\n\n    DatabaseStack dbStack = new DatabaseStack(app, &quot;DemoDatabaseStack&quot;, StackProps.builder()\n      .env(environment)\n      .build());\n\n    new AppStack(app, &quot;DemoAppStack&quot;, AppStackProps.builder()\n      .env(environment)\n      .rdsProxyEndpoint(dbStack.getRdsProxyEndpoint())\n      .rdsSecretArn(dbStack.getRdsSecretArn())\n      .lambdaSG(dbStack.getLambdaSecurityGroup())\n      .vpc(dbStack.getVpc())\n      .build());\n\n    app.synth();\n  }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Working with AWS CDK in Java\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>The AWS Cloud Development Kit (AWS CDK) lets you define your AWS cloud infrastructure in a general-purpose programming\nlanguage.\nCurrently, the AWS CDK supports TypeScript, JavaScript, Python, Java, C#, and Go.\nAll AWS CDK applications\nrequire Node.js 10.13 or later, even when working with Java.\u003C\u002Fp>\n\u003Cp>The AWS CDK supports Java 8 or later.\nWe recommend using \u003Ca href=\"https:\u002F\u002Faws.amazon.com\u002Fcorretto\u002F\">Amazon Corretto\u003C\u002Fa> (a downstream distribution of OpenJDK),\nbut you can use any OpenJDK distribution\nor \u003Ca href=\"https:\u002F\u002Fwww.oracle.com\u002Ftechnetwork\u002Fjava\u002Fjavase\u002Fdownloads\u002Fjdk8-downloads-2133151.html\">Oracle&#39;s JDK\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Creating a Project\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>You create a new AWS CDK project by invoking \u003Ccode>cdk init\u003C\u002Fcode> in an empty directory:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\">mkdir my-project\ncd my-project\ncdk init app --language java\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Ccode>cdk init\u003C\u002Fcode> uses the name of the project folder to name various elements of the project, including classes, folders, and\nfiles.\nThe resulting project consists of App, constructs and includes reference to \u003Ccode>software.amazon.awscdk\u003C\u002Fcode> Maven package.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"\u002Fassets\u002Fexternal\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fassets\u002Fiac_cdk_project.jpg\" alt=\"CDKProject\">\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>src\u002Fmain\u002Fjava\u002Fcom\u002Fmyorg\u002FMyProjectApp.java\u003C\u002Fcode> — Main entry point for the application\u003C\u002Fli>\n\u003Cli>\u003Ccode>src\u002Fmain\u002Fjava\u002Fcom\u002Fmyorg\u002FMyProjectStack.java\u003C\u002Fcode> — Defines the My Project stack\u003C\u002Fli>\n\u003Cli>\u003Ccode>pom.xml\u003C\u002Fcode> - If your application depends on an experimental package, edit your project&#39;s \u003Ccode>pom.xml\u003C\u002Fcode> and\nadd a new \u003Ccode>&lt;dependency&gt;\u003C\u002Fcode> under \u003Ccode>&lt;dependencies&gt;\u003C\u002Fcode>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>The main AWS CDK package is imported in Java code as \u003Ccode>software.amazon.awscdk\u003C\u002Fcode>:\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"\u002Fassets\u002Fexternal\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fassets\u002Fiac_cdk_app.jpg\" alt=\"CDKApp\">\u003C\u002Fp>\n\u003Cp>Modules for the various services in the AWS Construct Library live under \u003Ccode>software.amazon.awscdk.services\u003C\u002Fcode> and are\nnamed similarly to their Maven package name.\u003Cbr>For example, the Amazon SQS library&#39;s namespace is \u003Ccode>software.amazon.awscdk.services.sqs\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"\u002Fassets\u002Fexternal\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fassets\u002Fiac_cdk_stack.jpg\" alt=\"CDKStack\">\u003C\u002Fp>\n\u003Cp>\u003Cstrong>CDK for Terraform\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Built on top of the open source \u003Ca href=\"https:\u002F\u002Faws.github.io\u002Fjsii\u002F\">JSII library\u003C\u002Fa>, CDK for Terraform allows you to write\nTerraform configurations\nin your choice of Java, C#, Python, TypeScript or Go and still benefit from the full ecosystem of Terraform providers\nand modules.\nYou can import any existing provider or module from the Terraform Registry into your application,\nand CDKTF will generate resource classes for you to interact with in your target programming language.\u003C\u002Fp>\n\u003Cp>With CDKTF, developers can set up their infrastructure as code without context switching from their familiar programming\nlanguage,\nusing the same tooling and syntax to provision infrastructure resources as they are using to define the application\nbusiness logic.\nTeams can collaborate in familiar syntax, while still leveraging the power of the Terraform ecosystem and deploying\ntheir infrastructure\nconfigurations via established Terraform deployment pipelines.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>CLI commands\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>cdktf-cli\u003C\u002Fcode> – A CLI that allows users to run commands to initialize, import, and synthesize CDK for Terraform\napplications\u003C\u002Fli>\n\u003Cli>\u003Ccode>cdktf\u003C\u002Fcode> – A library for defining Terraform resources using programming constructs\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Refer \u003Ca href=\"https:\u002F\u002Fdocs.aws.amazon.com\u002Fcdk\u002Fv2\u002Fguide\u002Fwork-with-cdk-java.html\">Working with the AWS CDK in Java\u003C\u002Fa> for\nadditional details.\u003C\u002Fp>\n\u003Ch4>AWS CDK with AWS SAM CLI\u003C\u002Fh4>\n\u003Cp>One of the many benefits of using AWS SAM CLI is its ability to facilitate local development and testing.\nTo locally test an AWS CDK application using the AWS SAM CLI,\nyou must have an AWS CDK application that contains a Lambda function.\u003C\u002Fp>\n\u003Cp>Refer to the \u003Ca href=\"https:\u002F\u002Fdocs.aws.amazon.com\u002Fserverless-application-model\u002Flatest\u002Fdeveloperguide\u002Fserverless-cdk-getting-started.html\">user guide\u003C\u002Fa>\non AWS SAM CLI support for AWS CDK.\u003C\u002Fp>\n",{"title":6,"order":7,"authors":8},"AWS CDK",9,[9],"Sonali Jena","The [AWS Cloud Development Kit (AWS CDK)](https:\u002F\u002Fdocs.aws.amazon.com\u002Fcdk\u002Fv2\u002Fguide\u002Fhome.html) is an open-source software\ndevelopment framework\nto model and provision your cloud application resources using Java, TypeScript, JavaScript, C#, Python, and Go.\n\nAWS CDK apps are composed of building blocks known as Constructs, which are composed together to form stacks and apps.\n\nThere are three main components of the CDK:\n\n- Core framework\n- AWS Construct Library\n- AWS CDK ToolKit\n\n**Core Framework**\n\nWith the core framework, you can create and structure App that consists of one or multiple stacks.\nStacks are logical units of infrastructure which contains multiple resources and mapped 1:1 to CloudFormation Stacks.\n\n![CDKCore](\u002Fassets\u002Fexternal\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fassets\u002Fiac_cdk_core.jpg)\n\n**AWS Construct Library**\n\nCDK constructs are the basic building blocks AWS CDK apps.\nA construct may represent a single AWS service or can be a higher level abstraction.\nExamples of such constructs include an ECS service with ALB and VPC or 3rd parties from the community or your own\nlibraries.\nThe AWS construct library is a set of components crafted by AWS to create resources for specific services.\nThis helps to decouple libraries and use only the dependencies you need in your project.\nFor example,\nthe [s3.Bucket](https:\u002F\u002Fdocs.aws.amazon.com\u002Fcdk\u002Fapi\u002Fv2\u002Fdocs\u002Faws-cdk-lib.aws_s3.Bucket.html) class represents an Amazon\nS3 bucket,\nand the [dynamodb.Table](https:\u002F\u002Fdocs.aws.amazon.com\u002Fcdk\u002Fapi\u002Fv2\u002Fdocs\u002Faws-cdk-lib.aws_dynamodb.Table.html) class\nrepresents an Amazon DynamoDB table.\n\n![ConstructsLibrary](\u002Fassets\u002Fexternal\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fassets\u002Fiac_cdk_constructs_lib.jpg)\n\n**AWS CDK Toolkit**\n\nThe AWS CDK Toolkit, the CLI command `cdk` is the primary tool for interacting with the AWS CDK.\nIt initializes project\nstructure, inspects differences between deployments, produces and deploys the AWS CloudFormation templates generated by\nthe AWS CDK.\n\nThe AWS CDK Toolkit is installed with the Node Package Manager\n\n```bash\nnpm install -g aws-cdk             # install latest version\nnpm install -g aws-cdk@X.YY.Z      # install specific version\n```\n\n![CDKToolkit](\u002Fassets\u002Fexternal\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fassets\u002Fiac_cdk_toolkit.jpg)\n\nHere’s a sample code that creates a CRUD application using Amazon API Gateway, AWS Lambda, and Amazon RDS:\n\n```java\npublic class Main {\n  public static void main(String[] args) {\n    App app = new App();\n\n    Environment environment = Environment.builder()\n      .account(System.getenv(\"CDK_DEFAULT_ACCOUNT\"))\n      .region(System.getenv(\"CDK_DEFAULT_REGION\"))\n      .build();\n\n    DatabaseStack dbStack = new DatabaseStack(app, \"DemoDatabaseStack\", StackProps.builder()\n      .env(environment)\n      .build());\n\n    new AppStack(app, \"DemoAppStack\", AppStackProps.builder()\n      .env(environment)\n      .rdsProxyEndpoint(dbStack.getRdsProxyEndpoint())\n      .rdsSecretArn(dbStack.getRdsSecretArn())\n      .lambdaSG(dbStack.getLambdaSecurityGroup())\n      .vpc(dbStack.getVpc())\n      .build());\n\n    app.synth();\n  }\n}\n```\n\n**Working with AWS CDK in Java**\n\nThe AWS Cloud Development Kit (AWS CDK) lets you define your AWS cloud infrastructure in a general-purpose programming\nlanguage.\nCurrently, the AWS CDK supports TypeScript, JavaScript, Python, Java, C#, and Go.\nAll AWS CDK applications\nrequire Node.js 10.13 or later, even when working with Java.\n\nThe AWS CDK supports Java 8 or later.\nWe recommend using [Amazon Corretto](https:\u002F\u002Faws.amazon.com\u002Fcorretto\u002F) (a downstream distribution of OpenJDK),\nbut you can use any OpenJDK distribution\nor [Oracle's JDK](https:\u002F\u002Fwww.oracle.com\u002Ftechnetwork\u002Fjava\u002Fjavase\u002Fdownloads\u002Fjdk8-downloads-2133151.html)\n\n**Creating a Project**\n\nYou create a new AWS CDK project by invoking `cdk init` in an empty directory:\n\n```bash\nmkdir my-project\ncd my-project\ncdk init app --language java\n```\n\n`cdk init` uses the name of the project folder to name various elements of the project, including classes, folders, and\nfiles.\nThe resulting project consists of App, constructs and includes reference to `software.amazon.awscdk` Maven package.\n\n![CDKProject](\u002Fassets\u002Fexternal\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fassets\u002Fiac_cdk_project.jpg)\n\n- `src\u002Fmain\u002Fjava\u002Fcom\u002Fmyorg\u002FMyProjectApp.java` — Main entry point for the application\n- `src\u002Fmain\u002Fjava\u002Fcom\u002Fmyorg\u002FMyProjectStack.java` — Defines the My Project stack\n- `pom.xml` - If your application depends on an experimental package, edit your project's `pom.xml` and\n  add a new `\u003Cdependency>` under `\u003Cdependencies>`.\n\nThe main AWS CDK package is imported in Java code as `software.amazon.awscdk`:\n\n![CDKApp](\u002Fassets\u002Fexternal\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fassets\u002Fiac_cdk_app.jpg)\n\nModules for the various services in the AWS Construct Library live under `software.amazon.awscdk.services` and are\nnamed similarly to their Maven package name.  \nFor example, the Amazon SQS library's namespace is `software.amazon.awscdk.services.sqs`.\n\n![CDKStack](\u002Fassets\u002Fexternal\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fassets\u002Fiac_cdk_stack.jpg)\n\n**CDK for Terraform**\n\nBuilt on top of the open source [JSII library](https:\u002F\u002Faws.github.io\u002Fjsii\u002F), CDK for Terraform allows you to write\nTerraform configurations\nin your choice of Java, C#, Python, TypeScript or Go and still benefit from the full ecosystem of Terraform providers\nand modules.\nYou can import any existing provider or module from the Terraform Registry into your application,\nand CDKTF will generate resource classes for you to interact with in your target programming language.\n\nWith CDKTF, developers can set up their infrastructure as code without context switching from their familiar programming\nlanguage,\nusing the same tooling and syntax to provision infrastructure resources as they are using to define the application\nbusiness logic.\nTeams can collaborate in familiar syntax, while still leveraging the power of the Terraform ecosystem and deploying\ntheir infrastructure\nconfigurations via established Terraform deployment pipelines.\n\n**CLI commands**\n\n- `cdktf-cli` – A CLI that allows users to run commands to initialize, import, and synthesize CDK for Terraform\n  applications\n- `cdktf` – A library for defining Terraform resources using programming constructs\n\nRefer [Working with the AWS CDK in Java](https:\u002F\u002Fdocs.aws.amazon.com\u002Fcdk\u002Fv2\u002Fguide\u002Fwork-with-cdk-java.html) for\nadditional details.\n\n#### AWS CDK with AWS SAM CLI\nOne of the many benefits of using AWS SAM CLI is its ability to facilitate local development and testing.\nTo locally test an AWS CDK application using the AWS SAM CLI,\nyou must have an AWS CDK application that contains a Lambda function.\n\nRefer to the [user guide](https:\u002F\u002Fdocs.aws.amazon.com\u002Fserverless-application-model\u002Flatest\u002Fdeveloperguide\u002Fserverless-cdk-getting-started.html)\non AWS SAM CLI support for AWS CDK.\n",[12,33,59,187,240,297,313,350,372],{"title":13,"collapsible":14,"isCollapsed":15,"content":16},"Introduction",false,true,[17],{"title":18,"order":19,"authors":20,"callout":22,"prerequisite":26,"time":29,"path":30,"id":31,"link":32},"Getting Started",1,[21],"Dhiraj Mahapatro",{"title":23,"description":24,"link":25},"Watch this video","This Devoxx Belgium 2023 presentation shows effectively running Java on Serverless","https:\u002F\u002Fyoutu.be\u002Fu3tgOE8qFjI?t=5549",[27,28],"Understanding of Java","Understanding of AWS Lambda","2 min","1-introduction","1-introduction.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002F1-introduction",{"title":34,"collapsible":14,"isCollapsed":15,"content":35},"History",[36,44,51],{"title":37,"order":38,"authors":39,"time":40,"path":41,"id":42,"link":43},"Evolution of Java",3,[21],"1 min","history","history.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fhistory",{"title":45,"order":46,"authors":47,"time":29,"path":48,"id":49,"link":50},"Evolution of Compute",4,[21],"compute","compute.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fcompute",{"title":52,"order":53,"authors":54,"time":29,"path":56,"id":57,"link":58},"Challenges",5,[21,55],"Maximilian Schellhorn","challenge","challenge.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fchallenge",{"title":60,"collapsible":14,"isCollapsed":15,"content":61},"Best Practices",[62,80,90,96,112,129,147,163,177],{"title":63,"order":64,"youtubeVideoID":65,"authors":66,"callout":68,"resources":71,"time":76,"path":77,"id":78,"link":79},"Lambda Snapstart",6,"ZbnAithBNYY",[67,21],"Vipan Kumar",{"title":23,"description":69,"link":70},"This serverless office hours session dives deeper into Lambda SnapStart.","https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=Y5b8_KToeDY",[72],{"link":73,"text":74,"type":75},"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=IIKe2dx9Ag0","Spring IO (Barcelona)","video","8 min","snapstart","snapstart.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fsnapstart",{"title":81,"order":64,"authors":82,"callout":83,"time":40,"path":87,"id":88,"link":89},"Tiered Compilation",[67],{"title":84,"description":85,"link":86},"Read this blog","This AWS blog explains Tiered compilation in details","https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fcompute\u002Fincreasing-performance-of-java-aws-lambda-functions-using-tiered-compilation\u002F","tiered-compilation","tiered-compilation.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Ftiered-compilation",{"title":91,"order":64,"authors":92,"time":40,"path":93,"id":94,"link":95},"Utilize initialization phase",[21],"init-heavy-lifting","init-heavy-lifting.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Finit-heavy-lifting",{"title":97,"order":64,"authors":98,"youtubeVideoID":99,"resources":100,"time":108,"path":109,"id":110,"link":111},"Using RDS Proxy",[9,21],"ZQOqmMn_8jw",[101,105],{"link":102,"text":103,"type":104},"https:\u002F\u002Faws.amazon.com\u002Fgetting-started\u002Fhands-on\u002Fset-up-shared-database-connection-amazon-rds-proxy\u002F","Shared DB connections with RDS Proxy","user guide",{"link":106,"type":104,"text":107},"https:\u002F\u002Fdocs.aws.amazon.com\u002FAmazonRDS\u002Flatest\u002FAuroraUserGuide\u002Frds-proxy.html","RDS Proxy","4 min","rds-proxy","rds-proxy.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Frds-proxy",{"title":113,"order":64,"authors":114,"callout":115,"prerequisite":119,"resources":121,"time":29,"path":126,"id":127,"link":128},"Choice of HTTP Clients",[67,21],{"title":116,"description":117,"link":118},"Read this Blog","This blog explains how AWS CRT HTTP Client offers faster startup time and small memory footprint","https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fdeveloper\u002Fannouncing-availability-of-the-aws-crt-http-client-in-the-aws-sdk-for-java-2-x\u002F",[120],"Before moving on to HTTP clients, the first and foremost requirement to improve performance in Lambda functions is to upgrade from AWS SDK Java v1 to AWS SDK Java v2 as soon as possible. Version 2 of the AWS SDK was released in Nov 2018 with a lot of performance upgrades.",[122],{"link":123,"type":124,"text":125},"https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fdeveloper\u002Faws-sdk-for-java-2-x-released\u002F","blog","AWS SDK for Java v2","http-clients","http-clients.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fhttp-clients",{"title":130,"order":64,"authors":131,"youtubeVideoID":132,"resources":133,"time":108,"path":144,"id":145,"link":146},"Hexagonal Architecture",[67],"kRFg6fkVChQ",[134,138,141],{"link":135,"text":136,"type":137},"https:\u002F\u002Fdocs.aws.amazon.com\u002Fprescriptive-guidance\u002Flatest\u002Fhexagonal-architectures\u002Fwelcome.html","Hexagonal architecture","guidance",{"link":139,"text":140,"type":124},"https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fcompute\u002Fdeveloping-portable-aws-lambda-functions\u002F","Portable Lambda functions",{"link":142,"type":124,"text":143},"https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fcompute\u002Fdeveloping-evolutionary-architecture-with-aws-lambda\u002F","Building evolutionary architecture on AWS Lambda","hexagonal","hexagonal.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fhexagonal",{"title":148,"order":64,"authors":149,"youtubeVideoID":151,"resources":152,"time":29,"path":160,"id":161,"link":162},"Powertools for AWS Lambda",[150],"Lavanya Tangutur","dH2GP6Lydj8",[153,157],{"link":154,"text":155,"type":156},"https:\u002F\u002Fgithub.com\u002Faws-powertools\u002Fpowertools-lambda-java","Powertools for AWS Lambda (Java)","github",{"link":158,"type":124,"text":159},"https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fopensource\u002Fsimplifying-serverless-best-practices-with-aws-lambda-powertools-java\u002F","Best practices with Powertools","powertools","powertools.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fpowertools",{"title":164,"order":64,"authors":165,"youtubeVideoID":166,"callout":167,"resources":171,"time":40,"path":174,"id":175,"link":176},"Lambda Power tuning ",[150,21],"z8wGSykEauI",{"title":168,"description":169,"link":170},"Watch the video","This video covers a variety of AWS Lambda performance and cost optimization techniques including use of Power tuning.","https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=z8wGSykEauI",[172,173],{"link":102,"text":103,"type":104},{"link":106,"type":104,"text":107},"powertuning","powertuning.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fpowertuning",{"title":178,"order":64,"authors":179,"resources":180,"time":29,"path":184,"id":185,"link":186},"Using Graviton2",[21],[181],{"link":182,"text":183,"type":124},"https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fcompute\u002Fmigrating-aws-lambda-functions-to-arm-based-aws-graviton2-processors\u002F","Using Arm-based Graviton2 processors","graviton","graviton.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fgraviton",{"title":188,"collapsible":14,"isCollapsed":15,"content":189},"Java frameworks",[190,205,214,230],{"title":191,"order":192,"authors":193,"resources":194,"time":29,"path":202,"id":203,"link":204},"Micronaut",7,[150,21],[195,199],{"link":196,"text":197,"type":198},"https:\u002F\u002Fgithub.com\u002Faws-samples\u002Fserverless-java-frameworks-samples\u002Ftree\u002Fmain","Serverless Java Frameworks","GitHub",{"link":200,"text":201,"type":198},"https:\u002F\u002Fgithub.com\u002Faws-samples\u002Fserverless-patterns\u002Ftree\u002Fmain\u002Fapigw-lambda-rds-snapstart","Micronaut with RDS","micronaut","micronaut.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fmicronaut",{"title":206,"order":192,"authors":207,"resources":208,"time":29,"path":211,"id":212,"link":213},"Quarkus",[150,21],[209],{"link":196,"text":210,"type":198},"Quarkus sample application","quarkus","quarkus.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fquarkus",{"title":215,"order":192,"authors":216,"resources":217,"time":108,"path":227,"id":228,"link":229},"Spring",[150,55],[218,219,223],{"link":196,"text":210,"type":198},{"link":220,"text":221,"type":222},"https:\u002F\u002Fcatalog.workshops.aws\u002Fjava-on-aws-lambda\u002Fen-US","Java on AWS Lambda","workshop",{"link":224,"text":225,"type":226},"https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fdevops\u002Fdeveloping-with-java-and-spring-boot-using-amazon-codewhisperer\u002F","Build Spring Boot using Amazon CodeWhisperer","Blog","springboot","springboot.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fspringboot",{"title":231,"order":192,"authors":232,"resources":233,"time":29,"path":237,"id":238,"link":239},"GraalVM Native Image",[150,21],[234,236],{"link":196,"text":235,"type":198},"GraalVM sample application",{"link":220,"text":221,"type":222},"graalvm","graalvm.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fgraalvm",{"title":241,"collapsible":14,"isCollapsed":15,"content":242},"Testing a Java application",[243,260,269,279,288],{"title":244,"order":245,"authors":246,"callout":248,"resources":252,"time":256,"path":257,"id":258,"link":259},"Testing Serverless",8,[247],"Lorenzo Micheli",{"title":249,"description":250,"link":251},"Read the Serverless testing guide","This guide dives deeper into Serverless testing","https:\u002F\u002Fserverlessland.com\u002Ftesting",[253],{"link":254,"text":255,"type":198},"https:\u002F\u002Fgithub.com\u002Faws-samples\u002Fserverless-test-samples\u002Ftree\u002Fmain\u002Fjava-test-samples","Serverless Java test samples","3 min","testing","testing.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Ftesting",{"title":261,"order":245,"authors":262,"callout":263,"resources":264,"time":108,"path":266,"id":267,"link":268},"Unit Testing",[247],{"title":249,"description":250,"link":251},[265],{"link":254,"text":255,"type":198},"unit","unit.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Funit",{"title":270,"order":245,"authors":271,"callout":272,"resources":273,"time":275,"path":276,"id":277,"link":278},"Integration Testing",[247,21],{"title":249,"description":250,"link":251},[274],{"link":254,"text":255,"type":198},"5 min","integration","integration.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fintegration",{"title":280,"order":245,"authors":281,"callout":282,"resources":283,"time":256,"path":285,"id":286,"link":287},"Functional Testing",[247,21],{"title":249,"description":250,"link":251},[284],{"link":254,"text":255,"type":198},"functional","functional.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Ffunctional",{"title":289,"order":245,"authors":290,"callout":291,"resources":292,"time":29,"path":294,"id":295,"link":296},"Load Testing",[21],{"title":249,"description":250,"link":251},[293],{"link":254,"text":255,"type":198},"load","load.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fload",{"title":298,"collapsible":14,"isCollapsed":15,"content":299},"Local Development",[300,307],{"title":301,"order":302,"authors":303,"time":40,"path":304,"id":305,"link":306},"IntelliJ",10,[21],"intellij","intellij.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fintellij",{"title":308,"order":302,"authors":309,"time":40,"path":310,"id":311,"link":312},"Visual Studio Code",[21],"vscode","vscode.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fvscode",{"title":314,"collapsible":14,"isCollapsed":14,"content":315},"Infrastructure as Code",[316,322,327,337],{"title":317,"order":7,"authors":318,"time":29,"path":319,"id":320,"link":321},"CloudFormation",[9],"cloudformation","cloudformation.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fcloudformation",{"title":6,"order":7,"authors":323,"time":275,"path":324,"id":325,"link":326},[9],"cdk","cdk.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fcdk",{"title":328,"order":7,"authors":329,"resources":330,"time":29,"path":334,"id":335,"link":336},"AWS SAM",[9],[331],{"link":332,"text":333,"type":124},"https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fcompute\u002Fbuilding-serverless-java-applications-with-the-aws-sam-cli\u002F","Java Serverless AWS SAM CLI","sam","sam.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fsam",{"title":338,"order":7,"authors":339,"resources":340,"time":29,"path":347,"id":348,"link":349},"Terraform",[21],[341,344],{"link":342,"type":198,"text":343},"https:\u002F\u002Fgithub.com\u002Faws-samples\u002Fserverless-patterns\u002Ftree\u002Fmain\u002Fapigw-lambda-snapstart-terraform","Java sample with Terraform",{"link":345,"text":346,"type":104},"https:\u002F\u002Fdocs.aws.amazon.com\u002Fserverless-application-model\u002Flatest\u002Fdeveloperguide\u002Fwhat-is-terraform-support.html","AWS SAM CLI Terraform support","terraform","terraform.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fterraform",{"title":351,"collapsible":14,"isCollapsed":15,"content":352},"Benchmarking",[353],{"title":354,"order":355,"youtubeVideoID":356,"authors":357,"resources":358,"time":40,"path":369,"id":370,"link":371},"Performance Benchmarking",11,"wmEIMWigXGc",[21],[359,361,363,366],{"link":360,"text":221,"type":222},"https:\u002F\u002Fcatalog.workshops.aws\u002Fjava-on-aws-lambda\u002Fen-US\u002F01-migration\u002F02-optimizations\u002Fbenchmark",{"link":196,"text":362,"type":198},"Benchmark: Micronaut, Quarkus, and SpringBoot",{"link":364,"text":365,"type":198},"https:\u002F\u002Fgithub.com\u002Faws-samples\u002Fserverless-graalvm-demo","GraalVM native image on AWS Lambda Benchmarking",{"link":367,"text":368,"type":198},"https:\u002F\u002Fgithub.com\u002Faws-samples\u002Fserverless-kotlin-demo","Benchmark Kotlin on Serverless","benchmark","benchmark.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fbenchmark",{"title":373,"collapsible":14,"isCollapsed":15,"content":374},"Migration",[375],{"title":376,"order":377,"authors":378,"youtubeVideoID":379,"resources":380,"time":40,"path":387,"id":388,"link":389},"Migration Guide",12,[21],"u3tgOE8qFjI",[381,385],{"link":382,"text":383,"type":384},"https:\u002F\u002Fserverlessland.com\u002Fcontent\u002Fservice\u002Flambda\u002Fpaved-path\u002Fjava-replatforming\u002Fintroduction","Java re-platforming guide","Guide",{"link":220,"text":221,"type":386},"Workshop","migration","migration.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fmigration","LIST",[392,393,394,395,396,397],"content\u002Fcontributors\u002Fdhiraj-mahapatro.json","content\u002Fcontributors\u002Fsonali-jena.json","content\u002Fcontributors\u002Flavanya-tangutur.json","content\u002Fcontributors\u002Fvipan-kumar.json","content\u002Fcontributors\u002Florenzo-micheli.json","content\u002Fcontributors\u002Fmaximilian-schellhorn.json","Effectively running Java on Serverless",1792665272351]