diff --git a/algorithms-sorting/README.md b/algorithms-sorting/README.md
index 4fd9d5e0c6..3f27cfea49 100644
--- a/algorithms-sorting/README.md
+++ b/algorithms-sorting/README.md
@@ -16,3 +16,4 @@ This module contains articles about sorting algorithms.
- [Selection Sort in Java](https://www.baeldung.com/java-selection-sort)
- [Sorting Strings by Contained Numbers in Java](https://www.baeldung.com/java-sort-strings-contained-numbers)
- [Radix Sort in Java](https://www.baeldung.com/java-radix-sort)
+- [Sorting a String Alphabetically in Java](https://www.baeldung.com/java-sort-string-alphabetically)
diff --git a/algorithms-sorting/pom.xml b/algorithms-sorting/pom.xml
index b25adf05a8..5bb19a8069 100644
--- a/algorithms-sorting/pom.xml
+++ b/algorithms-sorting/pom.xml
@@ -28,6 +28,12 @@
${lombok.version}
provided
+
+ org.junit.jupiter
+ junit-jupiter-api
+ ${junit-jupiter-api.version}
+ test
+
org.assertj
assertj-core
@@ -52,6 +58,7 @@
3.6.1
3.9.0
1.11
+ 5.3.1
\ No newline at end of file
diff --git a/java-strings/src/main/java/com/baeldung/string/sorting/AnagramValidator.java b/algorithms-sorting/src/main/java/com/baeldung/algorithms/stringsort/AnagramValidator.java
similarity index 93%
rename from java-strings/src/main/java/com/baeldung/string/sorting/AnagramValidator.java
rename to algorithms-sorting/src/main/java/com/baeldung/algorithms/stringsort/AnagramValidator.java
index c4f684383d..67b5e5facc 100644
--- a/java-strings/src/main/java/com/baeldung/string/sorting/AnagramValidator.java
+++ b/algorithms-sorting/src/main/java/com/baeldung/algorithms/stringsort/AnagramValidator.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.sorting;
+package com.baeldung.algorithms.stringsort;
import java.util.Arrays;
diff --git a/java-strings/src/test/java/com/baeldung/string/sorting/AnagramValidatorUnitTest.java b/algorithms-sorting/src/test/java/com/baeldung/algorithms/stringsort/AnagramValidatorUnitTest.java
similarity index 86%
rename from java-strings/src/test/java/com/baeldung/string/sorting/AnagramValidatorUnitTest.java
rename to algorithms-sorting/src/test/java/com/baeldung/algorithms/stringsort/AnagramValidatorUnitTest.java
index 07d31c7187..25fc274dd8 100644
--- a/java-strings/src/test/java/com/baeldung/string/sorting/AnagramValidatorUnitTest.java
+++ b/algorithms-sorting/src/test/java/com/baeldung/algorithms/stringsort/AnagramValidatorUnitTest.java
@@ -1,12 +1,10 @@
-package com.baeldung.string.sorting;
+package com.baeldung.algorithms.stringsort;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-
import org.junit.jupiter.api.Test;
-import com.baeldung.string.sorting.AnagramValidator;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
class AnagramValidatorUnitTest {
diff --git a/java-strings/src/test/java/com/baeldung/string/sorting/SortStringUnitTest.java b/algorithms-sorting/src/test/java/com/baeldung/algorithms/stringsort/SortStringUnitTest.java
similarity index 94%
rename from java-strings/src/test/java/com/baeldung/string/sorting/SortStringUnitTest.java
rename to algorithms-sorting/src/test/java/com/baeldung/algorithms/stringsort/SortStringUnitTest.java
index 90d1dad554..226de64f07 100644
--- a/java-strings/src/test/java/com/baeldung/string/sorting/SortStringUnitTest.java
+++ b/algorithms-sorting/src/test/java/com/baeldung/algorithms/stringsort/SortStringUnitTest.java
@@ -1,9 +1,9 @@
-package com.baeldung.string.sorting;
-
-import java.util.Arrays;
+package com.baeldung.algorithms.stringsort;
import org.junit.jupiter.api.Test;
+import java.util.Arrays;
+
import static org.assertj.core.api.Assertions.assertThat;
class SortStringUnitTest {
diff --git a/core-java-modules/core-java-string-apis/README.md b/core-java-modules/core-java-string-apis/README.md
new file mode 100644
index 0000000000..fc36ba8640
--- /dev/null
+++ b/core-java-modules/core-java-string-apis/README.md
@@ -0,0 +1,12 @@
+## Java String APIs
+
+This module contains articles about string APIs.
+
+### Relevant Articles:
+- [Java 8 StringJoiner](https://www.baeldung.com/java-string-joiner)
+- [Quick Guide to the Java StringTokenizer](https://www.baeldung.com/java-stringtokenizer)
+- [Guide to java.util.Formatter](https://www.baeldung.com/java-string-formatter)
+- [Guide to StreamTokenizer](https://www.baeldung.com/java-streamtokenizer)
+- [CharSequence vs. String in Java](https://www.baeldung.com/java-char-sequence-string)
+- [StringBuilder and StringBuffer in Java](https://www.baeldung.com/java-string-builder-string-buffer)
+- [Generate a Secure Random Password in Java](https://www.baeldung.com/java-generate-secure-password)
diff --git a/core-java-modules/core-java-string-apis/pom.xml b/core-java-modules/core-java-string-apis/pom.xml
new file mode 100644
index 0000000000..7d9d888fa1
--- /dev/null
+++ b/core-java-modules/core-java-string-apis/pom.xml
@@ -0,0 +1,55 @@
+
+ 4.0.0
+ core-java-string-apis
+ 0.1.0-SNAPSHOT
+ jar
+ core-java-string-apis
+
+
+ com.baeldung
+ parent-java
+ 0.0.1-SNAPSHOT
+ ../../parent-java
+
+
+
+
+ org.openjdk.jmh
+ jmh-core
+ ${jmh-core.version}
+
+
+ org.openjdk.jmh
+ jmh-generator-annprocess
+ ${jmh-generator.version}
+
+
+
+ org.passay
+ passay
+ ${passay.version}
+
+
+ org.apache.commons
+ commons-text
+ ${commons-text.version}
+
+
+
+
+ core-java-string-apis
+
+
+ src/main/resources
+ true
+
+
+
+
+
+ 1.3.1
+ 1.4
+
+
+
diff --git a/java-strings-2/src/main/java/com/baeldung/string/password/RandomPasswordGenerator.java b/core-java-modules/core-java-string-apis/src/main/java/com/baeldung/password/RandomPasswordGenerator.java
similarity index 99%
rename from java-strings-2/src/main/java/com/baeldung/string/password/RandomPasswordGenerator.java
rename to core-java-modules/core-java-string-apis/src/main/java/com/baeldung/password/RandomPasswordGenerator.java
index 46af4d7c51..d49b13c9c9 100644
--- a/java-strings-2/src/main/java/com/baeldung/string/password/RandomPasswordGenerator.java
+++ b/core-java-modules/core-java-string-apis/src/main/java/com/baeldung/password/RandomPasswordGenerator.java
@@ -1,4 +1,11 @@
-package com.baeldung.string.password;
+package com.baeldung.password;
+
+import org.apache.commons.lang3.RandomStringUtils;
+import org.apache.commons.text.RandomStringGenerator;
+import org.passay.CharacterRule;
+import org.passay.EnglishCharacterData;
+import org.passay.CharacterData;
+import org.passay.PasswordGenerator;
import java.security.SecureRandom;
import java.util.Collections;
@@ -8,13 +15,6 @@ import java.util.stream.Collectors;
import java.util.stream.IntStream;
import java.util.stream.Stream;
-import org.apache.commons.lang3.RandomStringUtils;
-import org.apache.commons.text.RandomStringGenerator;
-import org.passay.CharacterData;
-import org.passay.CharacterRule;
-import org.passay.EnglishCharacterData;
-import org.passay.PasswordGenerator;
-
public class RandomPasswordGenerator {
/**
diff --git a/java-strings-2/src/main/java/com/baeldung/string/streamtokenizer/StreamTokenizerDemo.java b/core-java-modules/core-java-string-apis/src/main/java/com/baeldung/streamtokenizer/StreamTokenizerDemo.java
similarity index 98%
rename from java-strings-2/src/main/java/com/baeldung/string/streamtokenizer/StreamTokenizerDemo.java
rename to core-java-modules/core-java-string-apis/src/main/java/com/baeldung/streamtokenizer/StreamTokenizerDemo.java
index 3bb0ff5b77..5ab506f259 100644
--- a/java-strings-2/src/main/java/com/baeldung/string/streamtokenizer/StreamTokenizerDemo.java
+++ b/core-java-modules/core-java-string-apis/src/main/java/com/baeldung/streamtokenizer/StreamTokenizerDemo.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.streamtokenizer;
+package com.baeldung.streamtokenizer;
import java.io.*;
import java.util.ArrayList;
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/StringBufferStringBuilder.java b/core-java-modules/core-java-string-apis/src/main/java/com/baeldung/stringbuilderstringbuffer/StringBuilderStringBuffer.java
similarity index 89%
rename from java-strings-ops/src/test/java/com/baeldung/string/StringBufferStringBuilder.java
rename to core-java-modules/core-java-string-apis/src/main/java/com/baeldung/stringbuilderstringbuffer/StringBuilderStringBuffer.java
index 72af4a9aee..50c139e2d3 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/StringBufferStringBuilder.java
+++ b/core-java-modules/core-java-string-apis/src/main/java/com/baeldung/stringbuilderstringbuffer/StringBuilderStringBuffer.java
@@ -1,4 +1,4 @@
-package com.baeldung.string;
+package com.baeldung.stringbuilderstringbuffer;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Scope;
@@ -8,12 +8,12 @@ import org.openjdk.jmh.runner.RunnerException;
import org.openjdk.jmh.runner.options.Options;
import org.openjdk.jmh.runner.options.OptionsBuilder;
-public class StringBufferStringBuilder {
+public class StringBuilderStringBuffer {
public static void main(String[] args) throws RunnerException {
Options opt = new OptionsBuilder()
- .include(StringBufferStringBuilder.class.getSimpleName())
+ .include(StringBuilderStringBuffer.class.getSimpleName())
.build();
new Runner(opt).run();
diff --git a/java-strings/src/main/java/com/baeldung/stringtokenizer/MyTokenizer.java b/core-java-modules/core-java-string-apis/src/main/java/com/baeldung/stringtokenizer/MyTokenizer.java
similarity index 100%
rename from java-strings/src/main/java/com/baeldung/stringtokenizer/MyTokenizer.java
rename to core-java-modules/core-java-string-apis/src/main/java/com/baeldung/stringtokenizer/MyTokenizer.java
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/CharSequenceVsStringUnitTest.java b/core-java-modules/core-java-string-apis/src/test/java/com/baeldung/charsequence/CharSequenceVsStringUnitTest.java
similarity index 97%
rename from java-strings-ops/src/test/java/com/baeldung/string/CharSequenceVsStringUnitTest.java
rename to core-java-modules/core-java-string-apis/src/test/java/com/baeldung/charsequence/CharSequenceVsStringUnitTest.java
index 916a3c79ff..aa15345bcb 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/CharSequenceVsStringUnitTest.java
+++ b/core-java-modules/core-java-string-apis/src/test/java/com/baeldung/charsequence/CharSequenceVsStringUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string;
+package com.baeldung.charsequence;
import org.junit.Test;
diff --git a/java-strings-2/src/test/java/com/baeldung/string/formatter/StringFormatterExampleUnitTest.java b/core-java-modules/core-java-string-apis/src/test/java/com/baeldung/formatter/StringFormatterExampleUnitTest.java
similarity index 96%
rename from java-strings-2/src/test/java/com/baeldung/string/formatter/StringFormatterExampleUnitTest.java
rename to core-java-modules/core-java-string-apis/src/test/java/com/baeldung/formatter/StringFormatterExampleUnitTest.java
index 648fdaf65a..549c889028 100644
--- a/java-strings-2/src/test/java/com/baeldung/string/formatter/StringFormatterExampleUnitTest.java
+++ b/core-java-modules/core-java-string-apis/src/test/java/com/baeldung/formatter/StringFormatterExampleUnitTest.java
@@ -1,12 +1,12 @@
-package com.baeldung.string.formatter;
+package com.baeldung.formatter;
+
+import org.junit.Test;
import java.util.Calendar;
import java.util.Formatter;
import java.util.GregorianCalendar;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import org.junit.Test;
+
+import static org.junit.Assert.*;
public class StringFormatterExampleUnitTest {
diff --git a/java-strings-2/src/test/java/com/baeldung/string/password/StringPasswordUnitTest.java b/core-java-modules/core-java-string-apis/src/test/java/com/baeldung/password/StringPasswordUnitTest.java
similarity index 98%
rename from java-strings-2/src/test/java/com/baeldung/string/password/StringPasswordUnitTest.java
rename to core-java-modules/core-java-string-apis/src/test/java/com/baeldung/password/StringPasswordUnitTest.java
index bfd4b0fe8e..7fb55ad1cb 100644
--- a/java-strings-2/src/test/java/com/baeldung/string/password/StringPasswordUnitTest.java
+++ b/core-java-modules/core-java-string-apis/src/test/java/com/baeldung/password/StringPasswordUnitTest.java
@@ -1,9 +1,9 @@
-package com.baeldung.string.password;
-
-import static org.junit.Assert.assertTrue;
+package com.baeldung.password;
import org.junit.Test;
+import static org.junit.Assert.assertTrue;
+
/**
* Examples of passwords conforming to various specifications, using different libraries.
*
diff --git a/java-strings-2/src/test/java/com/baeldung/string/streamtokenizer/StreamTokenizerDemoUnitTest.java b/core-java-modules/core-java-string-apis/src/test/java/com/baeldung/streamtokenizer/StreamTokenizerDemoUnitTest.java
similarity index 96%
rename from java-strings-2/src/test/java/com/baeldung/string/streamtokenizer/StreamTokenizerDemoUnitTest.java
rename to core-java-modules/core-java-string-apis/src/test/java/com/baeldung/streamtokenizer/StreamTokenizerDemoUnitTest.java
index 01091ec629..29214167be 100644
--- a/java-strings-2/src/test/java/com/baeldung/string/streamtokenizer/StreamTokenizerDemoUnitTest.java
+++ b/core-java-modules/core-java-string-apis/src/test/java/com/baeldung/streamtokenizer/StreamTokenizerDemoUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.streamtokenizer;
+package com.baeldung.streamtokenizer;
import org.junit.Test;
diff --git a/java-strings/src/test/java/com/baeldung/stringjoiner/StringJoinerUnitTest.java b/core-java-modules/core-java-string-apis/src/test/java/com/baeldung/stringjoiner/StringJoinerUnitTest.java
similarity index 100%
rename from java-strings/src/test/java/com/baeldung/stringjoiner/StringJoinerUnitTest.java
rename to core-java-modules/core-java-string-apis/src/test/java/com/baeldung/stringjoiner/StringJoinerUnitTest.java
index a72f811336..89f91acd6e 100644
--- a/java-strings/src/test/java/com/baeldung/stringjoiner/StringJoinerUnitTest.java
+++ b/core-java-modules/core-java-string-apis/src/test/java/com/baeldung/stringjoiner/StringJoinerUnitTest.java
@@ -1,6 +1,6 @@
package com.baeldung.stringjoiner;
-import static org.junit.Assert.assertEquals;
+import org.junit.Test;
import java.util.ArrayList;
import java.util.Arrays;
@@ -8,7 +8,7 @@ import java.util.List;
import java.util.StringJoiner;
import java.util.stream.Collectors;
-import org.junit.Test;
+import static org.junit.Assert.assertEquals;
public class StringJoinerUnitTest {
private final String DELIMITER_COMMA = ",";
diff --git a/java-strings/src/test/java/com/baeldung/stringtokenizer/TokenizerUnitTest.java b/core-java-modules/core-java-string-apis/src/test/java/com/baeldung/stringtokenizer/TokenizerUnitTest.java
similarity index 100%
rename from java-strings/src/test/java/com/baeldung/stringtokenizer/TokenizerUnitTest.java
rename to core-java-modules/core-java-string-apis/src/test/java/com/baeldung/stringtokenizer/TokenizerUnitTest.java
diff --git a/core-java-modules/core-java-string-apis/src/test/resources/data.csv b/core-java-modules/core-java-string-apis/src/test/resources/data.csv
new file mode 100644
index 0000000000..ec4ac10443
--- /dev/null
+++ b/core-java-modules/core-java-string-apis/src/test/resources/data.csv
@@ -0,0 +1,3 @@
+1|IND|India
+2|MY|Malaysia
+3|AU|Australia
diff --git a/java-strings-2/src/main/resources/stream-tokenizer-example.txt b/core-java-modules/core-java-string-apis/src/test/resources/stream-tokenizer-example.txt
similarity index 100%
rename from java-strings-2/src/main/resources/stream-tokenizer-example.txt
rename to core-java-modules/core-java-string-apis/src/test/resources/stream-tokenizer-example.txt
diff --git a/java-strings-2/README.md b/java-strings-2/README.md
index 9865019f74..ced813163d 100644
--- a/java-strings-2/README.md
+++ b/java-strings-2/README.md
@@ -9,12 +9,10 @@ This module contains articles about strings in Java.
- [Removing Stopwords from a String in Java](https://www.baeldung.com/java-string-remove-stopwords)
- [Java – Generate Random String](https://www.baeldung.com/java-random-string)
- [Java Base64 Encoding and Decoding](https://www.baeldung.com/java-base64-encode-and-decode)
-- [Generate a Secure Random Password in Java](https://www.baeldung.com/java-generate-secure-password)
- [Removing Repeated Characters from a String](https://www.baeldung.com/java-remove-repeated-char)
- [Join Array of Primitives with Separator in Java](https://www.baeldung.com/java-join-primitive-array)
- [Pad a String with Zeros or Spaces in Java](https://www.baeldung.com/java-pad-string)
- [Remove Emojis from a Java String](https://www.baeldung.com/java-string-remove-emojis)
-- [Guide to java.util.Formatter](https://www.baeldung.com/java-string-formatter)
- [Remove Leading and Trailing Characters from a String](https://www.baeldung.com/java-remove-trailing-characters)
- [Concatenating Strings In Java](https://www.baeldung.com/java-strings-concatenation)
- [Java String Interview Questions and Answers](https://www.baeldung.com/java-string-interview-questions)
@@ -26,5 +24,4 @@ This module contains articles about strings in Java.
- [Checking If a String Is a Repeated Substring](https://www.baeldung.com/java-repeated-substring)
- [How to Reverse a String in Java](https://www.baeldung.com/java-reverse-string)
- [String toLowerCase and toUpperCase Methods in Java](https://www.baeldung.com/java-string-convert-case)
-- [Guide to StreamTokenizer](https://www.baeldung.com/java-streamtokenizer)
- More articles: [[<-- prev>]](/java-strings) [[next -->]](/java-strings-3)
diff --git a/java-strings-ops/README.md b/java-strings-ops/README.md
index 3b00cd11ed..1300cf028e 100644
--- a/java-strings-ops/README.md
+++ b/java-strings-ops/README.md
@@ -14,5 +14,3 @@ This module contains articles about operations on strings in Java.
- [Split a String in Java](https://www.baeldung.com/java-split-string)
- [Common String Operations in Java](https://www.baeldung.com/java-string-operations)
- [Java toString() Method](https://www.baeldung.com/java-tostring)
-- [CharSequence vs. String in Java](https://www.baeldung.com/java-char-sequence-string)
-- [StringBuilder and StringBuffer in Java](https://www.baeldung.com/java-string-builder-string-buffer)
diff --git a/java-strings/README.md b/java-strings/README.md
index 3146b54fa8..17b74231a4 100644
--- a/java-strings/README.md
+++ b/java-strings/README.md
@@ -4,12 +4,9 @@ This module contains articles about strings in Java.
### Relevant Articles:
- [String Operations with Java Streams](https://www.baeldung.com/java-stream-operations-on-strings)
-- [Java 8 StringJoiner](https://www.baeldung.com/java-string-joiner)
-- [Quick Guide to the Java StringTokenizer](https://www.baeldung.com/java-stringtokenizer)
- [Use char[] Array Over a String for Manipulating Passwords in Java?](https://www.baeldung.com/java-storing-passwords)
- [Compact Strings in Java 9](https://www.baeldung.com/java-9-compact-string)
- [Java Check a String for Lowercase/Uppercase Letter, Special Character and Digit](https://www.baeldung.com/java-lowercase-uppercase-special-character-digit-regex)
-- [Sorting a String Alphabetically in Java](https://www.baeldung.com/java-sort-string-alphabetically)
- [String Not Empty Test Assertions in Java](https://www.baeldung.com/java-assert-string-not-empty)
- [String Performance Hints](https://www.baeldung.com/java-string-performance)
- [Using indexOf to Find All Occurrences of a Word in a String](https://www.baeldung.com/java-indexOf-find-string-occurrences)
diff --git a/pom.xml b/pom.xml
index a00190c874..8b657454d8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -430,6 +430,7 @@
core-java-modules/core-java-sun
core-java-modules/core-java-string-conversions
core-java-modules/core-java-string-conversions-2
+ core-java-modules/core-java-string-apis
core-java-modules/core-java
core-java-modules/core-java-jvm
core-scala
@@ -1193,6 +1194,7 @@
core-java-modules/core-java-sun
core-java-modules/core-java-string-conversions
core-java-modules/core-java-string-conversions-2
+ core-java-modules/core-java-string-apis
core-scala
couchbase
custom-pmd