--- old/src/java.scripting/share/classes/javax/script/ScriptEngineManager.java 2017-12-11 23:48:36.723835465 +0530 +++ new/src/java.scripting/share/classes/javax/script/ScriptEngineManager.java 2017-12-11 23:48:36.515835456 +0530 @@ -77,11 +77,21 @@ private void init(final ClassLoader loader) { globalScope = new SimpleBindings(); - engineSpis = new HashSet(); + engineSpis = new ArrayList(); nameAssociations = new HashMap(); extensionAssociations = new HashMap(); mimeTypeAssociations = new HashMap(); initEngines(loader); + sortEngines(); + } + + private void sortEngines() { + Collections.sort(engineSpis, new Comparator() { + @Override + public int compare(ScriptEngineFactory lhs, ScriptEngineFactory rhs) { + return lhs.getEngineName().compareTo(rhs.getEngineName()); + } + }); } private ServiceLoader getServiceLoader(final ClassLoader loader) { @@ -400,7 +410,7 @@ } /** Set of script engine factories discovered. */ - private HashSet engineSpis; + private List engineSpis; /** Map of engine name to script engine factory. */ private HashMap nameAssociations;