當前位置:首頁 » 編程軟體 » 網頁java代碼在線編譯

網頁java代碼在線編譯

發布時間: 2024-05-18 00:29:49

⑴ 如何用maven將java8寫的代碼編譯為java6平台的

在一般的Java應用開發過程中,開發人員使用Java的方式比較簡單。打開慣用的IDE,編寫Java源代碼,再利用IDE提供的功能直接運行Java 程序就可以了。這種開發模式背後的過程是:開發人員編寫的是Java源代碼文件(.java),IDE會負責調用Java的編譯器把Java源代碼編譯成平台無關的位元組代碼(byte code),以類文件的形式保存在磁碟上(.class)。Java虛擬機(JVM)會負責把Java位元組代碼載入並執行。Java通過這種方式來實現其「編寫一次,到處運行(Write once, run anywhere)」 的目標。Java類文件中包含的位元組代碼可以被不同平台上的JVM所使用。Java位元組代碼不僅可以以文件形式存在於磁碟上,也可以通過網路方式來下載,還可以只存在於內存中。JVM中的類載入器會負責從包含位元組代碼的位元組數組(byte[])中定義出Java類。在某些情況下,可能會需要動態的生成 Java位元組代碼,或是對已有的Java位元組代碼進行修改。這個時候就需要用到本文中將要介紹的相關技術。首先介紹一下如何動態編譯Java源文件。
動態編譯Java源文件
在一般情況下,開發人員都是在程序運行之前就編寫完成了全部的Java源代碼並且成功編譯。對有些應用來說,Java源代碼的內容在運行時刻才能確定。這個時候就需要動態編譯源代碼來生成Java位元組代碼,再由JVM來載入執行。典型的場景是很多演算法競賽的在線評測系統(如PKU JudgeOnline),允許用戶上傳Java代碼,由系統在後台編譯、運行並進行判定。在動態編譯Java源文件時,使用的做法是直接在程序中調用Java編譯器。
JSR 199引入了Java編譯器API。如果使用JDK 6的話,可以通過此API來動態編譯Java代碼。比如下面的代碼用來動態編譯最簡單的Hello World類。該Java類的代碼是保存在一個字元串中的。
01 public class CompilerTest {
02 public static void main(String[] args) throws Exception {
03 String source = "public class Main { public static void main(String[] args) {System.out.println(\"Hello World!\");} }";
04 JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
05 StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);
06 StringSourceJavaObject sourceObject = newCompilerTest.StringSourceJavaObject("Main", source);
07 Iterable< extends JavaFileObject> fileObjects = Arrays.asList(sourceObject);
08 CompilationTask task = compiler.getTask(null, fileManager, null,null, null, fileObjects);
09 boolean result = task.call();
10 if (result) {
11 System.out.println("編譯成功。");
12 }
13 }
14
15 static class StringSourceJavaObject extends SimpleJavaFileObject {
16
17 private String content = null;
18 public StringSourceJavaObject(String name, String content) ??throwsURISyntaxException {
19 super(URI.create("string:///" + name.replace('.','/') + Kind.SOURCE.extension), Kind.SOURCE);
20 this.content = content;
21 }
22
23 public CharSequence getCharContent(boolean ignoreEncodingErrors) ??throws IOException {
24 return content;
25 }
26 }
27 }
如果不能使用JDK 6提供的Java編譯器API的話,可以使用JDK中的工具類com.sun.tools.javac.Main,不過該工具類只能編譯存放在磁碟上的文件,類似於直接使用javac命令。
另外一個可用的工具是Eclipse JDT Core提供的編譯器。這是Eclipse Java開發環境使用的增量式Java編譯器,支持運行和調試有錯誤的代碼。該編譯器也可以單獨使用。Play框架在內部使用了JDT的編譯器來動態編譯Java源代碼。在開發模式下,Play框架會定期掃描項目中的Java源代碼文件,一旦發現有修改,會自動編譯 Java源代碼。因此在修改代碼之後,刷新頁面就可以看到變化。使用這些動態編譯的方式的時候,需要確保JDK中的tools.jar在應用的 CLASSPATH中。
下面介紹一個例子,是關於如何在Java裡面做四則運算,比如求出來(3+4)*7-10的值。一般的做法是分析輸入的運算表達式,自己來模擬計算過程。考慮到括弧的存在和運算符的優先順序等問題,這樣的計算過程會比較復雜,而且容易出錯。另外一種做法是可以用JSR 223引入的腳本語言支持,直接把輸入的表達式當做JavaScript或是JavaFX腳本來執行,得到結果。下面的代碼使用的做法是動態生成Java源代碼並編譯,接著載入Java類來執行並獲取結果。這種做法完全使用Java來實現。
01 private static double calculate(String expr) throws CalculationException {
02 String className = "CalculatorMain";
03 String methodName = "calculate";
04 String source = "public class " + className
05 + " { public static double " + methodName + "() { return " + expr +"; } }";
06 //省略動態編譯Java源代碼的相關代碼,參見上一節
07 boolean result = task.call();
08 if (result) {
09 ClassLoader loader = Calculator.class.getClassLoader();
10 try {
11 Class<?> clazz = loader.loadClass(className);
12 Method method = clazz.getMethod(methodName, new Class<?>[] {});
13 Object value = method.invoke(null, new Object[] {});
14 return (Double) value;
15 } catch (Exception e) {
16 throw new CalculationException("內部錯誤。");
17 }
18 } else {
19 throw new CalculationException("錯誤的表達式。");
20 }
21 }
上面的代碼給出了使用動態生成的Java位元組代碼的基本模式,即通過類載入器來載入位元組代碼,創建Java類的對象的實例,再通過Java反射API來調用對象中的方法。
Java位元組代碼增強
Java 位元組代碼增強指的是在Java位元組代碼生成之後,對其進行修改,增強其功能。這種做法相當於對應用程序的二進制文件進行修改。在很多Java框架中都可以見到這種實現方式。Java位元組代碼增強通常與Java源文件中的註解(annotation)一塊使用。註解在Java源代碼中聲明了需要增強的行為及相關的元數據,由框架在運行時刻完成對位元組代碼的增強。Java位元組代碼增強應用的場景比較多,一般都集中在減少冗餘代碼和對開發人員屏蔽底層的實現細節上。用過JavaBeans的人可能對其中那些必須添加的getter/setter方法感到很繁瑣,並且難以維護。而通過位元組代碼增強,開發人員只需要聲明Bean中的屬性即可,getter/setter方法可以通過修改位元組代碼來自動添加。用過JPA的人,在調試程序的時候,會發現實體類中被添加了一些額外的 域和方法。這些域和方法是在運行時刻由JPA的實現動態添加的。位元組代碼增強在面向方面編程(AOP)的一些實現中也有使用。

