[{"data":1,"prerenderedAt":403},["ShallowReactive",2],{"content-svc-lambda-guides-effectively-running-java-on-serverless-http-clients":3},{"markdown":4,"frontMatterAttributes":5,"bodyRaw":22,"menu":23,"menuType":394,"isCollapseableMenu":26,"nextDocItem":131,"previousDocItem":105,"contributorPaths":395,"contentName":402,"slug":130,"readingTime":40},"\u003Cp>AWS SDK for Java offers various HTTP clients that are used by the SDK to connect to AWS Service APIs. \nThis can be broadly categorized into two categories:\u003C\u002Fp>\n\u003Ch4>Sync Clients\u003C\u002Fh4>\n\u003Cp>For synchronous interactions with AWS services for lower latency, using synchronous service clients like \n\u003Ca href=\"https:\u002F\u002Fsdk.amazonaws.com\u002Fjava\u002Fapi\u002Flatest\u002Fsoftware\u002Famazon\u002Fawssdk\u002Fservices\u002Fs3\u002FS3Client.html\">S3Client\u003C\u002Fa> or \n\u003Ca href=\"https:\u002F\u002Fsdk.amazonaws.com\u002Fjava\u002Fapi\u002Flatest\u002Fsoftware\u002Famazon\u002Fawssdk\u002Fservices\u002Fdynamodb\u002FDynamoDbClient.html\">DynamoDBClient\u003C\u002Fa> \nyou can use either the \u003Ca href=\"https:\u002F\u002Fsdk.amazonaws.com\u002Fjava\u002Fapi\u002Flatest\u002Fsoftware\u002Famazon\u002Fawssdk\u002Fhttp\u002Fapache\u002FApacheHttpClient.html\">ApacheHttpClient\u003C\u002Fa> \n(default) or \u003Ca href=\"https:\u002F\u002Fsdk.amazonaws.com\u002Fjava\u002Fapi\u002Flatest\u002Fsoftware\u002Famazon\u002Fawssdk\u002Fhttp\u002Furlconnection\u002FUrlConnectionHttpClient.html\">UrlConnectionHttpClient\u003C\u002Fa>. \nIt is generally recommended to use \u003Ccode>UrlConnectionHttpClient\u003C\u002Fcode> in Lambda because it is lightweight and minimizes jar size.\u003C\u002Fp>\n\u003Ch4>Async Clients\u003C\u002Fh4>\n\u003Cp>For async interactions with AWS services, you can use \n\u003Ca href=\"https:\u002F\u002Fsdk.amazonaws.com\u002Fjava\u002Fapi\u002Flatest\u002Fsoftware\u002Famazon\u002Fawssdk\u002Fhttp\u002Fnio\u002Fnetty\u002FNettyNioAsyncHttpClient.html\">NettyNioAsyncHttpClient\u003C\u002Fa> or \n\u003Ca href=\"https:\u002F\u002Fsdk.amazonaws.com\u002Fjava\u002Fapi\u002Flatest\u002Fsoftware\u002Famazon\u002Fawssdk\u002Fhttp\u002Fcrt\u002FAwsCrtAsyncHttpClient.html\">AwsCrtAsyncHttpClient\u003C\u002Fa>. \u003C\u002Fp>\n\u003Cp>\u003Ccode>AwsCrtAsyncHttpClient\u003C\u002Fcode> is recommended for Lambda because it has quicker loading times and thus leading to faster startups. \nIt also uses less memory as compared to NettyNioAsyncHttpClient. \u003Ccode>AwsCrtAsyncHttpClient\u003C\u002Fcode> improves latency by up-to 76%, \nprovides up-to 14% reduction in memory usage and up-to 9% improvement in P90 latency. \nThumbs up \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Faws\u002Faws-sdk-java-v2\u002Fissues\u002F3343\">this GitHub issue\u003C\u002Fa> to add support for sync client APIs\nto CRT Client.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"\u002Fassets\u002Fexternal\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fassets\u002Fhttp_crt_1.png\" alt=\"CRT1\">\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"\u002Fassets\u002Fexternal\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fassets\u002Fhttp_crt_2.png\" alt=\"CRT2\">\u003C\u002Fp>\n\u003Cp>One limitation of \u003Ccode>AwsCrtAsyncHttpClient\u003C\u002Fcode> is that it currently does not support \u003Ca href=\"https:\u002F\u002Fhttp2.github.io\u002F\">HTTP\u002F2 protocol\u003C\u002Fa>. \nSo if you are using the service SDK clients that require HTTP\u002F2 support such as \n\u003Ca href=\"https:\u002F\u002Fsdk.amazonaws.com\u002Fjava\u002Fapi\u002Flatest\u002Fsoftware\u002Famazon\u002Fawssdk\u002Fservices\u002Fkinesis\u002FKinesisAsyncClient.html\">KinesisAsyncClient\u003C\u002Fa> \nand \u003Ca href=\"https:\u002F\u002Fsdk.amazonaws.com\u002Fjava\u002Fapi\u002Flatest\u002Fsoftware\u002Famazon\u002Fawssdk\u002Fservices\u002Ftranscribestreaming\u002FTranscribeStreamingAsyncClient.html\">TranscribeStreamingAsyncClient\u003C\u002Fa>, \nconsider using NettyAsyncHttpClient instead.\u003C\u002Fp>\n\u003Ch4>General guidance for choosing HTTP clients\u003C\u002Fh4>\n\u003Cp>\u003Cimg src=\"\u002Fassets\u002Fexternal\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fassets\u002Fhttp_decision_tree.png\" alt=\"HTTPClientDecisionTree\">\u003C\u002Fp>\n\u003Cp>To learn more, visit \u003Ca href=\"https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fdeveloper\u002Fannouncing-availability-of-the-aws-crt-http-client-in-the-aws-sdk-for-java-2-x\u002F\">this AWS Blog\u003C\u002Fa>.\u003C\u002Fp>\n",{"title":6,"order":7,"authors":8,"callout":11,"prerequisite":15,"resources":17},"Choice of HTTP Clients",6,[9,10],"Vipan Kumar","Dhiraj Mahapatro",{"title":12,"description":13,"link":14},"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",[16],"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.",[18],{"link":19,"type":20,"text":21},"https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fdeveloper\u002Faws-sdk-for-java-2-x-released\u002F","blog","AWS SDK for Java v2","AWS SDK for Java offers various HTTP clients that are used by the SDK to connect to AWS Service APIs. \nThis can be broadly categorized into two categories:\n\n#### Sync Clients\nFor synchronous interactions with AWS services for lower latency, using synchronous service clients like \n[S3Client](https:\u002F\u002Fsdk.amazonaws.com\u002Fjava\u002Fapi\u002Flatest\u002Fsoftware\u002Famazon\u002Fawssdk\u002Fservices\u002Fs3\u002FS3Client.html) or \n[DynamoDBClient](https:\u002F\u002Fsdk.amazonaws.com\u002Fjava\u002Fapi\u002Flatest\u002Fsoftware\u002Famazon\u002Fawssdk\u002Fservices\u002Fdynamodb\u002FDynamoDbClient.html) \nyou can use either the [ApacheHttpClient](https:\u002F\u002Fsdk.amazonaws.com\u002Fjava\u002Fapi\u002Flatest\u002Fsoftware\u002Famazon\u002Fawssdk\u002Fhttp\u002Fapache\u002FApacheHttpClient.html) \n(default) or [UrlConnectionHttpClient](https:\u002F\u002Fsdk.amazonaws.com\u002Fjava\u002Fapi\u002Flatest\u002Fsoftware\u002Famazon\u002Fawssdk\u002Fhttp\u002Furlconnection\u002FUrlConnectionHttpClient.html). \nIt is generally recommended to use `UrlConnectionHttpClient` in Lambda because it is lightweight and minimizes jar size.\n\n#### Async Clients\nFor async interactions with AWS services, you can use \n[NettyNioAsyncHttpClient](https:\u002F\u002Fsdk.amazonaws.com\u002Fjava\u002Fapi\u002Flatest\u002Fsoftware\u002Famazon\u002Fawssdk\u002Fhttp\u002Fnio\u002Fnetty\u002FNettyNioAsyncHttpClient.html) or \n[AwsCrtAsyncHttpClient](https:\u002F\u002Fsdk.amazonaws.com\u002Fjava\u002Fapi\u002Flatest\u002Fsoftware\u002Famazon\u002Fawssdk\u002Fhttp\u002Fcrt\u002FAwsCrtAsyncHttpClient.html). \n\n`AwsCrtAsyncHttpClient` is recommended for Lambda because it has quicker loading times and thus leading to faster startups. \nIt also uses less memory as compared to NettyNioAsyncHttpClient. `AwsCrtAsyncHttpClient` improves latency by up-to 76%, \nprovides up-to 14% reduction in memory usage and up-to 9% improvement in P90 latency. \nThumbs up [this GitHub issue](https:\u002F\u002Fgithub.com\u002Faws\u002Faws-sdk-java-v2\u002Fissues\u002F3343) to add support for sync client APIs\nto CRT Client.\n\n![CRT1](\u002Fassets\u002Fexternal\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fassets\u002Fhttp_crt_1.png)\n\n![CRT2](\u002Fassets\u002Fexternal\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fassets\u002Fhttp_crt_2.png)\n\nOne limitation of `AwsCrtAsyncHttpClient` is that it currently does not support [HTTP\u002F2 protocol](https:\u002F\u002Fhttp2.github.io\u002F). \nSo if you are using the service SDK clients that require HTTP\u002F2 support such as \n[KinesisAsyncClient](https:\u002F\u002Fsdk.amazonaws.com\u002Fjava\u002Fapi\u002Flatest\u002Fsoftware\u002Famazon\u002Fawssdk\u002Fservices\u002Fkinesis\u002FKinesisAsyncClient.html) \nand [TranscribeStreamingAsyncClient](https:\u002F\u002Fsdk.amazonaws.com\u002Fjava\u002Fapi\u002Flatest\u002Fsoftware\u002Famazon\u002Fawssdk\u002Fservices\u002Ftranscribestreaming\u002FTranscribeStreamingAsyncClient.html), \nconsider using NettyAsyncHttpClient instead.\n\n#### General guidance for choosing HTTP clients\n\n![HTTPClientDecisionTree](\u002Fassets\u002Fexternal\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fassets\u002Fhttp_decision_tree.png)\n\nTo learn more, visit [this AWS Blog](https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fdeveloper\u002Fannouncing-availability-of-the-aws-crt-http-client-in-the-aws-sdk-for-java-2-x\u002F).\n",[24,44,70,189,242,299,315,354,376],{"title":25,"collapsible":26,"isCollapsed":27,"content":28},"Introduction",false,true,[29],{"title":30,"order":31,"authors":32,"callout":33,"prerequisite":37,"time":40,"path":41,"id":42,"link":43},"Getting Started",1,[10],{"title":34,"description":35,"link":36},"Watch this video","This Devoxx Belgium 2023 presentation shows effectively running Java on Serverless","https:\u002F\u002Fyoutu.be\u002Fu3tgOE8qFjI?t=5549",[38,39],"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":45,"collapsible":26,"isCollapsed":27,"content":46},"History",[47,55,62],{"title":48,"order":49,"authors":50,"time":51,"path":52,"id":53,"link":54},"Evolution of Java",3,[10],"1 min","history","history.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fhistory",{"title":56,"order":57,"authors":58,"time":40,"path":59,"id":60,"link":61},"Evolution of Compute",4,[10],"compute","compute.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fcompute",{"title":63,"order":64,"authors":65,"time":40,"path":67,"id":68,"link":69},"Challenges",5,[10,66],"Maximilian Schellhorn","challenge","challenge.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fchallenge",{"title":71,"collapsible":26,"isCollapsed":26,"content":72},"Best Practices",[73,89,99,105,122,131,149,165,179],{"title":74,"order":7,"youtubeVideoID":75,"authors":76,"callout":77,"resources":80,"time":85,"path":86,"id":87,"link":88},"Lambda Snapstart","ZbnAithBNYY",[9,10],{"title":34,"description":78,"link":79},"This serverless office hours session dives deeper into Lambda SnapStart.","https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=Y5b8_KToeDY",[81],{"link":82,"text":83,"type":84},"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":90,"order":7,"authors":91,"callout":92,"time":51,"path":96,"id":97,"link":98},"Tiered Compilation",[9],{"title":93,"description":94,"link":95},"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":100,"order":7,"authors":101,"time":51,"path":102,"id":103,"link":104},"Utilize initialization phase",[10],"init-heavy-lifting","init-heavy-lifting.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Finit-heavy-lifting",{"title":106,"order":7,"authors":107,"youtubeVideoID":109,"resources":110,"time":118,"path":119,"id":120,"link":121},"Using RDS Proxy",[108,10],"Sonali Jena","ZQOqmMn_8jw",[111,115],{"link":112,"text":113,"type":114},"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":116,"type":114,"text":117},"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":6,"order":7,"authors":123,"callout":124,"prerequisite":125,"resources":126,"time":40,"path":128,"id":129,"link":130},[9,10],{"title":12,"description":13,"link":14},[16],[127],{"link":19,"type":20,"text":21},"http-clients","http-clients.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fhttp-clients",{"title":132,"order":7,"authors":133,"youtubeVideoID":134,"resources":135,"time":118,"path":146,"id":147,"link":148},"Hexagonal Architecture",[9],"kRFg6fkVChQ",[136,140,143],{"link":137,"text":138,"type":139},"https:\u002F\u002Fdocs.aws.amazon.com\u002Fprescriptive-guidance\u002Flatest\u002Fhexagonal-architectures\u002Fwelcome.html","Hexagonal architecture","guidance",{"link":141,"text":142,"type":20},"https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fcompute\u002Fdeveloping-portable-aws-lambda-functions\u002F","Portable Lambda functions",{"link":144,"type":20,"text":145},"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":150,"order":7,"authors":151,"youtubeVideoID":153,"resources":154,"time":40,"path":162,"id":163,"link":164},"Powertools for AWS Lambda",[152],"Lavanya Tangutur","dH2GP6Lydj8",[155,159],{"link":156,"text":157,"type":158},"https:\u002F\u002Fgithub.com\u002Faws-powertools\u002Fpowertools-lambda-java","Powertools for AWS Lambda (Java)","github",{"link":160,"type":20,"text":161},"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":166,"order":7,"authors":167,"youtubeVideoID":168,"callout":169,"resources":173,"time":51,"path":176,"id":177,"link":178},"Lambda Power tuning ",[152,10],"z8wGSykEauI",{"title":170,"description":171,"link":172},"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",[174,175],{"link":112,"text":113,"type":114},{"link":116,"type":114,"text":117},"powertuning","powertuning.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fpowertuning",{"title":180,"order":7,"authors":181,"resources":182,"time":40,"path":186,"id":187,"link":188},"Using Graviton2",[10],[183],{"link":184,"text":185,"type":20},"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":190,"collapsible":26,"isCollapsed":27,"content":191},"Java frameworks",[192,207,216,232],{"title":193,"order":194,"authors":195,"resources":196,"time":40,"path":204,"id":205,"link":206},"Micronaut",7,[152,10],[197,201],{"link":198,"text":199,"type":200},"https:\u002F\u002Fgithub.com\u002Faws-samples\u002Fserverless-java-frameworks-samples\u002Ftree\u002Fmain","Serverless Java Frameworks","GitHub",{"link":202,"text":203,"type":200},"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":208,"order":194,"authors":209,"resources":210,"time":40,"path":213,"id":214,"link":215},"Quarkus",[152,10],[211],{"link":198,"text":212,"type":200},"Quarkus sample application","quarkus","quarkus.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fquarkus",{"title":217,"order":194,"authors":218,"resources":219,"time":118,"path":229,"id":230,"link":231},"Spring",[152,66],[220,221,225],{"link":198,"text":212,"type":200},{"link":222,"text":223,"type":224},"https:\u002F\u002Fcatalog.workshops.aws\u002Fjava-on-aws-lambda\u002Fen-US","Java on AWS Lambda","workshop",{"link":226,"text":227,"type":228},"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":233,"order":194,"authors":234,"resources":235,"time":40,"path":239,"id":240,"link":241},"GraalVM Native Image",[152,10],[236,238],{"link":198,"text":237,"type":200},"GraalVM sample application",{"link":222,"text":223,"type":224},"graalvm","graalvm.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fgraalvm",{"title":243,"collapsible":26,"isCollapsed":27,"content":244},"Testing a Java application",[245,262,271,281,290],{"title":246,"order":247,"authors":248,"callout":250,"resources":254,"time":258,"path":259,"id":260,"link":261},"Testing Serverless",8,[249],"Lorenzo Micheli",{"title":251,"description":252,"link":253},"Read the Serverless testing guide","This guide dives deeper into Serverless testing","https:\u002F\u002Fserverlessland.com\u002Ftesting",[255],{"link":256,"text":257,"type":200},"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":263,"order":247,"authors":264,"callout":265,"resources":266,"time":118,"path":268,"id":269,"link":270},"Unit Testing",[249],{"title":251,"description":252,"link":253},[267],{"link":256,"text":257,"type":200},"unit","unit.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Funit",{"title":272,"order":247,"authors":273,"callout":274,"resources":275,"time":277,"path":278,"id":279,"link":280},"Integration Testing",[249,10],{"title":251,"description":252,"link":253},[276],{"link":256,"text":257,"type":200},"5 min","integration","integration.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fintegration",{"title":282,"order":247,"authors":283,"callout":284,"resources":285,"time":258,"path":287,"id":288,"link":289},"Functional Testing",[249,10],{"title":251,"description":252,"link":253},[286],{"link":256,"text":257,"type":200},"functional","functional.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Ffunctional",{"title":291,"order":247,"authors":292,"callout":293,"resources":294,"time":40,"path":296,"id":297,"link":298},"Load Testing",[10],{"title":251,"description":252,"link":253},[295],{"link":256,"text":257,"type":200},"load","load.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fload",{"title":300,"collapsible":26,"isCollapsed":27,"content":301},"Local Development",[302,309],{"title":303,"order":304,"authors":305,"time":51,"path":306,"id":307,"link":308},"IntelliJ",10,[10],"intellij","intellij.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fintellij",{"title":310,"order":304,"authors":311,"time":51,"path":312,"id":313,"link":314},"Visual Studio Code",[10],"vscode","vscode.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fvscode",{"title":316,"collapsible":26,"isCollapsed":27,"content":317},"Infrastructure as Code",[318,325,331,341],{"title":319,"order":320,"authors":321,"time":40,"path":322,"id":323,"link":324},"CloudFormation",9,[108],"cloudformation","cloudformation.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fcloudformation",{"title":326,"order":320,"authors":327,"time":277,"path":328,"id":329,"link":330},"AWS CDK",[108],"cdk","cdk.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fcdk",{"title":332,"order":320,"authors":333,"resources":334,"time":40,"path":338,"id":339,"link":340},"AWS SAM",[108],[335],{"link":336,"text":337,"type":20},"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":342,"order":320,"authors":343,"resources":344,"time":40,"path":351,"id":352,"link":353},"Terraform",[10],[345,348],{"link":346,"type":200,"text":347},"https:\u002F\u002Fgithub.com\u002Faws-samples\u002Fserverless-patterns\u002Ftree\u002Fmain\u002Fapigw-lambda-snapstart-terraform","Java sample with Terraform",{"link":349,"text":350,"type":114},"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":355,"collapsible":26,"isCollapsed":27,"content":356},"Benchmarking",[357],{"title":358,"order":359,"youtubeVideoID":360,"authors":361,"resources":362,"time":51,"path":373,"id":374,"link":375},"Performance Benchmarking",11,"wmEIMWigXGc",[10],[363,365,367,370],{"link":364,"text":223,"type":224},"https:\u002F\u002Fcatalog.workshops.aws\u002Fjava-on-aws-lambda\u002Fen-US\u002F01-migration\u002F02-optimizations\u002Fbenchmark",{"link":198,"text":366,"type":200},"Benchmark: Micronaut, Quarkus, and SpringBoot",{"link":368,"text":369,"type":200},"https:\u002F\u002Fgithub.com\u002Faws-samples\u002Fserverless-graalvm-demo","GraalVM native image on AWS Lambda Benchmarking",{"link":371,"text":372,"type":200},"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":377,"collapsible":26,"isCollapsed":27,"content":378},"Migration",[379],{"title":380,"order":381,"authors":382,"youtubeVideoID":383,"resources":384,"time":51,"path":391,"id":392,"link":393},"Migration Guide",12,[10],"u3tgOE8qFjI",[385,389],{"link":386,"text":387,"type":388},"https:\u002F\u002Fserverlessland.com\u002Fcontent\u002Fservice\u002Flambda\u002Fpaved-path\u002Fjava-replatforming\u002Fintroduction","Java re-platforming guide","Guide",{"link":222,"text":223,"type":390},"Workshop","migration","migration.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fmigration","LIST",[396,397,398,399,400,401],"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",1792665272659]