2012-07-28 20 views
6

Ich wurde in das Play-Framework eingeführt, und eines der erstaunlichen Dinge, die ich darüber gefunden habe, ist, dass es keine Notwendigkeit gibt, das Projekt zu kompilieren. Sie müssen nur die bearbeiteten Dateien speichern und die Webseite neu laden.Spielen Rahmen. keine Notwendigkeit zu kompilieren

Ich habe gelernt, dass Java-Quellcode zu Bytecode kompiliert und dann mit dem JIT-Compiler kompiliert wird, also was ist die Magie innerhalb des Play-Frameworks?

Antwort

11

Beim Ausführen im DEV-Modus überprüft Play das Datum der letzten Änderung der Java-Dateien und referenziert sie mit den zur Laufzeit generierten .class-Dateien. Wenn es erkennt, dass sich etwas geändert hat, wird es zur Laufzeit neu kompiliert.

In Play 1.x - die Neukompilierung erfolgt mit dem Eclipse-jdt-Compiler (org.eclipse.jdt.internal.compiler.Compiler). Wenn Sie den Code von Play 1.x sehen möchten, sehen Sie sich einfach die folgende Klasse an: https://github.com/playframework/play/blob/master/framework/src/play/classloading/ApplicationCompiler.java

In Play 2.x sieht es so aus, als ob Play es durch die Verknüpfung mit dem SBT-Tool tut. Überprüfen Sie diese - https://github.com/playframework/Play20/blob/master/framework/src/play/src/main/scala/play/core/system/ApplicationProvider.scala

4

Obwohl Sie nicht erwähnt haben, welche Version von Play Sie in einfachsten Worten so erstaunt, kann es so beschrieben werden: Play in development mode überwacht alle Dateien, die in Ihre App gehört, und im Falle einer Änderung kompiliert erforderlichen Teile . Daher sollte DEV nicht für die Produktion verwendet werden - da es redundanter Leistungsverlust ist. Andernfalls: Wenn Sie Ihre Anwendung im Produktionsmodus starten, wird eine sofortige Neukompilierung vermieden, die Leistung wird jedoch erhöht.

In 2 Spielen die Anwendung läuft Modus Entwicklung erfolgt mit

play run 

oder

play ~run 

(ersten Befehl neu kompiliert Code übernächsten Seite Hit, die zweiten nach nächster Datei ändern)

Die laufende Anwendung im Produktionsmodus kann mit

ausgeführt werden
Verwandte Themen