You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2024/12/01 18:45:24 UTC

(jena) branch main updated: Tidy-up: Use StringBuilder, StandardCharsets, ArrayList/Deque/HashMap, Optional.orElseThrow

This is an automated email from the ASF dual-hosted git repository.

andy pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/jena.git


The following commit(s) were added to refs/heads/main by this push:
     new a8c42f8743 Tidy-up: Use StringBuilder, StandardCharsets, ArrayList/Deque/HashMap, Optional.orElseThrow
a8c42f8743 is described below

commit a8c42f8743e73d48d2da9bf2836aeff5ec366e61
Author: Andy Seaborne <an...@apache.org>
AuthorDate: Sat Nov 30 11:25:00 2024 +0000

    Tidy-up: Use StringBuilder, StandardCharsets, ArrayList/Deque/HashMap, Optional.orElseThrow
---
 .../org/apache/jena/ext/xerces_regex/REUtil.java   |   8 +-
 .../org/apache/jena/ext/xerces_regex/RX_Token.java |  12 +-
 .../apache/jena/ext/xerces_regex/RangeToken.java   |   4 +-
 .../main/java/org/apache/jena/http/HttpLib.java    |   4 +-
 .../java/org/apache/jena/http/auth/DigestLib.java  |  16 +-
 .../jena/query/ParameterizedSparqlString.java      |   2 +-
 .../org/apache/jena/query/ResultSetFormatter.java  | 137 ++++----
 .../org/apache/jena/riot/lang/LangJSONLD11.java    |   2 +-
 .../java/org/apache/jena/riot/lang/ReaderTriX.java |   2 +-
 .../jena/riot/rowset/rw/RowSetWriterText.java      |   2 +-
 .../org/apache/jena/riot/system/JenaTitanium.java  |   4 +-
 .../algebra/optimize/VariableUsageTracker.java     |   7 +-
 .../jena/sparql/engine/binding/BindingBase.java    |   8 +-
 .../jena/sparql/engine/binding/BindingRoot.java    |   2 +-
 .../jena/sparql/expr/nodevalue/XSDFuncOp.java      |   4 +-
 .../jena/sparql/graph/PrefixMappingBase.java       |   2 +-
 .../jena/sparql/lang/sparql_10/ParseException.java |   2 +-
 .../java/org/apache/jena/sparql/util/Convert.java  |  57 ++-
 .../org/apache/jena/sparql/util/RomanNumeral.java  |   4 +-
 .../system/irix/AbstractTestIRIxRIOT_system.java   |   6 +-
 .../apache/jena/atlas/io/IndentedLineBuffer.java   |   2 -
 .../main/java/org/apache/jena/atlas/lib/Bytes.java | 214 ++++++------
 .../apache/jena/atlas/lib/PropertiesSorted.java    |  65 ++--
 .../org/apache/jena/atlas/logging/LogCtlJUL.java   |   3 +-
 .../jena/atlas/io/AbstractTestPeekInputStream.java | 385 ++++++++++-----------
 .../jena/atlas/io/AbstractTestPeekReader.java      | 385 ++++++++++-----------
 .../apache/jena/atlas/io/TestBufferingWriter.java  |  88 ++---
 .../apache/jena/atlas/io/TestIndentedWriter.java   |  65 ++--
 .../jena/atlas/io/TestInputStreamBuffered.java     | 122 +++----
 .../jena/atlas/io/TestPeekInputStreamSource.java   |  25 +-
 .../jena/atlas/io/TestPeekReaderCharSequence.java  |  10 +-
 .../apache/jena/atlas/io/TestPeekReaderSource.java |  14 +-
 .../org/apache/jena/atlas/io/TestPrintUtils.java   |  60 ++--
 .../org/apache/jena/atlas/io/TestStreamUTF8.java   | 174 +++++-----
 .../org/apache/jena/atlas/iterator/TestIter.java   |  17 +-
 .../apache/jena/atlas/lib/persistent/TestPMap.java |   2 +-
 .../org/apache/jena/assembler/ModelExpansion.java  |   2 +-
 .../org/apache/jena/datatypes/xsd/XSDDateTime.java |   2 +-
 .../org/apache/jena/datatypes/xsd/XSDDuration.java |   2 +-
 .../xsd/impl/XSDAbstractDateTimeType.java          |  12 +-
 .../jena/ext/xerces/impl/dv/XSSimpleType.java      |   2 +-
 .../ext/xerces/impl/dv/xs/AbstractDateTimeDV.java  |  18 +-
 .../jena/ext/xerces/impl/dv/xs/AnyURIDV.java       |   2 +-
 .../apache/jena/ext/xerces/impl/dv/xs/DateDV.java  |   2 +-
 .../apache/jena/ext/xerces/impl/dv/xs/DayDV.java   |   2 +-
 .../jena/ext/xerces/impl/dv/xs/DecimalDV.java      |   2 +-
 .../jena/ext/xerces/impl/dv/xs/DurationDV.java     |   2 +-
 .../apache/jena/ext/xerces/impl/dv/xs/MonthDV.java |   2 +-
 .../jena/ext/xerces/impl/dv/xs/MonthDayDV.java     |   2 +-
 .../ext/xerces/impl/dv/xs/PrecisionDecimalDV.java  |  18 +-
 .../apache/jena/ext/xerces/impl/dv/xs/TimeDV.java  |   2 +-
 .../ext/xerces/impl/dv/xs/XSSimpleTypeDecl.java    |  10 +-
 .../apache/jena/ext/xerces/impl/dv/xs/YearDV.java  |   2 +-
 .../jena/ext/xerces/impl/dv/xs/YearMonthDV.java    |   2 +-
 .../jena/ext/xerces/impl/xpath/regex/REUtil.java   |   8 +-
 .../ext/xerces/impl/xpath/regex/RangeToken.java    |   4 +-
 .../jena/ext/xerces/impl/xpath/regex/Token.java    |  12 +-
 .../ext/xerces/jaxp/datatype/DurationImpl.java     |   8 +-
 .../jaxp/datatype/XMLGregorianCalendarImpl.java    |  14 +-
 .../ext/xerces/util/DatatypeMessageFormatter.java  |   2 +-
 .../java/org/apache/jena/ext/xerces/util/URI.java  |   8 +-
 .../java/org/apache/jena/ext/xerces/xni/QName.java |   2 +-
 .../apache/jena/rdf/model/impl/NTripleReader.java  |  21 +-
 .../apache/jena/rdf/model/impl/NTripleWriter.java  |  22 +-
 .../org/apache/jena/rdfxml/xmlinput0/NTriple.java  |   6 +-
 .../jena/rdfxml/xmlinput0/impl/ParserSupport.java  |   2 +-
 .../states/AbsWantLiteralValueOrDescription.java   |  12 +-
 .../rdfxml/xmlinput0/states/AbsXMLLiteral.java     |   6 +-
 .../rdfxml/xmlinput0/states/OuterXMLLiteral.java   |   2 +-
 .../org/apache/jena/rdfxml/xmlinput1/NTriple.java  |   6 +-
 .../jena/rdfxml/xmlinput1/impl/ParserSupport.java  |   2 +-
 .../states/AbsWantLiteralValueOrDescription.java   |  12 +-
 .../rdfxml/xmlinput1/states/AbsXMLLiteral.java     |   6 +-
 .../rdfxml/xmlinput1/states/OuterXMLLiteral.java   |   2 +-
 .../jena/rdfxml/xmloutput/impl/BaseXMLWriter.java  |   6 +-
 .../jena/reasoner/rulesys/FBRuleInfGraph.java      |   2 +-
 .../jena/reasoner/rulesys/impl/BindingVector.java  |   2 +-
 .../reasoner/transitiveReasoner/GraphNode.java     |   2 +-
 .../transitiveReasoner/TransitiveGraphCache.java   |   2 +-
 .../java/org/apache/jena/util/OneToManyMap.java    |   2 +-
 .../src/main/java/org/apache/jena/util/URIref.java |  46 ++-
 .../apache/jena/assembler/test/TestRuleSet.java    |  20 +-
 .../org/apache/jena/graph/test/GraphTestBase.java  |   6 +-
 .../jena/rdfxml/xmlinput0/MemoryLeakTest.java      |  73 ----
 .../apache/jena/rdfxml/xmlinput0/TestErrorMsg.java |   2 +-
 .../jena/rdfxml/xmlinput0/TestPropEltErrorMsg.java |   2 +-
 .../rdfxml/xmlinput0/states/TestARPStates.java     |   3 +-
 .../jena/rdfxml/xmlinput0/states/TestData.java     |  43 +--
 .../apache/jena/rdfxml/xmlinput1/TestErrorMsg.java |   2 +-
 .../jena/rdfxml/xmlinput1/TestPropEltErrorMsg.java |   2 +-
 .../jena/rdfxml/xmlinput1/states/TestData.java     |   8 +-
 .../jena/rdfxml/xmloutput/TestXMLFeatures.java     |   3 +-
 .../jena/reasoner/rulesys/test/OWLWGTester.java    |  61 ++--
 .../reasoner/rulesys/test/WebOntTestHarness.java   |   3 +-
 .../apache/jena/reasoner/test/ReasonerTester.java  |   3 +-
 .../jena/reasoner/test/TestRDFSReasoners.java      |  89 ++---
 .../apache/jena/testing_framework/GraphHelper.java |   6 +-
 .../jena/testing_framework/NodeCreateUtils.java    |   2 +-
 .../org/apache/jena/ttl_test/JenaReaderBase.java   |  26 +-
 .../constructquads/ExampleConstructQuads.java      |   7 +-
 .../enhancer/impl/IteratorFactoryWithBuffer.java   |   4 +-
 .../sparql/service/enhancer/pfunction/cacheLs.java |   4 +-
 .../enhancer/slice/impl/BufferOverArray.java       |   6 +-
 .../enhancer/slice/impl/RangeBufferImpl.java       |   6 +-
 .../enhancer/slice/impl/SliceAccessorImpl.java     |  18 +-
 .../org/apache/jena/fuseki/servlets/ActionLib.java |   2 +-
 .../apache/jena/fuseki/servlets/HttpAction.java    |   4 +-
 .../apache/jena/fuseki/system/FusekiNetLib.java    |   4 +-
 .../fuseki/validation/html/ValidatorHtmlLib.java   |   3 +-
 .../galbiston/rdf_tables/file/FileConverter.java   |   4 +-
 .../galbiston/rdf_tables/file/FileSplitter.java    |   5 +-
 .../galbiston/rdf_tables/file/PrefixReader.java    |   5 +-
 .../jena/fuseki/main/TestCrossOriginFilter.java    |   6 +-
 .../org/apache/jena/fuseki/main/TestQuery.java     |   2 +-
 .../java/org/apache/jena/iri/impl/AbsIRIImpl.java  |  12 +-
 .../jena/iri/impl/ComponentPatternParser.java      |   6 +-
 .../apache/jena/iri/impl/ResolvedRelativeIRI.java  |   4 +-
 .../java/org/apache/jena/rfc3986/LibParseIRI.java  |   4 +-
 .../graph/SecuredGraphEventManager.java            |  19 +-
 .../jena/shex/expressions/ShapeExprTripleExpr.java |   2 +-
 .../apache/jena/tdb1/base/file/LocationLock.java   |   3 +-
 .../org/apache/jena/tdb1/solver/BindingTDB.java    |   2 +-
 .../jena/tdb1/base/file/TestLocationLock.java      |  13 +-
 .../store/TestLocationLockStoreConnection.java     |  17 +-
 .../org/apache/jena/tdb2/solver/BindingTDB.java    |   2 +-
 125 files changed, 1277 insertions(+), 1462 deletions(-)

