diff --git a/sample-apps/layer-java/function/pom.xml b/sample-apps/layer-java/function/pom.xml
new file mode 100644
index 00000000..607f4152
--- /dev/null
+++ b/sample-apps/layer-java/function/pom.xml
@@ -0,0 +1,59 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.example</groupId>
+    <artifactId>layer-java-function</artifactId>
+    <packaging>jar</packaging>
+    <version>1.0-SNAPSHOT</version>
+    <name>layer-java-function</name>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <maven.compiler.source>21</maven.compiler.source>
+        <maven.compiler.target>21</maven.compiler.target>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.example</groupId>
+            <artifactId>layer-java-layer</artifactId>
+            <version>1.0-SNAPSHOT</version>
+            <scope>provided</scope>
+        </dependency>
+  </dependencies>
+
+  <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.13.0</version>
+                <configuration>
+                    <source>21</source>
+                    <target>21</target>
+                    <release>21</release>
+                </configuration>
+            </plugin>
+            <!-- Use the maven-shade-plugin if you need additional dependencies for
+                your function that aren't covered by the shared layer. 
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-shade-plugin</artifactId>
+                <version>3.5.2</version>
+                <configuration>
+                    <createDependencyReducedPom>false</createDependencyReducedPom>
+                </configuration>
+                <executions>
+                    <execution>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>shade</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            -->
+        </plugins>
+    </build>
+
+</project>
\ No newline at end of file
diff --git a/sample-apps/layer-java/function/src/main/java/example/F1Car.java b/sample-apps/layer-java/function/src/main/java/example/F1Car.java
new file mode 100644
index 00000000..06c77d22
--- /dev/null
+++ b/sample-apps/layer-java/function/src/main/java/example/F1Car.java
@@ -0,0 +1,33 @@
+package example;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class F1Car {
+    
+    private String team;
+    private String driver;
+
+    @JsonCreator
+    public F1Car(@JsonProperty("team") String team,
+                 @JsonProperty("driver") String driver) {
+        this.team = team;
+        this.driver = driver;
+    }
+
+    public String getTeam() {
+        return team;
+    }
+
+    public void setTeam(String team) {
+        this.team = team;
+    }
+
+    public String getDriver() {
+        return driver;
+    }
+
+    public void setDriver(String driver) {
+        this.driver = driver;
+    }
+}
diff --git a/sample-apps/layer-java/function/src/main/java/example/Handler.java b/sample-apps/layer-java/function/src/main/java/example/Handler.java
new file mode 100644
index 00000000..85bbf4c2
--- /dev/null
+++ b/sample-apps/layer-java/function/src/main/java/example/Handler.java
@@ -0,0 +1,23 @@
+package example;
+
+import com.amazonaws.services.lambda.runtime.Context;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import java.io.IOException;
+import java.util.Map;
+
+public class Handler {
+
+    public String handleRequest(Map<String, String> input, Context context) throws IOException {
+        // Parse the input JSON
+        System.out.println(input);
+        ObjectMapper objectMapper = new ObjectMapper();
+        F1Car f1Car = objectMapper.readValue(objectMapper.writeValueAsString(input), F1Car.class);
+
+        StringBuilder finalString = new StringBuilder();
+        finalString.append(f1Car.getDriver());
+        finalString.append(" is a driver for team ");
+        finalString.append(f1Car.getTeam());
+        return finalString.toString();
+    }
+}
diff --git a/sample-apps/layer-java/layer/1-install.sh b/sample-apps/layer-java/layer/1-install.sh
new file mode 100755
index 00000000..b39292ee
--- /dev/null
+++ b/sample-apps/layer-java/layer/1-install.sh
@@ -0,0 +1 @@
+mvn clean install
diff --git a/sample-apps/layer-java/layer/2-package.sh b/sample-apps/layer-java/layer/2-package.sh
new file mode 100755
index 00000000..f7a9c67b
--- /dev/null
+++ b/sample-apps/layer-java/layer/2-package.sh
@@ -0,0 +1,4 @@
+mkdir java
+mkdir java/lib
+cp -r target/layer-java-layer-1.0-SNAPSHOT.jar java/lib/
+zip -r layer_content.zip java
diff --git a/sample-apps/layer-java/layer/pom.xml b/sample-apps/layer-java/layer/pom.xml
new file mode 100644
index 00000000..ccfc9025
--- /dev/null
+++ b/sample-apps/layer-java/layer/pom.xml
@@ -0,0 +1,62 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.example</groupId>
+    <artifactId>layer-java-layer</artifactId>
+    <packaging>jar</packaging>
+    <version>1.0-SNAPSHOT</version>
+    <name>layer-java-layer</name>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <maven.compiler.source>21</maven.compiler.source>
+        <maven.compiler.target>21</maven.compiler.target>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.amazonaws</groupId>
+            <artifactId>aws-lambda-java-core</artifactId>
+            <version>1.2.3</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-databind</artifactId>
+            <version>2.17.0</version>
+        </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+        <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-compiler-plugin</artifactId>
+            <version>3.13.0</version>
+            <configuration>
+                <source>21</source>
+                <target>21</target>
+                <release>21</release>
+            </configuration>
+        </plugin>
+        
+        <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-shade-plugin</artifactId>
+            <version>3.5.2</version>
+            <configuration>
+                <createDependencyReducedPom>false</createDependencyReducedPom>
+            </configuration>
+            <executions>
+                <execution>
+                    <phase>package</phase>
+                    <goals>
+                        <goal>shade</goal>
+                    </goals>
+                </execution>
+            </executions>
+        </plugin>
+    </plugins>
+</build>
+
+</project>
\ No newline at end of file
