[{"data":1,"prerenderedAt":402},["ShallowReactive",2],{"content-svc-lambda-guides-effectively-running-java-on-serverless-graalvm":3},{"markdown":4,"frontMatterAttributes":5,"bodyRaw":20,"menu":21,"menuType":393,"isCollapseableMenu":24,"nextDocItem":244,"previousDocItem":220,"contributorPaths":394,"contentName":401,"slug":240,"readingTime":38},"\u003Cp>\u003Ca href=\"https:\u002F\u002Fwww.graalvm.org\u002F\">GraalVM\u003C\u002Fa> is a high-performance JDK \ndesigned to accelerate the execution of applications written in Java and other JVM languages \nwhile also providing run times for JavaScript, Python, and a number of other popular languages. \nGraalVM offers two ways to run Java applications: \u003C\u002Fp>\n\u003Col>\n\u003Cli>On the HotSpot JVM with Graal just-in-time (JIT) compiler, or \u003C\u002Fli>\n\u003Cli>As an ahead-of-time (AOT) compiled native executable\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch4>GraalVM Native Image\u003C\u002Fh4>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwww.graalvm.org\u002Flatest\u002Freference-manual\u002Fnative-image\u002F\">GraalVM native image\u003C\u002Fa> uses the second approach mentioned above. \nIt compiles Java code ahead-of-time to a binary executable. \nA native executable includes only the code required at run time,\nthat is the application classes, standard-library classes, \nthe language runtime, and statically-linked native code from the JDK.\u003C\u002Fp>\n\u003Ch4>Packaging GraalVM native image for AWS Lambda\u003C\u002Fh4>\n\u003Cp>\u003Cimg src=\"\u002Fassets\u002Fexternal\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fassets\u002Fgraalvm_lambda.png\" alt=\"GraalVMLambda\">\u003C\u002Fp>\n\u003Ch4>Normal JVM versus GraalVM Native image on AWS Lambda:\u003C\u002Fh4>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth align=\"left\">JVM\u003C\u002Fth>\n\u003Cth align=\"left\">GraalVM Native image\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd align=\"left\">Compiled just-in-time (JIT)\u003C\u002Ftd>\n\u003Ctd align=\"left\">Compiled ahead-of-time (AOT)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd align=\"left\">Faster compile time\u003C\u002Ftd>\n\u003Ctd align=\"left\">Slower compile time because of AOT optimizations\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd align=\"left\">Deployment with managed runtime\u003C\u002Ftd>\n\u003Ctd align=\"left\">Deployment with custom runtime\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd align=\"left\">Dynamic Language Features (runtime proxies, reflection)\u003C\u002Ftd>\n\u003Ctd align=\"left\">Closed-world model, dynamic features need special treatment\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd align=\"left\">Slower startup\u003C\u002Ftd>\n\u003Ctd align=\"left\">Faster startup\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd align=\"left\">Uses more resources\u003C\u002Ftd>\n\u003Ctd align=\"left\">Uses fraction of resources, cheaper to run\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd align=\"left\">Bigger artifact size\u003C\u002Ftd>\n\u003Ctd align=\"left\">Smaller artifact size\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd align=\"left\">Higher cold start\u003C\u002Ftd>\n\u003Ctd align=\"left\">Delivers peak performance immediately\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd align=\"left\">Wider attack surface\u003C\u002Ftd>\n\u003Ctd align=\"left\">Reduced attack surface because of close-world model\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Cp>Refer \u003Ca href=\"https:\u002F\u002Fwww.graalvm.org\u002Flatest\u002Freference-manual\u002Fnative-image\u002Fdynamic-features\u002F\">the guide\u003C\u002Fa>\nto learn more about the special treatments GraalVM native does to support dynamic features. \u003C\u002Fp>\n",{"title":6,"order":7,"authors":8,"resources":11},"GraalVM Native Image",7,[9,10],"Lavanya Tangutur","Dhiraj Mahapatro",[12,16],{"link":13,"text":14,"type":15},"https:\u002F\u002Fgithub.com\u002Faws-samples\u002Fserverless-java-frameworks-samples\u002Ftree\u002Fmain","GraalVM sample application","GitHub",{"link":17,"text":18,"type":19},"https:\u002F\u002Fcatalog.workshops.aws\u002Fjava-on-aws-lambda\u002Fen-US","Java on AWS Lambda","workshop","[GraalVM](https:\u002F\u002Fwww.graalvm.org\u002F) is a high-performance JDK \ndesigned to accelerate the execution of applications written in Java and other JVM languages \nwhile also providing run times for JavaScript, Python, and a number of other popular languages. \nGraalVM offers two ways to run Java applications: \n\n1. On the HotSpot JVM with Graal just-in-time (JIT) compiler, or \n2. As an ahead-of-time (AOT) compiled native executable\n\n#### GraalVM Native Image\n[GraalVM native image](https:\u002F\u002Fwww.graalvm.org\u002Flatest\u002Freference-manual\u002Fnative-image\u002F) uses the second approach mentioned above. \nIt compiles Java code ahead-of-time to a binary executable. \nA native executable includes only the code required at run time,\nthat is the application classes, standard-library classes, \nthe language runtime, and statically-linked native code from the JDK.\n\n#### Packaging GraalVM native image for AWS Lambda\n\n![GraalVMLambda](\u002Fassets\u002Fexternal\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fassets\u002Fgraalvm_lambda.png)\n\n#### Normal JVM versus GraalVM Native image on AWS Lambda:\n\n| JVM                                                     | GraalVM Native image                                        |\n|:--------------------------------------------------------|:------------------------------------------------------------|\n| Compiled just-in-time (JIT)                             | Compiled ahead-of-time (AOT)                                |\n| Faster compile time                                     | Slower compile time because of AOT optimizations            |\n| Deployment with managed runtime                         | Deployment with custom runtime                              |\n| Dynamic Language Features (runtime proxies, reflection) | Closed-world model, dynamic features need special treatment |\n| Slower startup                                          | Faster startup                                              |\n| Uses more resources                                     | Uses fraction of resources, cheaper to run                  |\n| Bigger artifact size                                    | Smaller artifact size                                       |\n| Higher cold start                                       | Delivers peak performance immediately                       |\n| Wider attack surface                                    | Reduced attack surface because of close-world model         |\n\nRefer [the guide](https:\u002F\u002Fwww.graalvm.org\u002Flatest\u002Freference-manual\u002Fnative-image\u002Fdynamic-features\u002F)\nto learn more about the special treatments GraalVM native does to support dynamic features. \n",[22,42,68,196,241,298,314,353,375],{"title":23,"collapsible":24,"isCollapsed":25,"content":26},"Introduction",false,true,[27],{"title":28,"order":29,"authors":30,"callout":31,"prerequisite":35,"time":38,"path":39,"id":40,"link":41},"Getting Started",1,[10],{"title":32,"description":33,"link":34},"Watch this video","This Devoxx Belgium 2023 presentation shows effectively running Java on Serverless","https:\u002F\u002Fyoutu.be\u002Fu3tgOE8qFjI?t=5549",[36,37],"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":43,"collapsible":24,"isCollapsed":25,"content":44},"History",[45,53,60],{"title":46,"order":47,"authors":48,"time":49,"path":50,"id":51,"link":52},"Evolution of Java",3,[10],"1 min","history","history.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fhistory",{"title":54,"order":55,"authors":56,"time":38,"path":57,"id":58,"link":59},"Evolution of Compute",4,[10],"compute","compute.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fcompute",{"title":61,"order":62,"authors":63,"time":38,"path":65,"id":66,"link":67},"Challenges",5,[10,64],"Maximilian Schellhorn","challenge","challenge.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fchallenge",{"title":69,"collapsible":24,"isCollapsed":25,"content":70},"Best Practices",[71,89,99,105,122,139,157,172,186],{"title":72,"order":73,"youtubeVideoID":74,"authors":75,"callout":77,"resources":80,"time":85,"path":86,"id":87,"link":88},"Lambda Snapstart",6,"ZbnAithBNYY",[76,10],"Vipan Kumar",{"title":32,"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":73,"authors":91,"callout":92,"time":49,"path":96,"id":97,"link":98},"Tiered Compilation",[76],{"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":73,"authors":101,"time":49,"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":73,"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":123,"order":73,"authors":124,"callout":125,"prerequisite":129,"resources":131,"time":38,"path":136,"id":137,"link":138},"Choice of HTTP Clients",[76,10],{"title":126,"description":127,"link":128},"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",[130],"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.",[132],{"link":133,"type":134,"text":135},"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":140,"order":73,"authors":141,"youtubeVideoID":142,"resources":143,"time":118,"path":154,"id":155,"link":156},"Hexagonal Architecture",[76],"kRFg6fkVChQ",[144,148,151],{"link":145,"text":146,"type":147},"https:\u002F\u002Fdocs.aws.amazon.com\u002Fprescriptive-guidance\u002Flatest\u002Fhexagonal-architectures\u002Fwelcome.html","Hexagonal architecture","guidance",{"link":149,"text":150,"type":134},"https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fcompute\u002Fdeveloping-portable-aws-lambda-functions\u002F","Portable Lambda functions",{"link":152,"type":134,"text":153},"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":158,"order":73,"authors":159,"youtubeVideoID":160,"resources":161,"time":38,"path":169,"id":170,"link":171},"Powertools for AWS Lambda",[9],"dH2GP6Lydj8",[162,166],{"link":163,"text":164,"type":165},"https:\u002F\u002Fgithub.com\u002Faws-powertools\u002Fpowertools-lambda-java","Powertools for AWS Lambda (Java)","github",{"link":167,"type":134,"text":168},"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":173,"order":73,"authors":174,"youtubeVideoID":175,"callout":176,"resources":180,"time":49,"path":183,"id":184,"link":185},"Lambda Power tuning ",[9,10],"z8wGSykEauI",{"title":177,"description":178,"link":179},"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",[181,182],{"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":187,"order":73,"authors":188,"resources":189,"time":38,"path":193,"id":194,"link":195},"Using Graviton2",[10],[190],{"link":191,"text":192,"type":134},"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":197,"collapsible":24,"isCollapsed":24,"content":198},"Java frameworks",[199,211,220,233],{"title":200,"order":7,"authors":201,"resources":202,"time":38,"path":208,"id":209,"link":210},"Micronaut",[9,10],[203,205],{"link":13,"text":204,"type":15},"Serverless Java Frameworks",{"link":206,"text":207,"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":212,"order":7,"authors":213,"resources":214,"time":38,"path":217,"id":218,"link":219},"Quarkus",[9,10],[215],{"link":13,"text":216,"type":15},"Quarkus sample application","quarkus","quarkus.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fquarkus",{"title":221,"order":7,"authors":222,"resources":223,"time":118,"path":230,"id":231,"link":232},"Spring",[9,64],[224,225,226],{"link":13,"text":216,"type":15},{"link":17,"text":18,"type":19},{"link":227,"text":228,"type":229},"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":6,"order":7,"authors":234,"resources":235,"time":38,"path":238,"id":239,"link":240},[9,10],[236,237],{"link":13,"text":14,"type":15},{"link":17,"text":18,"type":19},"graalvm","graalvm.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fgraalvm",{"title":242,"collapsible":24,"isCollapsed":25,"content":243},"Testing a Java application",[244,261,270,280,289],{"title":245,"order":246,"authors":247,"callout":249,"resources":253,"time":257,"path":258,"id":259,"link":260},"Testing Serverless",8,[248],"Lorenzo Micheli",{"title":250,"description":251,"link":252},"Read the Serverless testing guide","This guide dives deeper into Serverless testing","https:\u002F\u002Fserverlessland.com\u002Ftesting",[254],{"link":255,"text":256,"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":262,"order":246,"authors":263,"callout":264,"resources":265,"time":118,"path":267,"id":268,"link":269},"Unit Testing",[248],{"title":250,"description":251,"link":252},[266],{"link":255,"text":256,"type":15},"unit","unit.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Funit",{"title":271,"order":246,"authors":272,"callout":273,"resources":274,"time":276,"path":277,"id":278,"link":279},"Integration Testing",[248,10],{"title":250,"description":251,"link":252},[275],{"link":255,"text":256,"type":15},"5 min","integration","integration.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fintegration",{"title":281,"order":246,"authors":282,"callout":283,"resources":284,"time":257,"path":286,"id":287,"link":288},"Functional Testing",[248,10],{"title":250,"description":251,"link":252},[285],{"link":255,"text":256,"type":15},"functional","functional.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Ffunctional",{"title":290,"order":246,"authors":291,"callout":292,"resources":293,"time":38,"path":295,"id":296,"link":297},"Load Testing",[10],{"title":250,"description":251,"link":252},[294],{"link":255,"text":256,"type":15},"load","load.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fload",{"title":299,"collapsible":24,"isCollapsed":25,"content":300},"Local Development",[301,308],{"title":302,"order":303,"authors":304,"time":49,"path":305,"id":306,"link":307},"IntelliJ",10,[10],"intellij","intellij.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fintellij",{"title":309,"order":303,"authors":310,"time":49,"path":311,"id":312,"link":313},"Visual Studio Code",[10],"vscode","vscode.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fvscode",{"title":315,"collapsible":24,"isCollapsed":25,"content":316},"Infrastructure as Code",[317,324,330,340],{"title":318,"order":319,"authors":320,"time":38,"path":321,"id":322,"link":323},"CloudFormation",9,[108],"cloudformation","cloudformation.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fcloudformation",{"title":325,"order":319,"authors":326,"time":276,"path":327,"id":328,"link":329},"AWS CDK",[108],"cdk","cdk.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fcdk",{"title":331,"order":319,"authors":332,"resources":333,"time":38,"path":337,"id":338,"link":339},"AWS SAM",[108],[334],{"link":335,"text":336,"type":134},"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":341,"order":319,"authors":342,"resources":343,"time":38,"path":350,"id":351,"link":352},"Terraform",[10],[344,347],{"link":345,"type":15,"text":346},"https:\u002F\u002Fgithub.com\u002Faws-samples\u002Fserverless-patterns\u002Ftree\u002Fmain\u002Fapigw-lambda-snapstart-terraform","Java sample with Terraform",{"link":348,"text":349,"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":354,"collapsible":24,"isCollapsed":25,"content":355},"Benchmarking",[356],{"title":357,"order":358,"youtubeVideoID":359,"authors":360,"resources":361,"time":49,"path":372,"id":373,"link":374},"Performance Benchmarking",11,"wmEIMWigXGc",[10],[362,364,366,369],{"link":363,"text":18,"type":19},"https:\u002F\u002Fcatalog.workshops.aws\u002Fjava-on-aws-lambda\u002Fen-US\u002F01-migration\u002F02-optimizations\u002Fbenchmark",{"link":13,"text":365,"type":15},"Benchmark: Micronaut, Quarkus, and SpringBoot",{"link":367,"text":368,"type":15},"https:\u002F\u002Fgithub.com\u002Faws-samples\u002Fserverless-graalvm-demo","GraalVM native image on AWS Lambda Benchmarking",{"link":370,"text":371,"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":376,"collapsible":24,"isCollapsed":25,"content":377},"Migration",[378],{"title":379,"order":380,"authors":381,"youtubeVideoID":382,"resources":383,"time":49,"path":390,"id":391,"link":392},"Migration Guide",12,[10],"u3tgOE8qFjI",[384,388],{"link":385,"text":386,"type":387},"https:\u002F\u002Fserverlessland.com\u002Fcontent\u002Fservice\u002Flambda\u002Fpaved-path\u002Fjava-replatforming\u002Fintroduction","Java re-platforming guide","Guide",{"link":17,"text":18,"type":389},"Workshop","migration","migration.md","\u002Fcontent\u002Fservice\u002Flambda\u002Fguides\u002Feffectively-running-java-on-serverless\u002Fmigration","LIST",[395,396,397,398,399,400],"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",1792665272522]