diff --git a/jena-arq/src/main/java/org/apache/jena/ext/xerces_regex/REUtil.java b/jena-arq/src/main/java/org/apache/jena/ext/xerces_regex/REUtil.java
index 9cc70af473..6ed482a0b4 100644
--- a/jena-arq/src/main/java/org/apache/jena/ext/xerces_regex/REUtil.java
+++ b/jena-arq/src/main/java/org/apache/jena/ext/xerces_regex/REUtil.java
@@ -108,7 +108,7 @@ public final class REUtil {
     }
 
     static final String createOptionString(int options) {
-        StringBuffer sb = new StringBuffer(9);
+        StringBuilder sb = new StringBuilder(9);
         if ((options & RegularExpression.PROHIBIT_FIXED_STRING_OPTIMIZATION) != 0)
             sb.append('F');
         if ((options & RegularExpression.PROHIBIT_HEAD_CHARACTER_OPTIMIZATION) != 0)
@@ -136,7 +136,7 @@ public final class REUtil {
 
     static String stripExtendedComment(String regex) {
         int len = regex.length();
-        StringBuffer buffer = new StringBuffer(len);
+        StringBuilder buffer = new StringBuilder(len);
         int offset = 0;
         int charClass = 0;
         while (offset < len) {
@@ -335,12 +335,12 @@ public final class REUtil {
      */
     public static String quoteMeta(String literal) {
         int len = literal.length();
-        StringBuffer buffer = null;
+        StringBuilder buffer = null;
         for (int i = 0;  i < len;  i ++) {
             int ch = literal.charAt(i);
             if (".*+?{[()|\\^$".indexOf(ch) >= 0) {
                 if (buffer == null) {
-                    buffer = new StringBuffer(i+(len-i)*2);
+                    buffer = new StringBuilder(i+(len-i)*2);
                     if (i > 0)  buffer.append(literal.substring(0, i));
                 }
                 buffer.append('\\');
diff --git a/jena-arq/src/main/java/org/apache/jena/ext/xerces_regex/RX_Token.java b/jena-arq/src/main/java/org/apache/jena/ext/xerces_regex/RX_Token.java
index 7b660f8e10..39ca9f567a 100644
--- a/jena-arq/src/main/java/org/apache/jena/ext/xerces_regex/RX_Token.java
+++ b/jena-arq/src/main/java/org/apache/jena/ext/xerces_regex/RX_Token.java
@@ -820,7 +820,7 @@ class RX_Token implements java.io.Serializable {
                 //REVISIT: do we really need to support block names as in Unicode 3.1
                 //         or we can just create all the names in IsBLOCKNAME format (XML Schema REC)?
                 //
-                StringBuffer buffer = new StringBuffer(50);
+                StringBuilder buffer = new StringBuilder(50);
                 for (int i = 0;  i < RX_Token.blockNames.length;  i ++) {
                     RX_Token r1 = RX_Token.createRange();
                     int location;
@@ -1481,10 +1481,10 @@ class RX_Token implements java.io.Serializable {
 
             //System.err.println("Merge '"+previous+"' and '"+tok+"'.");
 
-            StringBuffer buffer;
+            StringBuilder buffer;
             int nextMaxLength = (tok.type == CHAR ? 2 : tok.getString().length());
             if (previous.type == CHAR) {        // Replace previous token by STRING
-                buffer = new StringBuffer(2 + nextMaxLength);
+                buffer = new StringBuilder(2 + nextMaxLength);
                 int ch = previous.getChar();
                 if (ch >= 0x10000)
                     buffer.append(REUtil.decomposeToSurrogates(ch));
@@ -1493,7 +1493,7 @@ class RX_Token implements java.io.Serializable {
                 previous = RX_Token.createString(null);
                 this.children.setElementAt(previous, size-1);
             } else {                            // STRING
-                buffer = new StringBuffer(previous.getString().length() + nextMaxLength);
+                buffer = new StringBuilder(previous.getString().length() + nextMaxLength);
                 buffer.append(previous.getString());
             }
 
@@ -1533,7 +1533,7 @@ class RX_Token implements java.io.Serializable {
                     } else
                         ret = ch.toString(options)+ch2.toString(options);
                 } else {
-                    StringBuffer sb = new StringBuffer();
+                    StringBuilder sb = new StringBuilder();
                     for (int i = 0;  i < this.children.size();  i ++) {
                         sb.append(((RX_Token)this.children.elementAt(i)).toString(options));
                     }
@@ -1547,7 +1547,7 @@ class RX_Token implements java.io.Serializable {
                        && this.getChild(0).type == EMPTY) {
                 ret = this.getChild(1).toString(options)+"??";
             } else {
-                StringBuffer sb = new StringBuffer();
+                StringBuilder sb = new StringBuilder();
                 sb.append(((RX_Token)this.children.elementAt(0)).toString(options));
                 for (int i = 1;  i < this.children.size();  i ++) {
                     sb.append('|');
diff --git a/jena-arq/src/main/java/org/apache/jena/ext/xerces_regex/RangeToken.java b/jena-arq/src/main/java/org/apache/jena/ext/xerces_regex/RangeToken.java
index 632834fe9b..3c6dd3ce2d 100644
--- a/jena-arq/src/main/java/org/apache/jena/ext/xerces_regex/RangeToken.java
+++ b/jena-arq/src/main/java/org/apache/jena/ext/xerces_regex/RangeToken.java
@@ -560,7 +560,7 @@ final class RangeToken extends RX_Token implements java.io.Serializable {
             else if (this == RX_Token.token_spaces)
                 ret = "\\s";
             else {
-                StringBuffer sb = new StringBuffer();
+                StringBuilder sb = new StringBuilder();
                 sb.append('[');
                 for (int i = 0;  i < this.ranges.length;  i += 2) {
                     if ((options & RegularExpression.SPECIAL_COMMA) != 0 && i > 0)  sb.append(',');
@@ -583,7 +583,7 @@ final class RangeToken extends RX_Token implements java.io.Serializable {
             else if (this == RX_Token.token_not_spaces)
                 ret = "\\S";
             else {
-                StringBuffer sb = new StringBuffer();
+                StringBuilder sb = new StringBuilder();
                 sb.append("[^");
                 for (int i = 0;  i < this.ranges.length;  i += 2) {
                     if ((options & RegularExpression.SPECIAL_COMMA) != 0 && i > 0)  sb.append(',');
diff --git a/jena-arq/src/main/java/org/apache/jena/http/HttpLib.java b/jena-arq/src/main/java/org/apache/jena/http/HttpLib.java
index 530533b845..25499e8a2a 100644
--- a/jena-arq/src/main/java/org/apache/jena/http/HttpLib.java
+++ b/jena-arq/src/main/java/org/apache/jena/http/HttpLib.java
@@ -292,7 +292,7 @@ public class HttpLib {
         if ( x.isEmpty() )
             return -1;
         try {
-            return Long.parseLong(x.get());
+            return Long.parseLong(x.orElseThrow());
         } catch (NumberFormatException ex) { return -1; }
     }
 
@@ -794,7 +794,7 @@ public class HttpLib {
         Optional<String> value2 = response.headers().firstValue("Server");
         if ( value2.isEmpty() )
             return false;
-        String headerValue = value2.get();
+        String headerValue = value2.orElseThrow();
         boolean isFuseki = headerValue.startsWith("Apache Jena Fuseki") ||
                            headerValue.toLowerCase().contains("fuseki");
         return isFuseki;
diff --git a/jena-arq/src/main/java/org/apache/jena/http/auth/DigestLib.java b/jena-arq/src/main/java/org/apache/jena/http/auth/DigestLib.java
index cbf5983b76..0330c0dd2c 100644
--- a/jena-arq/src/main/java/org/apache/jena/http/auth/DigestLib.java
+++ b/jena-arq/src/main/java/org/apache/jena/http/auth/DigestLib.java
@@ -76,14 +76,14 @@ class DigestLib {
         if ( optAuth.isEmpty() )
             throw new HttpException("Username/password required but not present in HttpClient");
         // We just want the PasswordAuthentication!
-        PasswordAuthentication x = optAuth.get().requestPasswordAuthenticationInstance(null,
-                                                                                       null,
-                                                                                       -1,   //port,
-                                                                                       null, //protocol,
-                                                                                       null, //prompt,
-                                                                                       null, //scheme,
-                                                                                       null, //url,
-                                                                                       RequestorType.SERVER);
+        PasswordAuthentication x = optAuth.orElseThrow().requestPasswordAuthenticationInstance(null,
+                                                                                               null,
+                                                                                               -1,   //port,
+                                                                                               null, //protocol,
+                                                                                               null, //prompt,
+                                                                                               null, //scheme,
+                                                                                               null, //url,
+                                                                                               RequestorType.SERVER);
         String user = x.getUserName();
         String password = new String(x.getPassword());
         return Pair.create(user, password);
diff --git a/jena-arq/src/main/java/org/apache/jena/query/ParameterizedSparqlString.java b/jena-arq/src/main/java/org/apache/jena/query/ParameterizedSparqlString.java
index 270bfca182..b74f635cb9 100644
--- a/jena-arq/src/main/java/org/apache/jena/query/ParameterizedSparqlString.java
+++ b/jena-arq/src/main/java/org/apache/jena/query/ParameterizedSparqlString.java
@@ -74,7 +74,7 @@ import org.apache.jena.update.UpdateRequest;
  * </p>
  * <h4>Buffer Usage</h4>
  * <p>
- * Additionally you may use this purely as a {@link StringBuffer} replacement
+ * Additionally you may use this purely as a {@link StringBuilder} replacement
  * for creating queries since it provides a large variety of convenience methods
  * for appending things either as-is or as nodes (which causes appropriate
  * formatting to be applied).
diff --git a/jena-arq/src/main/java/org/apache/jena/query/ResultSetFormatter.java b/jena-arq/src/main/java/org/apache/jena/query/ResultSetFormatter.java
index e547c79099..0e90fcc933 100644
--- a/jena-arq/src/main/java/org/apache/jena/query/ResultSetFormatter.java
+++ b/jena-arq/src/main/java/org/apache/jena/query/ResultSetFormatter.java
@@ -23,28 +23,26 @@ import static org.apache.jena.riot.resultset.ResultSetLang.RS_JSON;
 import static org.apache.jena.riot.resultset.ResultSetLang.RS_TSV;
 import static org.apache.jena.riot.resultset.ResultSetLang.RS_XML;
 
-import java.io.ByteArrayOutputStream ;
-import java.io.OutputStream ;
-import java.io.UnsupportedEncodingException ;
-import java.nio.charset.StandardCharsets ;
-import java.util.ArrayList ;
-import java.util.Iterator ;
-import java.util.List ;
+import java.io.ByteArrayOutputStream;
+import java.io.OutputStream;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
 
 import org.apache.jena.atlas.io.IndentedWriter;
 import org.apache.jena.atlas.json.JsonObject;
 import org.apache.jena.atlas.lib.StrUtils;
-import org.apache.jena.atlas.logging.Log ;
-import org.apache.jena.rdf.model.RDFNode ;
+import org.apache.jena.rdf.model.RDFNode;
 import org.apache.jena.riot.Lang;
-import org.apache.jena.riot.ResultSetMgr ;
+import org.apache.jena.riot.ResultSetMgr;
 import org.apache.jena.riot.resultset.ResultSetLang;
 import org.apache.jena.riot.rowset.rw.RowSetWriterXML;
-import org.apache.jena.shared.PrefixMapping ;
+import org.apache.jena.shared.PrefixMapping;
 import org.apache.jena.sparql.ARQConstants;
-import org.apache.jena.sparql.ARQException ;
-import org.apache.jena.sparql.ARQNotImplemented ;
-import org.apache.jena.sparql.core.Prologue ;
+import org.apache.jena.sparql.ARQException;
+import org.apache.jena.sparql.ARQNotImplemented;
+import org.apache.jena.sparql.core.Prologue;
 import org.apache.jena.sparql.resultset.ResultsFormat;
 import org.apache.jena.sparql.resultset.ResultsWriter;
 import org.apache.jena.sys.JenaSystem;
@@ -70,7 +68,7 @@ public class ResultSetFormatter {
      * @param qresults   result set
      */
     public static void out(ResultSet qresults)
-    { out(System.out, qresults) ; }
+    { out(System.out, qresults); }
 
     /**
      * Output a result set in a text format.  The result set is consumed.
@@ -83,7 +81,7 @@ public class ResultSetFormatter {
      * @param qresults   result set
      */
     public static void out(OutputStream out, ResultSet qresults)
-    { out(out, qresults, (PrefixMapping)null) ; }
+    { out(out, qresults, (PrefixMapping)null); }
 
     /**
      * Output a result set in a text format.  The result set is consumed.
@@ -96,7 +94,7 @@ public class ResultSetFormatter {
      * @param query     May be used to abbreviate URIs
      */
     public static void out(ResultSet qresults, Query query)
-    { out(System.out, qresults, query) ; }
+    { out(System.out, qresults, query); }
 
     /**
      * Output a result set in a text format.  The result set is consumed.
@@ -109,7 +107,7 @@ public class ResultSetFormatter {
      * @param prologue   May be used to abbreviate URIs
      */
     public static void out(ResultSet qresults, Prologue prologue)
-    { out(System.out, qresults, prologue) ; }
+    { out(System.out, qresults, prologue); }
 
     //    /**
 //     * Output a result set in a text format.
@@ -118,7 +116,7 @@ public class ResultSetFormatter {
 //     * @param query      May be used to abbreviate URIs
 //     */
 //    public static void out(OutputStream out, ResultSet qresults, Query query)
-//    { out(out, qresults, query.getPrefixMapping()) ; }
+//    { out(out, qresults, query.getPrefixMapping()); }
 
     /**
      * Output a result set in a text format.  The result set is consumed.
@@ -131,7 +129,7 @@ public class ResultSetFormatter {
      * @param pmap      Prefix mapping for abbreviating URIs.
      */
     public static void out(ResultSet qresults, PrefixMapping pmap)
-    { out(System.out, qresults, pmap) ; }
+    { out(System.out, qresults, pmap); }
 
     /**
      * Output a result set in a text format.  The result set is consumed.
@@ -172,7 +170,7 @@ public class ResultSetFormatter {
      * @param answer    The boolean answer
      */
     public static void out(boolean answer)
-    { out(System.out, answer) ; }
+    { out(System.out, answer); }
 
     /**
      * Output an ASK answer
@@ -195,9 +193,9 @@ public class ResultSetFormatter {
 
     public static String asText(ResultSet qresults)
     {
-        ByteArrayOutputStream arr = new ByteArrayOutputStream() ;
-        out(arr, qresults) ;
-        return new String(arr.toByteArray(), StandardCharsets.UTF_8) ;
+        ByteArrayOutputStream arr = new ByteArrayOutputStream();
+        out(arr, qresults);
+        return new String(arr.toByteArray(), StandardCharsets.UTF_8);
     }
 
     /** Return a string that has the result set serialized as a text table
@@ -214,14 +212,9 @@ public class ResultSetFormatter {
 
     public static String asText(ResultSet qresults, Prologue prologue)
     {
-        ByteArrayOutputStream arr = new ByteArrayOutputStream() ;
-        out(arr, qresults, prologue) ;
-        try { return new String(arr.toByteArray(), "UTF-8") ; }
-        catch (UnsupportedEncodingException e)
-        {
-            Log.warn(ResultSetFormatter.class, "UnsupportedEncodingException") ;
-            return null ;
-        }
+        ByteArrayOutputStream arr = new ByteArrayOutputStream();
+        out(arr, qresults, prologue);
+        return new String(arr.toByteArray(), StandardCharsets.UTF_8);
     }
 
     // ----------------------------------------------------------------
@@ -233,15 +226,15 @@ public class ResultSetFormatter {
 
     public static int consume(ResultSet resultSet)
     {
-        int count = 0 ;
-        for ( ; resultSet.hasNext() ; )
+        int count = 0;
+        for (; resultSet.hasNext(); )
         {
             // Force nodes to be materialized.
-            QuerySolution result = resultSet.nextSolution() ;
+            QuerySolution result = resultSet.nextSolution();
             materialize(result);
-            count++ ;
+            count++;
         }
-        return count ;
+        return count;
     }
 
     /**
@@ -251,20 +244,20 @@ public class ResultSetFormatter {
      */
     static public List<QuerySolution> toList(ResultSet resultSet)
     {
-        List<QuerySolution> list = new ArrayList<>() ;
-        for ( ; resultSet.hasNext() ; ) {
-            QuerySolution result = resultSet.nextSolution() ;
+        List<QuerySolution> list = new ArrayList<>();
+        for (; resultSet.hasNext(); ) {
+            QuerySolution result = resultSet.nextSolution();
             materialize(result);
-            list.add(result) ;
+            list.add(result);
         }
-        return list ;
+        return list;
     }
 
     /** Touch every var/value */
     private static void materialize(QuerySolution qs) {
-        for ( Iterator<String> iter = qs.varNames() ; iter.hasNext() ; ) {
+        for ( Iterator<String> iter = qs.varNames(); iter.hasNext(); ) {
             String vn = iter.next();
-            RDFNode n = qs.get(vn) ;
+            RDFNode n = qs.get(vn);
         }
     }
 
@@ -275,7 +268,7 @@ public class ResultSetFormatter {
      */
 
     static public void output(ResultSet resultSet, ResultsFormat rFmt)
-    { output(System.out, resultSet, rFmt) ; }
+    { output(System.out, resultSet, rFmt); }
 
     /** Output a ResultSet in some format.
      *  To get detailed control over each format, call the appropriate operation directly.
@@ -289,13 +282,13 @@ public class ResultSetFormatter {
         Lang lang = ResultsFormat.convert(rFmt);
         if ( lang != null ) {
             output(outStream, resultSet, lang);
-            return ;
+            return;
         }
 
         boolean b = ResultsFormat.oldWrite(outStream, rFmt, null, resultSet);
         if ( b )
-            return ;
-        throw new ARQException("Unknown ResultSet format: " + rFmt) ;
+            return;
+        throw new ARQException("Unknown ResultSet format: " + rFmt);
     }
 
     // ---- General Output
@@ -323,13 +316,13 @@ public class ResultSetFormatter {
      */
     public static void output(OutputStream outStream, Iterator<JsonObject> jsonItems)
     {
-        IndentedWriter out = new IndentedWriter(outStream) ;
-        out.println("[") ;
-        out.incIndent() ;
+        IndentedWriter out = new IndentedWriter(outStream);
+        out.println("[");
+        out.incIndent();
         while (jsonItems.hasNext())
         {
-            JsonObject jsonItem = jsonItems.next() ;
-            jsonItem.output(out) ;
+            JsonObject jsonItem = jsonItems.next();
+            jsonItem.output(out);
             if ( jsonItems.hasNext() )
                 out.println(" ,");
             else
@@ -349,7 +342,7 @@ public class ResultSetFormatter {
      * @param qresults      result set
      */
     static public void outputAsXML(ResultSet qresults)
-    { outputAsXML(System.out, qresults) ; }
+    { outputAsXML(System.out, qresults); }
 
     /** Output a result set in the XML format
      *
@@ -391,7 +384,7 @@ public class ResultSetFormatter {
      */
 
     public static void outputAsXML(boolean booleanResult)
-    { outputAsXML(System.out, booleanResult) ; }
+    { outputAsXML(System.out, booleanResult); }
 
     /** Output a boolean result in the XML format
      *
@@ -408,7 +401,7 @@ public class ResultSetFormatter {
      * @param stylesheet    The URL of the stylesheet
      */
     public static void outputAsXML(boolean booleanResult, String stylesheet)
-    { outputAsXML(System.out, booleanResult, stylesheet) ; }
+    { outputAsXML(System.out, booleanResult, stylesheet); }
 
     /** Output a boolean result in the XML format
      *
@@ -437,7 +430,7 @@ public class ResultSetFormatter {
 
     public static String asXMLString(ResultSet qresults)
     {
-        return asXMLString(qresults, null) ;
+        return asXMLString(qresults, null);
     }
 
     /** Return a string that has the result set serialized as XML (not RDF)
@@ -471,7 +464,7 @@ public class ResultSetFormatter {
 
     public static String asXMLString(boolean booleanResult)
     {
-        return asXMLString(booleanResult, null) ;
+        return asXMLString(booleanResult, null);
     }
 
     /** Return a string that has the result set serialized as XML (not RDF)
@@ -502,7 +495,7 @@ public class ResultSetFormatter {
      */
 
     static public void outputAsJSON(ResultSet resultSet)
-    { outputAsJSON(System.out, resultSet) ; }
+    { outputAsJSON(System.out, resultSet); }
 
     /** Output a result set in the JSON format
      *  Format: <a href="http://www.w3.org/TR/rdf-sparql-json-res/">Serializing SPARQL Query Results in JSON</a>
@@ -513,7 +506,7 @@ public class ResultSetFormatter {
      */
 
     static public void outputAsJSON(OutputStream outStream, ResultSet resultSet)
-    { output(outStream, resultSet, RS_JSON) ; }
+    { output(outStream, resultSet, RS_JSON); }
 
     /** Output a result set in the JSON format
      *  Format: <a href="http://www.w3.org/TR/rdf-sparql-json-res/">Serializing SPARQL Query Results in JSON</a>
@@ -523,7 +516,7 @@ public class ResultSetFormatter {
      */
 
     static public void outputAsJSON(boolean booleanResult)
-    { outputAsJSON(System.out, booleanResult) ; }
+    { outputAsJSON(System.out, booleanResult); }
 
     /** Output a result set in the JSON format
      *  Format: <a href="http://www.w3.org/TR/rdf-sparql-json-res/">Serializing SPARQL Query Results in JSON</a>
@@ -534,7 +527,7 @@ public class ResultSetFormatter {
      */
 
     static public void outputAsJSON(OutputStream outStream, boolean booleanResult)
-    { output(outStream, booleanResult, RS_JSON) ; }
+    { output(outStream, booleanResult, RS_JSON); }
 
     // ---- SSE
 
@@ -545,7 +538,7 @@ public class ResultSetFormatter {
      */
 
     static public void outputAsSSE(boolean booleanResult)
-    { outputAsSSE(System.out, booleanResult ) ; }
+    { outputAsSSE(System.out, booleanResult ); }
 
     /** Output a boolean result in the SSE format
      *  Format: <a href="http://jena.apache.org/documentation/notes/sse.html">SSE</a>
@@ -556,7 +549,7 @@ public class ResultSetFormatter {
 
     static public void outputAsSSE(OutputStream outStream, boolean booleanResult)
     {
-        throw new ARQNotImplemented("outputAsSSE") ;
+        throw new ARQNotImplemented("outputAsSSE");
     }
 
     /** Output a result set in the SSE format
@@ -565,7 +558,7 @@ public class ResultSetFormatter {
      */
 
     static public void outputAsSSE(ResultSet resultSet)
-    { outputAsSSE(System.out, resultSet) ; }
+    { outputAsSSE(System.out, resultSet); }
 
     /** Output a result set in the SSE format
      *  Format: <a href="http://jena.apache.org/documentation/notes/sse.html">SSE</a>
@@ -573,7 +566,7 @@ public class ResultSetFormatter {
      */
 
     static public void outputAsSSE(ResultSet resultSet, Prologue prologue)
-    { outputAsSSE(System.out, resultSet, prologue) ; }
+    { outputAsSSE(System.out, resultSet, prologue); }
 
     /** Output a result set in the SSE format
      *  Format: <a href="http://jena.apache.org/documentation/notes/sse.html">SSE</a>
@@ -582,7 +575,7 @@ public class ResultSetFormatter {
      */
 
     static public void outputAsSSE(OutputStream outStream, ResultSet resultSet)
-    { outputAsSSE(outStream, resultSet, null) ; }
+    { outputAsSSE(outStream, resultSet, null); }
 
     /** Output a result set in the SSE format
      *  Format: <a href="http://jena.apache.org/documentation/notes/sse.html">SSE</a>
@@ -593,7 +586,7 @@ public class ResultSetFormatter {
 
     static public void outputAsSSE(OutputStream outStream, ResultSet resultSet, Prologue prologue)
     {
-        throw new ARQNotImplemented("outputAsSSE") ;
+        throw new ARQNotImplemented("outputAsSSE");
     }
 
     // ---- CSV
@@ -604,7 +597,7 @@ public class ResultSetFormatter {
      */
 
     static public void outputAsCSV(boolean booleanResult)
-    { outputAsCSV(System.out, booleanResult ) ; }
+    { outputAsCSV(System.out, booleanResult ); }
 
     /** Output a boolean result in CSV format
      *
@@ -620,7 +613,7 @@ public class ResultSetFormatter {
      */
 
     static public void outputAsCSV(ResultSet resultSet)
-    { outputAsCSV(System.out, resultSet) ; }
+    { outputAsCSV(System.out, resultSet); }
 
     /** Output a result set in CSV format
      * @param outStream  The output stream
@@ -638,7 +631,7 @@ public class ResultSetFormatter {
      */
 
     static public void outputAsTSV(boolean booleanResult)
-    { outputAsTSV(System.out, booleanResult ) ; }
+    { outputAsTSV(System.out, booleanResult ); }
 
     /** Output a boolean result in TSV format
      *
@@ -654,7 +647,7 @@ public class ResultSetFormatter {
      */
 
     static public void outputAsTSV(ResultSet resultSet)
-    { outputAsTSV(System.out, resultSet) ; }
+    { outputAsTSV(System.out, resultSet); }
 
     /** Output a result set in TSV format
      * @param outStream  The output stream
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/lang/LangJSONLD11.java b/jena-arq/src/main/java/org/apache/jena/riot/lang/LangJSONLD11.java
index 312152212c..0ea7c70fd4 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/lang/LangJSONLD11.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/lang/LangJSONLD11.java
@@ -133,7 +133,7 @@ public class LangJSONLD11 implements ReaderRIOT {
      */
     private static void extractPrefixes(Document document, BiConsumer<String, String> action) {
         try {
-            JsonStructure js = document.getJsonContent().get();
+            JsonStructure js = document.getJsonContent().orElseThrow();
             switch (js.getValueType()) {
             case ARRAY:
                 extractPrefixes(js, action);
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/lang/ReaderTriX.java b/jena-arq/src/main/java/org/apache/jena/riot/lang/ReaderTriX.java
index 4fb6a68e77..2cc9f9c17f 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/lang/ReaderTriX.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/lang/ReaderTriX.java
@@ -399,7 +399,7 @@ public class ReaderTriX implements ReaderRIOT {
     }
 
     private String slurpRDFXMLLiteral(XMLStreamReader parser) throws XMLStreamException {
-        StringBuffer content = new StringBuffer();
+        StringBuilder content = new StringBuilder();
         int depth = 0;
 
         while(parser.hasNext()) {
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/rowset/rw/RowSetWriterText.java b/jena-arq/src/main/java/org/apache/jena/riot/rowset/rw/RowSetWriterText.java
index 66f36fb74f..61a54867ca 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/rowset/rw/RowSetWriterText.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/rowset/rw/RowSetWriterText.java
@@ -176,7 +176,7 @@ public class RowSetWriterText implements RowSetWriter {
         for ( int col = 0 ; col < colWidths.length ; col++ ) {
             String s = row[col];
             int pad = colWidths[col];
-            StringBuffer sbuff = new StringBuffer(120);
+            StringBuilder sbuff = new StringBuilder(120);
 
             if ( col > 0 )
                 sbuff.append(colSep);
diff --git a/jena-arq/src/main/java/org/apache/jena/riot/system/JenaTitanium.java b/jena-arq/src/main/java/org/apache/jena/riot/system/JenaTitanium.java
index e6c7abbe5a..dce6574248 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/system/JenaTitanium.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/system/JenaTitanium.java
@@ -106,7 +106,7 @@ public class JenaTitanium {
     private static Node valueToNode(ParserProfile parserProfile, Optional<RdfResource> value) {
         if ( value.isEmpty() )
             return null;
-        return valueToNode(parserProfile, value.get());
+        return valueToNode(parserProfile, value.orElseThrow());
     }
 
     private static Node valueToNode(ParserProfile parserProfile, RdfValue value) {
@@ -123,7 +123,7 @@ public class JenaTitanium {
             RDFDatatype datatype = NodeFactory.getType(dt);
             Optional<String> lang = literal.getLanguage();
             if ( lang.isPresent() )
-                return parserProfile.createLangLiteral(lex, lang.get(), line, col);
+                return parserProfile.createLangLiteral(lex, lang.orElseThrow(), line, col);
             return parserProfile.createTypedLiteral(lex, datatype, line, col);
         }
         throw new JenaTitaniumException("Not recognized: "+value);
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/optimize/VariableUsageTracker.java b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/optimize/VariableUsageTracker.java
index 1757f2db8b..cbcdb51533 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/optimize/VariableUsageTracker.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/optimize/VariableUsageTracker.java
@@ -18,10 +18,7 @@
 
 package org.apache.jena.sparql.algebra.optimize;
 
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Stack;
+import java.util.*;
 
 import org.apache.jena.sparql.core.Var;
 
@@ -31,7 +28,7 @@ import org.apache.jena.sparql.core.Var;
  */
 public class VariableUsageTracker {
 
-    private Stack<Map<String, Integer>> stack = new Stack<>();
+    private Deque<Map<String, Integer>> stack = new ArrayDeque<>();
     private Map<String, Integer> variables = new HashMap<>();
 
     public void push() {
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/engine/binding/BindingBase.java b/jena-arq/src/main/java/org/apache/jena/sparql/engine/binding/BindingBase.java
index 0e7fe54610..8952425640 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/binding/BindingBase.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/binding/BindingBase.java
@@ -132,7 +132,7 @@ abstract public class BindingBase implements Binding
 
     @Override
     public String toString() {
-        StringBuffer sbuff = new StringBuffer();
+        StringBuilder sbuff = new StringBuilder();
         format1(sbuff);
 
         if ( parent != null ) {
@@ -146,7 +146,7 @@ abstract public class BindingBase implements Binding
     }
 
     // Do one level of binding
-    public void format1(StringBuffer sbuff) {
+    public void format1(StringBuilder sbuff) {
         if ( isEmpty() ) {
             sbuff.append("()");
             return;
@@ -163,7 +163,7 @@ abstract public class BindingBase implements Binding
         }
     }
 
-    protected void fmtVar(StringBuffer sbuff, Var var) {
+    protected void fmtVar(StringBuilder sbuff, Var var) {
         Node node = get(var);
         String tmp = FmtUtils.stringForObject(node);
         sbuff.append("( ?" + var.getVarName() + " = " + tmp + " )");
@@ -171,7 +171,7 @@ abstract public class BindingBase implements Binding
 
     // Do one level of binding
     public String toString1() {
-        StringBuffer sbuff = new StringBuffer();
+        StringBuilder sbuff = new StringBuilder();
         format1(sbuff);
         return sbuff.toString();
     }
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/engine/binding/BindingRoot.java b/jena-arq/src/main/java/org/apache/jena/sparql/engine/binding/BindingRoot.java
index 6ec58e99b8..47381b0f7e 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/binding/BindingRoot.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/binding/BindingRoot.java
@@ -30,7 +30,7 @@ public class BindingRoot extends Binding0 {
     }
 
     @Override
-    public void format1(StringBuffer sBuff) {
+    public void format1(StringBuilder sBuff) {
         sBuff.append("[Root]");
     }
 }
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/nodevalue/XSDFuncOp.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/nodevalue/XSDFuncOp.java
index 7c134f9397..0082091bb5 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/nodevalue/XSDFuncOp.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/nodevalue/XSDFuncOp.java
@@ -592,10 +592,10 @@ public class XSDFuncOp
 
     private static String replaceAll(Matcher matcher, String rep) {
         try {
-            StringBuffer sb = null ;   // Delay until needed
+            StringBuilder sb = null ;   // Delay until needed
             while(matcher.find()) {
                 if ( sb == null )
-                    sb = new StringBuffer() ;
+                    sb = new StringBuilder() ;
                 else {
                     // Do one match of zerolength string otherwise filter out.
                     if (matcher.start() == matcher.end() )
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/graph/PrefixMappingBase.java b/jena-arq/src/main/java/org/apache/jena/sparql/graph/PrefixMappingBase.java
index 541df782a7..75a821857b 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/graph/PrefixMappingBase.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/graph/PrefixMappingBase.java
@@ -238,7 +238,7 @@ public abstract class PrefixMappingBase implements PrefixMapping {
         Optional<Entry<String, String>> e = findMapping(uri, true);
         if ( ! e.isPresent() )
             return uri;
-        return e.get().getKey() + ":" + uri.substring((e.get().getValue()).length());
+        return e.orElseThrow().getKey() + ":" + uri.substring((e.get().getValue()).length());
     }
 
     @Override
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_10/ParseException.java b/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_10/ParseException.java
index ced6d479a4..7de80c559b 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_10/ParseException.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/lang/sparql_10/ParseException.java
@@ -161,7 +161,7 @@ public class ParseException extends Exception {
    * string literal.
    */
   static String add_escapes(String str) {
-      StringBuffer retval = new StringBuffer();
+      StringBuilder retval = new StringBuilder();
       char ch;
       for (int i = 0; i < str.length(); i++) {
         switch (str.charAt(i))
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/util/Convert.java b/jena-arq/src/main/java/org/apache/jena/sparql/util/Convert.java
index 906a7e8678..351a619d27 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/util/Convert.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/util/Convert.java
@@ -18,19 +18,19 @@
 
 package org.apache.jena.sparql.util;
 
-import java.io.UnsupportedEncodingException ;
-import java.net.URLDecoder ;
-import java.net.URLEncoder ;
+import java.net.URLDecoder;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
 
 import org.apache.jena.atlas.lib.IRILib;
 
 /**
  * Encode for a www-forms.
+ *
  * @see IRILib
  * @see URLEncoder#encode
  */
-public class Convert
-{
+public class Convert {
     // UTF-8 is required in Java implementations
 
     // Choose the characters to escape.
@@ -39,54 +39,43 @@ public class Convert
     // 2.2. Reserved Characters
     // 2.4.3 Excluded US-ASCII Characters
     //
-    // reserved    = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" |
-    //               "$" | ","
+    // reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" |
+    // "$" | ","
     //
-    // control     = <US-ASCII coded characters 00-1F and 7F hexadecimal>
-    // space       = <US-ASCII coded character 20 hexadecimal>
+    // control = <US-ASCII coded characters 00-1F and 7F hexadecimal>
+    // space = <US-ASCII coded character 20 hexadecimal>
     //
-    // delims      = "<" | ">" | "#" | "%" | <">
-    // unwise      = "{" | "}" | "|" | "\" | "^" | "[" | "]" | "`"
+    // delims = "<" | ">" | "#" | "%" | <">
+    // unwise = "{" | "}" | "|" | "\" | "^" | "[" | "]" | "`"
     //
     // These should be OK:
     //
-    // unreserved  = alphanum | mark
-    // mark        = "-" | "_" | "." | "!" | "~" | "*" | "'" | "(" | ")"
+    // unreserved = alphanum | mark
+    // mark = "-" | "_" | "." | "!" | "~" | "*" | "'" | "(" | ")"
 
     // URLEncoder is savage:
 
     // + The alphanumeric characters "a" through "z",
-    //   "A" through "Z" and "0" through "9" remain the same.
+    // "A" through "Z" and "0" through "9" remain the same.
     // + The special characters ".", "-", "*", and "_" remain the same.
     // + The space character " " is converted into a plus sign "+".
     // + All other characters are unsafe and are first converted into
-    //   one or more bytes using some encoding scheme.
+    // one or more bytes using some encoding scheme.
 
-    public static String encWWWForm(String s)
-    {
-        try {
-            return URLEncoder.encode(s, "UTF-8") ;
-            // Can't fail - UTF-8 is required
-        } catch (UnsupportedEncodingException ex) { return null ;}
+    public static String encWWWForm(String s) {
+        return URLEncoder.encode(s, StandardCharsets.UTF_8);
     }
 
-    public static String encWWWForm(StringBuffer sbuff)
-    {
-        return encWWWForm(sbuff.toString()) ;
+    public static String encWWWForm(StringBuilder sbuff) {
+        return encWWWForm(sbuff.toString());
     }
 
-
-    public static String decWWWForm(String s)
-    {
-        try {
-            return URLDecoder.decode(s, "UTF-8") ;
-            // Can't fail - UTF-8 is required
-        } catch (UnsupportedEncodingException ex) { return null ;}
+    public static String decWWWForm(String s) {
+        return URLDecoder.decode(s, StandardCharsets.UTF_8);
     }
 
-    public static String decWWWForm(StringBuffer sbuff)
-    {
-        return decWWWForm(sbuff.toString()) ;
+    public static String decWWWForm(StringBuilder sbuff) {
+        return decWWWForm(sbuff.toString());
     }
 
 }
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/util/RomanNumeral.java b/jena-arq/src/main/java/org/apache/jena/sparql/util/RomanNumeral.java
index 87adb212ae..bba7499cff 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/util/RomanNumeral.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/util/RomanNumeral.java
@@ -103,7 +103,7 @@ public class RomanNumeral
             throw new NumberFormatException("Roman numerals are 1-3999 (" + i + ")") ;
         if ( i > 3999 )
             throw new NumberFormatException("Roman numerals are 1-3999 (" + i + ")") ;
-        StringBuffer sbuff = new StringBuffer() ;
+        StringBuilder sbuff = new StringBuilder() ;
 
         i = i2r(sbuff, i, "M", 1000, "CM", 900, "D", 500, "CD", 400) ;
         i = i2r(sbuff, i, "C", 100, "XC", 90, "L", 50, "XL", 40) ;
@@ -116,7 +116,7 @@ public class RomanNumeral
         return sbuff.toString() ;
     }
 
-    private static int i2r(StringBuffer sbuff, int i,
+    private static int i2r(StringBuilder sbuff, int i,
                            String tens,  int iTens,
                            String nines, int iNines,
                            String fives, int iFives,
diff --git a/jena-arq/src/test/java/org/apache/jena/riot/system/irix/AbstractTestIRIxRIOT_system.java b/jena-arq/src/test/java/org/apache/jena/riot/system/irix/AbstractTestIRIxRIOT_system.java
index 484f5ff287..05fbf0434f 100644
--- a/jena-arq/src/test/java/org/apache/jena/riot/system/irix/AbstractTestIRIxRIOT_system.java
+++ b/jena-arq/src/test/java/org/apache/jena/riot/system/irix/AbstractTestIRIxRIOT_system.java
@@ -301,10 +301,8 @@ public abstract class AbstractTestIRIxRIOT_system {
         InputStream in = generateSource(iri);
         RDFParserBuilder builder = RDFParser.source(in).forceLang(lang);
         builder.base(base);
-        if ( strict.isPresent() )
-            builder.strict(strict.get());
-        if ( checking.isPresent() )
-            builder.checking(checking.get());
+        strict.ifPresent(builder::strict);
+        checking.ifPresent(builder::checking);
         runTest(builder, iri, numErrors, numWarnings);
     }
 
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/io/IndentedLineBuffer.java b/jena-base/src/main/java/org/apache/jena/atlas/io/IndentedLineBuffer.java
index 699c9b312e..7fa60383b2 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/io/IndentedLineBuffer.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/io/IndentedLineBuffer.java
@@ -35,8 +35,6 @@ public class IndentedLineBuffer extends IndentedWriter
         sw = (StringWriter)super.out ;
     }
 
-    public StringBuffer getBuffer() { return sw.getBuffer(); }
-
     public String asString() { return sw.toString() ; }
     @Override
     public String toString() { return asString() ; }
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/Bytes.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/Bytes.java
index 6ca011c395..60e70a59d6 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/Bytes.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/Bytes.java
@@ -20,12 +20,12 @@ package org.apache.jena.atlas.lib;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
 
-import java.io.UnsupportedEncodingException ;
-import java.nio.ByteBuffer ;
-import java.nio.CharBuffer ;
-import java.nio.charset.CharsetDecoder ;
-import java.nio.charset.CharsetEncoder ;
-import java.nio.charset.CoderResult ;
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CoderResult;
+import java.nio.charset.StandardCharsets;
 
 /** Byte-oriented operations.  Packing and unpacking integers
  *  is in network order (Big endian - which is the preferred order in Java).
@@ -38,52 +38,52 @@ public class Bytes
 
     /** String to UTF8 bytes */
     public static byte[] asUTF8bytes(String s) {
-        return s.getBytes(UTF_8) ;
+        return s.getBytes(UTF_8);
     }
 
     /** String from UTF8 bytes */
     public static String fromUTF8bytes(byte[] bytes) {
-        return new String(bytes, UTF_8) ;
+        return new String(bytes, UTF_8);
     }
 
     /** Compare two byte arrays which may be of different lengths */
     public static int compare(byte[] x1, byte[] x2)
     {
-        int n = Math.min(x1.length, x2.length) ;
+        int n = Math.min(x1.length, x2.length);
 
-        for ( int i = 0 ; i < n ; i++ )
+        for ( int i = 0; i < n; i++ )
         {
-            byte b1 = x1[i] ;
-            byte b2 = x2[i] ;
+            byte b1 = x1[i];
+            byte b2 = x2[i];
             if ( b1 == b2 )
-                continue ;
+                continue;
             // Treat as unsigned values in the bytes.
-            return (b1&0xFF) - (b2&0xFF) ;
+            return (b1&0xFF) - (b2&0xFF);
         }
 
-        return x1.length - x2.length ;
+        return x1.length - x2.length;
     }
 
     public static int compareByte(byte b1, byte b2)
     {
-        return (b1&0xFF) - (b2&0xFF) ;
+        return (b1&0xFF) - (b2&0xFF);
     }
 
     public static byte[] copyOf(byte[] bytes)
     {
-        return copyOf(bytes, 0, bytes.length) ;
+        return copyOf(bytes, 0, bytes.length);
     }
 
     public static byte[] copyOf(byte[] bytes, int start)
     {
-        return copyOf(bytes, start, bytes.length-start) ;
+        return copyOf(bytes, start, bytes.length-start);
     }
 
     public static byte[] copyOf(byte[] bytes, int start, int length)
     {
-        byte[] newByteArray = new byte[length] ;
-        System.arraycopy(bytes, start, newByteArray, 0, length) ;
-        return newByteArray ;
+        byte[] newByteArray = new byte[length];
+        System.arraycopy(bytes, start, newByteArray, 0, length);
+        return newByteArray;
     }
 
     final public static byte[] hexDigitsUC = {
@@ -100,9 +100,9 @@ public class Bytes
      * @see Integer#SIZE
      */
     public static byte[] intToBytes(int v) {
-        byte[] bytes = new byte[Integer.BYTES] ;
+        byte[] bytes = new byte[Integer.BYTES];
         setInt(v, bytes);
-        return bytes ;
+        return bytes;
     }
 
     /** Put a long value into an allocated byte array.
@@ -111,16 +111,16 @@ public class Bytes
      * @see Long#SIZE
      */
     public static byte[] longToBytes(long v) {
-        byte[] bytes = new byte[Long.BYTES] ;
+        byte[] bytes = new byte[Long.BYTES];
         setLong(v, bytes);
-        return bytes ;
+        return bytes;
     }
 
     /** Get an int from a byte array (network order)
      * @param b Byte Array
      */
     public static final int getInt(byte[]b)
-    { return getInt(b, 0) ; }
+    { return getInt(b, 0); }
 
     /** Get an int from a byte array (network order)
      * @param b Byte Array
@@ -131,14 +131,14 @@ public class Bytes
         return assembleInt(b[idx+0],
                            b[idx+1],
                            b[idx+2],
-                           b[idx+3]) ;
+                           b[idx+3]);
     }
 
     /** Get a long from a byte array (network order)
      * @param b Byte Array
      */
     public static final long getLong(byte[]b)
-    { return getLong(b, 0) ; }
+    { return getLong(b, 0); }
 
     /** Get a long from a byte array (network order)
      * @param b Byte Array
@@ -153,7 +153,7 @@ public class Bytes
                             b[idx+4],
                             b[idx+5],
                             b[idx+6],
-                            b[idx+7]) ;
+                            b[idx+7]);
 
     }
 
@@ -162,7 +162,7 @@ public class Bytes
      * @param b byte array
      */
     public static final void setInt(int value, byte[]b)
-    { setInt(value, b, 0) ; }
+    { setInt(value, b, 0); }
 
     /** Put an int into a byte array from a given position
      * @param x The integer
@@ -171,11 +171,11 @@ public class Bytes
      */
     public static final void setInt(int x, byte[]b, int idx)
     {
-//        b[idx+0] = byte3(value) ;
-//        b[idx+1] = byte2(value) ;
-//        b[idx+2] = byte1(value) ;
-//        b[idx+3] = byte0(value) ;
-      b[idx+0] = (byte)((x >> 24)&0xFF) ;
+//        b[idx+0] = byte3(value);
+//        b[idx+1] = byte2(value);
+//        b[idx+2] = byte1(value);
+//        b[idx+3] = byte0(value);
+      b[idx+0] = (byte)((x >> 24)&0xFF);
       b[idx+1] = (byte)((x >> 16)&0xFF);
       b[idx+2] = (byte)((x >>  8)&0xFF);
       b[idx+3] = (byte)(x &0xFF);
@@ -188,7 +188,7 @@ public class Bytes
      * @param b byte array
      */
     public static final void setLong(long value, byte[]b)
-    { setLong(value, b, 0) ; }
+    { setLong(value, b, 0); }
 
     /** Put a long into a byte array from a given position
      * @param value The integer
@@ -196,24 +196,24 @@ public class Bytes
      * @param idx starting point
      */
     public static final void setLong(long value, byte[] b, int idx) {
-        int lo = (int)(value & 0xFFFFFFFFL) ;
-        int hi = (int)(value >>> 32) ;
-        setInt(hi, b, idx) ;
-        setInt(lo, b, idx + 4) ;
+        int lo = (int)(value & 0xFFFFFFFFL);
+        int hi = (int)(value >>> 32);
+        setInt(hi, b, idx);
+        setInt(lo, b, idx + 4);
     }
 
     /** int to byte array */
     public static byte[] packInt(int val) {
-        byte[] valBytes = new byte[Integer.SIZE / Byte.SIZE] ;
-        setInt(val, valBytes, 0) ;
-        return valBytes ;
+        byte[] valBytes = new byte[Integer.SIZE / Byte.SIZE];
+        setInt(val, valBytes, 0);
+        return valBytes;
     }
 
     /** long to byte array */
     public static byte[] packLong(long val) {
-        byte[] valBytes = new byte[Long.SIZE / Byte.SIZE] ;
-        setLong(val, valBytes, 0) ;
-        return valBytes ;
+        byte[] valBytes = new byte[Long.SIZE / Byte.SIZE];
+        setLong(val, valBytes, 0);
+        return valBytes;
     }
 
     /** Make an int order of args -- high to low */
@@ -221,7 +221,7 @@ public class Bytes
         return ((b3 & 0xFF) << 24) |
                ((b2 & 0xFF) << 16) |
                ((b1 & 0xFF) <<  8) |
-               ((b0 & 0xFF) <<  0) ;
+               ((b0 & 0xFF) <<  0);
     }
 
     /** Make a long order of args -- high to low */
@@ -233,7 +233,7 @@ public class Bytes
                ((b3 & 0xFFL) << 24) |
                ((b2 & 0xFFL) << 16) |
                ((b1 & 0xFFL) <<  8) |
-               ((b0 & 0xFFL) <<  0) ;
+               ((b0 & 0xFFL) <<  0);
     }
 
     private static byte byte3(int x) { return (byte)(x >> 24); }
@@ -243,79 +243,65 @@ public class Bytes
 
     /** Return the UTF-8 bytes for a string */
     public static byte[] string2bytes(String x) {
-        try {
-            return x.getBytes("UTF-8") ;
-        }
-        catch (UnsupportedEncodingException ex) {
-            // Impossible.
-            ex.printStackTrace() ;
-            return null ;
-        }
+        return x.getBytes(StandardCharsets.UTF_8);
     }
 
     /** Return the string for some UTF-8 bytes */
     public static String bytes2string(byte[] x) {
-        try {
-            return new String(x, "UTF-8") ;
-        }
-        catch (UnsupportedEncodingException ex) {
-            // Impossible-ish.
-            ex.printStackTrace() ;
-            return null ;
-        }
+        return new String(x, StandardCharsets.UTF_8);
     }
 
     /** Encode a string into a ByteBuffer : on return position is the end of the encoding */
     public static int toByteBuffer(CharSequence s, ByteBuffer bb) {
-        //BlockUTF8.fromChars(s, bb) ;
+        //BlockUTF8.fromChars(s, bb);
         CharsetEncoder enc = Chars.allocEncoder();
-        int x = toByteBuffer(s, bb, enc) ;
-        Chars.deallocEncoder(enc) ;
-        return x ;
+        int x = toByteBuffer(s, bb, enc);
+        Chars.deallocEncoder(enc);
+        return x;
     }
 
     /** Encode a string into a ByteBuffer : on return position is the end of the encoding */
     public static int toByteBuffer(CharSequence s, ByteBuffer bb, CharsetEncoder enc) {
-        int start = bb.position() ;
+        int start = bb.position();
         CharBuffer cBuff = CharBuffer.wrap(s);
         enc.reset();
-        CoderResult r = enc.encode(cBuff, bb, true) ;
+        CoderResult r = enc.encode(cBuff, bb, true);
         if ( r.isOverflow() )
-            throw new InternalErrorException("Bytes.toByteBuffer: encode overflow (1)") ;
-        r = enc.flush(bb) ;
+            throw new InternalErrorException("Bytes.toByteBuffer: encode overflow (1)");
+        r = enc.flush(bb);
         if ( r.isOverflow() )
-            throw new InternalErrorException("Bytes.toByteBuffer: encode overflow (2)") ;
+            throw new InternalErrorException("Bytes.toByteBuffer: encode overflow (2)");
 //        if ( r.isUnderflow() )
-//            throw new InternalErrorException("Bytes.toByteBuffer: encode underflow") ;
-        int finish = bb.position() ;
-        return finish-start ;
+//            throw new InternalErrorException("Bytes.toByteBuffer: encode underflow");
+        int finish = bb.position();
+        return finish-start;
     }
 
     /** Decode a string into a ByteBuffer */
     public static String fromByteBuffer(ByteBuffer bb)
     {
-        //return BlockUTF8.toString(bb) ;
+        //return BlockUTF8.toString(bb);
         // To be removed (Dec 2011)
         CharsetDecoder dec = Chars.allocDecoder();
-        String x = fromByteBuffer(bb, dec) ;
-        Chars.deallocDecoder(dec) ;
-        return x ;
+        String x = fromByteBuffer(bb, dec);
+        Chars.deallocDecoder(dec);
+        return x;
     }
 
     /** Decode a string into a ByteBuffer */
     public static String fromByteBuffer(ByteBuffer bb, CharsetDecoder dec) {
         if ( bb.remaining() == 0 )
-            return "" ;
-        dec.reset() ;
-        CharBuffer cBuff = CharBuffer.allocate(bb.remaining()) ;
-        CoderResult r = dec.decode(bb, cBuff, true) ;
+            return "";
+        dec.reset();
+        CharBuffer cBuff = CharBuffer.allocate(bb.remaining());
+        CoderResult r = dec.decode(bb, cBuff, true);
         if ( r.isOverflow() )
-            throw new InternalErrorException("fromByteBuffer: decode overflow (1)") ;
-        r = dec.flush(cBuff) ;
+            throw new InternalErrorException("fromByteBuffer: decode overflow (1)");
+        r = dec.flush(cBuff);
         if ( r.isOverflow() )
-            throw new InternalErrorException("fromByteBuffer: decode overflow (2)") ;
-        cBuff.flip() ;
-        return cBuff.toString() ;
+            throw new InternalErrorException("fromByteBuffer: decode overflow (2)");
+        cBuff.flip();
+        return cBuff.toString();
     }
 
     /**
@@ -323,66 +309,66 @@ public class Bytes
      * array.
      */
     public static String asHex(byte[] bytes) {
-        return asHexUC(bytes) ;
+        return asHexUC(bytes);
     }
 
     public static String asHexUC(byte[] bytes) {
-        return asHex(bytes, 0, bytes.length, Chars.hexDigitsUC) ;
+        return asHex(bytes, 0, bytes.length, Chars.hexDigitsUC);
     }
 
     public static String asHexLC(byte[] bytes) {
-        return asHex(bytes, 0, bytes.length, Chars.hexDigitsLC) ;
+        return asHex(bytes, 0, bytes.length, Chars.hexDigitsLC);
     }
 
     public static String asHex(byte[] bytes, int start, int finish, char[] hexDigits) {
-        StringBuilder sw = new StringBuilder(bytes.length*2) ;
-        for ( int i = start ; i < finish ; i++ ) {
-            byte b = bytes[i] ;
-            int hi = (b & 0xF0) >> 4 ;
-            int lo = b & 0xF ;
-            // if ( i != start ) sw.append(' ') ;
-            sw.append(hexDigits[hi]) ;
-            sw.append(hexDigits[lo]) ;
+        StringBuilder sw = new StringBuilder(bytes.length*2);
+        for ( int i = start; i < finish; i++ ) {
+            byte b = bytes[i];
+            int hi = (b & 0xF0) >> 4;
+            int lo = b & 0xF;
+            // if ( i != start ) sw.append(' ');
+            sw.append(hexDigits[hi]);
+            sw.append(hexDigits[lo]);
         }
-        return sw.toString() ;
+        return sw.toString();
     }
 
     /** Return a hex string representing the byte. */
     public static String asHex(byte b)
     {
-        return asHexUC(b) ;
+        return asHexUC(b);
     }
 
     public static String asHexUC(byte b)
     {
-        return asHex(b, Chars.hexDigitsUC) ;
+        return asHex(b, Chars.hexDigitsUC);
     }
 
     public static String asHexLC(byte b)
     {
-        return asHex(b, Chars.hexDigitsLC) ;
+        return asHex(b, Chars.hexDigitsLC);
     }
 
     private static String asHex(byte b, char[] hexDigits)
     {
-        int hi = (b & 0xF0) >> 4 ;
-        int lo = b & 0xF ;
-        char[] chars = new char[2] ;
-        chars[0] = hexDigits[hi] ;
-        chars[1] = hexDigits[lo] ;
-        return new String(chars) ;
+        int hi = (b & 0xF0) >> 4;
+        int lo = b & 0xF;
+        char[] chars = new char[2];
+        chars[0] = hexDigits[hi];
+        chars[1] = hexDigits[lo];
+        return new String(chars);
     }
 
 
     public static int hexCharToInt(char c)
     {
         if ( '0' <= c && c <= '9' )
-            return c-'0' ;
+            return c-'0';
         else if ( 'A' <= c && c <= 'F' )
-            return c-'A'+10 ;
+            return c-'A'+10;
         else if ( 'a' <= c && c <= 'f' )
-            return c-'a'+10 ;
+            return c-'a'+10;
         else
-            throw new IllegalArgumentException("Bad index char : "+c) ;
+            throw new IllegalArgumentException("Bad index char : "+c);
     }
 }
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/PropertiesSorted.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/PropertiesSorted.java
index c261754edc..135b11ab92 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/lib/PropertiesSorted.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/PropertiesSorted.java
@@ -18,39 +18,34 @@
 
 package org.apache.jena.atlas.lib;
 
-import java.util.ArrayList ;
-import java.util.Collections ;
-import java.util.Comparator ;
-import java.util.Enumeration ;
-import java.util.Iterator ;
-import java.util.List ;
-import java.util.Properties ;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Properties;
 
 /** Sorted output */
-public class PropertiesSorted extends Properties
-{
-    private Comparator<String> comparator = null ;
+public class PropertiesSorted extends Properties {
+    private Comparator<String> comparator = null;
 
-    //public SortedProperties() { super() ; }
+    // public SortedProperties() { super() ; }
 
-    public PropertiesSorted(Comparator<String> comparator)
-    {
-        super() ;
-        this.comparator = comparator ;
+    public PropertiesSorted(Comparator<String> comparator) {
+        super();
+        this.comparator = comparator;
     }
 
-
     @SuppressWarnings({"unchecked", "rawtypes"})
     @Override
-    public synchronized Enumeration<Object> keys()
-    {
-        // Old world - enumeration, untyped. But we know they are strings (Propetries hides non-strings in get)
-        Enumeration<Object> keys = super.keys() ;
-        List<String> keys2 = new ArrayList<>(super.size()) ;
+    public synchronized Enumeration<Object> keys() {
+        // Old world - enumeration.
+        Enumeration<Object> keys = super.keys();
+        List<String> keys2 = new ArrayList<>(super.size());
 
-        for( ; keys.hasMoreElements() ; )
-        {
-            Object obj = keys.nextElement() ;
+        for ( ; keys.hasMoreElements() ; ) {
+            Object obj = keys.nextElement();
             if ( obj instanceof String str )
                 keys2.add(str);
         }
@@ -58,29 +53,25 @@ public class PropertiesSorted extends Properties
         if ( comparator == null )
             Collections.sort(keys2);
         else
-            Collections.sort(keys2, comparator) ;
+            Collections.sort(keys2, comparator);
 
-        return new IteratorToEnumeration(keys2.listIterator()) ;
+        return new IteratorToEnumeration(keys2.listIterator());
     }
 
-    static class IteratorToEnumeration<T>  implements Enumeration<T>
-    {
-        private Iterator<T> iterator ;
+    static class IteratorToEnumeration<T> implements Enumeration<T> {
+        private Iterator<T> iterator;
 
-        public IteratorToEnumeration(Iterator<T> iterator)
-        {
-            this.iterator = iterator ;
+        public IteratorToEnumeration(Iterator<T> iterator) {
+            this.iterator = iterator;
         }
 
         @Override
-        public boolean hasMoreElements()
-        {
-            return iterator.hasNext() ;
+        public boolean hasMoreElements() {
+            return iterator.hasNext();
         }
 
         @Override
-        public T nextElement()
-        {
+        public T nextElement() {
             return iterator.next();
         }
     }
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/logging/LogCtlJUL.java b/jena-base/src/main/java/org/apache/jena/atlas/logging/LogCtlJUL.java
index 495b6bbe2c..56611cd31c 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/logging/LogCtlJUL.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/logging/LogCtlJUL.java
@@ -22,6 +22,7 @@ import java.io.BufferedInputStream;
 import java.io.ByteArrayInputStream;
 import java.io.FileInputStream;
 import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.logging.Level;
@@ -105,7 +106,7 @@ public class LogCtlJUL {
 
     public static void setJavaLoggingDft() {
         try {
-            InputStream details = new ByteArrayInputStream(defaultProperties.getBytes("UTF-8"));
+            InputStream details = new ByteArrayInputStream(defaultProperties.getBytes(StandardCharsets.UTF_8));
             readJavaLoggingConfiguration(details);
         } catch (Exception ex) {
             throw new AtlasException(ex);
diff --git a/jena-base/src/test/java/org/apache/jena/atlas/io/AbstractTestPeekInputStream.java b/jena-base/src/test/java/org/apache/jena/atlas/io/AbstractTestPeekInputStream.java
index 132de54237..f27f9a9aa4 100644
--- a/jena-base/src/test/java/org/apache/jena/atlas/io/AbstractTestPeekInputStream.java
+++ b/jena-base/src/test/java/org/apache/jena/atlas/io/AbstractTestPeekInputStream.java
@@ -21,223 +21,214 @@ package org.apache.jena.atlas.io;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
-import org.junit.Test ;
-
-public abstract class AbstractTestPeekInputStream
-{
-    static int INIT_LINE = PeekInputStream.INIT_LINE ;
-    static int INIT_COL = PeekInputStream.INIT_COL ;
-    
-    abstract PeekInputStream make(String contents, int size) ;
-    
-    @Test public void read0()
-    {
-        assertEquals("Init line", 1, INIT_LINE) ;
-        assertEquals("Init col", 1, INIT_COL) ;
-    }
-    
-    @Test public void read1()
-    {
-        PeekInputStream in = make("") ;
-        checkLineCol(in, INIT_LINE, INIT_COL) ;
-        
-        int x = in.peekByte() ;
-        assertEquals(-1, x) ;
-        x = in.readByte() ;
-        assertEquals(-1, x) ;
-        x = in.readByte() ;
-        assertEquals(-1, x) ;
-    }
-    
-    @Test public void read2()
-    {
-        // Assumes we start at (1,1) 
-        PeekInputStream in = make("a") ;
-        checkLineCol(in, INIT_LINE, INIT_COL) ;
-        
-        int x = in.peekByte() ;
-        assertEquals('a', x) ;
-        checkLineCol(in, INIT_LINE, INIT_COL) ;
-        
-        x = in.readByte() ;
-        checkLineCol(in, INIT_LINE, INIT_COL+1) ;
-        assertEquals('a', x) ;
-        
-        x = in.peekByte() ;
-        assertEquals(-1, x) ;
-        
-        x = in.readByte() ;
-        assertEquals(-1, x) ;
-    }
-
-    @Test public void read3()
-    {
-        String c = "abcde" ;
-        PeekInputStream in = make(c) ;
-        
-        for ( int i = 0 ; i < c.length(); i++ )
-        {
-            checkLineCol(in, INIT_LINE, i+INIT_COL) ;
-            assertEquals(i, in.getPosition()) ;
-            assertEquals(c.charAt(i), in.readByte()) ;
+import org.junit.Test;
+
+public abstract class AbstractTestPeekInputStream {
+    static int INIT_LINE = PeekInputStream.INIT_LINE;
+    static int INIT_COL = PeekInputStream.INIT_COL;
+
+    abstract PeekInputStream make(String contents, int size);
+
+    @Test
+    public void read0() {
+        assertEquals("Init line", 1, INIT_LINE);
+        assertEquals("Init col", 1, INIT_COL);
+    }
+
+    @Test
+    public void read1() {
+        PeekInputStream in = make("");
+        checkLineCol(in, INIT_LINE, INIT_COL);
+
+        int x = in.peekByte();
+        assertEquals(-1, x);
+        x = in.readByte();
+        assertEquals(-1, x);
+        x = in.readByte();
+        assertEquals(-1, x);
+    }
+
+    @Test
+    public void read2() {
+        // Assumes we start at (1,1)
+        PeekInputStream in = make("a");
+        checkLineCol(in, INIT_LINE, INIT_COL);
+
+        int x = in.peekByte();
+        assertEquals('a', x);
+        checkLineCol(in, INIT_LINE, INIT_COL);
+
+        x = in.readByte();
+        checkLineCol(in, INIT_LINE, INIT_COL + 1);
+        assertEquals('a', x);
+
+        x = in.peekByte();
+        assertEquals(-1, x);
+
+        x = in.readByte();
+        assertEquals(-1, x);
+    }
+
+    @Test
+    public void read3() {
+        String c = "abcde";
+        PeekInputStream in = make(c);
+
+        for ( int i = 0 ; i < c.length() ; i++ ) {
+            checkLineCol(in, INIT_LINE, i + INIT_COL);
+            assertEquals(i, in.getPosition());
+            assertEquals(c.charAt(i), in.readByte());
         }
-        assertTrue(in.eof()) ;
+        assertTrue(in.eof());
     }
 
-    @Test public void read4()
-    {
-        position("abcde") ;
+    @Test
+    public void read4() {
+        position("abcde");
     }
 
-    @Test public void read5()
-    {
-        position("abc\nde") ;
+    @Test
+    public void read5() {
+        position("abc\nde");
     }
 
-    @Test public void read6()
-    {
-        position("abc\nde\n") ;
+    @Test
+    public void read6() {
+        position("abc\nde\n");
     }
-    
-    @Test public void read7()
-    {
-        position("") ;
+
+    @Test
+    public void read7() {
+        position("");
     }
 
-    @Test public void read8()
-    {
-        position("x") ;
+    @Test
+    public void read8() {
+        position("x");
     }
 
+    @Test
+    public void read9() {
+        PeekInputStream in = make("a\nb\n");
+        checkLineCol(in, INIT_LINE, INIT_COL);
+        int x = in.peekByte();
+        assertEquals('a', x);
+        checkLineCol(in, INIT_LINE, INIT_COL);
 
-    @Test public void read9()
-    {
-        PeekInputStream in = make("a\nb\n") ;
-        checkLineCol(in, INIT_LINE, INIT_COL) ;
-        int x = in.peekByte() ;
-        assertEquals('a', x) ;
-        checkLineCol(in, INIT_LINE, INIT_COL) ;
-        
-        x = in.readByte() ;
-        assertEquals('a', x) ;
-        checkLineCol(in, INIT_LINE, INIT_COL+1) ;
+        x = in.readByte();
+        assertEquals('a', x);
+        checkLineCol(in, INIT_LINE, INIT_COL + 1);
 
-        x = in.readByte() ;
-        assertEquals('\n', x) ;
-        checkLineCol(in, INIT_LINE+1, INIT_COL) ;
+        x = in.readByte();
+        assertEquals('\n', x);
+        checkLineCol(in, INIT_LINE + 1, INIT_COL);
     }
-    
-    @Test public void unread1()
-    {
-        PeekInputStream in = make("abc") ;
-        assertEquals('a', in.peekByte()) ;
-        in.pushbackByte('Z') ;
-        assertEquals('Z', in.peekByte()) ;
-        contains(in, "Zabc") ;
+
+    @Test
+    public void unread1() {
+        PeekInputStream in = make("abc");
+        assertEquals('a', in.peekByte());
+        in.pushbackByte('Z');
+        assertEquals('Z', in.peekByte());
+        contains(in, "Zabc");
     }
 
-    @Test public void unread2()
-    {
-        PeekInputStream in = make("abc") ;
-        checkLineCol(in, INIT_LINE, INIT_COL) ;
-        /* int ch = */ in.readByte() ;
+    @Test
+    public void unread2() {
+        PeekInputStream in = make("abc");
+        checkLineCol(in, INIT_LINE, INIT_COL);
+        /* int ch = */ in.readByte();
         // Pushback does not move line/col backwards.
-        checkLineCol(in, INIT_LINE, INIT_COL+1) ;
-        assertEquals('b', in.peekByte()) ;
-        checkLineCol(in, INIT_LINE, INIT_COL+1) ;
-        in.pushbackByte('a') ;
-        checkLineCol(in, INIT_LINE, INIT_COL+1) ;
-        contains(in, "abc") ;
-    }
-    
-    @Test public void unread3()
-    {
-        PeekInputStream in = make("") ;
-        /* int ch = */ in.readByte() ;
-        assertEquals(-1, in.peekByte()) ;
-        in.pushbackByte('a') ;
-        contains(in, "a") ;
-    }
-
-    @Test public void unread4()
-    {
-        PeekInputStream in = make("") ;
-        /* int ch = */ in.readByte() ;
-        assertEquals(-1, in.peekByte()) ;
-        in.pushbackByte('0') ;
-        in.pushbackByte('1') ;
-        in.pushbackByte('2') ;
-        in.pushbackByte('3') ;
-        contains(in, "3210") ;   // Backwards!
-    }
-
-    @Test public void unread5()
-    {
-        PeekInputStream in = make("") ;
-        long lineNum = in.getLineNum() ;
-        long colNum = in.getColNum() ;
-        
-        checkLineCol(in, lineNum, colNum) ;
-        
-        in.pushbackByte('0') ;
-        checkLineCol(in, lineNum, colNum) ;  // Unmoved.
-        in.pushbackByte('1') ;
-        checkLineCol(in, lineNum, colNum) ;
-        assertEquals('1', in.readByte()) ;
-        
-        checkLineCol(in, lineNum, colNum) ;  // Unmoved.
-        in.pushbackByte('2') ;
-        in.pushbackByte('3') ;
-        checkLineCol(in, lineNum, colNum) ;  // Unmoved.
-        assertEquals('3', in.peekByte()) ;
-        contains(in, "320") ;
-    }
-
-    private static void checkLineCol(PeekInputStream in, long lineNum, long colNum)
-    {
-        assertEquals("Line", lineNum, in.getLineNum()) ; 
-        assertEquals("Column", colNum, in.getColNum()) ;
-    }
-    
-    private void position(String contents)
-    {
-        PeekInputStream in = make(contents) ;
-        
-        int line = INIT_LINE ;
-        int col = INIT_COL ;
-        checkLineCol(in, line, col) ;
-        assertEquals(0, in.getPosition()) ;
-        
-        for ( int i = 0 ; i < contents.length(); i++ )
-        {
-            int x = in.readByte() ;
-            if ( x != -1 )
-            {
-                if ( x == '\n' )
-                {
-                    line++ ;
-                    col = INIT_COL ;
-                }
-                else
-                    col++ ;
+        checkLineCol(in, INIT_LINE, INIT_COL + 1);
+        assertEquals('b', in.peekByte());
+        checkLineCol(in, INIT_LINE, INIT_COL + 1);
+        in.pushbackByte('a');
+        checkLineCol(in, INIT_LINE, INIT_COL + 1);
+        contains(in, "abc");
+    }
+
+    @Test
+    public void unread3() {
+        PeekInputStream in = make("");
+        /* int ch = */ in.readByte();
+        assertEquals(-1, in.peekByte());
+        in.pushbackByte('a');
+        contains(in, "a");
+    }
+
+    @Test
+    public void unread4() {
+        PeekInputStream in = make("");
+        /* int ch = */ in.readByte();
+        assertEquals(-1, in.peekByte());
+        in.pushbackByte('0');
+        in.pushbackByte('1');
+        in.pushbackByte('2');
+        in.pushbackByte('3');
+        contains(in, "3210");   // Backwards!
+    }
+
+    @Test
+    public void unread5() {
+        PeekInputStream in = make("");
+        long lineNum = in.getLineNum();
+        long colNum = in.getColNum();
+
+        checkLineCol(in, lineNum, colNum);
+
+        in.pushbackByte('0');
+        checkLineCol(in, lineNum, colNum);  // Unmoved.
+        in.pushbackByte('1');
+        checkLineCol(in, lineNum, colNum);
+        assertEquals('1', in.readByte());
+
+        checkLineCol(in, lineNum, colNum);  // Unmoved.
+        in.pushbackByte('2');
+        in.pushbackByte('3');
+        checkLineCol(in, lineNum, colNum);  // Unmoved.
+        assertEquals('3', in.peekByte());
+        contains(in, "320");
+    }
+
+    private static void checkLineCol(PeekInputStream in, long lineNum, long colNum) {
+        assertEquals("Line", lineNum, in.getLineNum());
+        assertEquals("Column", colNum, in.getColNum());
+    }
+
+    private void position(String contents) {
+        PeekInputStream in = make(contents);
+
+        int line = INIT_LINE;
+        int col = INIT_COL;
+        checkLineCol(in, line, col);
+        assertEquals(0, in.getPosition());
+
+        for ( int i = 0 ; i < contents.length() ; i++ ) {
+            int x = in.readByte();
+            if ( x != -1 ) {
+                if ( x == '\n' ) {
+                    line++;
+                    col = INIT_COL;
+                } else
+                    col++;
             }
-            assertEquals(contents.charAt(i), x) ;
-            assertEquals(i+1, in.getPosition()) ;
-            checkLineCol(in, line, col) ;
+            assertEquals(contents.charAt(i), x);
+            assertEquals(i + 1, in.getPosition());
+            checkLineCol(in, line, col);
         }
-        assertTrue(in.eof()) ;
-    }
-    
-    private static void contains(PeekInputStream in, String contents)
-    {
-        for ( int i = 0 ; i < contents.length(); i++ )
-        {
-            int x = in.readByte() ;
-            assertEquals("\""+contents+"\" -- Index "+i+" Expected:'"+contents.charAt(i)+"' Got: '"+(char)x+"'", contents.charAt(i), x) ;
+        assertTrue(in.eof());
+    }
+
+    private static void contains(PeekInputStream in, String contents) {
+        for ( int i = 0 ; i < contents.length() ; i++ ) {
+            int x = in.readByte();
+            assertEquals("\"" + contents + "\" -- Index " + i + " Expected:'" + contents.charAt(i) + "' Got: '" + (char)x + "'",
+                         contents.charAt(i), x);
         }
-        assertTrue(in.eof()) ;
+        assertTrue(in.eof());
+    }
+
+    private PeekInputStream make(String contents) {
+        return make(contents, 2);
     }
-    
-    private PeekInputStream make(String contents)
-    { return make(contents, 2) ; }
 }
diff --git a/jena-base/src/test/java/org/apache/jena/atlas/io/AbstractTestPeekReader.java b/jena-base/src/test/java/org/apache/jena/atlas/io/AbstractTestPeekReader.java
index b07bad06af..39f8197cec 100644
--- a/jena-base/src/test/java/org/apache/jena/atlas/io/AbstractTestPeekReader.java
+++ b/jena-base/src/test/java/org/apache/jena/atlas/io/AbstractTestPeekReader.java
@@ -21,223 +21,214 @@ package org.apache.jena.atlas.io;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
-import org.junit.Test ;
-
-public abstract class AbstractTestPeekReader
-{
-    static int INIT_LINE = PeekReader.INIT_LINE ;
-    static int INIT_COL = PeekReader.INIT_COL ;
-    
-    abstract PeekReader make(String contents, int size) ;
-    
-    @Test public void read0()
-    {
-        assertEquals("Init line", 1, INIT_LINE) ;
-        assertEquals("Init col", 1, INIT_COL) ;
-    }
-    
-    @Test public void read1()
-    {
-        PeekReader r = make("") ;
-        checkLineCol(r, INIT_LINE, INIT_COL) ;
-        
-        int x = r.peekChar() ;
-        assertEquals(-1, x) ;
-        x = r.readChar() ;
-        assertEquals(-1, x) ;
-        x = r.readChar() ;
-        assertEquals(-1, x) ;
-    }
-    
-    @Test public void read2()
-    {
-        // Assumes we start at (1,1) 
-        PeekReader r = make("a") ;
-        checkLineCol(r, INIT_LINE, INIT_COL) ;
-        
-        int x = r.peekChar() ;
-        assertEquals('a', x) ;
-        checkLineCol(r, INIT_LINE, INIT_COL) ;
-        
-        x = r.readChar() ;
-        checkLineCol(r, INIT_LINE, INIT_COL+1) ;
-        assertEquals('a', x) ;
-        
-        x = r.peekChar() ;
-        assertEquals(-1, x) ;
-        
-        x = r.readChar() ;
-        assertEquals(-1, x) ;
-    }
-
-    @Test public void read3()
-    {
-        String c = "abcde" ;
-        PeekReader r = make(c) ;
-        
-        for ( int i = 0 ; i < c.length(); i++ )
-        {
-            checkLineCol(r, INIT_LINE, i+INIT_COL) ;
-            assertEquals(i, r.getPosition()) ;
-            assertEquals(c.charAt(i), r.readChar()) ;
+import org.junit.Test;
+
+public abstract class AbstractTestPeekReader {
+    static int INIT_LINE = PeekReader.INIT_LINE;
+    static int INIT_COL = PeekReader.INIT_COL;
+
+    abstract PeekReader make(String contents, int size);
+
+    @Test
+    public void read0() {
+        assertEquals("Init line", 1, INIT_LINE);
+        assertEquals("Init col", 1, INIT_COL);
+    }
+
+    @Test
+    public void read1() {
+        PeekReader r = make("");
+        checkLineCol(r, INIT_LINE, INIT_COL);
+
+        int x = r.peekChar();
+        assertEquals(-1, x);
+        x = r.readChar();
+        assertEquals(-1, x);
+        x = r.readChar();
+        assertEquals(-1, x);
+    }
+
+    @Test
+    public void read2() {
+        // Assumes we start at (1,1)
+        PeekReader r = make("a");
+        checkLineCol(r, INIT_LINE, INIT_COL);
+
+        int x = r.peekChar();
+        assertEquals('a', x);
+        checkLineCol(r, INIT_LINE, INIT_COL);
+
+        x = r.readChar();
+        checkLineCol(r, INIT_LINE, INIT_COL + 1);
+        assertEquals('a', x);
+
+        x = r.peekChar();
+        assertEquals(-1, x);
+
+        x = r.readChar();
+        assertEquals(-1, x);
+    }
+
+    @Test
+    public void read3() {
+        String c = "abcde";
+        PeekReader r = make(c);
+
+        for ( int i = 0 ; i < c.length() ; i++ ) {
+            checkLineCol(r, INIT_LINE, i + INIT_COL);
+            assertEquals(i, r.getPosition());
+            assertEquals(c.charAt(i), r.readChar());
         }
-        assertTrue(r.eof()) ;
+        assertTrue(r.eof());
     }
 
-    @Test public void read4()
-    {
-        position("abcde") ;
+    @Test
+    public void read4() {
+        position("abcde");
     }
 
-    @Test public void read5()
-    {
-        position("abc\nde") ;
+    @Test
+    public void read5() {
+        position("abc\nde");
     }
 
-    @Test public void read6()
-    {
-        position("abc\nde\n") ;
+    @Test
+    public void read6() {
+        position("abc\nde\n");
     }
-    
-    @Test public void read7()
-    {
-        position("") ;
+
+    @Test
+    public void read7() {
+        position("");
     }
 
-    @Test public void read8()
-    {
-        position("x") ;
+    @Test
+    public void read8() {
+        position("x");
     }
 
+    @Test
+    public void read9() {
+        PeekReader r = make("a\nb\n");
+        checkLineCol(r, INIT_LINE, INIT_COL);
+        int x = r.peekChar();
+        assertEquals('a', x);
+        checkLineCol(r, INIT_LINE, INIT_COL);
 
-    @Test public void read9()
-    {
-        PeekReader r = make("a\nb\n") ;
-        checkLineCol(r, INIT_LINE, INIT_COL) ;
-        int x = r.peekChar() ;
-        assertEquals('a', x) ;
-        checkLineCol(r, INIT_LINE, INIT_COL) ;
-        
-        x = r.readChar() ;
-        assertEquals('a', x) ;
-        checkLineCol(r, INIT_LINE, INIT_COL+1) ;
+        x = r.readChar();
+        assertEquals('a', x);
+        checkLineCol(r, INIT_LINE, INIT_COL + 1);
 
-        x = r.readChar() ;
-        assertEquals('\n', x) ;
-        checkLineCol(r, INIT_LINE+1, INIT_COL) ;
+        x = r.readChar();
+        assertEquals('\n', x);
+        checkLineCol(r, INIT_LINE + 1, INIT_COL);
     }
-    
-    @Test public void unread1()
-    {
-        PeekReader r = make("abc") ;
-        assertEquals('a', r.peekChar()) ;
-        r.pushbackChar('Z') ;
-        assertEquals('Z', r.peekChar()) ;
-        contains(r, "Zabc") ;
+
+    @Test
+    public void unread1() {
+        PeekReader r = make("abc");
+        assertEquals('a', r.peekChar());
+        r.pushbackChar('Z');
+        assertEquals('Z', r.peekChar());
+        contains(r, "Zabc");
     }
 
-    @Test public void unread2()
-    {
-        PeekReader r = make("abc") ;
-        checkLineCol(r, INIT_LINE, INIT_COL) ;
-        r.readChar() ;
+    @Test
+    public void unread2() {
+        PeekReader r = make("abc");
+        checkLineCol(r, INIT_LINE, INIT_COL);
+        r.readChar();
         // Pushback does not move line/col backwards.
-        checkLineCol(r, INIT_LINE, INIT_COL+1) ;
-        assertEquals('b', r.peekChar()) ;
-        checkLineCol(r, INIT_LINE, INIT_COL+1) ;
-        r.pushbackChar('a') ;
-        checkLineCol(r, INIT_LINE, INIT_COL+1) ;
-        contains(r, "abc") ;
-    }
-    
-    @Test public void unread3()
-    {
-        PeekReader r = make("") ;
-        r.readChar() ;
-        assertEquals(-1, r.peekChar()) ;
-        r.pushbackChar('a') ;
-        contains(r, "a") ;
-    }
-
-    @Test public void unread4()
-    {
-        PeekReader r = make("") ;
-        r.readChar() ;
-        assertEquals(-1, r.peekChar()) ;
-        r.pushbackChar('0') ;
-        r.pushbackChar('1') ;
-        r.pushbackChar('2') ;
-        r.pushbackChar('3') ;
-        contains(r, "3210") ;   // Backwards!
-    }
-
-    @Test public void unread5()
-    {
-        PeekReader r = make("") ;
-        long lineNum = r.getLineNum() ;
-        long colNum = r.getColNum() ;
-        
-        checkLineCol(r, lineNum, colNum) ;
-        
-        r.pushbackChar('0') ;
-        checkLineCol(r, lineNum, colNum) ;  // Unmoved.
-        r.pushbackChar('1') ;
-        checkLineCol(r, lineNum, colNum) ;
-        assertEquals('1', r.readChar()) ;
-        
-        checkLineCol(r, lineNum, colNum) ;  // Unmoved.
-        r.pushbackChar('2') ;
-        r.pushbackChar('3') ;
-        checkLineCol(r, lineNum, colNum) ;  // Unmoved.
-        assertEquals('3', r.peekChar()) ;
-        contains(r, "320") ;
-    }
-
-    private static void checkLineCol(PeekReader r, long lineNum, long colNum)
-    {
-        assertEquals("Line", lineNum, r.getLineNum()) ; 
-        assertEquals("Column", colNum, r.getColNum()) ;
-    }
-    
-    private void position(String contents)
-    {
-        PeekReader r = make(contents) ;
-        
-        int line = INIT_LINE ;
-        int col = INIT_COL ;
-        checkLineCol(r, line, col) ;
-        assertEquals(0, r.getPosition()) ;
-        
-        for ( int i = 0 ; i < contents.length(); i++ )
-        {
-            int x = r.readChar() ;
-            if ( x != -1 )
-            {
-                if ( x == '\n' )
-                {
-                    line++ ;
-                    col = INIT_COL ;
-                }
-                else
-                    col++ ;
+        checkLineCol(r, INIT_LINE, INIT_COL + 1);
+        assertEquals('b', r.peekChar());
+        checkLineCol(r, INIT_LINE, INIT_COL + 1);
+        r.pushbackChar('a');
+        checkLineCol(r, INIT_LINE, INIT_COL + 1);
+        contains(r, "abc");
+    }
+
+    @Test
+    public void unread3() {
+        PeekReader r = make("");
+        r.readChar();
+        assertEquals(-1, r.peekChar());
+        r.pushbackChar('a');
+        contains(r, "a");
+    }
+
+    @Test
+    public void unread4() {
+        PeekReader r = make("");
+        r.readChar();
+        assertEquals(-1, r.peekChar());
+        r.pushbackChar('0');
+        r.pushbackChar('1');
+        r.pushbackChar('2');
+        r.pushbackChar('3');
+        contains(r, "3210");   // Backwards!
+    }
+
+    @Test
+    public void unread5() {
+        PeekReader r = make("");
+        long lineNum = r.getLineNum();
+        long colNum = r.getColNum();
+
+        checkLineCol(r, lineNum, colNum);
+
+        r.pushbackChar('0');
+        checkLineCol(r, lineNum, colNum);  // Unmoved.
+        r.pushbackChar('1');
+        checkLineCol(r, lineNum, colNum);
+        assertEquals('1', r.readChar());
+
+        checkLineCol(r, lineNum, colNum);  // Unmoved.
+        r.pushbackChar('2');
+        r.pushbackChar('3');
+        checkLineCol(r, lineNum, colNum);  // Unmoved.
+        assertEquals('3', r.peekChar());
+        contains(r, "320");
+    }
+
+    private static void checkLineCol(PeekReader r, long lineNum, long colNum) {
+        assertEquals("Line", lineNum, r.getLineNum());
+        assertEquals("Column", colNum, r.getColNum());
+    }
+
+    private void position(String contents) {
+        PeekReader r = make(contents);
+
+        int line = INIT_LINE;
+        int col = INIT_COL;
+        checkLineCol(r, line, col);
+        assertEquals(0, r.getPosition());
+
+        for ( int i = 0 ; i < contents.length() ; i++ ) {
+            int x = r.readChar();
+            if ( x != -1 ) {
+                if ( x == '\n' ) {
+                    line++;
+                    col = INIT_COL;
+                } else
+                    col++;
             }
-            assertEquals(contents.charAt(i), x) ;
-            assertEquals(i+1, r.getPosition()) ;
-            checkLineCol(r, line, col) ;
+            assertEquals(contents.charAt(i), x);
+            assertEquals(i + 1, r.getPosition());
+            checkLineCol(r, line, col);
         }
-        assertTrue(r.eof()) ;
-    }
-    
-    private static void contains(PeekReader r, String contents)
-    {
-        for ( int i = 0 ; i < contents.length(); i++ )
-        {
-            int x = r.readChar() ;
-            assertEquals("\""+contents+"\" -- Index "+i+" Expected:'"+contents.charAt(i)+"' Got: '"+(char)x+"'", contents.charAt(i), x) ;
+        assertTrue(r.eof());
+    }
+
+    private static void contains(PeekReader r, String contents) {
+        for ( int i = 0 ; i < contents.length() ; i++ ) {
+            int x = r.readChar();
+            assertEquals("\"" + contents + "\" -- Index " + i + " Expected:'" + contents.charAt(i) + "' Got: '" + (char)x + "'",
+                         contents.charAt(i), x);
         }
-        assertTrue(r.eof()) ;
+        assertTrue(r.eof());
+    }
+
+    private PeekReader make(String contents) {
+        return make(contents, 2);
     }
-    
-    private PeekReader make(String contents)
-    { return make(contents, 2) ; }
 }
diff --git a/jena-base/src/test/java/org/apache/jena/atlas/io/TestBufferingWriter.java b/jena-base/src/test/java/org/apache/jena/atlas/io/TestBufferingWriter.java
index ba26f6a7f4..d4ccdf9603 100644
--- a/jena-base/src/test/java/org/apache/jena/atlas/io/TestBufferingWriter.java
+++ b/jena-base/src/test/java/org/apache/jena/atlas/io/TestBufferingWriter.java
@@ -16,90 +16,90 @@
  * limitations under the License.
  */
 
-package org.apache.jena.atlas.io ;
+package org.apache.jena.atlas.io;
 
 import static org.junit.Assert.assertEquals;
 
-import java.io.StringWriter ;
+import java.io.StringWriter;
 
-import org.junit.Test ;
+import org.junit.Test;
 
 public class TestBufferingWriter {
-    StringWriter    sw = null ;
-    BufferingWriter w  = null ;
+    StringWriter sw = null;
+    BufferingWriter w = null;
 
     public void create(int size, int blobSize) {
-        sw = new StringWriter() ;
-        w = new BufferingWriter(sw, size, blobSize) ;
+        sw = new StringWriter();
+        w = new BufferingWriter(sw, size, blobSize);
     }
 
     public String string() {
-        return sw.toString() ;
+        return sw.toString();
     }
 
     @Test
     public void write_01() {
-        create(10, 5) ;
-        w.output("x") ;
-        w.flush() ;
-        String x = string() ;
-        assertEquals("x", x) ;
+        create(10, 5);
+        w.output("x");
+        w.flush();
+        String x = string();
+        assertEquals("x", x);
     }
 
     @Test
     public void write_02() {
-        create(10, 5) ;
-        w.output("foofoo") ; // Large object
-        w.flush() ;
-        String x = string() ;
-        assertEquals("foofoo", x) ;
+        create(10, 5);
+        w.output("foofoo"); // Large object
+        w.flush();
+        String x = string();
+        assertEquals("foofoo", x);
     }
 
     @Test
     public void write_03() {
-        create(10, 8) ;
-        w.output("a") ;
-        w.output("b") ;
-        w.output("c") ;
-        w.flush() ;
-        String x = string() ;
-        assertEquals("abc", x) ;
+        create(10, 8);
+        w.output("a");
+        w.output("b");
+        w.output("c");
+        w.flush();
+        String x = string();
+        assertEquals("abc", x);
     }
 
     @Test
     public void write_04() {
-        create(10, 8) ;
-        w.output("abcdefghijklmnopqrstuvwxyz") ;
-        w.output("XYZ") ;
-        w.flush() ;
-        String x = string() ;
-        assertEquals("abcdefghijklmnopqrstuvwxyzXYZ", x) ;
+        create(10, 8);
+        w.output("abcdefghijklmnopqrstuvwxyz");
+        w.output("XYZ");
+        w.flush();
+        String x = string();
+        assertEquals("abcdefghijklmnopqrstuvwxyzXYZ", x);
     }
 
     @Test
     public void write_05() {
-        create(10, 8) ;
-        w.output("") ;
-        w.flush() ;
-        String x = string() ;
-        assertEquals("", x) ;
+        create(10, 8);
+        w.output("");
+        w.flush();
+        String x = string();
+        assertEquals("", x);
     }
 
     @Test
     public void write_06() {
         // Test closing the stream without flushing (the flush should be done
         // implicitly)
-        create(100, 50) ;
-        w.output("test") ;
-        w.close() ;
-        String x = string() ;
-        assertEquals("test", x) ;
+        create(100, 50);
+        w.output("test");
+        w.close();
+        String x = string();
+        assertEquals("test", x);
     }
 
     @Test // JENA-19219
     public void write_07() {
         create(8194, 4098);
-        for (int i = 0; i < 8194;i++) {
+        for ( int i = 0 ; i < 8194 ; i++ ) {
             w.output('a');
         }
         w.close();
@@ -111,8 +111,8 @@ public class TestBufferingWriter {
     public void write_08() {
         create(8192, 4096);
         char[] chars = new char[8192];
-        //define enough to make it a 'large blob'
-        for(int i = 0; i < 5000; i++){
+        // define enough to make it a 'large blob'
+        for ( int i = 0 ; i < 5000 ; i++ ) {
             chars[i] = '1';
         }
         w.output(chars, 0, 5000);
diff --git a/jena-base/src/test/java/org/apache/jena/atlas/io/TestIndentedWriter.java b/jena-base/src/test/java/org/apache/jena/atlas/io/TestIndentedWriter.java
index a29c0faad6..669700d3ef 100644
--- a/jena-base/src/test/java/org/apache/jena/atlas/io/TestIndentedWriter.java
+++ b/jena-base/src/test/java/org/apache/jena/atlas/io/TestIndentedWriter.java
@@ -16,83 +16,82 @@
  * limitations under the License.
  */
 
-package org.apache.jena.atlas.io ;
+package org.apache.jena.atlas.io;
 
-import org.junit.Test ;
-import static org.junit.Assert.* ;
+import org.junit.Test;
+import static org.junit.Assert.*;
 
 public class TestIndentedWriter {
-    
+
     @Test
     public void write01() {
         try (IndentedLineBuffer b = new IndentedLineBuffer()) {
-            b.print("hell") ;
-            b.print("o") ;
-            assertEquals("hello", b.asString()) ;
+            b.print("hell");
+            b.print("o");
+            assertEquals("hello", b.asString());
         }
     }
 
     @Test
     public void write02() {
         try (IndentedLineBuffer b = new IndentedLineBuffer()) {
-            b.incIndent() ;
-            b.print("hell") ;
-            b.print("o") ;
-            b.decIndent() ;
-            assertEquals("  hello", b.asString()) ;
+            b.incIndent();
+            b.print("hell");
+            b.print("o");
+            b.decIndent();
+            assertEquals("  hello", b.asString());
         }
     }
 
     @Test
     public void write03() {
         try (IndentedLineBuffer b = new IndentedLineBuffer()) {
-            b.incIndent() ;
-            b.printf("0x%04X", 1) ;
-            b.println() ;
-            b.print("XX") ;
-            b.decIndent() ;
-            assertEquals("  0x0001\n  XX", b.asString()) ;
+            b.incIndent();
+            b.printf("0x%04X", 1);
+            b.println();
+            b.print("XX");
+            b.decIndent();
+            assertEquals("  0x0001\n  XX", b.asString());
         }
     }
-    
+
     @Test
     public void write04() {
         try (IndentedLineBuffer b = new IndentedLineBuffer()) {
             b.setLineNumbers(true);
             b.setNumberWidth(5);
-            b.println("ABCD") ;
-            b.print("XYZ") ;
-            assertEquals("    1 ABCD\n    2 XYZ", b.asString()) ;
+            b.println("ABCD");
+            b.print("XYZ");
+            assertEquals("    1 ABCD\n    2 XYZ", b.asString());
         }
     }
-    
+
     @Test
     public void write05() {
         try (IndentedLineBuffer b = new IndentedLineBuffer()) {
             b.setLineNumbers(true);
-            b.println("ABCD") ;
-            b.println("XYZ") ;
-            assertEquals("  1 ABCD\n  2 XYZ\n", b.asString()) ;
+            b.println("ABCD");
+            b.println("XYZ");
+            assertEquals("  1 ABCD\n  2 XYZ\n", b.asString());
         }
     }
 
-    
     @Test
     public void write06() {
         try (IndentedLineBuffer b = new IndentedLineBuffer()) {
             b.setLinePrefix("@.");
-            b.println("ABCD") ;
-            b.print("XYZ") ;
-            assertEquals("@.ABCD\n@.XYZ", b.asString()) ;
+            b.println("ABCD");
+            b.print("XYZ");
+            assertEquals("@.ABCD\n@.XYZ", b.asString());
         }
     }
-    
+
     @Test
     public void write07() {
         try (IndentedLineBuffer b = new IndentedLineBuffer()) {
             b.setLinePrefix("@.");
-            b.println("ABCD") ;
-            assertEquals("@.ABCD\n", b.asString()) ;
+            b.println("ABCD");
+            assertEquals("@.ABCD\n", b.asString());
         }
     }
 }
diff --git a/jena-base/src/test/java/org/apache/jena/atlas/io/TestInputStreamBuffered.java b/jena-base/src/test/java/org/apache/jena/atlas/io/TestInputStreamBuffered.java
index 0413465d5d..6aa15919a5 100644
--- a/jena-base/src/test/java/org/apache/jena/atlas/io/TestInputStreamBuffered.java
+++ b/jena-base/src/test/java/org/apache/jena/atlas/io/TestInputStreamBuffered.java
@@ -20,89 +20,79 @@ package org.apache.jena.atlas.io;
 
 import static org.junit.Assert.assertEquals;
 
-import java.io.ByteArrayInputStream ;
-import java.io.IOException ;
-import java.io.InputStream ;
-
-import org.apache.jena.atlas.lib.Bytes ;
-import org.junit.Test ;
-
-public class TestInputStreamBuffered
-{
-    @Test public void test_01() throws IOException
-    {
-        InputStream in = stream("") ;
-        InputStream in2 = new InputStreamBuffered(in) ;
-        int x = count(in2) ;
-        assertEquals(0, x) ;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.apache.jena.atlas.lib.Bytes;
+import org.junit.Test;
+
+public class TestInputStreamBuffered {
+    @Test
+    public void test_01() throws IOException {
+        InputStream in = stream("");
+        InputStream in2 = new InputStreamBuffered(in);
+        int x = count(in2);
+        assertEquals(0, x);
     }
-    
-    @Test public void test_02() throws IOException
-    {
-        InputStream in = stream(1,2,3,4) ;
-        InputStream in2 = new InputStreamBuffered(in) ;
-        check(in2, 1,2,3,4) ;
+
+    @Test
+    public void test_02() throws IOException {
+        InputStream in = stream(1, 2, 3, 4);
+        InputStream in2 = new InputStreamBuffered(in);
+        check(in2, 1, 2, 3, 4);
     }
-    
-    @Test public void test_03() throws IOException
-    {
-        InputStream in = stream(1,2,3,4) ;
-        InputStream in2 = new InputStreamBuffered(in, 2) ;
-        check(in2, 1,2,3,4) ;
+
+    @Test
+    public void test_03() throws IOException {
+        InputStream in = stream(1, 2, 3, 4);
+        InputStream in2 = new InputStreamBuffered(in, 2);
+        check(in2, 1, 2, 3, 4);
     }
-    
-    @Test public void test_04() throws IOException
-    {
-        InputStream in = stream(1,2,3,4) ;
-        InputStream in2 = new InputStreamBuffered(in, 1) ;
-        check(in2, 1,2,3,4) ;
-        assertEquals(-1, in.read()) ;
+
+    @Test
+    public void test_04() throws IOException {
+        InputStream in = stream(1, 2, 3, 4);
+        InputStream in2 = new InputStreamBuffered(in, 1);
+        check(in2, 1, 2, 3, 4);
+        assertEquals(-1, in.read());
     }
-    
-    
-    private static InputStream stream(String data)
-    {
-        byte[] b = Bytes.string2bytes(data) ;
-        return new ByteArrayInputStream(b) ;
+
+    private static InputStream stream(String data) {
+        byte[] b = Bytes.string2bytes(data);
+        return new ByteArrayInputStream(b);
     }
-    
-    private static InputStream stream(byte...bytes)
-    {
-        return new ByteArrayInputStream(bytes) ;
+
+    private static InputStream stream(byte...bytes) {
+        return new ByteArrayInputStream(bytes);
     }
 
-    private static InputStream stream(int...bytes)
-    {
-        return stream(ints2bytes(bytes)) ;
+    private static InputStream stream(int...bytes) {
+        return stream(ints2bytes(bytes));
     }
 
     // Convenience.
-    private static byte[] ints2bytes(int...values)
-    {
-        byte b[] = new byte[values.length] ;
+    private static byte[] ints2bytes(int...values) {
+        byte b[] = new byte[values.length];
         for ( int i = 0 ; i < b.length ; i++ )
-            b[i] = (byte)values[i] ;
-        return b ;
+            b[i] = (byte)values[i];
+        return b;
     }
 
-    private static int count(InputStream in) throws IOException
-    {
-        int count = 0 ;
-        while(in.read() != -1 )
-            count++ ;
-        return count ;
+    private static int count(InputStream in) throws IOException {
+        int count = 0;
+        while (in.read() != -1)
+            count++;
+        return count;
     }
 
-    private static void check(InputStream in, int ...bytes) throws IOException
-    {
-        check(in, ints2bytes(bytes)) ;
+    private static void check(InputStream in, int...bytes) throws IOException {
+        check(in, ints2bytes(bytes));
     }
 
-    private static void check(InputStream in, byte ...bytes) throws IOException
-    {
-        for ( byte b : bytes )
-        {
-            assertEquals(b, (byte)in.read()) ;
+    private static void check(InputStream in, byte...bytes) throws IOException {
+        for ( byte b : bytes ) {
+            assertEquals(b, (byte)in.read());
         }
     }
 
diff --git a/jena-base/src/test/java/org/apache/jena/atlas/io/TestPeekInputStreamSource.java b/jena-base/src/test/java/org/apache/jena/atlas/io/TestPeekInputStreamSource.java
index 1c5e7ea743..511da6c34f 100644
--- a/jena-base/src/test/java/org/apache/jena/atlas/io/TestPeekInputStreamSource.java
+++ b/jena-base/src/test/java/org/apache/jena/atlas/io/TestPeekInputStreamSource.java
@@ -18,25 +18,14 @@
 
 package org.apache.jena.atlas.io;
 
-import java.io.ByteArrayInputStream ;
-import java.io.UnsupportedEncodingException ;
+import java.io.ByteArrayInputStream;
+import java.nio.charset.StandardCharsets;
 
-public class TestPeekInputStreamSource extends AbstractTestPeekInputStream
-{
+public class TestPeekInputStreamSource extends AbstractTestPeekInputStream {
     @Override
-    PeekInputStream make(String contents, int size)
-    {
-        // Very carefuly ensure this is not a byte array-based PeekReader
-        ByteArrayInputStream bin ;
-        try
-        {
-            bin = new ByteArrayInputStream(contents.getBytes("ASCII")) ;
-        } catch (UnsupportedEncodingException ex)
-        {
-            ex.printStackTrace();
-            return null ;
-        }
-        
-        return PeekInputStream.make(bin, size) ;
+    PeekInputStream make(String contents, int size) {
+        // Very carefully ensure this is not a byte array-based PeekReader
+        ByteArrayInputStream bin = new ByteArrayInputStream(contents.getBytes(StandardCharsets.US_ASCII));
+        return PeekInputStream.make(bin, size);
     }
 }
diff --git a/jena-base/src/test/java/org/apache/jena/atlas/io/TestPeekReaderCharSequence.java b/jena-base/src/test/java/org/apache/jena/atlas/io/TestPeekReaderCharSequence.java
index b85b736134..728e93cebc 100644
--- a/jena-base/src/test/java/org/apache/jena/atlas/io/TestPeekReaderCharSequence.java
+++ b/jena-base/src/test/java/org/apache/jena/atlas/io/TestPeekReaderCharSequence.java
@@ -18,13 +18,9 @@
 
 package org.apache.jena.atlas.io;
 
-
-
-public class TestPeekReaderCharSequence extends AbstractTestPeekReader
-{
+public class TestPeekReaderCharSequence extends AbstractTestPeekReader {
     @Override
-    PeekReader make(String contents, int size)
-    {
-        return PeekReader.readString(contents) ;
+    PeekReader make(String contents, int size) {
+        return PeekReader.readString(contents);
     }
 }
diff --git a/jena-base/src/test/java/org/apache/jena/atlas/io/TestPeekReaderSource.java b/jena-base/src/test/java/org/apache/jena/atlas/io/TestPeekReaderSource.java
index 4ff6627131..623fe7b73a 100644
--- a/jena-base/src/test/java/org/apache/jena/atlas/io/TestPeekReaderSource.java
+++ b/jena-base/src/test/java/org/apache/jena/atlas/io/TestPeekReaderSource.java
@@ -18,15 +18,13 @@
 
 package org.apache.jena.atlas.io;
 
-import java.io.StringReader ;
+import java.io.StringReader;
 
-public class TestPeekReaderSource extends AbstractTestPeekReader
-{
+public class TestPeekReaderSource extends AbstractTestPeekReader {
     @Override
-    PeekReader make(String contents, int size)
-    {
-        // Very carefuly ensure this is not a string-based PeekReader
-        StringReader r = new StringReader(contents) ;
-        return PeekReader.make(r, size) ;
+    PeekReader make(String contents, int size) {
+        // Very carefully ensure this is not a string-based PeekReader
+        StringReader r = new StringReader(contents);
+        return PeekReader.make(r, size);
     }
 }
diff --git a/jena-base/src/test/java/org/apache/jena/atlas/io/TestPrintUtils.java b/jena-base/src/test/java/org/apache/jena/atlas/io/TestPrintUtils.java
index fead66782f..f945b9de2b 100644
--- a/jena-base/src/test/java/org/apache/jena/atlas/io/TestPrintUtils.java
+++ b/jena-base/src/test/java/org/apache/jena/atlas/io/TestPrintUtils.java
@@ -20,40 +20,40 @@ package org.apache.jena.atlas.io;
 
 import static org.junit.Assert.assertEquals;
 
-import java.io.ByteArrayOutputStream ;
-import java.io.IOException ;
-import java.io.OutputStreamWriter ;
-import java.io.Writer ;
-
-import org.junit.Test ;
-
-public class TestPrintUtils
-{
-    @Test public void hex1()
-    {
-        String s = test(0,4) ;
-        assertEquals("0000", s) ;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+
+import org.junit.Test;
+
+public class TestPrintUtils {
+    @Test
+    public void hex1() {
+        String s = test(0, 4);
+        assertEquals("0000", s);
     }
-    
-    @Test public void hex2()
-    {
-        String s = test(1,8) ;
-        assertEquals("00000001", s) ;
+
+    @Test
+    public void hex2() {
+        String s = test(1, 8);
+        assertEquals("00000001", s);
     }
 
-    @Test public void hex3()
-    {
-        String s = test(0xFF,2) ;
-        assertEquals("FF", s) ;
+    @Test
+    public void hex3() {
+        String s = test(0xFF, 2);
+        assertEquals("FF", s);
     }
 
-    private static String test(int value, int width)
-    {
-        ByteArrayOutputStream x = new ByteArrayOutputStream() ;
-        Writer out = new OutputStreamWriter(x) ;
-        OutputUtils.printHex(out, value, width) ;
-        try { out.flush() ; } catch (IOException ex) {}
-        String s = x.toString() ;
-        return s ;
+    private static String test(int value, int width) {
+        ByteArrayOutputStream x = new ByteArrayOutputStream();
+        Writer out = new OutputStreamWriter(x);
+        OutputUtils.printHex(out, value, width);
+        try {
+            out.flush();
+        } catch (IOException ex) {}
+        String s = x.toString();
+        return s;
     }
 }
diff --git a/jena-base/src/test/java/org/apache/jena/atlas/io/TestStreamUTF8.java b/jena-base/src/test/java/org/apache/jena/atlas/io/TestStreamUTF8.java
index 19eb4c87f9..5c57c8b4a8 100644
--- a/jena-base/src/test/java/org/apache/jena/atlas/io/TestStreamUTF8.java
+++ b/jena-base/src/test/java/org/apache/jena/atlas/io/TestStreamUTF8.java
@@ -21,98 +21,100 @@ package org.apache.jena.atlas.io;
 import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
 
-import java.io.ByteArrayInputStream ;
-import java.io.ByteArrayOutputStream ;
-import java.io.IOException ;
-import java.io.OutputStreamWriter ;
-import java.io.Writer ;
-import java.nio.charset.Charset ;
-import java.nio.charset.CharsetDecoder ;
-import java.nio.charset.CharsetEncoder ;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CharsetEncoder;
 
-import org.apache.jena.atlas.lib.Chars ;
-import org.junit.Test ;
+import org.apache.jena.atlas.lib.Chars;
+import org.junit.Test;
 
-public class TestStreamUTF8
-    {
-        static Charset utf8 = Chars.charsetUTF8 ;
-        static CharsetDecoder dec = utf8.newDecoder() ;
-        static CharsetEncoder enc = utf8.newEncoder() ;
-        
-        // UTF-8 encoding.
-        // character '¢' = code point U+00A2 -> C2 A2
-        // character '€' = code point U+20AC -> E2 82 AC
-        
-        static private final String asciiBase             = "abc" ;
-        static private final String latinBase             = "Àéíÿ" ;
-        static private final String latinExtraBase        = "ỹfifl" ;  // fi-ligature, fl-ligature
-        static private final String greekBase             = "αβγ" ;
-        static private final String hewbrewBase           = "אבג" ;
-        static private final String arabicBase            = "ءآأ";
-        static private final String symbolsBase           = "☺☻♪♫" ;
-        static private final String chineseBase           = "孫子兵法" ; // The Art of War 
-        static private final String japaneseBase          = "日本" ;    // Japanese
-        
-        @Test public void test_in_00() { testIn("") ; }
-        @Test public void test_in_01() { testIn(asciiBase) ; }
-        @Test public void test_in_02() { testIn(latinBase) ; }
-        @Test public void test_in_03() { testIn(latinExtraBase) ; }
-        @Test public void test_in_04() { testIn(greekBase) ; }
-        @Test public void test_in_05() { testIn(hewbrewBase) ; }
-        @Test public void test_in_06() { testIn(arabicBase) ; }
-        @Test public void test_in_07() { testIn(symbolsBase) ; }
-        @Test public void test_in_08() { testIn(chineseBase) ; }
-        @Test public void test_in_09() { testIn(japaneseBase) ; }
-        
-        @Test public void test_out_00() { testIn("") ; }
-        @Test public void test_out_01() { testOut(asciiBase) ; }
-        @Test public void test_out_02() { testOut(latinBase) ; }
-        @Test public void test_out_03() { testOut(latinExtraBase) ; }
-        @Test public void test_out_04() { testOut(greekBase) ; }
-        @Test public void test_out_05() { testOut(hewbrewBase) ; }
-        @Test public void test_out_06() { testOut(arabicBase) ; }
-        @Test public void test_out_07() { testOut(symbolsBase) ; }
-        @Test public void test_out_08() { testOut(chineseBase) ; }
-        @Test public void test_out_09() { testOut(japaneseBase) ; }
-        
-        static void testIn(String x)
-        {
-            try {
-                byte[] bytes = stringAsBytes(x) ;
+public class TestStreamUTF8 {
+    static Charset utf8 = Chars.charsetUTF8;
+    static CharsetDecoder dec = utf8.newDecoder();
+    static CharsetEncoder enc = utf8.newEncoder();
 
-                ByteArrayInputStream bin = new ByteArrayInputStream(bytes) ;
-                // Create string from bytes
-                try(InStreamUTF8 r = new InStreamUTF8(bin)) {
-                    char[] cbuff = new char[x.length()*10] ;    // Way too big
-                    int len = r.read(cbuff) ;
-                    String str = new String(cbuff, 0 , len) ;
-                    assertEquals(x, str) ;
-                }
-            } catch (IOException ex) { throw new RuntimeException(ex) ; } 
+    // UTF-8 encoding.
+    // character '¢' = code point U+00A2 -> C2 A2
+    // character '€' = code point U+20AC -> E2 82 AC
+
+    static private final String asciiBase             = "abc";
+    static private final String latinBase             = "Àéíÿ";
+    static private final String latinExtraBase        = "ỹfifl";  // fi-ligature, fl-ligature
+    static private final String greekBase             = "αβγ";
+    static private final String hewbrewBase           = "אבג";
+    static private final String arabicBase            = "ءآأ";
+    static private final String symbolsBase           = "☺☻♪♫";
+    static private final String chineseBase           = "孫子兵法"; // The Art of War
+    static private final String japaneseBase          = "日本";    // Japanese
+
+    @Test public void test_in_00() { testIn(""); }
+    @Test public void test_in_01() { testIn(asciiBase); }
+    @Test public void test_in_02() { testIn(latinBase); }
+    @Test public void test_in_03() { testIn(latinExtraBase); }
+    @Test public void test_in_04() { testIn(greekBase); }
+    @Test public void test_in_05() { testIn(hewbrewBase); }
+    @Test public void test_in_06() { testIn(arabicBase); }
+    @Test public void test_in_07() { testIn(symbolsBase); }
+    @Test public void test_in_08() { testIn(chineseBase); }
+    @Test public void test_in_09() { testIn(japaneseBase); }
+
+    @Test public void test_out_00() { testIn(""); }
+    @Test public void test_out_01() { testOut(asciiBase); }
+    @Test public void test_out_02() { testOut(latinBase); }
+    @Test public void test_out_03() { testOut(latinExtraBase); }
+    @Test public void test_out_04() { testOut(greekBase); }
+    @Test public void test_out_05() { testOut(hewbrewBase); }
+    @Test public void test_out_06() { testOut(arabicBase); }
+    @Test public void test_out_07() { testOut(symbolsBase); }
+    @Test public void test_out_08() { testOut(chineseBase); }
+    @Test public void test_out_09() { testOut(japaneseBase); }
+
+    static void testIn(String x) {
+        try {
+            byte[] bytes = stringAsBytes(x);
+
+            ByteArrayInputStream bin = new ByteArrayInputStream(bytes);
+            // Create string from bytes
+            try (InStreamUTF8 r = new InStreamUTF8(bin)) {
+                char[] cbuff = new char[x.length() * 10];    // Way too big
+                int len = r.read(cbuff);
+                String str = new String(cbuff, 0, len);
+                assertEquals(x, str);
+            }
+        } catch (IOException ex) {
+            throw new RuntimeException(ex);
         }
+    }
 
-        static void testOut(String x)
-        {
-            try {
-                byte[] bytes = stringAsBytes(x) ;
-                ByteArrayOutputStream bout = new ByteArrayOutputStream() ;
-                try(Writer out = new OutStreamUTF8(bout)) {
-                    out.write(x) ;
-                }
-                byte[] bytes2 = bout.toByteArray() ;
-                assertArrayEquals(bytes, bytes2) ;
-            } catch (IOException ex) { throw new RuntimeException(ex) ; } 
+    static void testOut(String x) {
+        try {
+            byte[] bytes = stringAsBytes(x);
+            ByteArrayOutputStream bout = new ByteArrayOutputStream();
+            try (Writer out = new OutStreamUTF8(bout)) {
+                out.write(x);
+            }
+            byte[] bytes2 = bout.toByteArray();
+            assertArrayEquals(bytes, bytes2);
+        } catch (IOException ex) {
+            throw new RuntimeException(ex);
         }
+    }
 
-        static byte[] stringAsBytes(String x)
-        {
-            try {
-                ByteArrayOutputStream bout = new ByteArrayOutputStream() ;
-                try(Writer out = new OutputStreamWriter(bout, utf8)) {
-                    out.write(x) ;
-                }
-                byte[] bytes = bout.toByteArray() ;
-                return bytes ;
-            } catch (IOException ex) { throw new RuntimeException(ex) ; } 
+    static byte[] stringAsBytes(String x) {
+        try {
+            ByteArrayOutputStream bout = new ByteArrayOutputStream();
+            try (Writer out = new OutputStreamWriter(bout, utf8)) {
+                out.write(x);
+            }
+            byte[] bytes = bout.toByteArray();
+            return bytes;
+        } catch (IOException ex) {
+            throw new RuntimeException(ex);
         }
     }
+}
diff --git a/jena-base/src/test/java/org/apache/jena/atlas/iterator/TestIter.java b/jena-base/src/test/java/org/apache/jena/atlas/iterator/TestIter.java
index ab32ca1323..b90c1784ef 100644
--- a/jena-base/src/test/java/org/apache/jena/atlas/iterator/TestIter.java
+++ b/jena-base/src/test/java/org/apache/jena/atlas/iterator/TestIter.java
@@ -398,7 +398,6 @@ public class TestIter
         assertFalse(b);
     }
 
-
     @Test public void noneMatch1() {
         boolean b = Iter.noneMatch(data("1", "2", "3"), x->x.equals("A"));
         assertTrue(b);
@@ -412,7 +411,7 @@ public class TestIter
     @Test public void findFirst1() {
         Optional<String> r = Iter.findFirst(data("A", "2", "3"), x->x.equals("A"));
         assertTrue(r.isPresent());
-        assertEquals("A", r.get());
+        assertEquals("A", r.orElseThrow());
     }
 
     @Test public void findFirst2() {
@@ -423,7 +422,7 @@ public class TestIter
     @Test public void findAny1() {
         Optional<String> r = Iter.findAny(data("A", "2", "3"), x->x.equals("A"));
         assertTrue(r.isPresent());
-        assertEquals("A", r.get());
+        assertEquals("A", r.orElseThrow());
     }
 
     @Test public void reduce1() {
@@ -449,19 +448,19 @@ public class TestIter
     @Test public void min2() {
         Optional<String> x = Iter.min(data("2"), String::compareTo);
         assertTrue(x.isPresent());
-        assertEquals("2", x.get());
+        assertEquals("2", x.orElseThrow());
     }
 
     @Test public void min3() {
         Optional<String> x = Iter.min(data("1", "2", "3"), String::compareTo);
         assertTrue(x.isPresent());
-        assertEquals("1", x.get());
+        assertEquals("1", x.orElseThrow());
     }
 
     @Test public void min4() {
         Optional<String> x = Iter.min(data("3", "1", "2"), String::compareTo);
         assertTrue(x.isPresent());
-        assertEquals("1", x.get());
+        assertEquals("1", x.orElseThrow());
     }
 
     @Test public void max1() {
@@ -472,19 +471,19 @@ public class TestIter
     @Test public void max2() {
         Optional<String> x = Iter.max(data("2"), String::compareTo);
         assertTrue(x.isPresent());
-        assertEquals("2", x.get());
+        assertEquals("2", x.orElseThrow());
     }
 
     @Test public void max3() {
         Optional<String> x = Iter.max(data("1", "2", "3"), String::compareTo);
         assertTrue(x.isPresent());
-        assertEquals("3", x.get());
+        assertEquals("3", x.orElseThrow());
     }
 
     @Test public void max4() {
         Optional<String> x = Iter.max(data("3", "1", "2"), String::compareTo);
         assertTrue(x.isPresent());
-        assertEquals("3", x.get());
+        assertEquals("3", x.orElseThrow());
     }
 
     @Test public void collect3() {
diff --git a/jena-base/src/test/java/org/apache/jena/atlas/lib/persistent/TestPMap.java b/jena-base/src/test/java/org/apache/jena/atlas/lib/persistent/TestPMap.java
index ad6b9b8bf0..6a02a9f667 100644
--- a/jena-base/src/test/java/org/apache/jena/atlas/lib/persistent/TestPMap.java
+++ b/jena-base/src/test/java/org/apache/jena/atlas/lib/persistent/TestPMap.java
@@ -47,7 +47,7 @@ public class TestPMap extends Assert {
 		final Stream<Entry<String, String>> testStream = testMap.entryStream();
 		final Map<String, String> recoveredMap = testStream.collect(toMap(Entry::getKey, Entry::getValue));
 		for (final Entry<String, String> e : recoveredMap.entrySet()) {
-			assertEquals(e.getValue(), testMap.get(e.getKey()).get());
+			assertEquals(e.getValue(), testMap.get(e.getKey()).orElseThrow());
 			testMap = testMap.minus(e.getKey());
 		}
 		assertEquals(0, testMap.entryStream().count());
diff --git a/jena-core/src/main/java/org/apache/jena/assembler/ModelExpansion.java b/jena-core/src/main/java/org/apache/jena/assembler/ModelExpansion.java
index 09b60af519..68076870c6 100644
--- a/jena-core/src/main/java/org/apache/jena/assembler/ModelExpansion.java
+++ b/jena-core/src/main/java/org/apache/jena/assembler/ModelExpansion.java
@@ -308,7 +308,7 @@ public class ModelExpansion
         @Override
         public String toString()
             {
-            StringBuffer result = new StringBuffer( "[" );
+            StringBuilder result = new StringBuilder( "[" );
             LinkedSeq scan = this;
             while (scan != null) { result.append( scan.item ); scan = scan.rest; result.append( " " ); }
             return result.append( "]" ).toString();
diff --git a/jena-core/src/main/java/org/apache/jena/datatypes/xsd/XSDDateTime.java b/jena-core/src/main/java/org/apache/jena/datatypes/xsd/XSDDateTime.java
index 24a6f84d10..ec8ecbf72a 100644
--- a/jena-core/src/main/java/org/apache/jena/datatypes/xsd/XSDDateTime.java
+++ b/jena-core/src/main/java/org/apache/jena/datatypes/xsd/XSDDateTime.java
@@ -299,7 +299,7 @@ public class XSDDateTime extends AbstractDateTime {
      * Return the lexical form of the time component.
      */
     public String timeLexicalForm() {
-        StringBuffer buff = new StringBuffer();
+        StringBuilder buff = new StringBuilder();
         if(data[h]<10) buff.append("0");
         buff.append(data[h]);
 
diff --git a/jena-core/src/main/java/org/apache/jena/datatypes/xsd/XSDDuration.java b/jena-core/src/main/java/org/apache/jena/datatypes/xsd/XSDDuration.java
index 3fc405ce33..d464525db3 100644
--- a/jena-core/src/main/java/org/apache/jena/datatypes/xsd/XSDDuration.java
+++ b/jena-core/src/main/java/org/apache/jena/datatypes/xsd/XSDDuration.java
@@ -117,7 +117,7 @@ public class XSDDuration extends AbstractDateTime {
         if ( data[CY]==0 && data[M]==0 && data[D]==0 && data[h]==0 && data[m]==0 && data[s]==0 && data[ms]==0 )
             return "PT0S" ;
 
-        StringBuffer message = new StringBuffer(30);
+        StringBuilder message = new StringBuilder(30);
         int negate = 1;
         if ( data[CY]<0 || data[M]<0 || data[D]<0 || data[h]<0 || data[m]<0 || data[s]<0 || data[ms]<0 ) {
             message.append('-');
diff --git a/jena-core/src/main/java/org/apache/jena/datatypes/xsd/impl/XSDAbstractDateTimeType.java b/jena-core/src/main/java/org/apache/jena/datatypes/xsd/impl/XSDAbstractDateTimeType.java
index e1f610e462..af4b5e6a3e 100644
--- a/jena-core/src/main/java/org/apache/jena/datatypes/xsd/impl/XSDAbstractDateTimeType.java
+++ b/jena-core/src/main/java/org/apache/jena/datatypes/xsd/impl/XSDAbstractDateTimeType.java
@@ -264,12 +264,12 @@ public class XSDAbstractDateTimeType extends XSDDatatype {
      }
 
      /**
-      * Computes index of given char within StringBuffer
+      * Computes index of given char within StringBuilder
       *
       * @param start
       * @param end
-      * @param ch     character to look for in StringBuffer
-      * @return index of ch within StringBuffer
+      * @param ch     character to look for in StringBuilder
+      * @return index of ch within StringBuilder
       */
      protected  int indexOf (String buffer, int start, int end, char ch) {
          for ( int i=start;i<end;i++ ) {
@@ -380,7 +380,7 @@ public class XSDAbstractDateTimeType extends XSDDatatype {
      }
 
      public String dateToString(int[] date) {
-         StringBuffer message = new StringBuffer(25);
+         StringBuilder message = new StringBuilder(25);
          append(message, date[CY], 4);
          message.append('-');
          append(message, date[M], 2);
@@ -401,7 +401,7 @@ public class XSDAbstractDateTimeType extends XSDDatatype {
      /** Append the fraction time part of a date/time vector to
       * a string buffer.
       */
-     public static void appendFractionalTime(StringBuffer buff, int fsec, int scale) {
+     public static void appendFractionalTime(StringBuilder buff, int fsec, int scale) {
          String msString = Integer.toString(fsec);
          int pad = scale - msString.length();
          while (pad > 0) {
@@ -413,7 +413,7 @@ public class XSDAbstractDateTimeType extends XSDDatatype {
          buff.append(msString.substring(0, trunc));
      }
      
-     protected void append(StringBuffer message, int value, int nch) {
+     protected void append(StringBuilder message, int value, int nch) {
          if (value < 0) {
              message.append('-');
              value = -value;
diff --git a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/XSSimpleType.java b/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/XSSimpleType.java
index 17855cd467..06c8147507 100644
--- a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/XSSimpleType.java
+++ b/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/XSSimpleType.java
@@ -106,7 +106,7 @@ public interface XSSimpleType extends XSSimpleTypeDefinition {
 
     /**
      * validate a given string value, represented by content.toString().
-     * note that if content is a StringBuffer, for performance reasons,
+     * note that if content is a StringBuilder, for performance reasons,
      * it's possible that the content of the string buffer is modified.
      *
      * @param content       the string value that needs to be validated
diff --git a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/AbstractDateTimeDV.java b/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/AbstractDateTimeDV.java
index 2579041c6c..fe92e23a60 100644
--- a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/AbstractDateTimeDV.java
+++ b/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/AbstractDateTimeDV.java
@@ -387,12 +387,12 @@ public abstract class AbstractDateTimeDV extends TypeValidator {
 	}
 
 	/**
-	 * Computes index of given char within StringBuffer
+	 * Computes index of given char within StringBuilder
 	 *
 	 * @param start
 	 * @param end
-	 * @param ch     character to look for in StringBuffer
-	 * @return index of ch within StringBuffer
+	 * @param ch     character to look for in StringBuilder
+	 * @return index of ch within StringBuilder
 	 */
 	protected  int indexOf (String buffer, int start, int end, char ch) {
 		for ( int i=start;i<end;i++ ) {
@@ -735,7 +735,7 @@ public abstract class AbstractDateTimeDV extends TypeValidator {
 
 
 	protected String dateToString(DateTimeData date) {
-		StringBuffer message = new StringBuffer(25);
+		StringBuilder message = new StringBuilder(25);
 		append(message, date.year, 4);
 		message.append('-');
 		append(message, date.month, 2);
@@ -751,7 +751,7 @@ public abstract class AbstractDateTimeDV extends TypeValidator {
 		return message.toString();
 	}
 
-	protected final void append(StringBuffer message, int value, int nch) {
+	protected final void append(StringBuilder message, int value, int nch) {
         if (value == Integer.MIN_VALUE) {
             message.append(value);
             return;
@@ -780,7 +780,7 @@ public abstract class AbstractDateTimeDV extends TypeValidator {
 		}
 	}
 
-	protected final void append(StringBuffer message, double value) {
+	protected final void append(StringBuilder message, double value) {
 	    if (value < 0) {
 	        message.append('-');
 	        value = -value;
@@ -791,7 +791,7 @@ public abstract class AbstractDateTimeDV extends TypeValidator {
 	    append2(message, value);
 	}
 
-    protected final void append2(StringBuffer message, double value) {
+    protected final void append2(StringBuilder message, double value) {
         final int intValue = (int) value;
         if (value == intValue) {
             message.append(intValue);
@@ -801,7 +801,7 @@ public abstract class AbstractDateTimeDV extends TypeValidator {
         }
     }
 
-    private void append3(StringBuffer message, double value) {
+    private void append3(StringBuilder message, double value) {
         String d = String.valueOf(value);
         int eIndex = d.indexOf('E');
         if (eIndex == -1) {
@@ -1093,7 +1093,7 @@ public abstract class AbstractDateTimeDV extends TypeValidator {
     }
 
     protected final BigDecimal getFractionalSecondsAsBigDecimal(DateTimeData data) {
-        final StringBuffer buf = new StringBuffer();
+        final StringBuilder buf = new StringBuilder();
         append3(buf, data.unNormSecond);
         String value = buf.toString();
         final int index = value.indexOf('.');
diff --git a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/AnyURIDV.java b/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/AnyURIDV.java
index 9504b8c4bf..1824d812f1 100644
--- a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/AnyURIDV.java
+++ b/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/AnyURIDV.java
@@ -104,7 +104,7 @@ public class AnyURIDV extends TypeValidator {
     // and non-ASCII characters (whose value >= 128).
     private static String encode(String anyURI){
         int len = anyURI.length(), ch;
-        StringBuffer buffer = new StringBuffer(len*3);
+        StringBuilder buffer = new StringBuilder(len*3);
 
         // for each character in the anyURI
         int i = 0;
diff --git a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/DateDV.java b/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/DateDV.java
index 23ee07aa63..7ab110da34 100644
--- a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/DateDV.java
+++ b/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/DateDV.java
@@ -75,7 +75,7 @@ public class DateDV extends DateTimeDV {
 
     @Override
     protected String dateToString(DateTimeData date) {
-        StringBuffer message = new StringBuffer(25);
+        StringBuilder message = new StringBuilder(25);
         append(message, date.year, 4);
         message.append('-');
         append(message, date.month, 2);
diff --git a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/DayDV.java b/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/DayDV.java
index 779cd05bdb..c4c89d3cb8 100644
--- a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/DayDV.java
+++ b/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/DayDV.java
@@ -99,7 +99,7 @@ public class DayDV extends AbstractDateTimeDV {
      */
     @Override
     protected String dateToString(DateTimeData date) {
-        StringBuffer message = new StringBuffer(6);
+        StringBuilder message = new StringBuilder(6);
         message.append('-');
         message.append('-');
         message.append('-');
diff --git a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/DecimalDV.java b/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/DecimalDV.java
index 63ba4185c2..fedd728cc0 100644
--- a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/DecimalDV.java
+++ b/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/DecimalDV.java
@@ -262,7 +262,7 @@ public class DecimalDV extends TypeValidator {
                 return;
             }
             // for -0.1, total digits is 1, so we need 3 extra spots
-            StringBuffer buffer = new StringBuffer(totalDigits+3);
+            StringBuilder buffer = new StringBuilder(totalDigits+3);
             if (sign == -1)
                 buffer.append('-');
             if (intDigits != 0)
diff --git a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/DurationDV.java b/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/DurationDV.java
index 8420857b38..d81db59a57 100644
--- a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/DurationDV.java
+++ b/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/DurationDV.java
@@ -351,7 +351,7 @@ public class DurationDV extends AbstractDateTimeDV {
 
     @Override
     protected String dateToString(DateTimeData date) {
-        StringBuffer message = new StringBuffer(30);
+        StringBuilder message = new StringBuilder(30);
         if ( date.year<0 || date.month<0 || date.day<0
                 || date.hour<0 || date.minute<0 || date.second<0) {
             message.append('-');
diff --git a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/MonthDV.java b/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/MonthDV.java
index f9db062762..d30709a9a1 100644
--- a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/MonthDV.java
+++ b/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/MonthDV.java
@@ -150,7 +150,7 @@ public class MonthDV extends AbstractDateTimeDV {
      */
     @Override
     protected String dateToString(DateTimeData date) {
-        StringBuffer message = new StringBuffer(5);
+        StringBuilder message = new StringBuilder(5);
         message.append('-');
         message.append('-');
         append(message, date.month, 2);
diff --git a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/MonthDayDV.java b/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/MonthDayDV.java
index 2e4c1de98b..17a8dd4143 100644
--- a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/MonthDayDV.java
+++ b/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/MonthDayDV.java
@@ -111,7 +111,7 @@ public class MonthDayDV extends AbstractDateTimeDV {
      */
     @Override
     protected String dateToString(DateTimeData date) {
-        StringBuffer message = new StringBuffer(8);
+        StringBuilder message = new StringBuilder(8);
         message.append('-');
         message.append('-');
         append(message, date.month, 2);
diff --git a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/PrecisionDecimalDV.java b/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/PrecisionDecimalDV.java
index 41ff5fcc29..b63bc12972 100644
--- a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/PrecisionDecimalDV.java
+++ b/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/PrecisionDecimalDV.java
@@ -164,14 +164,14 @@ class PrecisionDecimalDV extends TypeValidator {
             if(fvalue.equals(oval.fvalue))
                 return EQUAL;
 
-            StringBuffer temp1 = new StringBuffer(fvalue);
-            StringBuffer temp2 = new StringBuffer(oval.fvalue);
+            StringBuilder temp1 = new StringBuilder(fvalue);
+            StringBuilder temp2 = new StringBuilder(oval.fvalue);
 
             truncateTrailingZeros(temp1, temp2);
             return temp1.toString().compareTo(temp2.toString());
         }
 
-        private void truncateTrailingZeros(StringBuffer fValue, StringBuffer otherFValue) {
+        private void truncateTrailingZeros(StringBuilder fValue, StringBuilder otherFValue) {
             for(int i = fValue.length() - 1;i >= 0; i--)
                 if(fValue.charAt(i) == '0')
                     fValue.deleteCharAt(i);
@@ -230,8 +230,8 @@ class PrecisionDecimalDV extends TypeValidator {
                     //otherwise the 2 combined values are the same
                     if(pvalue > val.pvalue) {
                         int expDiff = pvalue - val.pvalue;
-                        StringBuffer buffer = new StringBuffer(ivalue);
-                        StringBuffer fbuffer = new StringBuffer(fvalue);
+                        StringBuilder buffer = new StringBuilder(ivalue);
+                        StringBuilder fbuffer = new StringBuilder(fvalue);
                         for(int i = 0;i < expDiff; i++) {
                             if(i < fracDigits) {
                                 buffer.append(fvalue.charAt(i));
@@ -244,8 +244,8 @@ class PrecisionDecimalDV extends TypeValidator {
                     }
                     else {
                         int expDiff = val.pvalue - pvalue;
-                        StringBuffer buffer = new StringBuffer(val.ivalue);
-                        StringBuffer fbuffer = new StringBuffer(val.fvalue);
+                        StringBuilder buffer = new StringBuilder(val.ivalue);
+                        StringBuilder fbuffer = new StringBuilder(val.fvalue);
                         for(int i = 0;i < expDiff; i++) {
                             if(i < val.fracDigits) {
                                 buffer.append(val.fvalue.charAt(i));
@@ -286,8 +286,8 @@ class PrecisionDecimalDV extends TypeValidator {
             if(fValue.equals(otherFValue))
                 return EQUAL;
 
-            StringBuffer temp1=new StringBuffer(fValue);
-            StringBuffer temp2=new StringBuffer(otherFValue);
+            StringBuilder temp1=new StringBuilder(fValue);
+            StringBuilder temp2=new StringBuilder(otherFValue);
 
             truncateTrailingZeros(temp1, temp2);
             ret = temp1.toString().compareTo(temp2.toString());
diff --git a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/TimeDV.java b/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/TimeDV.java
index bf011e13ef..39575a401c 100644
--- a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/TimeDV.java
+++ b/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/TimeDV.java
@@ -93,7 +93,7 @@ public class TimeDV extends AbstractDateTimeDV {
      */
     @Override
     protected String dateToString(DateTimeData date) {
-        StringBuffer message = new StringBuffer(16);
+        StringBuilder message = new StringBuilder(16);
         append(message, date.hour, 2);
         message.append(':');
         append(message, date.minute, 2);
diff --git a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/XSSimpleTypeDecl.java b/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/XSSimpleTypeDecl.java
index 49b655e774..ffb1e04857 100644
--- a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/XSSimpleTypeDecl.java
+++ b/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/XSSimpleTypeDecl.java
@@ -1471,7 +1471,7 @@ public class XSSimpleTypeDecl implements XSSimpleType, TypeInfo {
                 }
             }
             if(!present){
-                StringBuffer sb = new StringBuffer();
+                StringBuilder sb = new StringBuilder();
                 appendEnumString(sb);
                 throw new InvalidDatatypeValueException("cvc-enumeration-valid",
                         new Object [] {content, sb.toString()});
@@ -1619,7 +1619,7 @@ public class XSSimpleTypeDecl implements XSSimpleType, TypeInfo {
         if (len == 0 || ws == WS_PRESERVE)
             return content;
 
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         if (ws == WS_REPLACE) {
             char ch;
             // when it's replace, just replace #x9, #xa, #xd by #x20
@@ -1677,12 +1677,12 @@ public class XSSimpleTypeDecl implements XSSimpleType, TypeInfo {
             }
         }
 
-        if (!(content instanceof StringBuffer)) {
+        if (!(content instanceof StringBuilder)) {
             String strContent = content.toString();
             return normalize(strContent, ws);
         }
 
-        StringBuffer sb = (StringBuffer)content;
+        StringBuilder sb = (StringBuilder)content;
         int len = sb.length();
         if (len == 0)
             return "";
@@ -2975,7 +2975,7 @@ public class XSSimpleTypeDecl implements XSSimpleType, TypeInfo {
         return valueType;
     }
 
-    private void appendEnumString(StringBuffer sb) {
+    private void appendEnumString(StringBuilder sb) {
         sb.append('[');
         for (int i = 0; i < fEnumerationSize; i++) {
             if (i != 0) {
diff --git a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/YearDV.java b/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/YearDV.java
index c879cfd8ef..75da0cf82c 100644
--- a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/YearDV.java
+++ b/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/YearDV.java
@@ -111,7 +111,7 @@ public class YearDV extends AbstractDateTimeDV {
      */
     @Override
     protected String dateToString(DateTimeData date) {
-        StringBuffer message = new StringBuffer(5);
+        StringBuilder message = new StringBuilder(5);
         append(message, date.year, 4);
         append(message, (char)date.utc, 0);
         return message.toString();
diff --git a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/YearMonthDV.java b/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/YearMonthDV.java
index c665a2e635..2a07811913 100644
--- a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/YearMonthDV.java
+++ b/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/dv/xs/YearMonthDV.java
@@ -83,7 +83,7 @@ public class YearMonthDV extends AbstractDateTimeDV{
 
     @Override
     protected String dateToString(DateTimeData date) {
-        StringBuffer message = new StringBuffer(25);
+        StringBuilder message = new StringBuilder(25);
         append(message, date.year, 4);
         message.append('-');
         append(message, date.month, 2);
diff --git a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/xpath/regex/REUtil.java b/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/xpath/regex/REUtil.java
index 01ea1104c4..a1cffa1f1c 100644
--- a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/xpath/regex/REUtil.java
+++ b/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/xpath/regex/REUtil.java
@@ -108,7 +108,7 @@ public final class REUtil {
     }
 
     static final String createOptionString(int options) {
-        StringBuffer sb = new StringBuffer(9);
+        StringBuilder sb = new StringBuilder(9);
         if ((options & RegularExpression.PROHIBIT_FIXED_STRING_OPTIMIZATION) != 0)
             sb.append('F');
         if ((options & RegularExpression.PROHIBIT_HEAD_CHARACTER_OPTIMIZATION) != 0)
@@ -136,7 +136,7 @@ public final class REUtil {
 
     static String stripExtendedComment(String regex) {
         int len = regex.length();
-        StringBuffer buffer = new StringBuffer(len);
+        StringBuilder buffer = new StringBuilder(len);
         int offset = 0;
         int charClass = 0;
         while (offset < len) {
@@ -335,12 +335,12 @@ public final class REUtil {
      */
     public static String quoteMeta(String literal) {
         int len = literal.length();
-        StringBuffer buffer = null;
+        StringBuilder buffer = null;
         for (int i = 0;  i < len;  i ++) {
             int ch = literal.charAt(i);
             if (".*+?{[()|\\^$".indexOf(ch) >= 0) {
                 if (buffer == null) {
-                    buffer = new StringBuffer(i+(len-i)*2);
+                    buffer = new StringBuilder(i+(len-i)*2);
                     if (i > 0)  buffer.append(literal.substring(0, i));
                 }
                 buffer.append('\\');
diff --git a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/xpath/regex/RangeToken.java b/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/xpath/regex/RangeToken.java
index f1976b623a..153133a333 100644
--- a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/xpath/regex/RangeToken.java
+++ b/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/xpath/regex/RangeToken.java
@@ -560,7 +560,7 @@ final class RangeToken extends Token implements java.io.Serializable {
             else if (this == Token.token_spaces)
                 ret = "\\s";
             else {
-                StringBuffer sb = new StringBuffer();
+                StringBuilder sb = new StringBuilder();
                 sb.append('[');
                 for (int i = 0;  i < this.ranges.length;  i += 2) {
                     if ((options & RegularExpression.SPECIAL_COMMA) != 0 && i > 0)  sb.append(',');
@@ -583,7 +583,7 @@ final class RangeToken extends Token implements java.io.Serializable {
             else if (this == Token.token_not_spaces)
                 ret = "\\S";
             else {
-                StringBuffer sb = new StringBuffer();
+                StringBuilder sb = new StringBuilder();
                 sb.append("[^");
                 for (int i = 0;  i < this.ranges.length;  i += 2) {
                     if ((options & RegularExpression.SPECIAL_COMMA) != 0 && i > 0)  sb.append(',');
diff --git a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/xpath/regex/Token.java b/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/xpath/regex/Token.java
index 6b9deac655..549d7b8046 100644
--- a/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/xpath/regex/Token.java
+++ b/jena-core/src/main/java/org/apache/jena/ext/xerces/impl/xpath/regex/Token.java
@@ -820,7 +820,7 @@ class Token implements java.io.Serializable {
                 //REVISIT: do we really need to support block names as in Unicode 3.1
                 //         or we can just create all the names in IsBLOCKNAME format (XML Schema REC)?
                 //
-                StringBuffer buffer = new StringBuffer(50);
+                StringBuilder buffer = new StringBuilder(50);
                 for (int i = 0;  i < Token.blockNames.length;  i ++) {
                     Token r1 = Token.createRange();
                     int location;
@@ -1481,10 +1481,10 @@ class Token implements java.io.Serializable {
 
             //System.err.println("Merge '"+previous+"' and '"+tok+"'.");
 
-            StringBuffer buffer;
+            StringBuilder buffer;
             int nextMaxLength = (tok.type == CHAR ? 2 : tok.getString().length());
             if (previous.type == CHAR) {        // Replace previous token by STRING
-                buffer = new StringBuffer(2 + nextMaxLength);
+                buffer = new StringBuilder(2 + nextMaxLength);
                 int ch = previous.getChar();
                 if (ch >= 0x10000)
                     buffer.append(REUtil.decomposeToSurrogates(ch));
@@ -1493,7 +1493,7 @@ class Token implements java.io.Serializable {
                 previous = Token.createString(null);
                 this.children.setElementAt(previous, size-1);
             } else {                            // STRING
-                buffer = new StringBuffer(previous.getString().length() + nextMaxLength);
+                buffer = new StringBuilder(previous.getString().length() + nextMaxLength);
                 buffer.append(previous.getString());
             }
 
@@ -1533,7 +1533,7 @@ class Token implements java.io.Serializable {
                     } else
                         ret = ch.toString(options)+ch2.toString(options);
                 } else {
-                    StringBuffer sb = new StringBuffer();
+                    StringBuilder sb = new StringBuilder();
                     for (int i = 0;  i < this.children.size();  i ++) {
                         sb.append(((Token)this.children.elementAt(i)).toString(options));
                     }
@@ -1547,7 +1547,7 @@ class Token implements java.io.Serializable {
                        && this.getChild(0).type == EMPTY) {
                 ret = this.getChild(1).toString(options)+"??";
             } else {
-                StringBuffer sb = new StringBuffer();
+                StringBuilder sb = new StringBuilder();
                 sb.append(((Token)this.children.elementAt(0)).toString(options));
                 for (int i = 1;  i < this.children.size();  i ++) {
                     sb.append('|');
diff --git a/jena-core/src/main/java/org/apache/jena/ext/xerces/jaxp/datatype/DurationImpl.java b/jena-core/src/main/java/org/apache/jena/ext/xerces/jaxp/datatype/DurationImpl.java
index fa7e70a745..c920ca5358 100644
--- a/jena-core/src/main/java/org/apache/jena/ext/xerces/jaxp/datatype/DurationImpl.java
+++ b/jena-core/src/main/java/org/apache/jena/ext/xerces/jaxp/datatype/DurationImpl.java
@@ -974,7 +974,7 @@ class DurationImpl
      */
     @Override
     public String toString() {
-        StringBuffer buf = new StringBuffer();
+        StringBuilder buf = new StringBuilder();
         if (signum < 0) {
             buf.append('-');
         }
@@ -1025,17 +1025,17 @@ class DurationImpl
         }
 
         /* Insert decimal point */
-        StringBuffer buf;
+        StringBuilder buf;
         int insertionPoint = intString.length() - scale;
         if (insertionPoint == 0) { /* Point goes right before intVal */
             return "0." + intString;
         }
         else if (insertionPoint > 0) { /* Point goes inside intVal */
-            buf = new StringBuffer(intString);
+            buf = new StringBuilder(intString);
             buf.insert(insertionPoint, '.');
         }
         else { /* We must insert zeros between point and intVal */
-            buf = new StringBuffer(3 - insertionPoint + intString.length());
+            buf = new StringBuilder(3 - insertionPoint + intString.length());
             buf.append("0.");
             for (int i = 0; i < -insertionPoint; i++) {
                 buf.append('0');
diff --git a/jena-core/src/main/java/org/apache/jena/ext/xerces/jaxp/datatype/XMLGregorianCalendarImpl.java b/jena-core/src/main/java/org/apache/jena/ext/xerces/jaxp/datatype/XMLGregorianCalendarImpl.java
index 0049d1bc8e..92f6ef0529 100644
--- a/jena-core/src/main/java/org/apache/jena/ext/xerces/jaxp/datatype/XMLGregorianCalendarImpl.java
+++ b/jena-core/src/main/java/org/apache/jena/ext/xerces/jaxp/datatype/XMLGregorianCalendarImpl.java
@@ -2786,7 +2786,7 @@ class XMLGregorianCalendarImpl
             // Format is
             // "GMT" ('-'|''+') (digit digit?) (digit digit)?
             //                   hour          minutes
-            StringBuffer customTimezoneId = new StringBuffer(8);
+            StringBuilder customTimezoneId = new StringBuilder(8);
             customTimezoneId.append("GMT");
             customTimezoneId.append(sign);
             customTimezoneId.append(hour);
@@ -3038,7 +3038,7 @@ public void clear() {
     }
 
     private String format( String format ) {
-        StringBuffer buf = new StringBuffer();
+        StringBuilder buf = new StringBuilder();
         int fidx=0,flen=format.length();
 
         while(fidx<flen) {
@@ -3120,7 +3120,7 @@ public void clear() {
      *      number of digits. For example, 5 will be printed as "0005"
      *      if nDigits==4.
      */
-    private void printNumber( StringBuffer out, int number, int nDigits ) {
+    private void printNumber( StringBuilder out, int number, int nDigits ) {
         String s = String.valueOf(number);
         for (int i = s.length(); i < nDigits; i++) {
             out.append('0');
@@ -3140,7 +3140,7 @@ public void clear() {
      *      number of digits. For example, 5 will be printed as "0005"
      *      if nDigits==4.
      */
-    private void printNumber( StringBuffer out, BigInteger number, int nDigits) {
+    private void printNumber( StringBuilder out, BigInteger number, int nDigits) {
         String s = number.toString();
         for (int i=s.length(); i < nDigits; i++) {
             out.append('0');
@@ -3167,17 +3167,17 @@ public void clear() {
         }
 
         /* Insert decimal point */
-        StringBuffer buf;
+        StringBuilder buf;
         int insertionPoint = intString.length() - scale;
         if (insertionPoint == 0) { /* Point goes right before intVal */
             return "0." + intString;
         }
         else if (insertionPoint > 0) { /* Point goes inside intVal */
-            buf = new StringBuffer(intString);
+            buf = new StringBuilder(intString);
             buf.insert(insertionPoint, '.');
         }
         else { /* We must insert zeros between point and intVal */
-            buf = new StringBuffer(3 - insertionPoint + intString.length());
+            buf = new StringBuilder(3 - insertionPoint + intString.length());
             buf.append("0.");
             for (int i = 0; i < -insertionPoint; i++) {
                 buf.append('0');
diff --git a/jena-core/src/main/java/org/apache/jena/ext/xerces/util/DatatypeMessageFormatter.java b/jena-core/src/main/java/org/apache/jena/ext/xerces/util/DatatypeMessageFormatter.java
index ec06f254a2..4836e37e60 100644
--- a/jena-core/src/main/java/org/apache/jena/ext/xerces/util/DatatypeMessageFormatter.java
+++ b/jena-core/src/main/java/org/apache/jena/ext/xerces/util/DatatypeMessageFormatter.java
@@ -81,7 +81,7 @@ public class DatatypeMessageFormatter {
         if (msg == null) {
             msg = key;
             if (arguments.length > 0) {
-                StringBuffer str = new StringBuffer(msg);
+                StringBuilder str = new StringBuilder(msg);
                 str.append('?');
                 for (int i = 0; i < arguments.length; i++) {
                     if (i > 0) {
diff --git a/jena-core/src/main/java/org/apache/jena/ext/xerces/util/URI.java b/jena-core/src/main/java/org/apache/jena/ext/xerces/util/URI.java
index f3f480e926..905c242740 100644
--- a/jena-core/src/main/java/org/apache/jena/ext/xerces/util/URI.java
+++ b/jena-core/src/main/java/org/apache/jena/ext/xerces/util/URI.java
@@ -1206,7 +1206,7 @@ import java.util.Objects;
   * @return the scheme-specific part for this URI
   */
   public String getSchemeSpecificPart() {
-    StringBuffer schemespec = new StringBuffer();
+    StringBuilder schemespec = new StringBuilder();
 
     if (m_host != null || m_regAuthority != null) {
       schemespec.append("//");
@@ -1291,7 +1291,7 @@ import java.util.Objects;
    * @return the authority
    */
   public String getAuthority() {
-      StringBuffer authority = new StringBuffer();
+      StringBuilder authority = new StringBuilder();
       if (m_host != null || m_regAuthority != null) {
           authority.append("//");
 
@@ -1334,7 +1334,7 @@ import java.util.Objects;
   */
   public String getPath(boolean p_includeQueryString,
                         boolean p_includeFragment) {
-    StringBuffer pathString = new StringBuffer(m_path);
+    StringBuilder pathString = new StringBuilder(m_path);
 
     if (p_includeQueryString && m_queryString != null) {
       pathString.append('?');
@@ -1720,7 +1720,7 @@ import java.util.Objects;
   */
 @Override
 public String toString() {
-    StringBuffer uriSpecString = new StringBuffer();
+    StringBuilder uriSpecString = new StringBuilder();
 
     if (m_scheme != null) {
       uriSpecString.append(m_scheme);
diff --git a/jena-core/src/main/java/org/apache/jena/ext/xerces/xni/QName.java b/jena-core/src/main/java/org/apache/jena/ext/xerces/xni/QName.java
index 2bb58bc36e..f421f8ef3f 100644
--- a/jena-core/src/main/java/org/apache/jena/ext/xerces/xni/QName.java
+++ b/jena-core/src/main/java/org/apache/jena/ext/xerces/xni/QName.java
@@ -165,7 +165,7 @@ public class QName
     @Override
     public String toString() {
 
-        StringBuffer str = new StringBuffer();
+        StringBuilder str = new StringBuilder();
         boolean comma = false;
         if (prefix != null) {
             str.append("prefix=\"").append(prefix).append('"');
diff --git a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/NTripleReader.java b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/NTripleReader.java
index 8983636d34..8fd6dcbfd2 100644
--- a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/NTripleReader.java
+++ b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/NTripleReader.java
@@ -20,7 +20,8 @@ package org.apache.jena.rdf.model.impl;
 
 import java.io.*;
 import java.net.URL;
-import java.util.Hashtable;
+import java.util.HashMap;
+import java.util.Map;
 
 import org.apache.jena.atlas.logging.Log;
 import org.apache.jena.graph.GraphEvents ;
@@ -38,7 +39,7 @@ public class NTripleReader extends Object implements RDFReaderI {
     static final Logger log = LoggerFactory.getLogger(NTripleReader.class);
 
     private Model model = null;
-    private Hashtable<String, Resource> anons = new Hashtable<>();
+    private Map<String, Resource> anons = new HashMap<>();
 
     private IStream in = null;
     private boolean inErr = false;
@@ -115,7 +116,7 @@ public class NTripleReader extends Object implements RDFReaderI {
             model.notifyEvent( GraphEvents.finishRead );
         }
     }
-    
+
     protected final void unwrappedReadRDF() {
         Resource subject;
         Property predicate = null;
@@ -223,7 +224,7 @@ public class NTripleReader extends Object implements RDFReaderI {
 
     protected Literal readLiteral()  {
 
-        StringBuffer lit = new StringBuffer(sbLength);
+        StringBuilder lit = new StringBuilder(sbLength);
 
         if (!expect("\""))
             return null;
@@ -277,7 +278,7 @@ public class NTripleReader extends Object implements RDFReaderI {
                         return null;
 					if ( lang.length() > 0 )
 					    deprecated("Language tags are not permitted on typed literals.");
-                    
+
                     return model.createTypedLiteral(
                         lit.toString(),
                         datatypeURI);
@@ -333,7 +334,7 @@ public class NTripleReader extends Object implements RDFReaderI {
         inErr = true;
     }
     private String readLang() {
-        StringBuffer lang = new StringBuffer(15);
+        StringBuilder lang = new StringBuilder(15);
 
 
         while (true) {
@@ -350,7 +351,7 @@ public class NTripleReader extends Object implements RDFReaderI {
         return inErr;
     }
     protected String readURI() {
-        StringBuffer uri = new StringBuffer(sbLength);
+        StringBuilder uri = new StringBuilder(sbLength);
 
         while (in.nextChar() != '>') {
             char inChar = in.readChar();
@@ -368,7 +369,7 @@ public class NTripleReader extends Object implements RDFReaderI {
     }
 
     protected String readName() {
-        StringBuffer name = new StringBuffer(sbLength);
+        StringBuilder name = new StringBuilder(sbLength);
 
         char nextChar;
         while (Character.isLetterOrDigit(nextChar=in.nextChar())
@@ -436,7 +437,7 @@ public class NTripleReader extends Object implements RDFReaderI {
             + ": "
             + msg;
     }
-    
+
 }
 
 class IStream {
@@ -491,5 +492,5 @@ class IStream {
     protected int getCharpos() {
         return charpos;
     }
-    
+
 }
diff --git a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/NTripleWriter.java b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/NTripleWriter.java
index 3f5680634f..325f5734cb 100644
--- a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/NTripleWriter.java
+++ b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/NTripleWriter.java
@@ -18,12 +18,15 @@
 
 package org.apache.jena.rdf.model.impl;
 
-import java.io.*;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.io.Writer;
+import java.nio.charset.StandardCharsets;
 import java.util.Locale ;
 
 import org.apache.jena.rdf.model.* ;
-import org.apache.jena.shared.* ;
-import org.apache.jena.util.FileUtils ;
+import org.apache.jena.shared.UnknownPropertyException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -34,23 +37,16 @@ public class NTripleWriter extends Object implements RDFWriterI {
     RDFErrorHandler errorHandler = new RDFDefaultErrorHandler();
 
     protected static Logger logger = LoggerFactory.getLogger( NTripleWriter.class );
-    
+
     public NTripleWriter() {
     }
     @Override
     public void write(Model model, OutputStream out, String base)
          {
         try {
-            Writer w;
-            try {
-                w = new OutputStreamWriter(out, "ascii");
-            } catch (UnsupportedEncodingException e) {
-                logger.warn( "ASCII is not supported: in NTripleWriter.write", e );
-                w = FileUtils.asUTF8(out);
-            }
+            Writer w = new OutputStreamWriter(out, StandardCharsets.US_ASCII);
             write(model, w, base);
             w.flush();
-
         } catch (Exception ioe) {
             errorHandler.error(ioe);
         }
@@ -100,7 +96,7 @@ public class NTripleWriter extends Object implements RDFWriterI {
 
     public void setNsPrefix(String prefix, String ns) {
     }
-    
+
     public String getPrefixFor( String uri )
         { return null; }
 
diff --git a/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput0/NTriple.java b/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput0/NTriple.java
index 5788c05cc0..22f9a64bdc 100644
--- a/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput0/NTriple.java
+++ b/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput0/NTriple.java
@@ -88,7 +88,7 @@ import org.xml.sax.SAXParseException;
 @Deprecated
 public class NTriple implements ARPErrorNumbers {
 
-	private static StringBuffer line = new StringBuffer();
+	private static StringBuilder line = new StringBuilder();
     private static ARP0 arp;
 	private static String xmlBase = null;
 	private static boolean numbers = false;
@@ -556,8 +556,8 @@ int debugC = 0;
 		return rslt.toString();
 	}
 
-	private static StringBuffer escapeUTF8(String str) {
-		StringBuffer rslt = new StringBuffer();
+	private static StringBuilder escapeUTF8(String str) {
+		StringBuilder rslt = new StringBuilder();
 		try {
 			for (byte b : str.getBytes("utf-8")) {
 				rslt.append("Z");
diff --git a/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput0/impl/ParserSupport.java b/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput0/impl/ParserSupport.java
index 9617e41774..16d333289d 100644
--- a/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput0/impl/ParserSupport.java
+++ b/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput0/impl/ParserSupport.java
@@ -152,7 +152,7 @@ public class ParserSupport implements ARPErrorNumbers, Names {
          return true;
     }
 
-    protected boolean isWhite(StringBuffer buf) {
+    protected boolean isWhite(StringBuilder buf) {
         for (int i=buf.length()-1;i>=0;i--)
            if (! isWhite(buf.charAt(i)) )
                return false;
diff --git a/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput0/states/AbsWantLiteralValueOrDescription.java b/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput0/states/AbsWantLiteralValueOrDescription.java
index d0187bee0d..4c8e2fa1e9 100644
--- a/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput0/states/AbsWantLiteralValueOrDescription.java
+++ b/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput0/states/AbsWantLiteralValueOrDescription.java
@@ -26,7 +26,7 @@ import org.xml.sax.SAXParseException;
 abstract class AbsWantLiteralValueOrDescription extends
         WantDescription {
 
-    private StringBuffer buf;
+    private StringBuilder buf;
     
     private boolean checkComposingChar = true;
 
@@ -46,7 +46,7 @@ abstract class AbsWantLiteralValueOrDescription extends
      * characters is called once, then endElement, and we form a literal from
      * the characters. This involves creating a string, if we used a char[] then
      * we would have another char[] to char[] copy, which is one too many. Hence
-     * we use a StringBuffer. b) <eg:prop> <eg:typedNode /> </eg:prop> with two
+     * we use a StringBuilder. b) <eg:prop> <eg:typedNode /> </eg:prop> with two
      * lots of characters both white. This case happens from within
      * InsidePropertyElementFrame, and the second lot of characters do not get
      * here.
@@ -58,17 +58,17 @@ abstract class AbsWantLiteralValueOrDescription extends
             checkComposingChar(taint,ch, start, length);
         checkComposingChar = false;
         if (buf == null)
-            buf = new StringBuffer(length);
+            buf = new StringBuilder(length);
         getBuf().append(ch, start, length);
     }
 
-    void setBuf(StringBuffer buf) {
+    void setBuf(StringBuilder buf) {
         this.buf = buf;
     }
 
-    StringBuffer getBuf() {
+    StringBuilder getBuf() {
         if (buf == null)
-            buf = new StringBuffer(0);
+            buf = new StringBuilder(0);
         return buf;
     }
 
diff --git a/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput0/states/AbsXMLLiteral.java b/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput0/states/AbsXMLLiteral.java
index abba76bbb5..9bfd65d67d 100644
--- a/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput0/states/AbsXMLLiteral.java
+++ b/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput0/states/AbsXMLLiteral.java
@@ -42,7 +42,7 @@ public abstract class AbsXMLLiteral extends Frame {
         return "";
     }
     
-    final protected StringBuffer rslt;
+    final protected StringBuilder rslt;
     public final Map<String, String> namespaces; 
 
     private static String prefix(String qname) {
@@ -63,7 +63,7 @@ public abstract class AbsXMLLiteral extends Frame {
         rslt.append(s);
     }
 
-    public AbsXMLLiteral(FrameI p, AbsXMLContext x, StringBuffer r) {
+    public AbsXMLLiteral(FrameI p, AbsXMLContext x, StringBuilder r) {
         super(p, x);
         rslt = r;
         namespaces = xmlNameSpace;
@@ -75,7 +75,7 @@ public abstract class AbsXMLLiteral extends Frame {
     }
     public AbsXMLLiteral(XMLHandler h,AbsXMLContext x) {
         super(h, x);
-        rslt = new StringBuffer();
+        rslt = new StringBuilder();
         namespaces = xmlNameSpace;
     }
     
diff --git a/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput0/states/OuterXMLLiteral.java b/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput0/states/OuterXMLLiteral.java
index bddc010d82..621c11e8b5 100644
--- a/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput0/states/OuterXMLLiteral.java
+++ b/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput0/states/OuterXMLLiteral.java
@@ -31,7 +31,7 @@ public class OuterXMLLiteral extends AbsXMLLiteral {
    final String parseType;
     
     public OuterXMLLiteral(WantsObjectFrameI s, AbsXMLContext x, String pt) {
-        super(s, x, new StringBuffer());
+        super(s, x, new StringBuilder());
         parseType = pt;
         
     }
diff --git a/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput1/NTriple.java b/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput1/NTriple.java
index 20f43b215a..f15e283b81 100644
--- a/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput1/NTriple.java
+++ b/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput1/NTriple.java
@@ -87,7 +87,7 @@ import org.xml.sax.SAXParseException;
 @SuppressWarnings("deprecation")
 public class NTriple implements ARPErrorNumbers {
 
-	private static StringBuffer line = new StringBuffer();
+	private static StringBuilder line = new StringBuilder();
 	private static ARP arp;
 	private static String xmlBase = null;
 	private static boolean numbers = false;
@@ -555,8 +555,8 @@ int debugC = 0;
 		return rslt.toString();
 	}
 
-	private static StringBuffer escapeUTF8(String str) {
-		StringBuffer rslt = new StringBuffer();
+	private static StringBuilder escapeUTF8(String str) {
+		StringBuilder rslt = new StringBuilder();
 		try {
 			for (byte b : str.getBytes("utf-8")) {
 				rslt.append("Z");
diff --git a/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput1/impl/ParserSupport.java b/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput1/impl/ParserSupport.java
index 506c462cbf..1ece098227 100644
--- a/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput1/impl/ParserSupport.java
+++ b/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput1/impl/ParserSupport.java
@@ -154,7 +154,7 @@ public class ParserSupport implements ARPErrorNumbers, Names {
          return true;
     }
 
-    protected boolean isWhite(StringBuffer buf) {
+    protected boolean isWhite(StringBuilder buf) {
         for (int i=buf.length()-1;i>=0;i--)
            if (! isWhite(buf.charAt(i)) )
                return false;
diff --git a/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput1/states/AbsWantLiteralValueOrDescription.java b/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput1/states/AbsWantLiteralValueOrDescription.java
index 372b1bc68c..64df4e42fb 100644
--- a/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput1/states/AbsWantLiteralValueOrDescription.java
+++ b/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput1/states/AbsWantLiteralValueOrDescription.java
@@ -26,7 +26,7 @@ import org.xml.sax.SAXParseException;
 abstract class AbsWantLiteralValueOrDescription extends
         WantDescription {
 
-    private StringBuffer buf;
+    private StringBuilder buf;
     
     private boolean checkComposingChar = true;
 
@@ -46,7 +46,7 @@ abstract class AbsWantLiteralValueOrDescription extends
      * characters is called once, then endElement, and we form a literal from
      * the characters. This involves creating a string, if we used a char[] then
      * we would have another char[] to char[] copy, which is one too many. Hence
-     * we use a StringBuffer. b) <eg:prop> <eg:typedNode /> </eg:prop> with two
+     * we use a StringBuilder. b) <eg:prop> <eg:typedNode /> </eg:prop> with two
      * lots of characters both white. This case happens from within
      * InsidePropertyElementFrame, and the second lot of characters do not get
      * here.
@@ -58,17 +58,17 @@ abstract class AbsWantLiteralValueOrDescription extends
             checkComposingChar(taint,ch, start, length);
         checkComposingChar = false;
         if (buf == null)
-            buf = new StringBuffer(length);
+            buf = new StringBuilder(length);
         getBuf().append(ch, start, length);
     }
 
-    void setBuf(StringBuffer buf) {
+    void setBuf(StringBuilder buf) {
         this.buf = buf;
     }
 
-    StringBuffer getBuf() {
+    StringBuilder getBuf() {
         if (buf == null)
-            buf = new StringBuffer(0);
+            buf = new StringBuilder(0);
         return buf;
     }
 
diff --git a/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput1/states/AbsXMLLiteral.java b/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput1/states/AbsXMLLiteral.java
index 74c7386667..0735262a8a 100644
--- a/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput1/states/AbsXMLLiteral.java
+++ b/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput1/states/AbsXMLLiteral.java
@@ -42,7 +42,7 @@ public abstract class AbsXMLLiteral extends Frame {
         return "";
     }
     
-    final protected StringBuffer rslt;
+    final protected StringBuilder rslt;
     public final Map<String, String> namespaces; 
 
     private static String prefix(String qname) {
@@ -63,7 +63,7 @@ public abstract class AbsXMLLiteral extends Frame {
         rslt.append(s);
     }
 
-    public AbsXMLLiteral(FrameI p, AbsXMLContext x, StringBuffer r) {
+    public AbsXMLLiteral(FrameI p, AbsXMLContext x, StringBuilder r) {
         super(p, x);
         rslt = r;
         namespaces = xmlNameSpace;
@@ -75,7 +75,7 @@ public abstract class AbsXMLLiteral extends Frame {
     }
     public AbsXMLLiteral(XMLHandler h,AbsXMLContext x) {
         super(h, x);
-        rslt = new StringBuffer();
+        rslt = new StringBuilder();
         namespaces = xmlNameSpace;
     }
     
diff --git a/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput1/states/OuterXMLLiteral.java b/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput1/states/OuterXMLLiteral.java
index 1efa7b1400..7fc2b1ee53 100644
--- a/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput1/states/OuterXMLLiteral.java
+++ b/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput1/states/OuterXMLLiteral.java
@@ -31,7 +31,7 @@ public class OuterXMLLiteral extends AbsXMLLiteral {
    final String parseType;
     
     public OuterXMLLiteral(WantsObjectFrameI s, AbsXMLContext x, String pt) {
-        super(s, x, new StringBuffer());
+        super(s, x, new StringBuilder());
         parseType = pt;
         
     }
diff --git a/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/BaseXMLWriter.java b/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/BaseXMLWriter.java
index c675c5d554..07eac7411e 100644
--- a/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/BaseXMLWriter.java
+++ b/jena-core/src/main/java/org/apache/jena/rdfxml/xmloutput/impl/BaseXMLWriter.java
@@ -569,7 +569,7 @@ abstract public class BaseXMLWriter implements RDFXMLWriterI {
 	static private final char ESCAPE = 'X';
 
 	static private String escapedId(String id) {
-		StringBuffer result = new StringBuffer();
+		StringBuilder result = new StringBuilder();
 		for (int i = 0; i < id.length(); i++) {
 			char ch = id.charAt(i);
 			if (ch != ESCAPE
@@ -584,7 +584,7 @@ abstract public class BaseXMLWriter implements RDFXMLWriterI {
 
     static final char [] hexchar = "0123456789abcdef".toCharArray();
 
-	static private void escape( StringBuffer sb, char ch) {
+	static private void escape( StringBuilder sb, char ch) {
 		sb.append( ESCAPE );
 		int charcode = ch;
 		do {
@@ -865,7 +865,7 @@ abstract public class BaseXMLWriter implements RDFXMLWriterI {
     }
 
     static private String flags2str(int f) {
-	StringBuffer oldValue = new StringBuffer(64);
+	StringBuilder oldValue = new StringBuilder(64);
 	if ( (f&IRIRelativize.SAMEDOCUMENT)!=0 )
 	   oldValue.append( "same-document, " );
 	if ( (f&IRIRelativize.NETWORK)!=0 )
diff --git a/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/FBRuleInfGraph.java b/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/FBRuleInfGraph.java
index efb9303313..54377e9c37 100644
--- a/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/FBRuleInfGraph.java
+++ b/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/FBRuleInfGraph.java
@@ -744,7 +744,7 @@ public class FBRuleInfGraph  extends BasicForwardRuleInfGraph implements Backwar
                 Object rVal = rNode.getLiteralValue();
                 if (rVal instanceof Functor) {
                     Functor rFunc = (Functor)rVal;
-                    StringBuffer description = new StringBuffer();
+                    StringBuilder description = new StringBuilder();
                     String nature = rFunc.getName();
                     String type = rFunc.getArgs()[0].toString();
                     String text = rFunc.getArgs()[1].toString();
diff --git a/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/BindingVector.java b/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/BindingVector.java
index 294b561f4e..1ae49f5d78 100644
--- a/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/BindingVector.java
+++ b/jena-core/src/main/java/org/apache/jena/reasoner/rulesys/impl/BindingVector.java
@@ -205,7 +205,7 @@ public class BindingVector implements BindingEnvironment {
      */
     @Override
     public String toString() {
-        StringBuffer buffer = new StringBuffer();
+        StringBuilder buffer = new StringBuilder();
         for ( Node anEnvironment : environment )
         {
             if ( anEnvironment == null )
diff --git a/jena-core/src/main/java/org/apache/jena/reasoner/transitiveReasoner/GraphNode.java b/jena-core/src/main/java/org/apache/jena/reasoner/transitiveReasoner/GraphNode.java
index 4ae189b7b6..0e098ead26 100644
--- a/jena-core/src/main/java/org/apache/jena/reasoner/transitiveReasoner/GraphNode.java
+++ b/jena-core/src/main/java/org/apache/jena/reasoner/transitiveReasoner/GraphNode.java
@@ -452,7 +452,7 @@ class GraphNode {
      * Dump a set to a string for debug.
      */
     private static String dumpSet(Set<GraphNode> s) {
-    	StringBuffer sb = new StringBuffer();
+    	StringBuilder sb = new StringBuilder();
     	sb.append("{");
     	boolean started = false;
         for ( GraphNode value : s )
diff --git a/jena-core/src/main/java/org/apache/jena/reasoner/transitiveReasoner/TransitiveGraphCache.java b/jena-core/src/main/java/org/apache/jena/reasoner/transitiveReasoner/TransitiveGraphCache.java
index 5dfeb1f796..d121359677 100644
--- a/jena-core/src/main/java/org/apache/jena/reasoner/transitiveReasoner/TransitiveGraphCache.java
+++ b/jena-core/src/main/java/org/apache/jena/reasoner/transitiveReasoner/TransitiveGraphCache.java
@@ -642,7 +642,7 @@ public class TransitiveGraphCache implements Finder {
      * Dump a description of the cache to a string for debug.
      */
     public String dump() {
-    	StringBuffer sb = new StringBuffer();
+    	StringBuilder sb = new StringBuilder();
         for ( GraphNode n : nodeMap.values() )
         {
             sb.append( n.dump() );
diff --git a/jena-core/src/main/java/org/apache/jena/util/OneToManyMap.java b/jena-core/src/main/java/org/apache/jena/util/OneToManyMap.java
index 026d817eb9..3fac70d56f 100644
--- a/jena-core/src/main/java/org/apache/jena/util/OneToManyMap.java
+++ b/jena-core/src/main/java/org/apache/jena/util/OneToManyMap.java
@@ -395,7 +395,7 @@ public class OneToManyMap<From, To> implements Map<From, To>
      * </p>
      */
     @Override public String toString() {
-        StringBuffer buf = new StringBuffer( "OneToManyMap{" );
+        StringBuilder buf = new StringBuilder( "OneToManyMap{" );
         String sep = "";
 
         for ( From key : keySet() )
diff --git a/jena-core/src/main/java/org/apache/jena/util/URIref.java b/jena-core/src/main/java/org/apache/jena/util/URIref.java
index 9148b936e0..d54891742b 100644
--- a/jena-core/src/main/java/org/apache/jena/util/URIref.java
+++ b/jena-core/src/main/java/org/apache/jena/util/URIref.java
@@ -24,6 +24,8 @@
 
 package org.apache.jena.util;
 
+import java.nio.charset.StandardCharsets;
+
 import javax.xml.crypto.URIReference;
 
 import org.apache.jena.atlas.logging.Log;
@@ -35,7 +37,7 @@ import org.apache.jena.atlas.logging.Log;
  * http://lists.w3.org/Archives/Public/uri/2001Sep/0009.html
  */
 public class URIref extends Object {
-    
+
     /** Convert a Unicode string, first to UTF-8 and then to
      * an RFC 2396 compliant URI with optional fragment identifier
      * using %NN escape mechanism as appropriate.
@@ -43,10 +45,9 @@ public class URIref extends Object {
      * The '%' character must be followed by two hexadecimal digits.
      * @param unicode The uri, in characters specified by RFC 2396 + '#'
      * @return The corresponding Unicode String
-     */ 
+     */
     static public String encode(String unicode) {
-        try {
-        byte utf8[] = unicode.getBytes("UTF-8");
+        byte utf8[] = unicode.getBytes(StandardCharsets.UTF_8);
         byte rsltAscii[] = new byte[utf8.length*6];
         int in = 0;
         int out = 0;
@@ -57,12 +58,12 @@ public class URIref extends Object {
                 case (byte)'0': case (byte)'1': case (byte)'2': case (byte)'3': case (byte)'4': case (byte)'5': case (byte)'6': case (byte)'7': case (byte)'8': case (byte)'9':
                 case (byte)';': case (byte)'/': case (byte)'?': case (byte)':': case (byte)'@': case (byte)'&': case (byte)'=': case (byte)'+': case (byte)'$': case (byte)',':
                 case (byte)'-': case (byte)'_': case (byte)'.': case (byte)'!': case (byte)'~': case (byte)'*': case (byte)'\'': case (byte)'(': case (byte)')':
-                case (byte)'#': 
+                case (byte)'#':
                 case (byte)'[': case (byte)']':
                     rsltAscii[out] = utf8[in];
-                    out++;
-                    in++;
-                    break;
+                out++;
+                in++;
+                break;
                 default : // case (byte) '%':
                     if (utf8[in] == '%')
                     {
@@ -93,16 +94,12 @@ public class URIref extends Object {
                     rsltAscii[out++] = hexEncode(c % 16) ;
                     in++ ;
                     break ;
-                }
-        }
-        return new String(rsltAscii,0,out,"US-ASCII");
-        }
-        catch ( java.io.UnsupportedEncodingException e ) {
-            throw new Error( "The JVM is required to support UTF-8 and US-ASCII encodings.");
+            }
         }
+        return new String(rsltAscii,0,out,StandardCharsets.UTF_8);
     }
-    
-    /** Convert a URI, in US-ASCII, with escaped characters taken from UTF-8, 
+
+    /** Convert a URI, in US-ASCII, with escaped characters taken from UTF-8,
      * to the corresponding Unicode string.
      * On ill-formed input the results are undefined, specifically if
      * the unescaped version is not a UTF-8 String, some String will be
@@ -114,12 +111,12 @@ public class URIref extends Object {
      */
     static public String decode(String uri) {
         try {
-            byte ascii[] = uri.getBytes("US-ASCII");
+            byte ascii[] = uri.getBytes(StandardCharsets.US_ASCII);
             byte utf8[] = new byte[ascii.length];
             int in = 0;
             int out = 0;
             while ( in < ascii.length ) {
-                if ( ascii[in] == (byte)'%' 
+                if ( ascii[in] == (byte)'%'
                      && ( ascii[in+1] != '2'
                        || ascii[in+2] != '5' ) ) {
                     in++;
@@ -129,28 +126,25 @@ public class URIref extends Object {
                     utf8[out++] = ascii[in++];
                 }
             }
-            return new String(utf8,0,out,"UTF-8");
-        }
-        catch ( java.io.UnsupportedEncodingException e ) {
-            throw new Error( "The JVM is required to support UTF-8 and US-ASCII encodings.");
+            return new String(utf8,0,out,StandardCharsets.UTF_8);
         }
         catch ( ArrayIndexOutOfBoundsException ee ) {
             throw new IllegalArgumentException("Incomplete Hex escape sequence in " + uri );
         }
     }
-    
+
     static private byte hexEncode(int i ) {
         if (i<10)
             return (byte) ('0' + i);
         else
             return (byte)('A' + i - 10);
     }
-    
+
     static private int hexDecode(byte b ) {
-        switch (b) { 
+        switch (b) {
             case (byte)'a': case (byte)'b': case (byte)'c': case (byte)'d': case (byte)'e': case (byte)'f':
              return ((b)&255)-'a'+10;
-            case (byte)'A': case (byte)'B': case (byte)'C': case (byte)'D': case (byte)'E': case (byte)'F': 
+            case (byte)'A': case (byte)'B': case (byte)'C': case (byte)'D': case (byte)'E': case (byte)'F':
             return b - (byte)'A' + 10;
             case (byte)'0': case (byte)'1': case (byte)'2': case (byte)'3': case (byte)'4': case (byte)'5': case (byte)'6': case (byte)'7': case (byte)'8': case (byte)'9':
                 return b - (byte)'0';
diff --git a/jena-core/src/test/java/org/apache/jena/assembler/test/TestRuleSet.java b/jena-core/src/test/java/org/apache/jena/assembler/test/TestRuleSet.java
index a0445fcd6a..aa99fc58eb 100644
--- a/jena-core/src/test/java/org/apache/jena/assembler/test/TestRuleSet.java
+++ b/jena-core/src/test/java/org/apache/jena/assembler/test/TestRuleSet.java
@@ -31,20 +31,20 @@ public class TestRuleSet extends AssemblerTestBase
 
     @Override protected Class<? extends Assembler> getAssemblerClass()
         { throw new BrokenException( "TestAssemblers does not need this method" ); }
-    
+
     public void testEmpty()
         {
-        assertEquals( Collections.EMPTY_LIST, RuleSet.empty.getRules() );
+        assertEquals( Collections.emptyList(), RuleSet.empty.getRules() );
         assertEquals( RuleSet.empty, RuleSet.create( Collections.<Rule>emptyList() ) );
         }
-    
+
     public void testEmptyRuleSet()
-        { 
+        {
         RuleSet s = RuleSet.create( Collections.<Rule>emptyList() );
-        assertEquals( Collections.EMPTY_LIST, s.getRules() );
-        assertNotSame( Collections.EMPTY_LIST, s.getRules() );
+        assertEquals( Collections.emptyList(), s.getRules() );
+        assertNotSame( Collections.emptyList(), s.getRules() );
         }
-    
+
     public void testSingleRuleSet()
         {
         Rule rule = Rule.parseRule( "[(?a P b) -> (?a rdf:type T)]" );
@@ -53,7 +53,7 @@ public class TestRuleSet extends AssemblerTestBase
         assertEquals( list, s.getRules() );
         assertNotSame( list, s.getRules() );
         }
-    
+
     public void testMultipleRuleSet()
         {
         Rule A = Rule.parseRule( "[(?a P b) -> (?a rdf:type T)]" );
@@ -63,14 +63,14 @@ public class TestRuleSet extends AssemblerTestBase
         assertEquals( rules, s.getRules() );
         assertNotSame( rules, s.getRules() );
         }
-    
+
     public void testFactoryForString()
         {
         String ruleString = "[(?a P b) -> (?a rdf:type T)]";
         RuleSet s = RuleSet.create( ruleString );
         assertEquals( Rule.parseRules( ruleString ), s.getRules() );
         }
-    
+
     public void testHashAndEquality()
         {
         String A = "[(?x breaks ?y) -> (?y brokenBy ?x)]";
diff --git a/jena-core/src/test/java/org/apache/jena/graph/test/GraphTestBase.java b/jena-core/src/test/java/org/apache/jena/graph/test/GraphTestBase.java
index 07093acf05..6c789f1500 100644
--- a/jena-core/src/test/java/org/apache/jena/graph/test/GraphTestBase.java
+++ b/jena-core/src/test/java/org/apache/jena/graph/test/GraphTestBase.java
@@ -227,7 +227,7 @@ public class GraphTestBase extends JenaTestBase
     */
     public static String nice( Graph g, Map<Node, Object> bnodes )
         {
-        StringBuffer b = new StringBuffer( g.size() * 100 );
+        StringBuilder b = new StringBuilder( g.size() * 100 );
         ExtendedIterator<Triple> it = GraphUtil.findAll( g );
         while (it.hasNext()) niceTriple( b, bnodes, it.next() );
         return b.toString();
@@ -238,7 +238,7 @@ public class GraphTestBase extends JenaTestBase
         of the triple <code>t</code> on a new line, using (and updating)
         <code>bnodes</code> to supply "nice" strings for any blank nodes.
     */
-    protected static void niceTriple( StringBuffer b, Map<Node, Object> bnodes, Triple t )
+    protected static void niceTriple( StringBuilder b, Map<Node, Object> bnodes, Triple t )
         {
         b.append( "\n    " );
         appendNode( b, bnodes, t.getSubject() );
@@ -258,7 +258,7 @@ public class GraphTestBase extends JenaTestBase
         is a bnode, re-use any existing string for it from <code>bnodes</code>
         or make a new one of the form <i>_bNNNN</i> with NNNN a new integer.
     */
-    protected static void appendNode( StringBuffer b, Map<Node, Object> bnodes, Node n )
+    protected static void appendNode( StringBuilder b, Map<Node, Object> bnodes, Node n )
         {
         b.append( ' ' );
         if (n.isBlank())
diff --git a/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput0/MemoryLeakTest.java b/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput0/MemoryLeakTest.java
deleted file mode 100644
index 923f247eb0..0000000000
--- a/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput0/MemoryLeakTest.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.jena.rdfxml.xmlinput0;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.PrintStream;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-public class MemoryLeakTest extends TestCase {
-
-    static public Test suite() {
-        TestSuite suite = new TestSuite("ARP Memory Leak");
-
-        suite.addTest(new MemoryLeakTest("testWineMemoryLeak"));
-        return suite;
-    }
-
-
-    public MemoryLeakTest(String arg0) {
-        super(arg0);
-    }
-
-    public void testWineMemoryLeak() {
-        // warmup
-        Runtime rt = Runtime.getRuntime();
-        loadFile("testing0/wg/miscellaneous/consistent001.rdf");
-        rt.gc();
-        rt.gc();
-        rt.gc();
-        long inUse = rt.totalMemory() - rt.freeMemory();
-        loadFile("testing0/arp/wineRenamed.rdf");
-        rt.gc();
-        rt.gc();
-        rt.gc();
-        long leaked = rt.totalMemory() - rt.freeMemory() - inUse;
-        System.err.println("Leaked: "+ leaked);
-
-
-    }
-
-    @SuppressWarnings("deprecation")
-    static void loadFile(String fileName) {
-        PrintStream oldOut = System.out;
-        try ( PrintStream out = new PrintStream(new OutputStream() {
-                @Override
-                public void write(int b) throws IOException {
-                }
-            });) {
-            NTriple.mainEh(new String[] { "-b", "http://eg.org/", "-t", fileName }, null, null);
-        } finally { System.setOut(oldOut); }
-    }
-
-}
diff --git a/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput0/TestErrorMsg.java b/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput0/TestErrorMsg.java
index 3db8eda284..77e362bd9d 100644
--- a/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput0/TestErrorMsg.java
+++ b/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput0/TestErrorMsg.java
@@ -63,7 +63,7 @@ public class TestErrorMsg extends TestCase {
 		String regexPresent,
 		String regexAbsent)
 		throws IOException {
-		final StringBuffer buf = new StringBuffer();
+		final StringBuilder buf = new StringBuilder();
         ARP0 arp = new ARP0();
 		arp.getHandlers().setErrorHandler(new ErrorHandler() {
 
diff --git a/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput0/TestPropEltErrorMsg.java b/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput0/TestPropEltErrorMsg.java
index ee2cee3589..08eea26299 100644
--- a/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput0/TestPropEltErrorMsg.java
+++ b/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput0/TestPropEltErrorMsg.java
@@ -445,7 +445,7 @@ public class TestPropEltErrorMsg extends TestCase {
 	@Override
     protected void runTest() {
         Attributes noAtts = new Atts();
-		final StringBuffer buf = new StringBuffer();
+		final StringBuilder buf = new StringBuilder();
 		XMLHandler arp = new XMLHandler();
 		arp.getHandlers().setErrorHandler(new ErrorHandler() {
 
diff --git a/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput0/states/TestARPStates.java b/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput0/states/TestARPStates.java
index 0b62f08042..4b84599546 100644
--- a/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput0/states/TestARPStates.java
+++ b/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput0/states/TestARPStates.java
@@ -21,6 +21,7 @@ package org.apache.jena.rdfxml.xmlinput0.states;
 import java.io.FileReader;
 import java.io.IOException;
 import java.io.LineNumberReader;
+import java.nio.charset.StandardCharsets;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -36,7 +37,7 @@ public class TestARPStates extends TestCase {
         TestSuite rslt = new TestSuite();
         //rslt.setName("ARP state machine");
         Map<String, TestSuite> tests = new HashMap<>();
-        try ( LineNumberReader r = new LineNumberReader(new FileReader(TestData.dataFile)) ) {
+        try ( LineNumberReader r = new LineNumberReader(new FileReader(TestData.dataFile, StandardCharsets.UTF_8)) ) {
             while (true) {
                 String line = r.readLine();
                 if (line == null)
diff --git a/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput0/states/TestData.java b/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput0/states/TestData.java
index f8f403fc5d..844f1d513f 100644
--- a/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput0/states/TestData.java
+++ b/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput0/states/TestData.java
@@ -21,6 +21,7 @@ package org.apache.jena.rdfxml.xmlinput0.states;
 import java.io.FileWriter ;
 import java.io.IOException ;
 import java.lang.reflect.InvocationTargetException ;
+import java.nio.charset.StandardCharsets;
 import java.util.* ;
 
 import org.apache.jena.rdfxml.xmlinput0.ARPErrorNumbers;
@@ -35,7 +36,7 @@ import org.xml.sax.SAXParseException ;
  * an error
  */
 public class TestData implements ARPErrorNumbers{
-    
+
     private static final URIReference foo = URIReference.createNoChecks("http://foo/");
     private static final URIReference bar = URIReference.createNoChecks("http://bar/");
 
@@ -46,12 +47,12 @@ public class TestData implements ARPErrorNumbers{
 //        } catch (SAXParseException e) {
 //           e.printStackTrace();
 //        }
-//        
+//
 //    }
     static String dataFile = "testing0/arp/state.txt";
     static AbsXMLContext xmlContext;
-    
-    static { 
+
+    static {
         try {
             xmlContext= new XMLBaselessContext(xmlHandler,
                     ERR_RESOLVING_AGAINST_RELATIVE_BASE).withBase(xmlHandler,"http://example.org/base/");
@@ -60,20 +61,20 @@ public class TestData implements ARPErrorNumbers{
         }
     }
     static TestFrame testFrame = new TestFrame(xmlHandler, xmlContext);
-    
+
     static char white[] = { 32, 32, 32, 32, 32 };
 
     static char black[] = { 97, 98, 99, 100, 101 };
 
     private static final AttrEvent xmlSpace = new AttrEvent(QName.xml("space"));
-    static Event allEvents[] = { 
+    static Event allEvents[] = {
            new ElementEvent(QName.rdf("li")),
             new ElementEvent(QName.rdf("Description")),
             new ElementEvent("F",QName.rdf("RDF")),
             new ElementEvent(QName.eg("Goo")),
             new AttrEvent(QName.xml("base")),
             new AttrEvent("g", QName.xml("lang"), "en"),
-            new AttrEvent(QName.eg("foo")), 
+            new AttrEvent(QName.eg("foo")),
             xmlSpace,
             new AttrEvent("B", QName.rdf("bagID"), "en"),
             new AttrEvent(QName.rdf("about")),
@@ -110,7 +111,7 @@ public class TestData implements ARPErrorNumbers{
                     from.characters(black, 0, 5);
                     return from;
                 }
-            }, 
+            },
             new InternalEvent("P", "pred-object") {
                 @Override
                 FrameI apply(FrameI from, Attributes att) {
@@ -212,7 +213,7 @@ public class TestData implements ARPErrorNumbers{
     void characterize(Class< ? extends FrameI> f){
         inCharacterize = true;
         int sz = eventList.size;
-        StringBuffer rslt = new StringBuffer();
+        StringBuilder rslt = new StringBuilder();
         String skip = null;
         eventList.test(f);
         rslt.append(eventListName(f,null));
@@ -243,7 +244,7 @@ public class TestData implements ARPErrorNumbers{
     }
 
     private String eventListName(Class< ? extends FrameI> f, Class< ? extends FrameI> f2) {
-        StringBuffer rslt = new StringBuffer();
+        StringBuilder rslt = new StringBuilder();
         rslt.append(stateName(f, f2));
         for (int i=0;i<eventList.size;i++) {
            rslt.append(' ');
@@ -265,18 +266,18 @@ public class TestData implements ARPErrorNumbers{
     }
 
     private String testInfo(Class< ? extends FrameI> f) {
-        return 
+        return
         eventList.testFailure ? (eventList.testException ? "!" : "?") :
-           (stateName(eventList.testResult.getClass(),f) + " " + 
+           (stateName(eventList.testResult.getClass(),f) + " " +
                 xmlHandler.info() + " " + testFrame.info());
     }
 
     static Class<?> tryClasses[] = { FrameI.class, AbsXMLLiteral.class,
             HasSubjectFrameI.class, WantsObjectFrameI.class };
 
-  
+
     static FrameI create(Class<? extends FrameI> cl) throws InstantiationException, IllegalAccessException, InvocationTargetException {
-       FrameI frame = null; 
+       FrameI frame = null;
        Object args[] = state2Args.get(cl);
         Class<?> types[] = new Class<?>[args.length];
         for (int i = 1; i < args.length; i++) {
@@ -302,7 +303,7 @@ public class TestData implements ARPErrorNumbers{
         }
         return frame;
     }
-    
+
     void expand(Class< ? extends FrameI> f) {
         if (AbsXMLLiteral.class.isAssignableFrom(f))
             return;
@@ -313,7 +314,7 @@ public class TestData implements ARPErrorNumbers{
         if (localCount % 20000 == 0)
             stats(f);
         if (!eventList.test(f)) {
-            if (!shorterTestFails(f)) 
+            if (!shorterTestFails(f))
                 data.add(eventListName(f,null)+" $ " + testInfo(f));
             return;
         }
@@ -341,9 +342,9 @@ public class TestData implements ARPErrorNumbers{
             eventList.pop();
         }
     }
-    
+
     private Random dice = new Random(23);
-    
+
     private boolean randomPurgeXMLAttrs() {
         int weight = 0;
         eventList.rewind();
@@ -375,8 +376,8 @@ public class TestData implements ARPErrorNumbers{
     Set<String> data = new TreeSet<>(new Comparator<String>(){
         @Override
         public int compare(String arg1, String arg2) {
-            StringBuffer b1 = new StringBuffer(arg1).reverse();
-            StringBuffer b2 = new StringBuffer(arg2).reverse();
+            StringBuilder b1 = new StringBuilder(arg1).reverse();
+            StringBuilder b2 = new StringBuilder(arg2).reverse();
             return b1.toString().compareTo(b2.toString());
         }}
             );
@@ -407,7 +408,7 @@ public class TestData implements ARPErrorNumbers{
             }
             stats(f);
         }
-        try ( FileWriter fw = new FileWriter(dataFile) ) {
+        try ( FileWriter fw = new FileWriter(dataFile, StandardCharsets.UTF_8) ) {
             Iterator<String> it2 = data.iterator();
             while (it.hasNext()) {
                 fw.write(it2.next());
diff --git a/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput1/TestErrorMsg.java b/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput1/TestErrorMsg.java
index b649be22ab..fd704f24f2 100644
--- a/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput1/TestErrorMsg.java
+++ b/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput1/TestErrorMsg.java
@@ -63,7 +63,7 @@ public class TestErrorMsg extends TestCase {
 		String regexPresent,
 		String regexAbsent)
 		throws IOException {
-		final StringBuffer buf = new StringBuffer();
+		final StringBuilder buf = new StringBuilder();
         ARP arp = new ARP();
 		arp.getHandlers().setErrorHandler(new ErrorHandler() {
 
diff --git a/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput1/TestPropEltErrorMsg.java b/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput1/TestPropEltErrorMsg.java
index 2294207a9c..293cef2a53 100644
--- a/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput1/TestPropEltErrorMsg.java
+++ b/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput1/TestPropEltErrorMsg.java
@@ -445,7 +445,7 @@ public class TestPropEltErrorMsg extends TestCase {
 	@Override
     protected void runTest() {
         Attributes noAtts = new Atts();
-		final StringBuffer buf = new StringBuffer();
+		final StringBuilder buf = new StringBuilder();
 		XMLHandler arp = new XMLHandler();
 		arp.getHandlers().setErrorHandler(new ErrorHandler() {
 
diff --git a/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput1/states/TestData.java b/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput1/states/TestData.java
index f3321f6919..ee12fca32d 100644
--- a/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput1/states/TestData.java
+++ b/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput1/states/TestData.java
@@ -212,7 +212,7 @@ public class TestData implements ARPErrorNumbers{
     void characterize(Class< ? extends FrameI> f){
         inCharacterize = true;
         int sz = eventList.size;
-        StringBuffer rslt = new StringBuffer();
+        StringBuilder rslt = new StringBuilder();
         String skip = null;
         eventList.test(f);
         rslt.append(eventListName(f,null));
@@ -243,7 +243,7 @@ public class TestData implements ARPErrorNumbers{
     }
 
     private String eventListName(Class< ? extends FrameI> f, Class< ? extends FrameI> f2) {
-        StringBuffer rslt = new StringBuffer();
+        StringBuilder rslt = new StringBuilder();
         rslt.append(stateName(f, f2));
         for (int i=0;i<eventList.size;i++) {
            rslt.append(' ');
@@ -375,8 +375,8 @@ public class TestData implements ARPErrorNumbers{
     Set<String> data = new TreeSet<>(new Comparator<String>(){
         @Override
         public int compare(String arg1, String arg2) {
-            StringBuffer b1 = new StringBuffer(arg1).reverse();
-            StringBuffer b2 = new StringBuffer(arg2).reverse();
+            StringBuilder b1 = new StringBuilder(arg1).reverse();
+            StringBuilder b2 = new StringBuilder(arg2).reverse();
             return b1.toString().compareTo(b2.toString());
         }}
             );
diff --git a/jena-core/src/test/java/org/apache/jena/rdfxml/xmloutput/TestXMLFeatures.java b/jena-core/src/test/java/org/apache/jena/rdfxml/xmloutput/TestXMLFeatures.java
index c1fc70c5d8..ec19259bc7 100644
--- a/jena-core/src/test/java/org/apache/jena/rdfxml/xmloutput/TestXMLFeatures.java
+++ b/jena-core/src/test/java/org/apache/jena/rdfxml/xmloutput/TestXMLFeatures.java
@@ -19,6 +19,7 @@
 package org.apache.jena.rdfxml.xmloutput;
 
 import java.io.* ;
+import java.nio.charset.StandardCharsets;
 import java.util.Collection ;
 import java.util.HashSet ;
 import java.util.Iterator ;
@@ -503,7 +504,7 @@ public class TestXMLFeatures extends XMLOutputTestBase {
 		    RDFWriterI writer = m.getWriter(lang);
 		    writer.setProperty("relativeURIs", relativeParam);
 		    writer.write(m, bos, base);
-	        contents = bos.toString("UTF8");
+	        contents = bos.toString(StandardCharsets.UTF_8);
 		}
 
 		try {
diff --git a/jena-core/src/test/java/org/apache/jena/reasoner/rulesys/test/OWLWGTester.java b/jena-core/src/test/java/org/apache/jena/reasoner/rulesys/test/OWLWGTester.java
index 6064d56dd5..d90c24fff7 100755
--- a/jena-core/src/test/java/org/apache/jena/reasoner/rulesys/test/OWLWGTester.java
+++ b/jena-core/src/test/java/org/apache/jena/reasoner/rulesys/test/OWLWGTester.java
@@ -22,6 +22,7 @@ import java.io.BufferedReader ;
 import java.io.FileReader ;
 import java.io.IOException ;
 import java.io.Reader ;
+import java.nio.charset.StandardCharsets;
 
 import org.apache.jena.rdf.model.* ;
 import org.apache.jena.reasoner.InfGraph ;
@@ -50,51 +51,51 @@ import org.slf4j.LoggerFactory ;
 public class OWLWGTester {
     /** The base URI in which the files are purported to reside */
     public static String BASE_URI = "http://www.w3.org/2002/03owlt/";
-    
+
     /** The base directory in which the test data is actually stored */
     public static String baseDir = "testing/wg/";
-    
+
     /** The namespace for the test specification schema */
     public static final String NS_OTEST = "http://www.w3.org/2002/03owlt/testOntology#";
-    
+
     /** The namespace for the test specification schema */
     public static final String NS_RTEST = "http://www.w3.org/2000/10/rdf-tests/rdfcore/testSchema#";
-    
+
     /** The rdf class for positive tests */
     public static final Resource PositiveEntailmentTest;
-    
+
     /** The rdf class for positive tests */
     public static final Resource NegativeEntailmentTest;
-    
+
     /** The predicate defining the description of the test */
     public static final Property descriptionP;
-    
+
     /** The predicate defining a premise for the test */
     public static final Property premiseDocumentP;
-    
+
     /** The predicate defining the conclusion from the test */
     public static final Property conclusionDocumentP;
-    
+
     /** The predicate defining the status of the test */
     public static final Property statusP;
-    
+
     /** The reasoner factory being tested */
     protected ReasonerFactory reasonerF;
-    
+
     /** The configuration information for the reasoner */
     protected Resource configuration;
-    
+
     /** The test case which has invoke this test */
     protected TestCase testcase;
-    
+
     /** The processing time used since testcase creation */
     protected static long timeCost = 0;
-    
+
     /** The total number of tests run */
     protected static int numTests = 0;
-    
+
     protected static Logger logger = LoggerFactory.getLogger(OWLWGTester.class);
-    
+
     // Static initializer for the predicates
     static {
         PositiveEntailmentTest = ResourceFactory.createProperty(NS_OTEST, "PositiveEntailmentTest");
@@ -104,7 +105,7 @@ public class OWLWGTester {
         conclusionDocumentP = ResourceFactory.createProperty(NS_RTEST, "conclusionDocument");
         statusP = ResourceFactory.createProperty(NS_RTEST, "status");
     }
-    
+
     /**
      * Constructor
      * @param reasonerF the factory for the reasoner to be tested
@@ -116,7 +117,7 @@ public class OWLWGTester {
         this.testcase = testcase;
         this.configuration = configuration;
     }
-    
+
     /**
      * Run all the tests in the manifest
      * @param manifestFile the name of the manifest file relative to baseDir
@@ -160,7 +161,7 @@ public class OWLWGTester {
         String description = test.getRequiredProperty(descriptionP).getObject().toString();
         String status = test.getRequiredProperty(statusP).getObject().toString();
         logger.debug("WG test " + test.getURI() + " - " + status);
-        
+
         // Load up the premise documents
         Model premises = ModelFactory.createDefaultModel();
         for (StmtIterator premisesI = test.listProperties(premiseDocumentP); premisesI.hasNext(); ) {
@@ -170,7 +171,7 @@ public class OWLWGTester {
         // Load up the conclusions document
         Resource conclusionsRes = (Resource) test.getRequiredProperty(conclusionDocumentP).getObject();
         Model conclusions = loadFile(conclusionsRes.toString() + ".rdf");
-        
+
         // Construct the inferred graph
         // Optional logging
         if (log) {
@@ -185,11 +186,11 @@ public class OWLWGTester {
         long t1 = System.currentTimeMillis();
         InfGraph graph = reasoner.bind(premises.getGraph());
         Model result = ModelFactory.createModelForGraph(graph);
-        
+
         if (stats && graph instanceof FBRuleInfGraph) {
 //            ((FBRuleInfGraph)graph).resetLPProfile(true);
         }
-        
+
         // Check the results against the official conclusions
         boolean correct = true;
         if (testType.equals(PositiveEntailmentTest)) {
@@ -204,12 +205,12 @@ public class OWLWGTester {
         if (stats) {
             logger.info("Time=" + (t2-t1) + "ms for " + test.getURI());
             printStats();
-            
+
             if (graph instanceof FBRuleInfGraph) {
                 ((FBRuleInfGraph)graph).printLPProfile();
             }
         }
-        
+
         if (!correct) {
             // List all the forward deductions for debugging
 //            if (graph instanceof FBRuleInfGraph) {
@@ -219,8 +220,8 @@ public class OWLWGTester {
 //                org.apache.jena.PrintUtil.printOut(deductions.find(null,null,null));
 //            }
         }
-        
-        // Signal the results        
+
+        // Signal the results
         if (testcase != null) {
             Assert.assertTrue("Test: " + test + "\n" +  reasonerF.getURI() + "\n" + description, correct);
         }
@@ -228,7 +229,7 @@ public class OWLWGTester {
     }
 
     /**
-     * Utility to load a file as a Model. 
+     * Utility to load a file as a Model.
      * Files are assumed to be relative to the BASE_URI.
      * @param file the file name, relative to baseDir
      * @return the loaded Model
@@ -245,12 +246,12 @@ public class OWLWGTester {
         if (fname.startsWith(BASE_URI)) {
             fname = fname.substring(BASE_URI.length());
         }
-        Reader reader = new BufferedReader(new FileReader(baseDir + fname));
+        Reader reader = new BufferedReader(new FileReader(baseDir + fname, StandardCharsets.UTF_8));
         result.read(reader, BASE_URI + fname, langType);
         return result;
     }
-    
-    
+
+
     /**
      * Log (info level) some summary information on the timecost of the tests.
      */
diff --git a/jena-core/src/test/java/org/apache/jena/reasoner/rulesys/test/WebOntTestHarness.java b/jena-core/src/test/java/org/apache/jena/reasoner/rulesys/test/WebOntTestHarness.java
index f1cb163ab0..5afe2c947c 100644
--- a/jena-core/src/test/java/org/apache/jena/reasoner/rulesys/test/WebOntTestHarness.java
+++ b/jena-core/src/test/java/org/apache/jena/reasoner/rulesys/test/WebOntTestHarness.java
@@ -52,6 +52,7 @@ import java.io.FilenameFilter;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.io.Reader;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -489,7 +490,7 @@ public class WebOntTestHarness {
         if (fname.startsWith(BASE_URI)) {
             fname = fname.substring(BASE_URI.length());
         }
-        Reader reader = new BufferedReader(new FileReader(BASE_TESTDIR + fname));
+        Reader reader = new BufferedReader(new FileReader(BASE_TESTDIR + fname, StandardCharsets.UTF_8));
         model.read(reader, BASE_URI + fname, langType);
         return model;
     }
diff --git a/jena-core/src/test/java/org/apache/jena/reasoner/test/ReasonerTester.java b/jena-core/src/test/java/org/apache/jena/reasoner/test/ReasonerTester.java
index 52b8250970..0cf06d60bb 100644
--- a/jena-core/src/test/java/org/apache/jena/reasoner/test/ReasonerTester.java
+++ b/jena-core/src/test/java/org/apache/jena/reasoner/test/ReasonerTester.java
@@ -22,6 +22,7 @@ import java.io.BufferedReader ;
 import java.io.FileReader ;
 import java.io.IOException ;
 import java.io.Reader ;
+import java.nio.charset.StandardCharsets;
 import java.util.* ;
 
 import junit.framework.TestCase ;
@@ -134,7 +135,7 @@ public class ReasonerTester {
             langType = "N3";
         }
         Model result = ModelFactory.createDefaultModel();
-        Reader reader = new BufferedReader(new FileReader(baseDir + file));
+        Reader reader = new BufferedReader(new FileReader(baseDir + file, StandardCharsets.UTF_8));
         result.read(reader, BASE_URI + file, langType);
         if (cache) {
             sourceCache.put(file, result);
diff --git a/jena-core/src/test/java/org/apache/jena/reasoner/test/TestRDFSReasoners.java b/jena-core/src/test/java/org/apache/jena/reasoner/test/TestRDFSReasoners.java
index 56bd1d2981..f1a99257b4 100644
--- a/jena-core/src/test/java/org/apache/jena/reasoner/test/TestRDFSReasoners.java
+++ b/jena-core/src/test/java/org/apache/jena/reasoner/test/TestRDFSReasoners.java
@@ -19,6 +19,7 @@
 package org.apache.jena.reasoner.test;
 
 import java.io.*;
+import java.nio.charset.StandardCharsets;
 import java.util.Iterator;
 
 import junit.framework.TestCase;
@@ -36,19 +37,19 @@ import org.slf4j.LoggerFactory;
  * Test the set of admissable RDFS reasoners.
  */
 public class TestRDFSReasoners extends ReasonerTestBase {
-    
+
     /** Base URI for the test names */
     public static final String NAMESPACE = "http://www.hpl.hp.com/semweb/2003/query_tester/";
-    
+
     protected static Logger logger = LoggerFactory.getLogger(TestReasoners.class);
 
     /**
      * Boilerplate for junit
-     */ 
+     */
     public TestRDFSReasoners( String name ) {
-        super( name ); 
+        super( name );
     }
-    
+
     /**
      * Boilerplate for junit.
      * This is its own test suite
@@ -57,20 +58,20 @@ public class TestRDFSReasoners extends ReasonerTestBase {
         TestSuite suite = new TestSuite();
         try {
             // FB reasoner doesn't support validation so the full set of wg tests are
-            // commented out            
+            // commented out
 //            constructRDFWGtests(suite, RDFSFBRuleReasonerFactory.theInstance(), null);
             constructQuerytests(suite, "rdfs/manifest-nodirect-noresource.rdf", RDFSFBRuleReasonerFactory.theInstance(), null);
-            
+
             Resource config = newResource().addProperty(ReasonerVocabulary.PROPenableCMPScan, "true" ); // TODO make boolean value work
 //            config.addProperty(ReasonerVocabulary.PROPtraceOn, true);
             constructRDFWGtests(suite, RDFSRuleReasonerFactory.theInstance(), null);
             constructQuerytests(suite, "rdfs/manifest-standard.rdf", RDFSRuleReasonerFactory.theInstance(), config);
-            
+
             suite.addTest(new TestRDFSMisc(RDFSRuleReasonerFactory.theInstance(), null));
 
             Resource configFull = newResource().addProperty(ReasonerVocabulary.PROPsetRDFSLevel, ReasonerVocabulary.RDFS_FULL);
             constructQuerytests(suite, "rdfs/manifest.rdf", RDFSRuleReasonerFactory.theInstance(), configFull);
-            
+
             // This test was needed for the brief time the rdfs12 rules might have been in the standard
             // That's no longer true but left comment out because we might want them for OWL someday
 //            constructQuerytests(suite, "rdfs/manifest-rdfs12.rdf", RDFSRuleReasonerFactory.theInstance(), configFull);
@@ -79,19 +80,19 @@ public class TestRDFSReasoners extends ReasonerTestBase {
             constructQuerytests(suite, "rdfs/manifest-simple.rdf", RDFSRuleReasonerFactory.theInstance(), configSimple);
 
             // Single test case used in debugging, subsumed by above
-//            constructSingleQuerytests(suite, 
-//                                      "rdfs/manifest.rdf", 
-//                                      "http://www.hpl.hp.com/semweb/2003/query_tester/rdfs/test13", 
-//                                      RDFSRuleReasonerFactory.theInstance(), 
+//            constructSingleQuerytests(suite,
+//                                      "rdfs/manifest.rdf",
+//                                      "http://www.hpl.hp.com/semweb/2003/query_tester/rdfs/test13",
+//                                      RDFSRuleReasonerFactory.theInstance(),
 //                                      configFull);
-            
+
         } catch (IOException e) {
             // failed to even built the test harness
             logger.error("Failed to construct RDFS test harness", e);
         }
         return suite;
-    }  
-    
+    }
+
     /**
      * Build a single named query test
      */
@@ -100,7 +101,7 @@ public class TestRDFSReasoners extends ReasonerTestBase {
         Reasoner r = rf.create(config);
         suite.addTest(new TestReasonerFromManifest(tester, test, r));
     }
-    
+
     /**
      * Build the query tests for the given reasoner.
      */
@@ -112,7 +113,7 @@ public class TestRDFSReasoners extends ReasonerTestBase {
             suite.addTest( new TestReasonerFromManifest( tester, test, r ) );
         }
     }
-    
+
     /**
      * Build the working group tests for the given reasoner.
      */
@@ -123,8 +124,8 @@ public class TestRDFSReasoners extends ReasonerTestBase {
             suite.addTest( new TestReasonerWG( tester, test, rf, config ) );
         }
     }
-        
-    
+
+
     /**
      * Build the query tests for the given reasoner.
      */
@@ -135,22 +136,22 @@ public class TestRDFSReasoners extends ReasonerTestBase {
             suite.addTest( new TestReasonerFromManifest( tester, test, reasoner ) );
         }
     }
-    
+
     /**
      * Inner class defining a test framework for invoking a single locally
      * defined query-over-inference test.
      */
     static class TestReasonerFromManifest extends TestCase {
-        
+
         /** The tester which already has the test manifest loaded */
         ReasonerTester tester;
-        
+
         /** The name of the specific test to run */
         String test;
-        
+
         /** The factory for the reasoner type under test */
         Reasoner reasoner;
-        
+
         /** Constructor */
         TestReasonerFromManifest(ReasonerTester tester, String test, Reasoner reasoner) {
             super(test);
@@ -158,8 +159,8 @@ public class TestRDFSReasoners extends ReasonerTestBase {
             this.test = test;
             this.reasoner = reasoner;
         }
-        
-    
+
+
         /**
          * The test runner
          */
@@ -171,25 +172,25 @@ public class TestRDFSReasoners extends ReasonerTestBase {
     }
 
     /**
-     * Inner class defining a test framework for invoking a single 
+     * Inner class defining a test framework for invoking a single
      * RDFCore working group test.
      */
     static class TestReasonerWG extends TestCase {
-        
+
         /** The tester which already has the test manifest loaded */
         WGReasonerTester tester;
-        
+
         /** The name of the specific test to run */
         String test;
-        
+
         /** The factory for the reasoner type under test */
         ReasonerFactory reasonerFactory;
-        
+
         /** An optional configuration model */
         Resource config;
-        
+
         /** Constructor */
-        TestReasonerWG(WGReasonerTester tester, String test, 
+        TestReasonerWG(WGReasonerTester tester, String test,
                                  ReasonerFactory reasonerFactory, Resource config) {
             super(test);
             this.tester = tester;
@@ -197,7 +198,7 @@ public class TestRDFSReasoners extends ReasonerTestBase {
             this.reasonerFactory = reasonerFactory;
             this.config = config;
         }
-        
+
         /**
          * The test runner
          */
@@ -207,19 +208,19 @@ public class TestRDFSReasoners extends ReasonerTestBase {
         }
 
     }
-    
+
     /**
      * Inner class defining the misc extra tests needed to check out a
      * candidate RDFS reasoner.
      */
     static class TestRDFSMisc extends TestCase {
-        
+
         /** The factory for the reasoner type under test */
         ReasonerFactory reasonerFactory;
-        
+
         /** An optional configuration model */
         Resource config;
-        
+
         /** Constructor */
         TestRDFSMisc(ReasonerFactory reasonerFactory, Resource config) {
             super("TestRDFSMisc");
@@ -242,9 +243,9 @@ public class TestRDFSReasoners extends ReasonerTestBase {
                 }
             }
             configuration.addProperty(ReasonerVocabulary.PROPenableCMPScan, "false");
-            assertTrue("scanproperties off", 
+            assertTrue("scanproperties off",
                         !tester.runTest(NAMESPACE + "rdfs/test17", reasonerFactory, null, configuration));
-        
+
             // Check capabilities description
             Reasoner r = reasonerFactory.create(null);
             assertTrue(r.supportsProperty(RDFS.subClassOf));
@@ -269,7 +270,7 @@ public class TestRDFSReasoners extends ReasonerTestBase {
                 langType = "N3";
             }
             Model m = ModelFactory.createDefaultModel();
-            Reader reader = new BufferedReader(new FileReader("testing/reasoners/rdfs/"+file));
+            Reader reader = new BufferedReader(new FileReader("testing/reasoners/rdfs/"+file, StandardCharsets.UTF_8));
             m.read(reader, WGReasonerTester.BASE_URI + file, langType);
             InfGraph g = rf.create(null).bind(m.getGraph());
             ValidityReport report = g.validate();
@@ -281,7 +282,7 @@ public class TestRDFSReasoners extends ReasonerTestBase {
             }
             return report.isValid();
         }
-          
+
     }
-    
+
 }
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/GraphHelper.java b/jena-core/src/test/java/org/apache/jena/testing_framework/GraphHelper.java
index e841127cb4..7688ea4cb7 100644
--- a/jena-core/src/test/java/org/apache/jena/testing_framework/GraphHelper.java
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/GraphHelper.java
@@ -247,7 +247,7 @@ public class GraphHelper extends TestUtils {
 	 * maps already-seen bnodes to their "nice" strings.
 	 */
 	public static String nice(Graph g, Map<Node, Object> bnodes) {
-		StringBuffer b = new StringBuffer(g.size() * 100);
+		StringBuilder b = new StringBuilder(g.size() * 100);
 		ExtendedIterator<Triple> it = GraphUtil.findAll(g);
 		while (it.hasNext())
 			niceTriple(b, bnodes, it.next());
@@ -259,7 +259,7 @@ public class GraphHelper extends TestUtils {
 	 * triple <code>t</code> on a new line, using (and updating)
 	 * <code>bnodes</code> to supply "nice" strings for any blank nodes.
 	 */
-	protected static void niceTriple(StringBuffer b, Map<Node, Object> bnodes,
+	protected static void niceTriple(StringBuilder b, Map<Node, Object> bnodes,
 			Triple t) {
 		b.append("\n    ");
 		appendNode(b, bnodes, t.getSubject());
@@ -279,7 +279,7 @@ public class GraphHelper extends TestUtils {
 	 * re-use any existing string for it from <code>bnodes</code> or make a new
 	 * one of the form <i>_bNNNN</i> with NNNN a new integer.
 	 */
-	protected static void appendNode(StringBuffer b, Map<Node, Object> bnodes,
+	protected static void appendNode(StringBuilder b, Map<Node, Object> bnodes,
 			Node n) {
 		b.append(' ');
 		if (n.isBlank()) {
diff --git a/jena-core/src/test/java/org/apache/jena/testing_framework/NodeCreateUtils.java b/jena-core/src/test/java/org/apache/jena/testing_framework/NodeCreateUtils.java
index a58596ed6c..6989b2797a 100644
--- a/jena-core/src/test/java/org/apache/jena/testing_framework/NodeCreateUtils.java
+++ b/jena-core/src/test/java/org/apache/jena/testing_framework/NodeCreateUtils.java
@@ -104,7 +104,7 @@ public class NodeCreateUtils {
 	public static String unEscape(String spelling) {
 		if (spelling.indexOf('\\') < 0)
 			return spelling;
-		StringBuffer result = new StringBuffer(spelling.length());
+		StringBuilder result = new StringBuilder(spelling.length());
 		int start = 0;
 		while (true) {
 			int b = spelling.indexOf('\\', start);
diff --git a/jena-core/src/test/java/org/apache/jena/ttl_test/JenaReaderBase.java b/jena-core/src/test/java/org/apache/jena/ttl_test/JenaReaderBase.java
index 877cde11d8..f585fbe8a8 100644
--- a/jena-core/src/test/java/org/apache/jena/ttl_test/JenaReaderBase.java
+++ b/jena-core/src/test/java/org/apache/jena/ttl_test/JenaReaderBase.java
@@ -29,37 +29,31 @@ import org.apache.jena.util.FileUtils ;
 import org.slf4j.LoggerFactory;
 
 /** Abstract class that sorts out input streams, readers and base URIs, to call a
- * single worker function with model, UTF8 reader and visited base  
+ * single worker function with model, UTF8 reader and visited base
  */
 @SuppressWarnings("deprecation")
 public abstract class JenaReaderBase implements RDFReaderI
 {
 	protected RDFErrorHandler errorHandler = null ;
-	
+
 	public JenaReaderBase() {}
 
     @Override
     final
-    public void read(Model model, Reader r, String base) 
-	{ 
+    public void read(Model model, Reader r, String base)
+	{
         checkReader(r) ;
         readImpl(model, r, base) ;
 	}
 
     @Override
     final
-	public void read(Model model, java.lang.String url) 
+	public void read(Model model, java.lang.String url)
 	{
 	      try {
         	URLConnection conn = new URL(url).openConnection();
         	String encoding = conn.getContentEncoding();
-        	if ( encoding == null )
-               read(model, new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8), url);
-        	else
-            {
-                LoggerFactory.getLogger(this.getClass()).warn("URL content is not UTF-8") ;
-                read(model, new InputStreamReader(conn.getInputStream(),encoding), url);
-            }
+        	read(model, new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8), url);
         }
         catch (JenaException e)
         {
@@ -76,11 +70,11 @@ public abstract class JenaReaderBase implements RDFReaderI
 
     @Override
     final
-    public void read(Model model, InputStream in, String base) 
+    public void read(Model model, InputStream in, String base)
 	{
         readImpl(model, FileUtils.asBufferedUTF8(in), base) ;
     }
-	
+
     @Override
     final
 	public RDFErrorHandler setErrorHandler(RDFErrorHandler errHandler)
@@ -89,7 +83,7 @@ public abstract class JenaReaderBase implements RDFReaderI
 		errorHandler = errHandler ;
 		return old ;
 	}
-    
+
     @Override
     final
 	public Object setProperty(String propName, Object propValue)
@@ -108,7 +102,7 @@ public abstract class JenaReaderBase implements RDFReaderI
     private void readImpl(Model model, Reader reader, String base)
     {
         // The reader has been checked, if possible, by now or
-        // constructed correctly by code here. 
+        // constructed correctly by code here.
         if ( base != null )
             base = N3IRIResolver.resolveGlobal(base) ;
         try {
diff --git a/jena-examples/src/main/java/arq/examples/constructquads/ExampleConstructQuads.java b/jena-examples/src/main/java/arq/examples/constructquads/ExampleConstructQuads.java
index e8f8b4a20b..cf20b0bd87 100644
--- a/jena-examples/src/main/java/arq/examples/constructquads/ExampleConstructQuads.java
+++ b/jena-examples/src/main/java/arq/examples/constructquads/ExampleConstructQuads.java
@@ -19,6 +19,7 @@
 package arq.examples.constructquads;
 
 import java.io.* ;
+import java.nio.charset.StandardCharsets;
 import java.util.Iterator;
 
 import org.apache.jena.graph.Triple;
@@ -50,7 +51,7 @@ public class ExampleConstructQuads {
 		Resource o1 = model.createResource("http://eg.com/o1");
 		model1.add(s1, p1, o1);
 		dataset.addNamedModel("http://eg.com/g1", model1);
-		
+
 		PrintUtil.printOut(dataset.asDatasetGraph().find());
 
 		// construct named graph
@@ -150,7 +151,7 @@ public class ExampleConstructQuads {
 			PrintUtil.printOut(quads);
 		}
 		System.out.println(query);
-		
+
 		// short form 4
 		System.out.println("default graph projection:");
 		queryString = "CONSTRUCT { {<http://eg.com/s> <http://eg.com/p> ?o} GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} } WHERE{ GRAPH ?g {<http://eg.com/s1> <http://eg.com/p1> ?o} }";
@@ -173,7 +174,7 @@ public class ExampleConstructQuads {
 				});
 		for (File test : tests) {
 			System.out.println("======== File: "+test.getName());
-			try (BufferedReader br = new BufferedReader(new FileReader(test))) {
+			try (BufferedReader br = new BufferedReader(new FileReader(test, StandardCharsets.UTF_8))) {
 				String line = null;
 				while( (line = br.readLine()) != null){
 					System.out.println(line);
diff --git a/jena-extras/jena-serviceenhancer/src/main/java/org/apache/jena/sparql/service/enhancer/impl/IteratorFactoryWithBuffer.java b/jena-extras/jena-serviceenhancer/src/main/java/org/apache/jena/sparql/service/enhancer/impl/IteratorFactoryWithBuffer.java
index c676e51c1d..5273925490 100644
--- a/jena-extras/jena-serviceenhancer/src/main/java/org/apache/jena/sparql/service/enhancer/impl/IteratorFactoryWithBuffer.java
+++ b/jena-extras/jena-serviceenhancer/src/main/java/org/apache/jena/sparql/service/enhancer/impl/IteratorFactoryWithBuffer.java
@@ -27,7 +27,7 @@ import java.util.stream.IntStream;
 import com.google.common.collect.MultimapBuilder;
 import com.google.common.collect.PeekingIterator;
 import com.google.common.collect.SetMultimap;
-import com.google.common.primitives.Ints;
+
 import org.apache.jena.sparql.service.enhancer.impl.util.SinglePrefetchIterator;
 
 /**
@@ -169,7 +169,7 @@ public class IteratorFactoryWithBuffer<T, I extends Iterator<T>>
                     throw new IllegalStateException();
                 }
 
-                int relOffset = Ints.checkedCast(absOffset - absBufferOffset);
+                int relOffset = Math.toIntExact(absOffset - absBufferOffset);
 
                 long bufferSize = buffer == null ? 0 : buffer.size();
 
diff --git a/jena-extras/jena-serviceenhancer/src/main/java/org/apache/jena/sparql/service/enhancer/pfunction/cacheLs.java b/jena-extras/jena-serviceenhancer/src/main/java/org/apache/jena/sparql/service/enhancer/pfunction/cacheLs.java
index 75f026f677..2ef0fdc77e 100644
--- a/jena-extras/jena-serviceenhancer/src/main/java/org/apache/jena/sparql/service/enhancer/pfunction/cacheLs.java
+++ b/jena-extras/jena-serviceenhancer/src/main/java/org/apache/jena/sparql/service/enhancer/pfunction/cacheLs.java
@@ -81,7 +81,7 @@ public class cacheLs
     private static Optional<BindingBuilder> processArg(Optional<BindingBuilder> builderOpt, List<Node> nodes, int i, Supplier<Node> valueSupplier) {
         Optional<BindingBuilder> result = builderOpt;
         if (builderOpt.isPresent()) {
-            BindingBuilder builder = builderOpt.get();
+            BindingBuilder builder = builderOpt.orElseThrow();
             int n = nodes.size();
             if (i < n) {
                 Node key = nodes.get(i);
@@ -132,7 +132,7 @@ public class cacheLs
 
                 Optional<BindingBuilder> parentBuilder = Optional.of(BindingFactory.builder(inputBinding));
                 if (sv != null) {
-                    parentBuilder.get().add(sv, idNode);
+                    parentBuilder.orElseThrow().add(sv, idNode);
                 }
 
                 ServiceCacheKey key = idToKey.get(id);
diff --git a/jena-extras/jena-serviceenhancer/src/main/java/org/apache/jena/sparql/service/enhancer/slice/impl/BufferOverArray.java b/jena-extras/jena-serviceenhancer/src/main/java/org/apache/jena/sparql/service/enhancer/slice/impl/BufferOverArray.java
index b5201f08de..c57e0f8621 100644
--- a/jena-extras/jena-serviceenhancer/src/main/java/org/apache/jena/sparql/service/enhancer/slice/impl/BufferOverArray.java
+++ b/jena-extras/jena-serviceenhancer/src/main/java/org/apache/jena/sparql/service/enhancer/slice/impl/BufferOverArray.java
@@ -18,8 +18,6 @@
 
 package org.apache.jena.sparql.service.enhancer.slice.impl;
 
-import com.google.common.primitives.Ints;
-
 import org.apache.jena.sparql.service.enhancer.slice.api.ArrayOps;
 
 public class BufferOverArray<A>
@@ -47,7 +45,7 @@ public class BufferOverArray<A>
 
     @Override
     public void write(long offsetInBuffer, A arrayWithItemsOfTypeT, int arrOffset, int arrLength) {
-        int offsetInBufferInt = Ints.checkedCast(offsetInBuffer);
+        int offsetInBufferInt = Math.toIntExact(offsetInBuffer);
         arrayOps.copy(arrayWithItemsOfTypeT, arrOffset, array, offsetInBufferInt, arrLength);
     }
 
@@ -64,7 +62,7 @@ public class BufferOverArray<A>
     @Override
     public int readInto(A tgt, int tgtOffset, long srcOffset, int length) {
         int capacityInt = arrayOps.length(array);
-        int srcOffsetInt = Ints.checkedCast(srcOffset);
+        int srcOffsetInt = Math.toIntExact(srcOffset);
         int result = Math.max(Math.min(capacityInt - srcOffsetInt, length), 0);
         arrayOps.copy(array, srcOffsetInt, tgt, tgtOffset, result);
 
diff --git a/jena-extras/jena-serviceenhancer/src/main/java/org/apache/jena/sparql/service/enhancer/slice/impl/RangeBufferImpl.java b/jena-extras/jena-serviceenhancer/src/main/java/org/apache/jena/sparql/service/enhancer/slice/impl/RangeBufferImpl.java
index a5a1dbf53d..89321c4c37 100644
--- a/jena-extras/jena-serviceenhancer/src/main/java/org/apache/jena/sparql/service/enhancer/slice/impl/RangeBufferImpl.java
+++ b/jena-extras/jena-serviceenhancer/src/main/java/org/apache/jena/sparql/service/enhancer/slice/impl/RangeBufferImpl.java
@@ -23,7 +23,7 @@ import java.io.IOException;
 import com.google.common.collect.Range;
 import com.google.common.collect.RangeSet;
 import com.google.common.collect.TreeRangeSet;
-import com.google.common.math.LongMath;
+
 import org.apache.jena.sparql.service.enhancer.impl.util.RangeUtils;
 import org.apache.jena.sparql.service.enhancer.slice.api.ArrayOps;
 
@@ -136,8 +136,8 @@ public class RangeBufferImpl<A>
 
     @Override
     public void write(long offsetInBuffer, A arrayWithItemsOfTypeT, int arrOffset, int arrLength) throws IOException {
-        long start = LongMath.checkedAdd(offsetInRanges, offsetInBuffer);
-        long end = LongMath.checkedAdd(start, arrLength);
+        long start = Math.addExact(offsetInRanges, offsetInBuffer);
+        long end = Math.addExact(start, arrLength);
 
         if ((offsetInBuffer + arrLength) > backingBuffer.getCapacity()) {
             throw new RuntimeException("Attempt to write beyond buffer capacity");
diff --git a/jena-extras/jena-serviceenhancer/src/main/java/org/apache/jena/sparql/service/enhancer/slice/impl/SliceAccessorImpl.java b/jena-extras/jena-serviceenhancer/src/main/java/org/apache/jena/sparql/service/enhancer/slice/impl/SliceAccessorImpl.java
index 34391189c5..cc52b5f99f 100644
--- a/jena-extras/jena-serviceenhancer/src/main/java/org/apache/jena/sparql/service/enhancer/slice/impl/SliceAccessorImpl.java
+++ b/jena-extras/jena-serviceenhancer/src/main/java/org/apache/jena/sparql/service/enhancer/slice/impl/SliceAccessorImpl.java
@@ -19,12 +19,8 @@
 package org.apache.jena.sparql.service.enhancer.slice.impl;
 
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
+import java.util.*;
 import java.util.Map.Entry;
-import java.util.NavigableMap;
-import java.util.TreeMap;
 import java.util.concurrent.ConcurrentNavigableMap;
 import java.util.concurrent.ConcurrentSkipListMap;
 import java.util.concurrent.locks.Lock;
@@ -32,13 +28,9 @@ import java.util.concurrent.locks.ReadWriteLock;
 import java.util.stream.Collectors;
 
 import com.google.common.base.Preconditions;
-import com.google.common.collect.ContiguousSet;
-import com.google.common.collect.DiscreteDomain;
-import com.google.common.collect.Range;
-import com.google.common.collect.RangeMap;
-import com.google.common.collect.RangeSet;
-import com.google.common.collect.TreeRangeMap;
+import com.google.common.collect.*;
 import com.google.common.primitives.Ints;
+
 import org.apache.jena.sparql.service.enhancer.claimingcache.Ref;
 import org.apache.jena.sparql.service.enhancer.claimingcache.RefFuture;
 import org.apache.jena.sparql.service.enhancer.impl.util.AutoCloseableWithLeakDetectionBase;
@@ -312,7 +304,7 @@ public class SliceAccessorImpl<A>
             RefFuture<BufferView<A>> currentPageRef = getClaimedPages().get(i);
 
             BufferView<A> buffer = currentPageRef.await();
-            int remainingInPage = Ints.checkedCast(Math.min(pageSize - indexInPage, remainingInSrc));
+            int remainingInPage = Math.toIntExact(Math.min(pageSize - indexInPage, remainingInSrc));
 
             buffer.getRangeBuffer().readInto(tgt, nextTgtOffset, indexInPage, remainingInPage);
 
@@ -432,7 +424,7 @@ public class SliceAccessorImpl<A>
                     RefFuture<BufferView<A>> currentPageRef = getClaimedPages().get(i);
 
                     BufferView<A> buffer = currentPageRef.await();
-                    buffer.getRangeBuffer().readInto(tgt, tgtOffset, indexInPage, Ints.checkedCast(endIndex));
+                    buffer.getRangeBuffer().readInto(tgt, tgtOffset, indexInPage, Math.toIntExact(endIndex));
 
                     indexInPage = 0;
                 }
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ActionLib.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ActionLib.java
index 7bd7bf665b..a65dbcba99 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ActionLib.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ActionLib.java
@@ -111,7 +111,7 @@ public class ActionLib {
      * @return String The full URL, including query string.
      */
     public static String wholeRequestURL(HttpServletRequest request) {
-        StringBuffer sb = request.getRequestURL();
+        StringBuilder sb = new StringBuilder(request.getRequestURL());
         String queryString = request.getQueryString();
         if ( queryString != null ) {
             sb.append("?");
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/HttpAction.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/HttpAction.java
index 1b5626f121..ef3935646e 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/HttpAction.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/HttpAction.java
@@ -696,8 +696,8 @@ public class HttpAction
         return request.getRequestURI();
     }
 
-    public StringBuffer getRequestRequestURL() {
-        return request.getRequestURL();
+    public String getRequestRequestURL() {
+        return request.getRequestURL().toString();
     }
 
     public String getRequestPathInfo() {
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/system/FusekiNetLib.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/system/FusekiNetLib.java
index ba4cde4fcc..b5b5c10278 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/system/FusekiNetLib.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/system/FusekiNetLib.java
@@ -87,10 +87,10 @@ public class FusekiNetLib {
 
     /** Helper function for displaying an HttpServletRequest */
     public static String fmtRequest(HttpServletRequest request) {
-        StringBuffer sbuff = new StringBuffer();
+        StringBuilder sbuff = new StringBuilder();
         sbuff.append(request.getMethod());
         sbuff.append(" ");
-        sbuff.append(Convert.decWWWForm(request.getRequestURL()));
+        sbuff.append(Convert.decWWWForm(request.getRequestURL().toString()));
 
         String qs = request.getQueryString();
         if ( qs != null ) {
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/validation/html/ValidatorHtmlLib.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/validation/html/ValidatorHtmlLib.java
index f0bfddd8a5..00666d3506 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/validation/html/ValidatorHtmlLib.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/validation/html/ValidatorHtmlLib.java
@@ -19,6 +19,7 @@
 package org.apache.jena.fuseki.validation.html;
 
 import java.io.IOException;
+import java.nio.charset.StandardCharsets;
 import java.util.function.Consumer;
 
 import jakarta.servlet.ServletOutputStream;
@@ -52,7 +53,7 @@ public class ValidatorHtmlLib {
         content.accept(out);
         out.flush();
         String x = htmlQuote(out.asString());
-        byte b[] = x.getBytes("UTF-8");
+        byte b[] = x.getBytes(StandardCharsets.UTF_8);
         outStream.write(b);
         finishFixed(outStream);
     }
diff --git a/jena-fuseki2/jena-fuseki-geosparql/src/main/java/org/apache/jena/ext/io/github/galbiston/rdf_tables/file/FileConverter.java b/jena-fuseki2/jena-fuseki-geosparql/src/main/java/org/apache/jena/ext/io/github/galbiston/rdf_tables/file/FileConverter.java
index fda4ff7594..b0f32b73f2 100644
--- a/jena-fuseki2/jena-fuseki-geosparql/src/main/java/org/apache/jena/ext/io/github/galbiston/rdf_tables/file/FileConverter.java
+++ b/jena-fuseki2/jena-fuseki-geosparql/src/main/java/org/apache/jena/ext/io/github/galbiston/rdf_tables/file/FileConverter.java
@@ -28,6 +28,7 @@ import java.io.File;
 import java.io.FileReader;
 import java.io.IOException;
 import java.lang.invoke.MethodHandles;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -87,7 +88,8 @@ public class FileConverter {
         int lineNumber = 1;
 
         CSVParserBuilder parserBuilder = new CSVParserBuilder().withSeparator(delimiter);
-        try (CSVReader reader = new CSVReaderBuilder(new FileReader(inputFile)).withCSVParser(parserBuilder.build()).build()) {
+        try (CSVReader reader = new CSVReaderBuilder(new FileReader(inputFile, StandardCharsets.UTF_8))
+                                       .withCSVParser(parserBuilder.build()).build()) {
 
             String baseURI = readHeader(reader.readNext(), datatypeURIs, propertyURIs, classURIs, targetColumns, propertyDirections);
 
diff --git a/jena-fuseki2/jena-fuseki-geosparql/src/main/java/org/apache/jena/ext/io/github/galbiston/rdf_tables/file/FileSplitter.java b/jena-fuseki2/jena-fuseki-geosparql/src/main/java/org/apache/jena/ext/io/github/galbiston/rdf_tables/file/FileSplitter.java
index ad10a4b118..a228a9d003 100644
--- a/jena-fuseki2/jena-fuseki-geosparql/src/main/java/org/apache/jena/ext/io/github/galbiston/rdf_tables/file/FileSplitter.java
+++ b/jena-fuseki2/jena-fuseki-geosparql/src/main/java/org/apache/jena/ext/io/github/galbiston/rdf_tables/file/FileSplitter.java
@@ -25,6 +25,7 @@ import java.io.FileReader;
 import java.io.FileWriter;
 import java.io.IOException;
 import java.lang.invoke.MethodHandles;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -58,7 +59,7 @@ public class FileSplitter {
         LOGGER.info("File Splitting Started: {}", inputFile.getPath());
 
         //Read file
-        try (BufferedReader br = new BufferedReader(new FileReader(inputFile))) {
+        try (BufferedReader br = new BufferedReader(new FileReader(inputFile, StandardCharsets.UTF_8))) {
 
             List<String> lines = new ArrayList<>(LINE_MAXIMUM);
             int fileNumber = 1;
@@ -92,7 +93,7 @@ public class FileSplitter {
     private static void writeToFile(List<String> lines, int fileNumber, File sourceFile, String header) {
         File targetFile = FileSupport.insertFileCount(sourceFile, fileNumber);
 
-        try (BufferedWriter bw = new BufferedWriter(new FileWriter(targetFile))) {
+        try (BufferedWriter bw = new BufferedWriter(new FileWriter(targetFile, StandardCharsets.UTF_8))) {
             bw.write(header);
             bw.newLine();
             for (String line : lines) {
diff --git a/jena-fuseki2/jena-fuseki-geosparql/src/main/java/org/apache/jena/ext/io/github/galbiston/rdf_tables/file/PrefixReader.java b/jena-fuseki2/jena-fuseki-geosparql/src/main/java/org/apache/jena/ext/io/github/galbiston/rdf_tables/file/PrefixReader.java
index f54cbf53fd..1c09fa774d 100644
--- a/jena-fuseki2/jena-fuseki-geosparql/src/main/java/org/apache/jena/ext/io/github/galbiston/rdf_tables/file/PrefixReader.java
+++ b/jena-fuseki2/jena-fuseki-geosparql/src/main/java/org/apache/jena/ext/io/github/galbiston/rdf_tables/file/PrefixReader.java
@@ -23,6 +23,7 @@ import java.io.File;
 import java.io.FileReader;
 import java.io.IOException;
 import java.lang.invoke.MethodHandles;
+import java.nio.charset.StandardCharsets;
 import java.util.HashMap;
 import com.opencsv.CSVReaderBuilder;
 import com.opencsv.exceptions.CsvValidationException;
@@ -45,8 +46,8 @@ public class PrefixReader {
         int lineNumber = 1;
 
         CSVParserBuilder parserBuilder = new CSVParserBuilder().withSeparator(DefaultValues.COLUMN_DELIMITER);
-        try (CSVReader reader = new CSVReaderBuilder(new FileReader(inputFile)).withCSVParser(parserBuilder.build()).build()) {
-
+        try (CSVReader reader = new CSVReaderBuilder(new FileReader(inputFile, StandardCharsets.UTF_8))
+                                            .withCSVParser(parserBuilder.build()).build()) {
             if (reader.readNext().length != 2) {
                 LOGGER.error("Should only be two columns");
             } else {
diff --git a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestCrossOriginFilter.java b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestCrossOriginFilter.java
index 7c366efad6..34bc5303b3 100644
--- a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestCrossOriginFilter.java
+++ b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestCrossOriginFilter.java
@@ -71,10 +71,8 @@ public class TestCrossOriginFilter {
     @AfterClass
     public static void afterClass() {
         if ( systemValue != null ) {
-            if ( systemValue.isPresent() )
-                System.setProperty(jdkAllowRestrictedHeaders, systemValue.get());
-            else
-                System.clearProperty(jdkAllowRestrictedHeaders);
+            systemValue.ifPresentOrElse((x)->System.setProperty(jdkAllowRestrictedHeaders, x),
+                                        ()->System.clearProperty(jdkAllowRestrictedHeaders));
         }
     }
 
diff --git a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestQuery.java b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestQuery.java
index ef63f1701a..fe13606695 100644
--- a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestQuery.java
+++ b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestQuery.java
@@ -293,7 +293,7 @@ public class TestQuery extends AbstractFusekiTest {
         URL u = new URL(serviceQuery() + "?query=" + qs);
         HttpURLConnection conn = (HttpURLConnection)u.openConnection();
         String result = null;
-        StringBuffer sb = new StringBuffer();
+        StringBuilder sb = new StringBuilder();
         try ( InputStream is = new BufferedInputStream(conn.getInputStream());
               BufferedReader br = new BufferedReader(new InputStreamReader(is)) ) {
             String inputLine = "";
diff --git a/jena-iri/src/main/java/org/apache/jena/iri/impl/AbsIRIImpl.java b/jena-iri/src/main/java/org/apache/jena/iri/impl/AbsIRIImpl.java
index 7256e03eca..eaf66ff98b 100644
--- a/jena-iri/src/main/java/org/apache/jena/iri/impl/AbsIRIImpl.java
+++ b/jena-iri/src/main/java/org/apache/jena/iri/impl/AbsIRIImpl.java
@@ -35,7 +35,7 @@ abstract public class AbsIRIImpl extends  IRI implements
         // 5.2.4 step 1.
         int inputBufferStart = 0;
         int inputBufferEnd = path.length();
-        StringBuffer output = new StringBuffer();
+        StringBuilder output = new StringBuilder();
         // 5.2.4 step 2.
         while (inputBufferStart < inputBufferEnd) {
             String in = path.substring(inputBufferStart);
@@ -88,7 +88,7 @@ abstract public class AbsIRIImpl extends  IRI implements
         return output.toString();
     }
 
-    private static void removeLastSeqment(StringBuffer output) {
+    private static void removeLastSeqment(StringBuilder output) {
         int ix = output.length();
         while (ix > 0) {
             ix--;
@@ -263,7 +263,7 @@ abstract public class AbsIRIImpl extends  IRI implements
     }
 
     private String createASCIIString() throws MalformedIDNException {
-        StringBuffer asciiString = new StringBuffer();
+        StringBuilder asciiString = new StringBuilder();
 
         if (has(SCHEME)) {
             toAscii(asciiString, getScheme(), errors(SCHEME));
@@ -295,7 +295,7 @@ abstract public class AbsIRIImpl extends  IRI implements
         return asciiString.toString();
     }
 
-    private void regNameToAscii(StringBuffer asciiString, String host) throws MalformedIDNException  {
+    private void regNameToAscii(StringBuilder asciiString, String host) throws MalformedIDNException  {
         if ((errors(HOST) & ToAsciiMask) == 0) {
             asciiString.append(host);
             return;
@@ -325,7 +325,7 @@ abstract public class AbsIRIImpl extends  IRI implements
         */
     }
 
-    private void toAscii(StringBuffer asciiString, String field, long errs) {
+    private void toAscii(StringBuilder asciiString, String field, long errs) {
         if ((errs & ToAsciiMask) == 0) {
             asciiString.append(field);
             return;
@@ -738,7 +738,7 @@ abstract public class AbsIRIImpl extends  IRI implements
 
     @Override
     public String getASCIIHost() throws MalformedURLException {
-        StringBuffer asciiString = new StringBuffer();
+        StringBuilder asciiString = new StringBuilder();
 
         String host = getRawHost();
         if (host==null)
diff --git a/jena-iri/src/main/java/org/apache/jena/iri/impl/ComponentPatternParser.java b/jena-iri/src/main/java/org/apache/jena/iri/impl/ComponentPatternParser.java
index d277668f69..359aeb8c01 100644
--- a/jena-iri/src/main/java/org/apache/jena/iri/impl/ComponentPatternParser.java
+++ b/jena-iri/src/main/java/org/apache/jena/iri/impl/ComponentPatternParser.java
@@ -77,7 +77,7 @@ public class ComponentPatternParser implements ViolationCodes {
     int groupCount;
 
     // result data
-    final StringBuffer rslt = new StringBuffer();
+    final StringBuilder rslt = new StringBuilder();
 
     int shouldLowerCase;
 
@@ -233,7 +233,7 @@ public class ComponentPatternParser implements ViolationCodes {
             throw new IllegalArgumentException(split[field-1]+" macro syntax error");
         field++;
         rslt.append("?:(?:");  // make group non-capturing.
-        StringBuffer caseInsensitiveEx = new StringBuffer();
+        StringBuilder caseInsensitiveEx = new StringBuilder();
         while (classify[field-1]!=CLOSE_PAREN || sqCount>0 ) {
             if (field >= split.length)
                 throw new IllegalArgumentException(
@@ -283,7 +283,7 @@ public class ComponentPatternParser implements ViolationCodes {
         rslt.append(")");
     }
 
-    private void makeCaseInsensitive(StringBuffer caseInsensitiveEx) {
+    private void makeCaseInsensitive(StringBuilder caseInsensitiveEx) {
         for (int i=0;i<split[field].length();i++) {
             char c = split[field].charAt(i);
             if (c>='a' && c<='z') {
diff --git a/jena-iri/src/main/java/org/apache/jena/iri/impl/ResolvedRelativeIRI.java b/jena-iri/src/main/java/org/apache/jena/iri/impl/ResolvedRelativeIRI.java
index 9af4c330bc..7feb9b1796 100644
--- a/jena-iri/src/main/java/org/apache/jena/iri/impl/ResolvedRelativeIRI.java
+++ b/jena-iri/src/main/java/org/apache/jena/iri/impl/ResolvedRelativeIRI.java
@@ -146,7 +146,7 @@ public class ResolvedRelativeIRI extends AbsIRIImpl {
     }
     private String mergePathsRemoveDots(String basePath) {
         int slash = basePath.lastIndexOf('/');
-        StringBuffer output = new StringBuffer();
+        StringBuilder output = new StringBuilder();
         if (slash!=-1)
             output.append(basePath.substring(0,slash+1));
         if (base.dotsOK()&&rel.dotsOK())
@@ -178,7 +178,7 @@ public class ResolvedRelativeIRI extends AbsIRIImpl {
         return removeDotSegments(output.toString());    
     }
 
-    private static void removeLastSeqment2(StringBuffer output) {
+    private static void removeLastSeqment2(StringBuilder output) {
         int ix = output.length()-1;
         if (ix<=0)
             return;
diff --git a/jena-iri3986/src/main/java/org/apache/jena/rfc3986/LibParseIRI.java b/jena-iri3986/src/main/java/org/apache/jena/rfc3986/LibParseIRI.java
index 88cb25391d..42bf15b0f7 100644
--- a/jena-iri3986/src/main/java/org/apache/jena/rfc3986/LibParseIRI.java
+++ b/jena-iri3986/src/main/java/org/apache/jena/rfc3986/LibParseIRI.java
@@ -82,7 +82,7 @@ package org.apache.jena.rfc3986;
         // 5.2.4 step 1.
         int inputBufferStart = 0;
         int inputBufferEnd = path.length();
-        StringBuffer output = new StringBuffer();
+        StringBuilder output = new StringBuilder();
         // 5.2.4 step 2.
         while (inputBufferStart < inputBufferEnd) {
             String in = path.substring(inputBufferStart);
@@ -135,7 +135,7 @@ package org.apache.jena.rfc3986;
         return output.toString();
     }
 
-    private static void removeLastSeqment(StringBuffer output) {
+    private static void removeLastSeqment(StringBuilder output) {
         int ix = output.length();
         while (ix > 0) {
             ix--;
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/graph/SecuredGraphEventManager.java b/jena-permissions/src/main/java/org/apache/jena/permissions/graph/SecuredGraphEventManager.java
index 0bb5463311..c022b867d1 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/graph/SecuredGraphEventManager.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/graph/SecuredGraphEventManager.java
@@ -17,16 +17,7 @@
  */
 package org.apache.jena.permissions.graph;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.Stack;
+import java.util.*;
 
 import org.apache.jena.graph.Graph;
 import org.apache.jena.graph.GraphEventManager;
@@ -306,7 +297,7 @@ public class SecuredGraphEventManager implements GraphEventManager {
     // the security evaluator in use
     private final SecuredGraph securedGraph;
     private final Graph baseGraph;
-    private final Map<GraphListener, Stack<SecuredGraphListener>> listenerMap = new HashMap<>();
+    private final Map<GraphListener, Deque<SecuredGraphListener>> listenerMap = new HashMap<>();
     private static Set<Action> DELETE;
     private static Set<Action> ADD;
 
@@ -496,9 +487,9 @@ public class SecuredGraphEventManager implements GraphEventManager {
 
     @Override
     public synchronized GraphEventManager register(final GraphListener listener) {
-        Stack<SecuredGraphListener> sgl = listenerMap.get(listener);
+        Deque<SecuredGraphListener> sgl = listenerMap.get(listener);
         if (sgl == null) {
-            sgl = new Stack<>();
+            sgl = new ArrayDeque<>();
         }
         sgl.push(new SecuredGraphListener(listener));
         listenerMap.put(listener, sgl);
@@ -507,7 +498,7 @@ public class SecuredGraphEventManager implements GraphEventManager {
 
     @Override
     public synchronized GraphEventManager unregister(final GraphListener listener) {
-        final Stack<SecuredGraphListener> sgl = listenerMap.get(listener);
+        final Deque<SecuredGraphListener> sgl = listenerMap.get(listener);
         if (sgl != null) {
             if (sgl.size() == 1) {
                 listenerMap.remove(listener);
diff --git a/jena-shex/src/main/java/org/apache/jena/shex/expressions/ShapeExprTripleExpr.java b/jena-shex/src/main/java/org/apache/jena/shex/expressions/ShapeExprTripleExpr.java
index a5357c6b3c..90ea7b23a6 100644
--- a/jena-shex/src/main/java/org/apache/jena/shex/expressions/ShapeExprTripleExpr.java
+++ b/jena-shex/src/main/java/org/apache/jena/shex/expressions/ShapeExprTripleExpr.java
@@ -163,7 +163,7 @@ public class ShapeExprTripleExpr extends ShapeExpression {
         public Builder shapeExpr(TripleExpression tripleExpr) { this.tripleExpr = tripleExpr; return this; }
 
         public ShapeExprTripleExpr build() {
-            boolean isClosed = (closed == null) ? false : closed.get();
+            boolean isClosed = (closed == null) ? false : closed.orElseThrow();
             return new ShapeExprTripleExpr(label, extras, isClosed, tripleExpr, semActs);
         }
     }
diff --git a/jena-tdb1/src/main/java/org/apache/jena/tdb1/base/file/LocationLock.java b/jena-tdb1/src/main/java/org/apache/jena/tdb1/base/file/LocationLock.java
index d9150221ac..47819fb099 100644
--- a/jena-tdb1/src/main/java/org/apache/jena/tdb1/base/file/LocationLock.java
+++ b/jena-tdb1/src/main/java/org/apache/jena/tdb1/base/file/LocationLock.java
@@ -22,6 +22,7 @@ import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileWriter;
 import java.io.IOException;
+import java.nio.charset.StandardCharsets;
 
 import org.apache.jena.atlas.RuntimeIOException;
 import org.apache.jena.atlas.io.IO;
@@ -200,7 +201,7 @@ public class LocationLock {
         File lockFile = getLockFile();
         checkLockFileForWrite(lockFile);
         // Write our PID to the lock file
-        try (BufferedWriter writer = new BufferedWriter(new FileWriter(lockFile))) {
+        try (BufferedWriter writer = new BufferedWriter(new FileWriter(lockFile, StandardCharsets.UTF_8))) {
             writer.write(Integer.toString(pid));
             writer.close();
         } catch (IOException e) {
diff --git a/jena-tdb1/src/main/java/org/apache/jena/tdb1/solver/BindingTDB.java b/jena-tdb1/src/main/java/org/apache/jena/tdb1/solver/BindingTDB.java
index 2ef71fcf35..b07bac3625 100644
--- a/jena-tdb1/src/main/java/org/apache/jena/tdb1/solver/BindingTDB.java
+++ b/jena-tdb1/src/main/java/org/apache/jena/tdb1/solver/BindingTDB.java
@@ -149,7 +149,7 @@ public class BindingTDB extends BindingBase
     }
 
     @Override
-    protected void fmtVar(StringBuffer sbuff, Var var)
+    protected void fmtVar(StringBuilder sbuff, Var var)
     {
         NodeId id = idBinding.get(var) ;
         String extra = "" ;
diff --git a/jena-tdb1/src/test/java/org/apache/jena/tdb1/base/file/TestLocationLock.java b/jena-tdb1/src/test/java/org/apache/jena/tdb1/base/file/TestLocationLock.java
index b2a130e141..ebf3daedee 100644
--- a/jena-tdb1/src/test/java/org/apache/jena/tdb1/base/file/TestLocationLock.java
+++ b/jena-tdb1/src/test/java/org/apache/jena/tdb1/base/file/TestLocationLock.java
@@ -21,6 +21,7 @@ package org.apache.jena.tdb1.base.file;
 import java.io.BufferedWriter;
 import java.io.FileWriter;
 import java.io.IOException;
+import java.nio.charset.StandardCharsets;
 
 import org.apache.jena.tdb1.TDB1Exception;
 import org.apache.jena.tdb1.sys.ProcessUtils;
@@ -88,7 +89,7 @@ public class TestLocationLock {
         Assert.assertTrue(lock.canObtain());
 
         // Write a fake PID to the lock file
-        try (BufferedWriter writer = new BufferedWriter(new FileWriter(dir.getPath("tdb.lock")))) {
+        try (BufferedWriter writer = new BufferedWriter(new FileWriter(dir.getPath("tdb.lock"), StandardCharsets.UTF_8))) {
             writer.write(Integer.toString(-1234)); // Fake PID that would never
                                                    // be valid
         }
@@ -109,7 +110,7 @@ public class TestLocationLock {
         Assert.assertTrue(lock.canObtain());
 
         // Write a fake PID to the lock file
-        try (BufferedWriter writer = new BufferedWriter(new FileWriter(dir.getPath("tdb.lock")))) {
+        try (BufferedWriter writer = new BufferedWriter(new FileWriter(dir.getPath("tdb.lock"), StandardCharsets.UTF_8))) {
             // Fake PID that would never be valid
             writer.write(Integer.toString(-1234));
         }
@@ -133,7 +134,7 @@ public class TestLocationLock {
         Assert.assertTrue(lock.canObtain());
 
         // Write a fake PID to the lock file
-        try (BufferedWriter writer = new BufferedWriter(new FileWriter(dir.getPath("tdb.lock")))) {
+        try (BufferedWriter writer = new BufferedWriter(new FileWriter(dir.getPath("tdb.lock"), StandardCharsets.UTF_8))) {
             // Fake PID that would never be valid
             writer.write(Integer.toString(-1234));
         }
@@ -156,9 +157,9 @@ public class TestLocationLock {
         Assert.assertFalse(lock.isOwned());
         Assert.assertTrue(lock.canObtain());
 
-        // Write a TDB2 format lock file
-        try (BufferedWriter writer = new BufferedWriter(new FileWriter(dir.getPath("tdb.lock")))) {
-            // TDB2 format lock file, this writes a new line to the end of the lock file
+        // Write a TDB1 format lock file
+        try (BufferedWriter writer = new BufferedWriter(new FileWriter(dir.getPath("tdb.lock"), StandardCharsets.UTF_8))) {
+            // TDB1 format lock file, this writes a new line to the end of the lock file
             writer.write(Integer.toString(-1234));
             writer.write('\n');
         }
diff --git a/jena-tdb1/src/test/java/org/apache/jena/tdb1/store/TestLocationLockStoreConnection.java b/jena-tdb1/src/test/java/org/apache/jena/tdb1/store/TestLocationLockStoreConnection.java
index cc0ecd6b87..ec37250283 100644
--- a/jena-tdb1/src/test/java/org/apache/jena/tdb1/store/TestLocationLockStoreConnection.java
+++ b/jena-tdb1/src/test/java/org/apache/jena/tdb1/store/TestLocationLockStoreConnection.java
@@ -21,6 +21,7 @@ package org.apache.jena.tdb1.store;
 import java.io.BufferedWriter;
 import java.io.FileWriter;
 import java.io.IOException;
+import java.nio.charset.StandardCharsets;
 
 import org.apache.jena.tdb1.TDB1Exception;
 import org.apache.jena.tdb1.base.file.Location;
@@ -35,20 +36,20 @@ import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
 
 /**
- * Tests for {@link LocationLock} inconjucntion with {@link StoreConnection}s 
+ * Tests for {@link LocationLock} inconjucntion with {@link StoreConnection}s
  */
 public class TestLocationLockStoreConnection {
 
     private static boolean negativePidsTreatedAsAlive = false;
-    
+
     @Rule
     public TemporaryFolder tempDir = new TemporaryFolder();
-    
+
     @BeforeClass
     public static void setup() {
         negativePidsTreatedAsAlive = ProcessUtils.negativePidsTreatedAsAlive();
     }
-    
+
     @Test
     public void location_lock_store_connection_01() {
         Location dir = Location.create(tempDir.getRoot().getAbsolutePath());
@@ -74,7 +75,7 @@ public class TestLocationLockStoreConnection {
     @Test(expected = TDB1Exception.class)
     public void location_lock_store_connection_02() throws IOException {
         Assume.assumeTrue(negativePidsTreatedAsAlive);
-        
+
         Location dir = Location.create(tempDir.getRoot().getAbsolutePath());
         LocationLock lock = dir.getLock();
         Assert.assertTrue(lock.canLock());
@@ -83,10 +84,10 @@ public class TestLocationLockStoreConnection {
         Assert.assertTrue(lock.canObtain());
 
         // Write a fake PID to the lock file
-        try(BufferedWriter writer = 
-            new BufferedWriter(new FileWriter(dir.getPath("tdb.lock")))) {
+        try(BufferedWriter writer =
+            new BufferedWriter(new FileWriter(dir.getPath("tdb.lock"), StandardCharsets.UTF_8))) {
             // Fake PID that would never be valid
-            writer.write(Integer.toString(-1234)); 
+            writer.write(Integer.toString(-1234));
         }
         Assert.assertTrue(lock.isLocked());
         Assert.assertFalse(lock.isOwned());
diff --git a/jena-tdb2/src/main/java/org/apache/jena/tdb2/solver/BindingTDB.java b/jena-tdb2/src/main/java/org/apache/jena/tdb2/solver/BindingTDB.java
index 78b7461f68..dc913d1c04 100644
--- a/jena-tdb2/src/main/java/org/apache/jena/tdb2/solver/BindingTDB.java
+++ b/jena-tdb2/src/main/java/org/apache/jena/tdb2/solver/BindingTDB.java
@@ -149,7 +149,7 @@ public class BindingTDB extends BindingBase
     }
 
     @Override
-    protected void fmtVar(StringBuffer sbuff, Var var)
+    protected void fmtVar(StringBuilder sbuff, Var var)
     {
         NodeId id = idBinding.get(var);
         String extra = "";