Denken Sie an das JAVA = JAVAscript-Problem (wird in Zukunft benötigt).

Zweck dieses Artikels

Gibt an, dass JAVA = JAVA-Skript. Vorerst habe ich am Ende auch einen ernsthaften Kommentar hinzugefügt. Da es einige Fehler gab, habe ich am Ende auch eine Entschuldigung hinzugefügt.

Code

Fügen Sie denselben Code zweimal ein.

/*
<script>
var System = {out: {println: function(e){console.log(e);document.getElementsByTagName('body')[0].innerHTML=e;}}};
window.onload = function() {
    eval(document.getElementById('code').innerHTML.replace(/[*]/g, '/').replace(/(public|static|void|String\[\] args)/g, ''));
}
</script>
<div id="code">
*/
class Main {
    public static void main(String[] args) {
        System.out.println("Hello, world!");
    }
}
/*
new Main().main();
</div>
*/
/*
<script>
var System = {out: {println: function(e){console.log(e);document.getElementsByTagName('body')[0].innerHTML=e;}}};
window.onload = function() {
	eval(document.getElementById('code').innerHTML.replace(/[*]/g, '/').replace(/(public|static|void|String\[\] args)/g, ''));
}
</script>
<div id="code">
*/
class Main {
	public static void main(String[] args) {
		System.out.println("Hello, world!");
	}
}
/*
new Main().main();
</div>
*/

Mit JAVA ausführen

Um ehrlich zu sein, kann es ausgeführt werden, indem es auf einer Site namens paiza eingefügt wird. Bewegung! Hallo Welt! Beeindruckend!

Mit JAVA-Skript ausführen

Speichern Sie den obigen Code als ** html ** und doppelklicken Sie darauf, um ihn in einem geeigneten Browser zu öffnen. Die überprüfte Umgebung war Chrom. Hallo Welt! Beeindruckend!

Vielleicht haben einige Browser-Bildschirme seltsame Zeichenfolgen, aber echte Leute kümmern sich nicht darum. Wenn Sie einige Browser verwenden, werfen Sie einen Blick auf die Entwicklertools. Hallo Welt! Beeindruckend!

Gedicht

Für einen wahren Mann ist es selbstverständlich, dass JAVA = JAVA-Skript. Es gibt einige Dinge wie JAVA und JAVA-Skript, die unterschiedlich sind, aber das funktioniert in der Wildnis Mexikos nicht. Derjenige, der es nicht versteht, ist zunächst gut, aber schließlich bricht er im Wind Mexikos zusammen, der im Kommentarbereich weht, tröstet sich mit Babe, den er an der Bar getroffen hat, betrinkt sich mit den Freuden des Augenblicks, bringt ein Kind zur Welt und sagt: "Nichts Interessantes. Es war ein Leben ohne Schwert ", flüsterte er an der Bar ... und starb schließlich an Altersschwäche. DAS ENDE VON MEXIKO .... Aber wenn Sie immer noch einen wahren Pioniergeist haben, ist das eine andere Geschichte. Es ist jetzt nicht zu spät. Führen Sie JAVA = JAVA-Skript aus.

Es ist eine Lüge

Java und JavaScript sind verschiedene Dinge. Es tut mir Leid. Warum behaupten manche Leute, dass sie unterschiedlich, aber gleich sind? Wie für den Hintergrund https://qiita.com/pik/items/1c95d69debee4aedffea Ist detailliert.

Ein kleiner Kommentar

Java und JavaScript sind Sprachen, die im Kommentarformat ähnlich sind, weil sie von C abgeleitet sind. Andererseits ist das Verhalten reservierter Wörter unterschiedlich. Insbesondere ist die Handhabung beim Platzieren von Token nur in Räumen schlecht. Also dachte ich, es wäre unmöglich, Code zu schreiben, der auf einfache Weise so oder so funktioniert, also fing ich an, etwas falsch zu machen.

Kommentar

Zunächst erstellen wir mithilfe von HTML einen Bereich, in dem Kommentare in Java, jedoch nicht in JS abgegeben werden. In der Java-Welt können Sie so den gesamten JavaScript-Code als Kommentare behandeln. Da Java keine Makros hat, ist es etwas schwierig, den Code zur Laufzeit dynamisch neu zu schreiben. Abgesehen von Kommentaren sollte es sich also um normalen Code für Java handeln.

Umschreiben und Auswerten des Codes

Wie oben erwähnt, gibt es viele reservierte Wörter, die auf naive Weise im Weg stehen. Schreiben Sie den Code also neu. Der Schlüssel ist eval und ersetzen.

eval

eval sollte in Bezug auf Leistung oder Sicherheit nicht durchgeführt werden und wertet eine Zeichenfolge als JavaScript-Code aus.

replace

Da die Trennung zwischen dem reservierten Wort und dem Kommentar ein Hindernis darstellt, ersetzen Sie es durch einen regulären Ausdruck. Abgesehen von den reservierten Wörtern sind einige von ihnen problematisch, daher werde ich sie löschen.

ein Punkt

