diff --git a/core-java-8/README.md b/core-java-8/README.md
index e0cd0e7c0a..c94ae36003 100644
--- a/core-java-8/README.md
+++ b/core-java-8/README.md
@@ -9,15 +9,10 @@
- [Java 8 New Features](http://www.baeldung.com/java-8-new-features)
- [Lambda Expressions and Functional Interfaces: Tips and Best Practices](http://www.baeldung.com/java-8-lambda-expressions-tips)
- [The Double Colon Operator in Java 8](http://www.baeldung.com/java-8-double-colon-operator)
-- [Java 8 Streams Advanced](http://www.baeldung.com/java-8-streams)
-- [Introduction to Java 8 Streams](http://www.baeldung.com/java-8-streams-introduction)
- [Guide to Java 8 groupingBy Collector](http://www.baeldung.com/java-groupingby-collector)
- [Strategy Design Pattern in Java 8](http://www.baeldung.com/java-strategy-pattern)
-- [Java 8 and Infinite Streams](http://www.baeldung.com/java-inifinite-streams)
- [Exceptions in Java 8 Lambda Expressions](http://www.baeldung.com/java-lambda-exceptions)
-- [Java 8 Stream findFirst() vs. findAny()](http://www.baeldung.com/java-stream-findfirst-vs-findany)
- [Guide to Java 8 Comparator.comparing()](http://www.baeldung.com/java-8-comparator-comparing)
-- [How to Get the Last Element of a Stream in Java?](http://www.baeldung.com/java-stream-last-element)
- [Introduction to the Java 8 Date/Time API](http://www.baeldung.com/java-8-date-time-intro)
- [Migrating to the New Java 8 Date Time API](http://www.baeldung.com/migrating-to-java-8-date-time-api)
- [Guide To Java 8 Optional](http://www.baeldung.com/java-optional)
@@ -27,15 +22,10 @@
- [Finding Max/Min of a List or Collection](http://www.baeldung.com/java-collection-min-max)
- [Java Base64 Encoding and Decoding](http://www.baeldung.com/java-base64-encode-and-decode)
- [The Difference Between map() and flatMap()](http://www.baeldung.com/java-difference-map-and-flatmap)
-- [Merging Streams in Java](http://www.baeldung.com/java-merge-streams)
-- [“Stream has already been operated upon or closed” Exception in Java](http://www.baeldung.com/java-stream-operated-upon-or-closed-exception)
- [Display All Time Zones With GMT And UTC in Java](http://www.baeldung.com/java-time-zones)
- [Copy a File with Java](http://www.baeldung.com/java-copy-file)
- [Static and Default Methods in Interfaces in Java](http://www.baeldung.com/java-static-default-methods)
-- [Iterable to Stream in Java](http://www.baeldung.com/java-iterable-to-stream)
-- [How to Iterate Over a Stream With Indices](http://www.baeldung.com/java-stream-indices)
- [Efficient Word Frequency Calculator in Java](http://www.baeldung.com/java-word-frequency)
-- [Primitive Type Streams in Java 8](http://www.baeldung.com/java-8-primitive-streams)
- [Fail-Safe Iterator vs Fail-Fast Iterator](http://www.baeldung.com/java-fail-safe-vs-fail-fast-iterator)
- [Shuffling Collections In Java](http://www.baeldung.com/java-shuffle-collection)
- [Introduction to Spliterator in Java](http://www.baeldung.com/java-spliterator)
diff --git a/core-java-8/pom.xml b/core-java-8/pom.xml
index ad37cdd7e8..fa0d79e405 100644
--- a/core-java-8/pom.xml
+++ b/core-java-8/pom.xml
@@ -89,11 +89,6 @@
vavr
${vavr.version}
-
- one.util
- streamex
- ${streamex.version}
-
joda-time
joda-time
@@ -177,7 +172,6 @@
1.16.12
0.9.0
1.13
- 0.6.5
2.10
3.6.1
diff --git a/java-streams/.gitignore b/java-streams/.gitignore
new file mode 100644
index 0000000000..3de4cc647e
--- /dev/null
+++ b/java-streams/.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/java-streams/README.md b/java-streams/README.md
new file mode 100644
index 0000000000..9015e30d85
--- /dev/null
+++ b/java-streams/README.md
@@ -0,0 +1,15 @@
+=========
+
+## Java Streams Cookbooks and Examples
+
+### Relevant Articles:
+- [Java 8 Streams Advanced](http://www.baeldung.com/java-8-streams)
+- [Introduction to Java 8 Streams](http://www.baeldung.com/java-8-streams-introduction)
+- [Java 8 and Infinite Streams](http://www.baeldung.com/java-inifinite-streams)
+- [Java 8 Stream findFirst() vs. findAny()](http://www.baeldung.com/java-stream-findfirst-vs-findany)
+- [How to Get the Last Element of a Stream in Java?](http://www.baeldung.com/java-stream-last-element)
+- [Merging Streams in Java](http://www.baeldung.com/java-merge-streams)
+- [”Stream has already been operated upon or closed” Exception in Java](http://www.baeldung.com/java-stream-operated-upon-or-closed-exception)
+- [Iterable to Stream in Java](http://www.baeldung.com/java-iterable-to-stream)
+- [How to Iterate Over a Stream With Indices](http://www.baeldung.com/java-stream-indices)
+- [Primitive Type Streams in Java 8](http://www.baeldung.com/java-8-primitive-streams)
diff --git a/java-streams/pom.xml b/java-streams/pom.xml
new file mode 100644
index 0000000000..351c33ecc0
--- /dev/null
+++ b/java-streams/pom.xml
@@ -0,0 +1,120 @@
+
+ 4.0.0
+ com.baeldung
+ java-streams
+ 0.1.0-SNAPSHOT
+ jar
+ java-streams
+
+
+ com.baeldung
+ parent-java
+ 0.0.1-SNAPSHOT
+ ../parent-java
+
+
+
+
+ org.apache.commons
+ commons-lang3
+ ${commons-lang3.version}
+
+
+ log4j
+ log4j
+ ${log4j.version}
+
+
+ org.projectlombok
+ lombok
+ ${lombok.version}
+ provided
+
+
+
+ org.assertj
+ assertj-core
+ ${assertj.version}
+ test
+
+
+ com.codepoetics
+ protonpack
+ ${protonpack.version}
+
+
+ io.vavr
+ vavr
+ ${vavr.version}
+
+
+ one.util
+ streamex
+ ${streamex.version}
+
+
+ org.aspectj
+ aspectjrt
+ ${asspectj.version}
+
+
+ org.aspectj
+ aspectjweaver
+ ${asspectj.version}
+
+
+
+
+ java-streams
+
+
+ src/main/resources
+ true
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ copy-dependencies
+ prepare-package
+
+ copy-dependencies
+
+
+ ${project.build.directory}/libs
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.1
+
+ 1.8
+ 1.8
+ -parameters
+
+
+
+
+
+
+
+ 3.5
+ 1.16.12
+ 0.9.0
+ 1.13
+ 0.6.5
+ 2.10
+
+ 3.6.1
+ 1.8.9
+
+
diff --git a/core-java-8/src/main/java/com/baeldung/java_8_features/Detail.java b/java-streams/src/main/java/com/baeldung/java_8_features/Detail.java
similarity index 100%
rename from core-java-8/src/main/java/com/baeldung/java_8_features/Detail.java
rename to java-streams/src/main/java/com/baeldung/java_8_features/Detail.java
diff --git a/core-java-8/src/main/java/com/baeldung/stream/InfiniteStreams.java b/java-streams/src/main/java/com/baeldung/stream/InfiniteStreams.java
similarity index 100%
rename from core-java-8/src/main/java/com/baeldung/stream/InfiniteStreams.java
rename to java-streams/src/main/java/com/baeldung/stream/InfiniteStreams.java
diff --git a/core-java-8/src/main/java/com/baeldung/stream/PrimitiveStreams.java b/java-streams/src/main/java/com/baeldung/stream/PrimitiveStreams.java
similarity index 100%
rename from core-java-8/src/main/java/com/baeldung/stream/PrimitiveStreams.java
rename to java-streams/src/main/java/com/baeldung/stream/PrimitiveStreams.java
diff --git a/core-java-8/src/main/java/com/baeldung/stream/Product.java b/java-streams/src/main/java/com/baeldung/stream/Product.java
similarity index 100%
rename from core-java-8/src/main/java/com/baeldung/stream/Product.java
rename to java-streams/src/main/java/com/baeldung/stream/Product.java
diff --git a/core-java-8/src/main/java/com/baeldung/stream/StreamApi.java b/java-streams/src/main/java/com/baeldung/stream/StreamApi.java
similarity index 100%
rename from core-java-8/src/main/java/com/baeldung/stream/StreamApi.java
rename to java-streams/src/main/java/com/baeldung/stream/StreamApi.java
diff --git a/core-java-8/src/main/java/com/baeldung/stream/StreamIndices.java b/java-streams/src/main/java/com/baeldung/stream/StreamIndices.java
similarity index 100%
rename from core-java-8/src/main/java/com/baeldung/stream/StreamIndices.java
rename to java-streams/src/main/java/com/baeldung/stream/StreamIndices.java
diff --git a/java-streams/src/main/resources/logback.xml b/java-streams/src/main/resources/logback.xml
new file mode 100644
index 0000000000..7d900d8ea8
--- /dev/null
+++ b/java-streams/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-8/src/test/java/com/baeldung/java/conversion/IterableStreamConversionUnitTest.java b/java-streams/src/test/java/com/baeldung/java/conversion/IterableStreamConversionUnitTest.java
similarity index 100%
rename from core-java-8/src/test/java/com/baeldung/java/conversion/IterableStreamConversionUnitTest.java
rename to java-streams/src/test/java/com/baeldung/java/conversion/IterableStreamConversionUnitTest.java
diff --git a/core-java-8/src/test/java/com/baeldung/java8/Java8FindAnyFindFirstUnitTest.java b/java-streams/src/test/java/com/baeldung/java8/Java8FindAnyFindFirstUnitTest.java
similarity index 100%
rename from core-java-8/src/test/java/com/baeldung/java8/Java8FindAnyFindFirstUnitTest.java
rename to java-streams/src/test/java/com/baeldung/java8/Java8FindAnyFindFirstUnitTest.java
diff --git a/core-java-8/src/test/java/com/baeldung/java8/Java8StreamApiUnitTest.java b/java-streams/src/test/java/com/baeldung/java8/Java8StreamApiUnitTest.java
similarity index 100%
rename from core-java-8/src/test/java/com/baeldung/java8/Java8StreamApiUnitTest.java
rename to java-streams/src/test/java/com/baeldung/java8/Java8StreamApiUnitTest.java
diff --git a/core-java-8/src/test/java/com/baeldung/java8/Java8StreamsUnitTest.java b/java-streams/src/test/java/com/baeldung/java8/Java8StreamsUnitTest.java
similarity index 100%
rename from core-java-8/src/test/java/com/baeldung/java8/Java8StreamsUnitTest.java
rename to java-streams/src/test/java/com/baeldung/java8/Java8StreamsUnitTest.java
diff --git a/core-java-8/src/test/java/com/baeldung/stream/InfiniteStreamUnitTest.java b/java-streams/src/test/java/com/baeldung/stream/InfiniteStreamUnitTest.java
similarity index 100%
rename from core-java-8/src/test/java/com/baeldung/stream/InfiniteStreamUnitTest.java
rename to java-streams/src/test/java/com/baeldung/stream/InfiniteStreamUnitTest.java
diff --git a/core-java-8/src/test/java/com/baeldung/stream/PrimitiveStreamsUnitTest.java b/java-streams/src/test/java/com/baeldung/stream/PrimitiveStreamsUnitTest.java
similarity index 100%
rename from core-java-8/src/test/java/com/baeldung/stream/PrimitiveStreamsUnitTest.java
rename to java-streams/src/test/java/com/baeldung/stream/PrimitiveStreamsUnitTest.java
diff --git a/core-java-8/src/test/java/com/baeldung/stream/StreamAddUnitTest.java b/java-streams/src/test/java/com/baeldung/stream/StreamAddUnitTest.java
similarity index 100%
rename from core-java-8/src/test/java/com/baeldung/stream/StreamAddUnitTest.java
rename to java-streams/src/test/java/com/baeldung/stream/StreamAddUnitTest.java
diff --git a/core-java-8/src/test/java/com/baeldung/stream/StreamApiUnitTest.java b/java-streams/src/test/java/com/baeldung/stream/StreamApiUnitTest.java
similarity index 100%
rename from core-java-8/src/test/java/com/baeldung/stream/StreamApiUnitTest.java
rename to java-streams/src/test/java/com/baeldung/stream/StreamApiUnitTest.java
diff --git a/core-java-8/src/test/java/com/baeldung/stream/StreamIndicesUnitTest.java b/java-streams/src/test/java/com/baeldung/stream/StreamIndicesUnitTest.java
similarity index 100%
rename from core-java-8/src/test/java/com/baeldung/stream/StreamIndicesUnitTest.java
rename to java-streams/src/test/java/com/baeldung/stream/StreamIndicesUnitTest.java
diff --git a/core-java-8/src/test/java/com/baeldung/stream/StreamToImmutableUnitTest.java b/java-streams/src/test/java/com/baeldung/stream/StreamToImmutableUnitTest.java
similarity index 100%
rename from core-java-8/src/test/java/com/baeldung/stream/StreamToImmutableUnitTest.java
rename to java-streams/src/test/java/com/baeldung/stream/StreamToImmutableUnitTest.java
diff --git a/core-java-8/src/test/java/com/baeldung/stream/SupplierStreamUnitTest.java b/java-streams/src/test/java/com/baeldung/stream/SupplierStreamUnitTest.java
similarity index 100%
rename from core-java-8/src/test/java/com/baeldung/stream/SupplierStreamUnitTest.java
rename to java-streams/src/test/java/com/baeldung/stream/SupplierStreamUnitTest.java
diff --git a/core-java-8/src/test/java/com/baeldung/stream/mycollectors/MyImmutableListCollector.java b/java-streams/src/test/java/com/baeldung/stream/mycollectors/MyImmutableListCollector.java
similarity index 100%
rename from core-java-8/src/test/java/com/baeldung/stream/mycollectors/MyImmutableListCollector.java
rename to java-streams/src/test/java/com/baeldung/stream/mycollectors/MyImmutableListCollector.java
diff --git a/java-streams/src/test/resources/.gitignore b/java-streams/src/test/resources/.gitignore
new file mode 100644
index 0000000000..83c05e60c8
--- /dev/null
+++ b/java-streams/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
diff --git a/pom.xml b/pom.xml
index 080c288987..7ff1aa7d47 100644
--- a/pom.xml
+++ b/pom.xml
@@ -348,6 +348,7 @@
core-java-collections
core-java-io
core-java-8
+ java-streams
core-java-persistence
core-kotlin
core-groovy
@@ -902,6 +903,7 @@
core-java-collections
core-java-io
core-java-8
+ java-streams
core-groovy
couchbase