diff --git a/core-java-modules/core-java/.gitignore b/core-java-modules/core-java/.gitignore
new file mode 100644
index 0000000000..3de4cc647e
--- /dev/null
+++ b/core-java-modules/core-java/.gitignore
@@ -0,0 +1,26 @@
+*.class
+
+0.*
+
+#folders#
+/target
+/neoDb*
+/data
+/src/main/webapp/WEB-INF/classes
+*/META-INF/*
+.resourceCache
+
+# Packaged files #
+*.jar
+*.war
+*.ear
+
+# Files generated by integration tests
+*.txt
+backup-pom.xml
+/bin/
+/temp
+
+#IntelliJ specific
+.idea/
+*.iml
\ No newline at end of file
diff --git a/core-java-modules/core-java/README.md b/core-java-modules/core-java/README.md
new file mode 100644
index 0000000000..0ca45409d3
--- /dev/null
+++ b/core-java-modules/core-java/README.md
@@ -0,0 +1,6 @@
+## Java 核心
+
+本模块中包含有关 Java 核心新增功能特性的一些文章。
+
+### 相关文章:
+- [Java Preview Features](https://www.baeldung.com/java-preview-features)
diff --git a/core-java-modules/core-java/pom.xml b/core-java-modules/core-java/pom.xml
new file mode 100644
index 0000000000..edf8842edf
--- /dev/null
+++ b/core-java-modules/core-java/pom.xml
@@ -0,0 +1,54 @@
+
+
+ 4.0.0
+ core-java
+ core-java
+ jar
+
+
+ com.ossez.core-java-modules
+ core-java-modules
+ 0.0.2-SNAPSHOT
+
+
+
+
+ org.apache.commons
+ commons-collections4
+ ${commons-collections4.version}
+
+
+ org.projectlombok
+ lombok
+ ${lombok.version}
+ provided
+
+
+
+ org.assertj
+ assertj-core
+ ${assertj.version}
+ test
+
+
+
+
+ core-java-8
+
+
+ src/main/resources
+ true
+
+
+
+
+
+
+ 4.1
+
+ 3.6.1
+
+
+
\ No newline at end of file
diff --git a/core-java-modules/core-java/src/main/java/com/ossez/features/Template.java b/core-java-modules/core-java/src/main/java/com/ossez/features/Template.java
new file mode 100644
index 0000000000..72891daaf5
--- /dev/null
+++ b/core-java-modules/core-java/src/main/java/com/ossez/features/Template.java
@@ -0,0 +1,11 @@
+package com.ossez.features;
+
+import java.time.Clock;
+import java.time.Instant;
+import java.time.ZoneId;
+
+public class Template {
+
+ private static final Clock clock = Clock.fixed(Instant.parse("2016-10-09T15:10:30.00Z"), ZoneId.of("UTC"));
+
+}
diff --git a/core-java-modules/core-java/src/main/resources/logback.xml b/core-java-modules/core-java/src/main/resources/logback.xml
new file mode 100644
index 0000000000..11032b47f4
--- /dev/null
+++ b/core-java-modules/core-java/src/main/resources/logback.xml
@@ -0,0 +1,13 @@
+
+
+
+
+ %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/core-java-modules/core-java/src/test/java/com/ossez/features/util/CurrentDateTimeUnitTest.java b/core-java-modules/core-java/src/test/java/com/ossez/features/util/CurrentDateTimeUnitTest.java
new file mode 100644
index 0000000000..be598e73ef
--- /dev/null
+++ b/core-java-modules/core-java/src/test/java/com/ossez/features/util/CurrentDateTimeUnitTest.java
@@ -0,0 +1,42 @@
+package com.ossez.features.util;
+
+import static org.junit.Assert.assertEquals;
+
+import java.time.Clock;
+import java.time.Instant;
+import java.time.LocalDate;
+import java.time.LocalTime;
+import java.time.ZoneId;
+import java.time.temporal.ChronoField;
+
+import org.junit.jupiter.api.Test;
+
+public class CurrentDateTimeUnitTest {
+
+ private static final Clock clock = Clock.fixed(Instant.parse("2016-10-09T15:10:30.00Z"), ZoneId.of("UTC"));
+
+ @Test
+ public void shouldReturnCurrentDate() {
+ final LocalDate now = LocalDate.now(clock);
+
+ assertEquals(9, now.get(ChronoField.DAY_OF_MONTH));
+ assertEquals(10, now.get(ChronoField.MONTH_OF_YEAR));
+ assertEquals(2016, now.get(ChronoField.YEAR));
+ }
+
+ @Test
+ public void shouldReturnCurrentTime() {
+ final LocalTime now = LocalTime.now(clock);
+
+ assertEquals(15, now.get(ChronoField.HOUR_OF_DAY));
+ assertEquals(10, now.get(ChronoField.MINUTE_OF_HOUR));
+ assertEquals(30, now.get(ChronoField.SECOND_OF_MINUTE));
+ }
+
+ @Test
+ public void shouldReturnCurrentTimestamp() {
+ final Instant now = Instant.now(clock);
+
+ assertEquals(clock.instant().getEpochSecond(), now.getEpochSecond());
+ }
+}
diff --git a/core-java-modules/core-java/src/test/resources/.gitignore b/core-java-modules/core-java/src/test/resources/.gitignore
new file mode 100644
index 0000000000..83c05e60c8
--- /dev/null
+++ b/core-java-modules/core-java/src/test/resources/.gitignore
@@ -0,0 +1,13 @@
+*.class
+
+#folders#
+/target
+/neoDb*
+/data
+/src/main/webapp/WEB-INF/classes
+*/META-INF/*
+
+# Packaged files #
+*.jar
+*.war
+*.ear
\ No newline at end of file