diff --git a/README.md b/README.md
index 1e02866..121871f 100644
--- a/README.md
+++ b/README.md
@@ -41,6 +41,10 @@ This repository contains Java examples that are designed to track and document t
   * [JEP 395](java-16/src/main/java/com/ibrahimatay/JEP395Records.java): Records
 
 * [Java 14](java-14/) (March, 2020)
+  * [JEP 361](java-14/src/main/java/com/ibrahimatay/JEP361SwitchExpressions.java): Switch Expressions
+  * [JEP 359](java-14/src/main/java/com/ibrahimatay/JEP359Records.java): Records (Preview)
+  * [JEP 369](java-14/src/main/java/com/ibrahimatay/JEP368TextBlocks.java): Text Blocks (Second Preview)
+  * [JEP 305](java-14/src/main/java/com/ibrahimatay/JEP305PatternMatchingForInstanceof.java): Pattern Matching for instanceof (Preview)
 
 * [Java 12](java-12/) (March, 2019)
   * API Improvements
diff --git a/java-14/pom.xml b/java-14/pom.xml
index 7ae4964..4448966 100644
--- a/java-14/pom.xml
+++ b/java-14/pom.xml
@@ -23,6 +23,8 @@
                 <artifactId>maven-compiler-plugin</artifactId>
                 <configuration>
                     <compilerArgs>--enable-preview</compilerArgs>
+                    <source>16</source>
+                    <target>16</target>
                 </configuration>
             </plugin>
         </plugins>
diff --git a/java-14/src/main/java/com/ibrahimatay/JEP305PatternMatchingForInstanceof.java b/java-14/src/main/java/com/ibrahimatay/JEP305PatternMatchingForInstanceof.java
new file mode 100644
index 0000000..f21c5b5
--- /dev/null
+++ b/java-14/src/main/java/com/ibrahimatay/JEP305PatternMatchingForInstanceof.java
@@ -0,0 +1,18 @@
+package com.ibrahimatay;
+
+public class JEP305PatternMatchingForInstanceof {
+    public static void main(String[] args) {
+        // JEP 305: Pattern Matching for instanceof (Preview)
+        // https://openjdk.org/jeps/305
+
+        Object obj = "JEP305P";
+        if (obj instanceof String) {
+            String str = (String) obj;
+            System.out.println(str.toUpperCase());
+        }
+
+        if (obj instanceof String str){
+            System.out.println(str.toUpperCase());
+        }
+    }
+}
diff --git a/java-14/src/main/java/com/ibrahimatay/JEP359Records.java b/java-14/src/main/java/com/ibrahimatay/JEP359Records.java
new file mode 100644
index 0000000..ccd1d76
--- /dev/null
+++ b/java-14/src/main/java/com/ibrahimatay/JEP359Records.java
@@ -0,0 +1,23 @@
+package com.ibrahimatay;
+
+public class JEP359Records {
+
+    public static void main(String[] args) {
+        // JEP 359: Records (Preview)
+        // https://openjdk.org/jeps/359
+    }
+}
+
+class Person{
+    private final String name;
+    private final int age;
+
+    Person(String name, int age) {
+        this.name = name;
+        this.age = age;
+    }
+}
+
+// record Person(String name, int age) {}
+
+
diff --git a/java-14/src/main/java/com/ibrahimatay/JEP361SwitchExpressions.java b/java-14/src/main/java/com/ibrahimatay/JEP361SwitchExpressions.java
new file mode 100644
index 0000000..192db5f
--- /dev/null
+++ b/java-14/src/main/java/com/ibrahimatay/JEP361SwitchExpressions.java
@@ -0,0 +1,43 @@
+package com.ibrahimatay;
+
+public class JEP361SwitchExpressions {
+    public static void main(String[] args) {
+        // Switch Expressions (JEP 361)
+        // https://javaalmanac.io/features/switch/
+
+        // JEP 361: Switch Expressions
+        // https://openjdk.org/jeps/361
+
+        System.out.printf("%1$s HTTP status code refers to a %2$s%n", 100, getHTTPCodeDesc(100));
+        System.out.printf("%1$s HTTP status code refers to a %2$s%n", 200, getHTTPCodeDesc(200));
+        System.out.printf("%1$s HTTP status code refers to a %2$s%n", 403, getHTTPCodeDesc(403));
+        System.out.printf("%1$s HTTP status code refers to a %2$s%n", 0, getHTTPCodeDesc(0));
+
+        /*
+        100 HTTP status code refers to a Continue
+        200 HTTP status code refers to a OK
+        403 HTTP status code refers to a Client Error
+        0 HTTP status code refers to a Unknown error
+        */
+    }
+
+    public static String getHTTPCodeDesc(int code){
+        return switch(code) {
+            case 100 -> "Continue";
+            case 200 -> "OK";
+            case 301 -> "Moved Permanently";
+            case 302 -> "Found";
+            case 400 -> "Bad Request";
+            case 500 -> "Internal Server Error";
+            case 502 -> "Bad Gateway";
+            default                            -> {
+                if(code > 100 && code < 200 ) yield "Informational";
+                if(code > 200 && code < 300) yield "Successful";
+                if(code > 302 && code < 400) yield "Redirection";
+                if(code > 400 && code < 500) yield "Client Error";
+                if(code > 502 && code < 600 ) yield "Server Error";
+                yield "Unknown error";
+            }
+        };
+    }
+}
diff --git a/java-14/src/main/java/com/ibrahimatay/JEP368TextBlocks.java b/java-14/src/main/java/com/ibrahimatay/JEP368TextBlocks.java
new file mode 100644
index 0000000..52811f7
--- /dev/null
+++ b/java-14/src/main/java/com/ibrahimatay/JEP368TextBlocks.java
@@ -0,0 +1,16 @@
+package com.ibrahimatay;
+
+public class JEP368TextBlocks {
+    public static void main(String[] args) {
+        // JEP 368: Text Blocks (Second Preview)
+        // https://openjdk.org/jeps/368
+
+        String json = """
+                {
+                    "name": "Java",
+                    "version": 14
+                }
+                """;
+        System.out.println(json);
+    }
+}
diff --git a/java-14/src/main/java/com/ibrahimatay/Main.java b/java-14/src/main/java/com/ibrahimatay/Main.java
deleted file mode 100644
index f279879..0000000
--- a/java-14/src/main/java/com/ibrahimatay/Main.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.ibrahimatay;
-
-//TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or
-// click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter.
-public class Main {
-    public static void main(String[] args) {
-        //TIP Press <shortcut actionId="ShowIntentionActions"/> with your caret at the highlighted text
-        // to see how IntelliJ IDEA suggests fixing it.
-        System.out.printf("Hello and welcome!");
-
-        for (int i = 1; i <= 5; i++) {
-            //TIP Press <shortcut actionId="Debug"/> to start debugging your code. We have set one <icon src="AllIcons.Debugger.Db_set_breakpoint"/> breakpoint
-            // for you, but you can always add more by pressing <shortcut actionId="ToggleLineBreakpoint"/>.
-            System.out.println("i = " + i);
-        }
-    }
-}
\ No newline at end of file