2012-07-28 14 views
6

私はPlayフレームワークに導入されました。私が発見した驚くべきことの1つは、プロジェクトをコンパイルする必要がないということです。編集したファイルを保存し、Webページをリロードするだけです。Playフレームワーク。コンパイルする必要はありません

私は、Javaソースコードがバイトコードにコンパイルされ、JITコンパイラでコンパイルされていると教えられていますので、Playフレームワークの中の魔法は何ですか?

答えて

11

DEVモードで実行している場合、PlayはJavaファイルの最終更新日をチェックし、実行時に生成された.classファイルと相互参照します。何かが変更されたことを認識すると、実行時に再コンパイルされます。

Play 1.xでは、再コンパイルはeclipse jdtコンパイラ(org.eclipse.jdt.internal.compiler.Compiler)を使用して行われます。 Play 1.xのコードを見たい場合は、次のクラスを見てください。https://github.com/playframework/play/blob/master/framework/src/play/classloading/ApplicationCompiler.java

Play 2.xでは、PlayはSBTツールと連動しているように見えます。これをチェック - https://github.com/playframework/Play20/blob/master/framework/src/play/src/main/scala/play/core/system/ApplicationProvider.scala

1

あなたがPlay framework 1.xについて話しているならば、それはJavaソースファイルを自動的にロードして(Eclipse Java Compilerを使用して)バイトコードにコンパイルするアプリケーションクラスマネージャを持っています。 Javassistを使ってhttps://github.com/playframework/play/tree/master/framework/src/play/classloadingのコードを確認してください。

4

Playのどのバージョンがあなたにとても驚かされたのかは簡単に言えませんが、その方法で記述することができます:development modeで再生すると、あなたのアプリに属する​​すべてのファイルが監視され、 。したがって、パフォーマンスの冗長な喪失であるため、DEVを本番用に使用しないでください。それ以外の場合:プロダクションモードでアプリケーションを起動すると即座に再コンパイルされることはありませんが、パフォーマンスは向上します。アプリケーションを実行すると、

play run 

または

play ~run 

で行わ開発モードでプレイ2で

(最初のコマンドは、第二次のファイルを変更した後、次のページヒットの後にコードを再コンパイル)

運用モードでアプリケーションを実行するには、

play start 
関連する問題