2012-09-16 62 views
0

通過使用JRE或其他運行時環境,是否可以在Web服務器(如Apache或Nginx)上編譯Java代碼? 具體來說,我想要一個可以接受用戶輸入(Java代碼)的Web應用程序,並且當用戶點擊運行時,它會將Java編譯爲Java Byte代碼並顯示結果,就像Eclipse一樣。
這種技術是否存在? 這是否違背了編譯語言的邏輯? 謝謝您提前預約。 Amicably, James是否可以在Web服務器上編譯Java?

回答

4

運行Apache的服務器還需要一個JDK。您可以輕鬆將輸入寫入文件,編譯它,運行它,並將結果顯示給用戶。這可以通過在Tomcat中運行的CGI腳本或Java EE應用程序或類似程序完成。一個JDK將是必需的,一個JRE是不夠的。

儘管如此,請考慮潛在的安全風險。根據程序的實際情況,這可能會導致您的計算機或其他計算機出現問題。

+1

只是在這裏支持博安對安全的評論。用戶編寫的代碼將在您的服務器上運行。他可以訪問文件,進行系統調用等。可以通過在Java中使用安全管理器並限制java進程來加強這一點,但除非您真的知道自己在做什麼,否則不要這樣做。 – sstendal

+0

太棒了,明白了。謝謝。但是,無論何時發送到服務器的編譯請求,是否可以在VM中運行Java代碼? –

1

當然這是可能的。但是您需要一個JDK和一些服務器端腳本(PHP,Ruby,Python,Java ...),它將源代碼作爲輸入並調用Java編譯器來編譯代碼。
你必須考慮的是安全問題。然後每個用戶都可以上傳代碼,這些代碼將在服務器上執行。所以你必須確保代碼在沙箱中運行。

1

有幾個網站這樣做。我用過的一個是http://www.ideone.com

您可以使用JDK和各種腳本重現此操作,也可以從頭編寫自己的編譯器。無論哪種方式,您都需要某種編譯器來實際編譯代碼。

相關問題