diff --git a/README.md b/README.md index 9fa831e..6387276 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,17 @@ # Java to Javascript for QuintOS -I've built on top of the "Java to Javascript" transpiler by @wyattades and got inspiration from the JRE implementation in "java2javascript" by @BobHanson and others. +I've built on top of the "Java to Javascript" transpiler by @wyattades and got inspiration from the JavaDevelopmentKit implementation in "java2javascript" by @BobHanson and others. -The purpose of this project was to allow intro level CS students to write Java code but still use my QuintOS library which is web based instead of just having them run their programs in a Java console which is boring. I made a barebones JRE implementation in modern Javascript to acheive this. +The purpose of this project was to allow intro level CS students to write Java code but still use my QuintOS library which is web based instead of just having them run their programs in a Java console which is boring. I made a barebones JavaDevelopmentKit implementation in modern Javascript to acheive this. ## Known limitations -- casting to int requires putting the element being cast in parenthesis +- casting to int truncation workaround requires parenthesis around the number being cast -- no support for method overloading +- no support for method overloading, though a workaround could be made by making a function with the og name route to each of the variations of the overloaded function + +- no support for private/public methods, though this could be done since they are included in modern JavaScript classes + +## Contribute + +I've only done a barebones implementation of Java 17 JDK, a lot is missing, so if you are interested in adding more please go for it and submit a pull request! diff --git a/demo.html b/demo.html index 11bbcc2..7984a31 100755 --- a/demo.html +++ b/demo.html @@ -31,7 +31,7 @@ - + diff --git a/ide.js b/ide.js index 7806b2c..3b7f7e4 100644 --- a/ide.js +++ b/ide.js @@ -5,5 +5,5 @@ ide.file0 = document.getElementById('javaFile'); ide.file0.onchange = () => { ide.log.value = ''; let file = ide.file0.value; - jre.run(file); + jdk.run(file); }; diff --git a/jre.js b/jdk.js similarity index 99% rename from jre.js rename to jdk.js index 575432a..e94249b 100755 --- a/jre.js +++ b/jdk.js @@ -1,3 +1,5 @@ +// This is a bundle the JDK class code is the main part that +// I (quinton-ashley) made. That section starts on line 40. (function () { function r(e, n, t) { function o(i, f) { @@ -38,9 +40,11 @@ function (require, module, exports) { const log = console.log; + /* Java to JavaScript transpiler */ const java_to_javascript = require('java-to-javascript'); - class JRE { + /* JDK implementation in modern JavaScript */ + class JDK { constructor() { this.java = {}; let pkgs = ['com', 'lang', 'org', 'io', 'util']; @@ -49,6 +53,12 @@ } this.imports = {}; + /** + * The 'java.lang' package is imported automatically because this package + * provides classes that are fundamental to the Java programming language. + * Since classes like String already exist in JS, so I just extended them, + * no need to import. + */ try { let names = [ 'Character', @@ -69,12 +79,15 @@ this.import(lang); } catch (e) {} + // stub main for now this.main = () => {}; + this.load(); } load() { let ready = 0; + // load all imported classes for (let className in this.imports) { let imp = this.imports[className]; if (imp.classPath) { @@ -96,6 +109,8 @@ ready++; } } + // some classes may load slower than others, + // wait for them all before launching the Java program if (ready != Object.keys(this.imports).length) { let _this = this; setTimeout(() => { @@ -116,7 +131,7 @@ System.in.reset(); System.out.reset(); - this.main(this.vmArgs); + this.main(this.jvmArgs); } getClass(classPath) { @@ -149,7 +164,7 @@ imp.load = null; imp.classPath = className.split('.'); - let src = './jre'; + let src = './jdk'; for (let part of imp.classPath) { src += '/' + part; } @@ -190,14 +205,14 @@ let userName = window?.QuintOS?.userName || 'quinton-ashley'; let className = file.slice(classLine + 13, file.indexOf(' {', classLine + 13)); - let prefix = `(jre.imports['com.${userName}.${className}'] = {}).load = () => {\n\n`; + let prefix = `(jdk.imports['com.${userName}.${className}'] = {}).load = () => {\n\n`; // handle Java class imports for (let i = 0; i < imports.length; i++) { let imp = imports[i]; let impPath = imp.split('.'); let impName = impPath[impPath.length - 1]; - prefix += `let ${impName} = jre.import('${imp}');\n`; + prefix += `let ${impName} = jdk.import('${imp}');\n`; } prefix += '\n'; @@ -219,7 +234,7 @@ // log(file); - let suffix = `\njre.main = ${className}.main;\n}`; + let suffix = `\njdk.main = ${className}.main;\n}`; window.file0 = file; @@ -242,7 +257,7 @@ } } } - window.jre = new JRE(); + window.jdk = new JDK(); }, { 'java-to-javascript': 2 diff --git a/jre/java/io/File.js b/jdk/java/io/File.js similarity index 74% rename from jre/java/io/File.js rename to jdk/java/io/File.js index ef84de4..5966bb2 100755 --- a/jre/java/io/File.js +++ b/jdk/java/io/File.js @@ -1,5 +1,4 @@ -jre.imports['java.io.File'].load = () => { - +jdk.imports['java.io.File'].load = () => { class File { constructor(file) { this.absPath = file; @@ -10,5 +9,5 @@ jre.imports['java.io.File'].load = () => { } File.seperator = File.seperatorChar = '/'; File.pathSeparator = File.pathSeparatorChar = '/'; - jre.java.io.File = File; -} + jdk.java.io.File = File; +}; diff --git a/jre/java/io/InputStream.js b/jdk/java/io/InputStream.js similarity index 76% rename from jre/java/io/InputStream.js rename to jdk/java/io/InputStream.js index 3eb4237..cc1984e 100755 --- a/jre/java/io/InputStream.js +++ b/jdk/java/io/InputStream.js @@ -1,4 +1,4 @@ -jre.imports['java.io.InputStream'].load = () => { +jdk.imports['java.io.InputStream'].load = () => { class InputStream { constructor() { this.reset(); @@ -17,5 +17,5 @@ jre.imports['java.io.InputStream'].load = () => { this.mark += length; } } - jre.java.io.InputStream = InputStream; + jdk.java.io.InputStream = InputStream; }; diff --git a/jre/java/io/PrintStream.js b/jdk/java/io/PrintStream.js similarity index 88% rename from jre/java/io/PrintStream.js rename to jdk/java/io/PrintStream.js index 953e143..46e4cb7 100755 --- a/jre/java/io/PrintStream.js +++ b/jdk/java/io/PrintStream.js @@ -1,4 +1,4 @@ -jre.imports['java.io.PrintStream'].load = () => { +jdk.imports['java.io.PrintStream'].load = () => { class PrintStream { constructor() { this.log = ''; @@ -40,5 +40,5 @@ jre.imports['java.io.PrintStream'].load = () => { } } } - jre.java.io.PrintStream = PrintStream; + jdk.java.io.PrintStream = PrintStream; }; diff --git a/jre/java/lang/Boolean.js b/jdk/java/lang/Boolean.js similarity index 100% rename from jre/java/lang/Boolean.js rename to jdk/java/lang/Boolean.js diff --git a/jre/java/lang/Byte.js b/jdk/java/lang/Byte.js similarity index 100% rename from jre/java/lang/Byte.js rename to jdk/java/lang/Byte.js diff --git a/jre/java/lang/Character.js b/jdk/java/lang/Character.js similarity index 90% rename from jre/java/lang/Character.js rename to jdk/java/lang/Character.js index 45b42ac..1abfd39 100755 --- a/jre/java/lang/Character.js +++ b/jdk/java/lang/Character.js @@ -1,4 +1,4 @@ -jre.imports['java.lang.Character'].load = () => { +jdk.imports['java.lang.Character'].load = () => { class Character {} Character.isDigit = (c) => { c = c.charCodeAt(0); @@ -27,5 +27,5 @@ jre.imports['java.lang.Character'].load = () => { Character.toString = (c) => { return c; }; - jre.java.lang.Character = Character; + jdk.java.lang.Character = Character; }; diff --git a/jre/java/lang/Double.js b/jdk/java/lang/Double.js similarity index 70% rename from jre/java/lang/Double.js rename to jdk/java/lang/Double.js index ba5778f..2318c42 100755 --- a/jre/java/lang/Double.js +++ b/jdk/java/lang/Double.js @@ -1,19 +1,18 @@ -jre.imports['java.lang.Double'].load = () => { - +jdk.imports['java.lang.Double'].load = () => { class Double { constructor() { - throw "new Double() not supported"; + throw 'new Double() not supported'; } } Double.parseDouble = (d) => { return parseFloat(d); - } + }; Double.compare = (a, b) => { return a - b; - } + }; Double.MAX_VALUE = Number.MAX_VALUE; Double.POSITIVE_INFINITY = Number.POSITIVE_INFINITY; Double.NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY; Double.NaN = NaN; - jre.java.lang.Double = Double; -} + jdk.java.lang.Double = Double; +}; diff --git a/jre/java/lang/Exception.js b/jdk/java/lang/Exception.js similarity index 100% rename from jre/java/lang/Exception.js rename to jdk/java/lang/Exception.js diff --git a/jre/java/lang/Float.js b/jdk/java/lang/Float.js similarity index 75% rename from jre/java/lang/Float.js rename to jdk/java/lang/Float.js index ac8e8f3..5aadc48 100755 --- a/jre/java/lang/Float.js +++ b/jdk/java/lang/Float.js @@ -1,15 +1,14 @@ -jre.imports['java.lang.Float'].load = () => { - +jdk.imports['java.lang.Float'].load = () => { class Float {} Float.parseFloat = (d) => { return parseFloat(d); - } + }; Float.compare = (a, b) => { return a - b; - } + }; Float.MAX_VALUE = Number.MAX_VALUE; Float.POSITIVE_INFINITY = Number.POSITIVE_INFINITY; Float.NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY; Float.NaN = NaN; - jre.java.lang.Float = Float; -} + jdk.java.lang.Float = Float; +}; diff --git a/jre/java/lang/Integer.js b/jdk/java/lang/Integer.js similarity index 75% rename from jre/java/lang/Integer.js rename to jdk/java/lang/Integer.js index 7a792d8..5145dae 100755 --- a/jre/java/lang/Integer.js +++ b/jdk/java/lang/Integer.js @@ -1,15 +1,14 @@ -jre.imports['java.lang.Integer'].load = () => { - +jdk.imports['java.lang.Integer'].load = () => { class Integer {} Integer.parseInt = (d) => { return parseInt(d); - } + }; Integer.compare = (a, b) => { return a - b; - } + }; Integer.MAX_VALUE = Number.MAX_VALUE; Integer.POSITIVE_INFINITY = Number.POSITIVE_INFINITY; Integer.NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY; Integer.NaN = NaN; - jre.java.lang.Integer = Integer; -} + jdk.java.lang.Integer = Integer; +}; diff --git a/jre/java/lang/Long.js b/jdk/java/lang/Long.js similarity index 75% rename from jre/java/lang/Long.js rename to jdk/java/lang/Long.js index dd485ab..af8f225 100755 --- a/jre/java/lang/Long.js +++ b/jdk/java/lang/Long.js @@ -1,15 +1,14 @@ -jre.imports['java.lang.Long'].load = () => { - +jdk.imports['java.lang.Long'].load = () => { class Long {} Long.parseLong = (d) => { return parseInt(d); - } + }; Long.compare = (a, b) => { return a - b; - } + }; Long.MAX_VALUE = Number.MAX_VALUE; Long.POSITIVE_INFINITY = Number.POSITIVE_INFINITY; Long.NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY; Long.NaN = NaN; - jre.java.lang.Long = Long; -} + jdk.java.lang.Long = Long; +}; diff --git a/jre/java/lang/Short.js b/jdk/java/lang/Short.js similarity index 75% rename from jre/java/lang/Short.js rename to jdk/java/lang/Short.js index 9fdecc6..1977bd0 100755 --- a/jre/java/lang/Short.js +++ b/jdk/java/lang/Short.js @@ -1,15 +1,14 @@ -jre.imports['java.lang.Short'].load = () => { - +jdk.imports['java.lang.Short'].load = () => { class Short {} Short.parseShort = (d) => { return parseInt(d); - } + }; Short.compare = (a, b) => { return a - b; - } + }; Short.MAX_VALUE = Number.MAX_VALUE; Short.POSITIVE_INFINITY = Number.POSITIVE_INFINITY; Short.NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY; Short.NaN = NaN; - jre.java.lang.Short = Short; -} + jdk.java.lang.Short = Short; +}; diff --git a/jre/java/lang/String.js b/jdk/java/lang/String.js similarity index 79% rename from jre/java/lang/String.js rename to jdk/java/lang/String.js index abfb906..e70782d 100755 --- a/jre/java/lang/String.js +++ b/jdk/java/lang/String.js @@ -1,4 +1,4 @@ -jre.imports['java.lang.String'].load = () => {}; +jdk.imports['java.lang.String'].load = () => {}; // String is special, I just extended js String prototype String.prototype.hashCode = () => { let h = this._hashCode; @@ -10,15 +10,15 @@ String.prototype.hashCode = () => { this._hashCode = h; } return h; -} +}; String.prototype.isEmpty = () => { - return this.length == 0 -} + return this.length == 0; +}; String.prototype.contains = (substr) => { return this.includes(substr); -} +}; // static methods String.valueOf = (c) => { return c.toString(); -} -jre.java.lang.String = String; +}; +jdk.java.lang.String = String; diff --git a/jre/java/lang/StringBuilder.js b/jdk/java/lang/StringBuilder.js similarity index 69% rename from jre/java/lang/StringBuilder.js rename to jdk/java/lang/StringBuilder.js index aa835ed..0bd927f 100755 --- a/jre/java/lang/StringBuilder.js +++ b/jdk/java/lang/StringBuilder.js @@ -1,8 +1,7 @@ -jre.imports['java.lang.StringBuilder'].load = () => { - +jdk.imports['java.lang.StringBuilder'].load = () => { class StringBuilder { constructor() { - this._str = ""; + this._str = ''; } append(val) { this._str = this._str + val; @@ -16,5 +15,5 @@ jre.imports['java.lang.StringBuilder'].load = () => { return this._str; } } - jre.java.lang.StringBuilder = StringBuilder; -} + jdk.java.lang.StringBuilder = StringBuilder; +}; diff --git a/jre/java/lang/System.js b/jdk/java/lang/System.js similarity index 74% rename from jre/java/lang/System.js rename to jdk/java/lang/System.js index 5f34890..df23b08 100755 --- a/jre/java/lang/System.js +++ b/jdk/java/lang/System.js @@ -1,7 +1,7 @@ -jre.imports['java.lang.System'].load = () => { - const Formatter = jre.import('java.util.Formatter'); - const InputStream = jre.import('java.io.InputStream'); - const PrintStream = jre.import('java.io.PrintStream'); +jdk.imports['java.lang.System'].load = () => { + const Formatter = jdk.import('java.util.Formatter'); + const InputStream = jdk.import('java.io.InputStream'); + const PrintStream = jdk.import('java.io.PrintStream'); class System {} @@ -31,5 +31,5 @@ jre.imports['java.lang.System'].load = () => { console.log('Exited with code: ' + code); if (window?.exit) exit(); }; - jre.java.lang.System = System; + jdk.java.lang.System = System; }; diff --git a/jdk/java/lang/Thread.js b/jdk/java/lang/Thread.js new file mode 100755 index 0000000..31c0ba2 --- /dev/null +++ b/jdk/java/lang/Thread.js @@ -0,0 +1,8 @@ +jdk.imports['java.lang.Thread'].load = () => { + class Thread { + async sleep(millis) { + await setTimeout(millis); + } + } + jdk.java.lang.Thread = Thread; +}; diff --git a/jre/java/lang/Throwable.js b/jdk/java/lang/Throwable.js similarity index 100% rename from jre/java/lang/Throwable.js rename to jdk/java/lang/Throwable.js diff --git a/jre/java/util/AbstractList.js b/jdk/java/util/AbstractList.js similarity index 89% rename from jre/java/util/AbstractList.js rename to jdk/java/util/AbstractList.js index 625bf1a..386a363 100755 --- a/jre/java/util/AbstractList.js +++ b/jdk/java/util/AbstractList.js @@ -1,6 +1,5 @@ -jre.imports['java.util.AbstractList'].load = () => { - - const Itr = jre.import('java.util.Itr'); +jdk.imports['java.util.AbstractList'].load = () => { + const Itr = jdk.import('java.util.Itr'); class AbstractList { constructor() { @@ -83,5 +82,5 @@ jre.imports['java.util.AbstractList'].load = () => { return new Itr(this); } } - jre.java.util.AbstractList = AbstractList; -} + jdk.java.util.AbstractList = AbstractList; +}; diff --git a/jdk/java/util/ArrayList.js b/jdk/java/util/ArrayList.js new file mode 100755 index 0000000..c9108a0 --- /dev/null +++ b/jdk/java/util/ArrayList.js @@ -0,0 +1,10 @@ +jdk.imports['java.util.ArrayList'].load = () => { + let AbstractList = jdk.import('java.util.AbstractList'); + + class ArrayList extends AbstractList { + constructor(...args) { + super(args); + } + } + jdk.java.util.ArrayList = ArrayList; +}; diff --git a/jre/java/util/Arrays.js b/jdk/java/util/Arrays.js similarity index 66% rename from jre/java/util/Arrays.js rename to jdk/java/util/Arrays.js index 4ab7060..bc48677 100755 --- a/jre/java/util/Arrays.js +++ b/jdk/java/util/Arrays.js @@ -1,5 +1,4 @@ -jre.imports['java.util.Arrays'].load = () => { - +jdk.imports['java.util.Arrays'].load = () => { class Arrays { fill(data, begin, nbElem, param) { const max = begin + nbElem; @@ -9,9 +8,9 @@ jre.imports['java.util.Arrays'].load = () => { } copyOf(original, newLength, ignore) { const copy = new Array(newLength); - jre.java.lang.System.arraycopy(original, 0, copy, 0, Math.min(original.length, newLength)); + jdk.java.lang.System.arraycopy(original, 0, copy, 0, Math.min(original.length, newLength)); return copy; } } - jre.java.util.Arrays = Arrays; -} + jdk.java.util.Arrays = Arrays; +}; diff --git a/jre/java/util/Collections.js b/jdk/java/util/Collections.js similarity index 72% rename from jre/java/util/Collections.js rename to jdk/java/util/Collections.js index 8ec2ad2..f7a6760 100755 --- a/jre/java/util/Collections.js +++ b/jdk/java/util/Collections.js @@ -1,5 +1,4 @@ -jre.imports['java.util.Collections'].load = () => { - +jdk.imports['java.util.Collections'].load = () => { class Collections { sort(list) { if (!list.size()) return; @@ -14,5 +13,5 @@ jre.imports['java.util.Collections'].load = () => { l.set(i, l.set(j, l.get(i))); } } - jre.java.util.Collections = Collections; -} + jdk.java.util.Collections = Collections; +}; diff --git a/jre/java/util/Formatter.js b/jdk/java/util/Formatter.js similarity index 65% rename from jre/java/util/Formatter.js rename to jdk/java/util/Formatter.js index 589f557..20737a7 100755 --- a/jre/java/util/Formatter.js +++ b/jdk/java/util/Formatter.js @@ -1,6 +1,5 @@ -jre.imports['java.util.Formatter'].load = () => { - - const IllegalFormatException = jre.import('java.util.IllegalFormatException'); +jdk.imports['java.util.Formatter'].load = () => { + const IllegalFormatException = jdk.import('java.util.IllegalFormatException'); class Formatter { format(format, ...args) { @@ -14,5 +13,5 @@ jre.imports['java.util.Formatter'].load = () => { return format; } } - jre.java.util.Formatter = Formatter; + jdk.java.util.Formatter = Formatter; }; diff --git a/jre/java/util/HashMap.js b/jdk/java/util/HashMap.js similarity index 91% rename from jre/java/util/HashMap.js rename to jdk/java/util/HashMap.js index 59fa5d4..e1f3692 100755 --- a/jre/java/util/HashMap.js +++ b/jdk/java/util/HashMap.js @@ -1,5 +1,4 @@ -jre.imports['java.util.HashMap'].load = () => { - +jdk.imports['java.util.HashMap'].load = () => { class HashMap { constructor() { this.content = {}; @@ -57,5 +56,5 @@ jre.imports['java.util.HashMap'].load = () => { return Object.keys(this.content).length; } } - jre.java.util.HashMap = HashMap; -} + jdk.java.util.HashMap = HashMap; +}; diff --git a/jre/java/util/HashSet.js b/jdk/java/util/HashSet.js similarity index 85% rename from jre/java/util/HashSet.js rename to jdk/java/util/HashSet.js index a94d19d..ff5be68 100755 --- a/jre/java/util/HashSet.js +++ b/jdk/java/util/HashSet.js @@ -1,5 +1,4 @@ -jre.imports['java.util.HashSet'].load = () => { - +jdk.imports['java.util.HashSet'].load = () => { class HashSet { constructor() { this.content = {}; @@ -52,7 +51,7 @@ jre.imports['java.util.HashSet'].load = () => { toArray(a) { const _this = this; - return Object.keys(this.content).map(key => _this.content[key]); + return Object.keys(this.content).map((key) => _this.content[key]); } iterator() { @@ -69,5 +68,5 @@ jre.imports['java.util.HashSet'].load = () => { return this.content[index]; } } - jre.java.util.HashSet = HashSet; -} + jdk.java.util.HashSet = HashSet; +}; diff --git a/jre/java/util/IllegalFormatException.js b/jdk/java/util/IllegalFormatException.js similarity index 50% rename from jre/java/util/IllegalFormatException.js rename to jdk/java/util/IllegalFormatException.js index 4e5f7d3..5d2a113 100755 --- a/jre/java/util/IllegalFormatException.js +++ b/jdk/java/util/IllegalFormatException.js @@ -1,5 +1,4 @@ -jre.imports['java.util.IllegalFormatException'].load = () => { - +jdk.imports['java.util.IllegalFormatException'].load = () => { // TODO import and extend exception class IllegalFormatException { @@ -7,5 +6,5 @@ jre.imports['java.util.IllegalFormatException'].load = () => { this.message = message; } } - jre.java.util.IllegalFormatException = IllegalFormatException; + jdk.java.util.IllegalFormatException = IllegalFormatException; }; diff --git a/jre/java/util/Itr.js b/jdk/java/util/Itr.js similarity index 77% rename from jre/java/util/Itr.js rename to jdk/java/util/Itr.js index 876ae60..da21599 100755 --- a/jre/java/util/Itr.js +++ b/jdk/java/util/Itr.js @@ -1,5 +1,4 @@ -jre.imports['java.util.Itr'].load = () => { - +jdk.imports['java.util.Itr'].load = () => { class Itr { constructor(list) { this.cursor = 0; @@ -21,12 +20,12 @@ jre.imports['java.util.Itr'].load = () => { } catch ($ex$) { if ($ex$ instanceof Error) { const e = $ex$; - throw new Error("no such element exception"); + throw new Error('no such element exception'); } else { throw $ex$; } } } } - jre.java.util.Itr = Itr; -} + jdk.java.util.Itr = Itr; +}; diff --git a/jdk/java/util/LinkedList.js b/jdk/java/util/LinkedList.js new file mode 100755 index 0000000..1a17fcd --- /dev/null +++ b/jdk/java/util/LinkedList.js @@ -0,0 +1,10 @@ +jdk.imports['java.util.LinkedList'].load = () => { + let AbstractList = jdk.import('java.util.AbstractList'); + + class LinkedList extends AbstractList { + constructor(...args) { + super(args); + } + } + jdk.java.util.LinkedList = LinkedList; +}; diff --git a/jre/java/util/Random.js b/jdk/java/util/Random.js similarity index 90% rename from jre/java/util/Random.js rename to jdk/java/util/Random.js index 94e11de..0289804 100755 --- a/jre/java/util/Random.js +++ b/jdk/java/util/Random.js @@ -1,5 +1,4 @@ -jre.imports['java.util.Random'].load = () => { - +jdk.imports['java.util.Random'].load = () => { class Random { constructor() { this.seed = undefined; @@ -44,5 +43,5 @@ jre.imports['java.util.Random'].load = () => { return min + rnd * (max - min); } } - jre.java.util.Random = Random; -} + jdk.java.util.Random = Random; +}; diff --git a/jre/java/util/Scanner.js b/jdk/java/util/Scanner.js similarity index 90% rename from jre/java/util/Scanner.js rename to jdk/java/util/Scanner.js index 69b64c8..5c975ee 100755 --- a/jre/java/util/Scanner.js +++ b/jdk/java/util/Scanner.js @@ -1,5 +1,5 @@ -jre.imports['java.util.Scanner'].load = () => { - const File = jre.import('java.io.File'); +jdk.imports['java.util.Scanner'].load = () => { + const File = jdk.import('java.io.File'); class Scanner { constructor(input) { @@ -50,5 +50,5 @@ jre.imports['java.util.Scanner'].load = () => { } close() {} } - jre.java.util.Scanner = Scanner; + jdk.java.util.Scanner = Scanner; }; diff --git a/jre/java/util/Stack.js b/jdk/java/util/Stack.js similarity index 77% rename from jre/java/util/Stack.js rename to jdk/java/util/Stack.js index 12b4632..d15203e 100755 --- a/jre/java/util/Stack.js +++ b/jdk/java/util/Stack.js @@ -1,4 +1,4 @@ -jre.imports['java.util.Stack'].load = () => { +jdk.imports['java.util.Stack'].load = () => { class Stack { constructor() { this.content = new Array(); @@ -20,5 +20,5 @@ jre.imports['java.util.Stack'].load = () => { return this.content.slice(-1)[0]; } } - jre.java.util.Stack = Stack; -} + jdk.java.util.Stack = Stack; +}; diff --git a/jre/java/lang/Thread.js b/jre/java/lang/Thread.js deleted file mode 100755 index cc68187..0000000 --- a/jre/java/lang/Thread.js +++ /dev/null @@ -1,9 +0,0 @@ -jre.imports['java.lang.Thread'].load = () => { - - class Thread { - async sleep(millis) { - await setTimeout(millis); - } - } - jre.java.lang.Thread = Thread; -} diff --git a/jre/java/util/ArrayList.js b/jre/java/util/ArrayList.js deleted file mode 100755 index aa2e925..0000000 --- a/jre/java/util/ArrayList.js +++ /dev/null @@ -1,11 +0,0 @@ -jre.imports['java.util.ArrayList'].load = () => { - - let AbstractList = jre.import('java.util.AbstractList'); - - class ArrayList extends AbstractList { - constructor(...args) { - super(args); - } - } - jre.java.util.ArrayList = ArrayList; -} diff --git a/jre/java/util/LinkedList.js b/jre/java/util/LinkedList.js deleted file mode 100755 index 483fcf0..0000000 --- a/jre/java/util/LinkedList.js +++ /dev/null @@ -1,11 +0,0 @@ -jre.imports['java.util.LinkedList'].load = () => { - - let AbstractList = jre.import('java.util.AbstractList'); - - class LinkedList extends AbstractList { - constructor(...args) { - super(args); - } - } - jre.java.util.LinkedList = LinkedList; -} diff --git a/package.json b/package.json index 4bd572f..45edd61 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "java2js", - "version": "1.0.2", + "version": "1.0.3", "description": "Converts Java to JavaScript with support for p5.js and QuintOS.", "main": "java2js.js", "scripts": {