⑵ javaweb項目怎麼實現在線編輯合同宓墓δ

其實就是Word在線編輯吧。
一般來說兩種途徑。一種是利用插件,比如PageOffice。好處是服務端有一整套的開發介面,劣勢是需要安裝插件,客戶端需要有Word等Office應用程序安裝,不同的客戶端環境不同可能造成後繼使用過程中的維護量。
還有一種是無插件的方式,Office 365就是典型的,不過如果是私有化部署,就不能用Office 365了。
還有一個是uzer.me,能提供無插件的原生Office編輯,提供JS SDK和REST API,各種編程語言都能對接。好處是無插件,劣勢是只支持webRTC的瀏覽器,比如火狐、谷歌,360極速等,反正IE是不支持的(聽說最近IE也能支持,但是要裝插件了)。

還有一種在線編輯,是採用類似Word的模式,而實際更多是一個富文本的編輯器,這個用HTML就可以實現,有一些開源的工具的。無非是把Word和H5要格式互轉。這個可能對於合同來說,容易丟失格式。如果格式是固定的話,會簡單一些。

⑶ IT學習網站的在線編程運行是怎麼實現的

1、不難,舉個例子 比如說JAVA語言 寫一段代碼 進行編譯 獲取結果,並不難比如電腦只要裝有JVM 就可以在網頁上提交代碼 生成一個臨時文件 利用一些編譯命令 比如javac java 等 就可以自動運行編譯獲取結果 同理 c c++ c# 等等等其他語言 都有自己的運行機制 要不然 那麼多IDE怎麼就可用運行我們寫的代碼呢?只不過IDE是我們認為觸發的 他們是省卻了這一步。