Eigentlich ist es nicht unmöglich, zum Beispiel PHP in diesen Code einzufügen, aber ich dachte, es wäre ein bisschen nervig, nur Hallo, Welt!

Entschuldigung

Teil 1

Ich habe kopiert und die Java-Quelle war veraltet. Fest. Es tut mir Leid.

Teil 2

Es war gut, einmal wie folgt zu ersetzen. Es tut mir Leid.

Verbesserte Version


/*
<script>
var System = {out: {println: function(e){console.log(e);document.getElementsByTagName('body')[0].innerHTML=e;}}};
window.onload = function() {
    eval(document.getElementById('code').innerHTML.replace(/[*]/g, '/'));
}
</script>
<div id="code">
*/
class Main {
    /**/ public static void
    main(
        /**/ String[] args
    ) {
        System.out.println("Hello, world!");
    }
}
/*
new Main().main();
</div>
*/

Das ist es!

Recommended Posts

Denken Sie an das JAVA = JAVAscript-Problem (wird in Zukunft benötigt).
Denken Sie über die Unterschiede zwischen Funktionen und Methoden nach (in Java)
Über die Verwirrung beim Starten von Java-Servern
Über die Idee anonymer Klassen in Java
Eine Geschichte über das JDK in der Java 11-Ära
Über das Problem des Deadlocks bei der Parallelverarbeitung in gem'sprockets '4.0
Erfahren Sie mehr über Spezifikationen, während Sie FizzBuzz verkürzen, das in Java geschrieben wurde
[Für Anfänger] Über die von Java Gold erklärte JavaScript-Syntax
Greifen Sie mit Java auf die Netzwerkschnittstelle zu
Errate den Zeichencode in Java
Übergeben Sie das Gebietsschema i18n an JavaScript
Über das Symbol <%%> in Rails erb
Geben Sie den Java-Speicherort in eclipse.ini an
Java, JavaScript, C # (Unterschied in der Zuordnung)
Entpacken Sie die Zip-Datei in Java
Informationen zur aktuellen Entwicklungsumgebung (Java 8)
Analysieren der COTOHA-API-Syntaxanalyse in Java
Denken Sie an die 7 Regeln von Optional
Informationen zur Eclipse-Umgebung (Java, Liberty, JavaScript)
Informationen zur Dateikopierverarbeitung in Java
Der Weg von JavaScript nach Java
Rufen Sie die Super-Methode in Java auf
[Java] java.lang.NoClassDefFoundError: Behebung des Problems, in org / jsoup / security / Whitelist zu fallen
Über das Phänomen, dass StackOverflowError bei der Verarbeitung mit regulären Java-Ausdrücken auftritt
Informationen zum Zurückgeben einer Referenz in einem Java Getter
Holen Sie sich das Ergebnis von POST in Java
Erraten Sie das Java Persistence Framework 2017 (3) Reladomo
Java-Referenz zum Verständnis in der Abbildung
Rufen Sie Java-Methoden aus JavaScript auf, das in Java ausgeführt wird
Versuchen Sie es mit der Stream-API in Java
Rufen Sie die Windows-Benachrichtigungs-API in Java auf
Über das Verfahren, damit Java funktioniert
[Erstellen] Ein Memorandum über das Codieren in Java
Über das neue Release-Modell von Java @ Seki Java (20.07.2018)
Ich habe das neue Yuan-Problem in Java ausprobiert
Notizen im Kopf organisieren (Java-Arrangement)
Versuchen Sie, den CORBA-Dienst unter Java 11+ aufzurufen
Verwenden Sie "Rhino", das JavaScript in Java ausführt
Informationen zu Datensätzen, die zur Vorschau in Java JDK 14 hinzugefügt wurden
Was ist die Hauptmethode in Java?
So erhalten Sie das Datum mit Java
Fortsetzung Sprechen Sie über das Schreiben von Java mit Emacs @ 2018
Über die Anzahl der Threads von Completable Future
Die Geschichte des Schreibens von Java in Emacs
Konsoleneingabe in Java (Verständnis des Mechanismus)
Java vs. JavaScript: Was ist der Unterschied?
Überspringen Sie Masakari einfach zu "Programmiersprachen, die in Zukunft benötigt werden".
Eindrücke und Zweifel an der erstmaligen Verwendung von Java in Android Studio
Informationen zur Bedeutung von Typvariablen, E, T usw., die in in Java verwendeten Generika verwendet werden
Die Geschichte des einfachen String-Vergleichs in Java
[Java] Behandlung von Java Beans in der Methodenkette
Die Geschichte eines gewöhnlichen Othello in Java
Informationen zur Beschreibungsreihenfolge der Java-Systemeigenschaften
ChatWork4j für die Verwendung der ChatWork-API in Java
Organisiertes Memo im Kopf (Java - Control Syntax)
Versuchen Sie, etwa 30 Zeilen in Java zu kratzen (CSV-Ausgabe)
Der in Java 10 eingeführte Schnittpunkttyp ist erstaunlich (?)
Die Geschichte des Lernens von Java in der ersten Programmierung
Messen Sie die Größe eines Ordners mit Java
Informationen zu in Java verwendeten Variablen (lokaler Variablentyp)