[{"data":1,"prerenderedAt":401},["ShallowReactive",2],{"content-svc-lambda-guides-effectively-running-java-on-serverless-quarkus":3},{"markdown":4,"frontMatterAttributes":5,"bodyRaw":16,"menu":17,"menuType":392,"isCollapseableMenu":20,"nextDocItem":214,"previousDocItem":195,"contributorPaths":393,"contentName":400,"slug":213,"readingTime":34},"\u003Cp>\u003Ca href=\"https:\u002F\u002Fquarkus.io\u002F\">Quarkus\u003C\u002Fa> is a microJVM framework for Java developers \nthat provides the capability of building Java applications with a fast boot time, and a lower time-to-first request.\nWhen combined with GraalVM native image, Quarkus will compile ahead-of-time (AOT). \u003C\u002Fp>\n\u003Cp>The \u003Ca href=\"https:\u002F\u002Fquarkus.io\u002Fguides\u002Faws-lambda\">\u003Ccode>quarkus-amazon-lambda\u003C\u002Fcode>\u003C\u002Fa> extension allows use of Quarkus \nto build Lambda functions. \nLambda functions built with Quarkus can be deployed using the managed Java runtime, \nor as a native executable in Lambda custom runtime \nfor a smaller memory footprint and faster cold boot startup time.\u003C\u002Fp>\n\u003Ch4>Benefits\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Build time processing and reduction of reflection usage\u003C\u002Fli>\n\u003Cli>Reduced startup time\u003C\u002Fli>\n\u003Cli>Lower memory footprint\u003C\u002Fli>\n\u003Cli>Support for GraalVM native images\u003C\u002Fli>\n\u003Cli>Extensions for a variety of AWS services (KMS, S3, SQS, SNS, DynamoDB)\u003C\u002Fli>\n\u003Cli>Kubernetes and AWS Lambda extensions\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Implementation in AWS SAM\u003C\u002Fh4>\n\u003Cp>Using AWS SAM template, you can create a Lambda function resource as the following:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-yaml\">AWSTemplateFormatVersion: &#39;2010-09-09&#39;\nTransform: AWS::Serverless-2016-10-31\nDescription: &gt;\n  lambda-quarkus-sample\n  Sample SAM Template for lambda-quarkus\n\nResources:\n  GetProductByIdFunction:\n    Type: AWS::Serverless::Function\n    Properties:\n      CodeUri: target\u002Fquarkus-lambda-function-1.0.0-SNAPSHOT-aws.jar\n      Handler: io.quarkus.amazon.lambda.runtime.QuarkusStreamHandler::handleRequest\n      Runtime: java17\n      Timeout: 30\n      MemorySize: 1024\n      Environment:\n        Variables:\n          quarkus_lambda_handler: getProductById\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>The corresponding Lambda function will use \n\u003Ca href=\"https:\u002F\u002Fjakarta.ee\u002Fspecifications\u002Fdependency-injection\u002F2.0\u002Fapidocs\u002Fjakarta\u002Finject\u002Fnamed\">Jakarta&#39;s \u003Ccode>@Named\u003C\u002Fcode>\u003C\u002Fa> to \nmatch the environment variable value:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-java\">@Named(&quot;getProductById&quot;)\npublic class GetProductByIdHandler implements RequestHandler&lt;APIGatewayProxyRequestEvent, APIGatewayProxyResponseEvent&gt; {\n  \n  public APIGatewayProxyResponseEvent handleRequest(APIGatewayProxyRequestEvent requestEvent, Context context) { }\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fquarkus.io\u002Fguides\u002Faws-lambda-snapstart\">Quarkus AWS Lambda extension\u003C\u002Fa> automatically \nenables Lambda SnapStart optimizations.\u003C\u002Fp>\n\u003Cp>Refer the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Faws-samples\u002Fserverless-java-frameworks-samples\u002Ftree\u002Fmain\u002Fquarkus\">sample application\u003C\u002Fa> \nfor additional details.\u003C\u002Fp>\n",{"title":6,"order":7,"authors":8,"resources":11},"Quarkus",7,[9,10],"Lavanya Tangutur","Dhiraj Mahapatro",[12],{"link":13,"text":14,"type":15},"https:\u002F\u002Fgithub.com\u002Faws-samples\u002Fserverless-java-frameworks-samples\u002Ftree\u002Fmain","Quarkus sample application","GitHub","[Quarkus](https:\u002F\u002Fquarkus.io\u002F) is a microJVM framework for Java developers \nthat provides the capability of building Java applications with a fast boot time, and a lower time-to-first request.\nWhen combined with GraalVM native image, Quarkus will compile ahead-of-time (AOT). \n\nThe [`quarkus-amazon-lambda`](https:\u002F\u002Fquarkus.io\u002Fguides\u002Faws-lambda) extension allows use of Quarkus \nto build Lambda functions. \nLambda functions built with Quarkus can be deployed using the managed Java runtime, \nor as a native executable in Lambda custom runtime \nfor a smaller memory footprint and faster cold boot startup time.\n\n#### Benefits\n- Build time processing and reduction of reflection usage\n- Reduced startup time\n- Lower memory footprint\n- Support for GraalVM native images\n- Extensions for a variety of AWS services (KMS, S3, SQS, SNS, DynamoDB)\n- Kubernetes and AWS Lambda extensions\n\n#### Implementation in AWS SAM\nUsing AWS SAM template, you can create a Lambda function resource as the following:\n\n```yaml\nAWSTemplateFormatVersion: '2010-09-09'\nTransform: AWS::Serverless-2016-10-31\nDescription: >\n  lambda-quarkus-sample\n  Sample SAM Template for lambda-quarkus\n\nResources:\n  GetProductByIdFunction:\n    Type: AWS::Serverless::Function\n    Properties:\n      CodeUri: target\u002Fquarkus-lambda-function-1.0.0-SNAPSHOT-aws.jar\n      Handler: io.quarkus.amazon.lambda.runtime.QuarkusStreamHandler::handleRequest\n      Runtime: java17\n      Timeout: 30\n      MemorySize: 1024\n      Environment:\n        Variables:\n          quarkus_lambda_handler: getProductById\n```\n\nThe corresponding Lambda function will use \n[Jakarta's `@Named`](https:\u002F\u002Fjakarta.ee\u002Fspecifications\u002Fdependency-injection\u002F2.0\u002Fapidocs\u002Fjakarta\u002Finject\u002Fnamed) to \nmatch the environment variable value:\n\n```java\n@Named(\"getProductById\")\npublic class GetProductByIdHandler implements RequestHandler\u003CAPIGatewayProxyRequestEvent, APIGatewayProxyResponseEvent> {\n  \n  public APIGatewayProxyResponseEvent handleRequest(APIGatewayProxyRequestEvent requestEvent, Context context) { }\n```\n[Quarkus AWS Lambda extension](https:\u002F\u002Fquarkus.io\u002Fguides\u002Faws-lambda-snapstart) automatically \nenables Lambda SnapStart optimizations.\n\nRefer the [sample application](https:\u002F\u002Fgithub.com\u002Faws-samples\u002Fserverless-java-frameworks-samples\u002Ftree\u002Fmain\u002Fquarkus) \nfor additional details.\n",[18,38,64,192,240,297,313,352,374],{"title":19,"collapsible":20,"isCollapsed":21,"content":22},"Introduction",false,true,[23],{"title":24,"order":25,"authors":26,"callout":27,"prerequisite":31,"time":34,"path":35,"id":36,"link":37},"Getting Started",1,[10],{"title":28,"description":29,"link":30},"Watch this video","This Devoxx Belgium 2023 presentation shows effectively running Java on Serverless","https:\u002F\u002Fyoutu.be\u002Fu3tgOE8qFjI?t=5549",[32,33],"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":39,"collapsible":20,"isCollapsed":21,"content":40},"History",[41,49,56],{"title":42,"order":43,"authors":44,"time":45,"path":46,"id":47,"link":48},"Evolution of Java",3,[10],"1 min","history","history.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fhistory",{"title":50,"order":51,"authors":52,"time":34,"path":53,"id":54,"link":55},"Evolution of Compute",4,[10],"compute","compute.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fcompute",{"title":57,"order":58,"authors":59,"time":34,"path":61,"id":62,"link":63},"Challenges",5,[10,60],"Maximilian Schellhorn","challenge","challenge.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fchallenge",{"title":65,"collapsible":20,"isCollapsed":21,"content":66},"Best Practices",[67,85,95,101,118,135,153,168,182],{"title":68,"order":69,"youtubeVideoID":70,"authors":71,"callout":73,"resources":76,"time":81,"path":82,"id":83,"link":84},"Lambda Snapstart",6,"ZbnAithBNYY",[72,10],"Vipan Kumar",{"title":28,"description":74,"link":75},"This serverless office hours session dives deeper into Lambda SnapStart.","https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=Y5b8_KToeDY",[77],{"link":78,"text":79,"type":80},"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":86,"order":69,"authors":87,"callout":88,"time":45,"path":92,"id":93,"link":94},"Tiered Compilation",[72],{"title":89,"description":90,"link":91},"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":96,"order":69,"authors":97,"time":45,"path":98,"id":99,"link":100},"Utilize initialization phase",[10],"init-heavy-lifting","init-heavy-lifting.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Finit-heavy-lifting",{"title":102,"order":69,"authors":103,"youtubeVideoID":105,"resources":106,"time":114,"path":115,"id":116,"link":117},"Using RDS Proxy",[104,10],"Sonali Jena","ZQOqmMn_8jw",[107,111],{"link":108,"text":109,"type":110},"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":112,"type":110,"text":113},"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":119,"order":69,"authors":120,"callout":121,"prerequisite":125,"resources":127,"time":34,"path":132,"id":133,"link":134},"Choice of HTTP Clients",[72,10],{"title":122,"description":123,"link":124},"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",[126],"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.",[128],{"link":129,"type":130,"text":131},"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":136,"order":69,"authors":137,"youtubeVideoID":138,"resources":139,"time":114,"path":150,"id":151,"link":152},"Hexagonal Architecture",[72],"kRFg6fkVChQ",[140,144,147],{"link":141,"text":142,"type":143},"https:\u002F\u002Fdocs.aws.amazon.com\u002Fprescriptive-guidance\u002Flatest\u002Fhexagonal-architectures\u002Fwelcome.html","Hexagonal architecture","guidance",{"link":145,"text":146,"type":130},"https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fcompute\u002Fdeveloping-portable-aws-lambda-functions\u002F","Portable Lambda functions",{"link":148,"type":130,"text":149},"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":154,"order":69,"authors":155,"youtubeVideoID":156,"resources":157,"time":34,"path":165,"id":166,"link":167},"Powertools for AWS Lambda",[9],"dH2GP6Lydj8",[158,162],{"link":159,"text":160,"type":161},"https:\u002F\u002Fgithub.com\u002Faws-powertools\u002Fpowertools-lambda-java","Powertools for AWS Lambda (Java)","github",{"link":163,"type":130,"text":164},"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":169,"order":69,"authors":170,"youtubeVideoID":171,"callout":172,"resources":176,"time":45,"path":179,"id":180,"link":181},"Lambda Power tuning ",[9,10],"z8wGSykEauI",{"title":173,"description":174,"link":175},"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",[177,178],{"link":108,"text":109,"type":110},{"link":112,"type":110,"text":113},"powertuning","powertuning.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fpowertuning",{"title":183,"order":69,"authors":184,"resources":185,"time":34,"path":189,"id":190,"link":191},"Using Graviton2",[10],[186],{"link":187,"text":188,"type":130},"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":193,"collapsible":20,"isCollapsed":20,"content":194},"Java frameworks",[195,207,214,230],{"title":196,"order":7,"authors":197,"resources":198,"time":34,"path":204,"id":205,"link":206},"Micronaut",[9,10],[199,201],{"link":13,"text":200,"type":15},"Serverless Java Frameworks",{"link":202,"text":203,"type":15},"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":6,"order":7,"authors":208,"resources":209,"time":34,"path":211,"id":212,"link":213},[9,10],[210],{"link":13,"text":14,"type":15},"quarkus","quarkus.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fquarkus",{"title":215,"order":7,"authors":216,"resources":217,"time":114,"path":227,"id":228,"link":229},"Spring",[9,60],[218,219,223],{"link":13,"text":14,"type":15},{"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":7,"authors":232,"resources":233,"time":34,"path":237,"id":238,"link":239},"GraalVM Native Image",[9,10],[234,236],{"link":13,"text":235,"type":15},"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":20,"isCollapsed":21,"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":15},"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":114,"path":266,"id":267,"link":268},"Unit Testing",[247],{"title":249,"description":250,"link":251},[265],{"link":254,"text":255,"type":15},"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,10],{"title":249,"description":250,"link":251},[274],{"link":254,"text":255,"type":15},"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,10],{"title":249,"description":250,"link":251},[284],{"link":254,"text":255,"type":15},"functional","functional.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Ffunctional",{"title":289,"order":245,"authors":290,"callout":291,"resources":292,"time":34,"path":294,"id":295,"link":296},"Load Testing",[10],{"title":249,"description":250,"link":251},[293],{"link":254,"text":255,"type":15},"load","load.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fload",{"title":298,"collapsible":20,"isCollapsed":21,"content":299},"Local Development",[300,307],{"title":301,"order":302,"authors":303,"time":45,"path":304,"id":305,"link":306},"IntelliJ",10,[10],"intellij","intellij.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fintellij",{"title":308,"order":302,"authors":309,"time":45,"path":310,"id":311,"link":312},"Visual Studio Code",[10],"vscode","vscode.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fvscode",{"title":314,"collapsible":20,"isCollapsed":21,"content":315},"Infrastructure as Code",[316,323,329,339],{"title":317,"order":318,"authors":319,"time":34,"path":320,"id":321,"link":322},"CloudFormation",9,[104],"cloudformation","cloudformation.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fcloudformation",{"title":324,"order":318,"authors":325,"time":275,"path":326,"id":327,"link":328},"AWS CDK",[104],"cdk","cdk.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fcdk",{"title":330,"order":318,"authors":331,"resources":332,"time":34,"path":336,"id":337,"link":338},"AWS SAM",[104],[333],{"link":334,"text":335,"type":130},"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":340,"order":318,"authors":341,"resources":342,"time":34,"path":349,"id":350,"link":351},"Terraform",[10],[343,346],{"link":344,"type":15,"text":345},"https:\u002F\u002Fgithub.com\u002Faws-samples\u002Fserverless-patterns\u002Ftree\u002Fmain\u002Fapigw-lambda-snapstart-terraform","Java sample with Terraform",{"link":347,"text":348,"type":110},"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":353,"collapsible":20,"isCollapsed":21,"content":354},"Benchmarking",[355],{"title":356,"order":357,"youtubeVideoID":358,"authors":359,"resources":360,"time":45,"path":371,"id":372,"link":373},"Performance Benchmarking",11,"wmEIMWigXGc",[10],[361,363,365,368],{"link":362,"text":221,"type":222},"https:\u002F\u002Fcatalog.workshops.aws\u002Fjava-on-aws-lambda\u002Fen-US\u002F01-migration\u002F02-optimizations\u002Fbenchmark",{"link":13,"text":364,"type":15},"Benchmark: Micronaut, Quarkus, and SpringBoot",{"link":366,"text":367,"type":15},"https:\u002F\u002Fgithub.com\u002Faws-samples\u002Fserverless-graalvm-demo","GraalVM native image on AWS Lambda Benchmarking",{"link":369,"text":370,"type":15},"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":375,"collapsible":20,"isCollapsed":21,"content":376},"Migration",[377],{"title":378,"order":379,"authors":380,"youtubeVideoID":381,"resources":382,"time":45,"path":389,"id":390,"link":391},"Migration Guide",12,[10],"u3tgOE8qFjI",[383,387],{"link":384,"text":385,"type":386},"https:\u002F\u002Fserverlessland.com\u002Fcontent\u002Fservice\u002Flambda\u002Fpaved-path\u002Fjava-replatforming\u002Fintroduction","Java re-platforming guide","Guide",{"link":220,"text":221,"type":388},"Workshop","migration","migration.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fmigration","LIST",[394,395,396,397,398,399],"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",1792578873899]