2、IT培訓行業近幾年可以說是飛速發展。隨著中國電子商務產業、移動互聯網產業的發展及雲計算技術在全球范圍內的推廣,智能手機終端、移動應用、雲管理、雲物流、雲手機等技術領域將產生巨大的人才缺口。

3、中國IT培訓行業現狀調研分析及發展趨勢預測報告(2017版)顯示,目前中國IT以及相關行業共有1500萬從業人員,按照年增長15%的速度,約有225萬新增崗位,加上5%退休和離職率,估計每年有300萬市場新增需求,與此同時每年計算機相關專業畢業生大概200W,因此可以預計市場仍存在100萬左右的人才缺口。

4、現在高校對於IT技能培訓也日益重視,對同培訓機構聯合舉辦實訓項目也持歡迎態度,但是跟以前的走過場相比,現在的高校對實訓項目技術要求更高,對實訓機構的資質的標准要求更高,希望通過實訓項目能給學生帶來實實在在的技能。

5、巨大人才缺口的存在使得人才的培養變得尤其關鍵,同時IT行業還存在的另一個普遍問題:學歷教育與企業實際需求相脫節。百萬計算機專業畢業生也有知識更新和增加項目經驗的需求。

6、另外根據2016-2021年中國IT培訓行業發展分析及投資潛力研究報告行業結構統計,高達92%的IT從業人員表示需要提升IT技能,有42%的參與者表示非常想參加IT培訓。

⑷ 網上有在線 的 java 編譯么

http://www.innovation.ch/java/java_compile.html
英文的,不過很易用
jre還是要裝,要不你怎麼運行啊

⑸ Notepad++鐩存帴緙栬瘧榪愯宩ava浠g爜

Notepad++鎷ユ湁寮哄ぇ鐨勬彃浠剁$悊鑳藉姏錛屽彲浠ラ泦鎴愬苟瀹炵幇寰堝氱殑鍔熻兘錛屽埄鐢∟ppExec鎻掍歡鍙浠ュ疄鐜扮洿鎺ョ紪璇戣繍琛宩ava浠g爜鐨勫姛鑳斤紝涓嬮潰灝變粙緇嶄笅鏂規硶
1銆佹墦寮Notepad++錛屽湪宸ュ叿鏍忎腑鎵懼埌鎻掍歡錛岄夋嫨鎻掍歡綆$悊錛屽睍紺烘墍鏈夌殑鎻掍歡
2銆佸湪鍒楄〃閲岄夋嫨NppExec錛岀偣鍑諱笅鏂圭殑瀹夎咃紝榪涘叆鍦ㄧ嚎涓嬭澆欏甸潰
3銆佷笅杞藉畬姣曞悗錛屾彁紺洪噸鍚鐢熸晥錛岀偣鍑繪槸
4銆侀噸鏂版墦寮鎻掍歡宸ュ叿鏍忥紝鍙戠幇NppExec宸茬粡瀹夎呭ソ
5銆侀夋嫨鎵ц岋紝鎴栬呭揩鎹烽敭F6錛屽脊鍑鴻剼鏈緙栧啓妗嗭紝杈撳叆濡備笅鍥炬墍紺虹殑鍐呭癸紝鐐瑰嚮save錛屽瑰叾榪涜屽懡鍚
6銆佷互涓孌電畝鍗旿ava浠g爜涓轟緥錛屾晥鏋滃備笅鍥撅紝緙栬瘧騫惰繍琛屾垚鍔

熱點內容
csqlserver 發布:2024-11-08 17:43:08 瀏覽:206
sql綠色 發布:2024-11-08 17:26:48 瀏覽:805
安卓手機如何更新紅標 發布:2024-11-08 17:25:23 瀏覽:62
python正則空格 發布:2024-11-08 17:14:18 瀏覽:234
蟑螂資料庫 發布:2024-11-08 17:13:07 瀏覽:780
洗車機的配置是什麼意思 發布:2024-11-08 17:13:01 瀏覽:265
java開發文檔編寫 發布:2024-11-08 17:06:49 瀏覽:433
文件夾取消折疊組 發布:2024-11-08 17:05:41 瀏覽:569
微信第一次支付密碼是什麼 發布:2024-11-08 17:05:21 瀏覽:578
國內免費雲伺服器騰訊 發布:2024-11-08 17:03:53 瀏覽:664