本文目錄一覽:
javac是什麼?
javac是Java編譯器,負責將Java源代碼轉換成字節碼文件。
javac 可以隱式編譯一些沒有在命令行中提及的源文件。用 -verbose 選項可跟蹤自動編譯。當編譯源文件時,編譯器常常需要它還沒有識別出的類型的有關信息。
javac的特點
javac具有簡單性、面向對象、分布性、解釋性、可靠、安全、平台無關、可移植性、高性能、多線程、動態性等特點。提供了異常處理機制,程序員可以把錯誤代碼放在一起,這樣可以簡化錯誤處理任務,便於恢復。不支持指針,杜絕了內存的非法訪問。
JAVA的編譯器有哪些?
推薦Jcreator,它對於初學者是個很好的開發工具,又小運行也很快。它要用到JDK,大的IDE有JBuilder,netbean,sun stdio,eclipse。
編譯器就是將”一種語言(通常為高級語言)”翻譯為”另一種語言(通常為低級語言)”的程序。一個現代編譯器的主要工作流程:源代碼 (source code) → 預處理器 (preprocessor) → 編譯器 (compiler) → 目標代碼 (object code) → 鏈接器 (Linker) → 可執行程序 (executables)
高級計算機語言便於人編寫,閱讀交流,維護。機器語言是計算機能直接解讀、運行的。編譯器將彙編或高級計算機語言源程序(Source program)作為輸入,翻譯成目標語言(Target language)機器代碼的等價程序。源代碼一般為高級語言 (High-level language), 如Pascal、C、C++、Java、漢語編程等或彙編語言,而目標則是機器語言的目標代碼(Object code),有時也稱作機器代碼(Machine code)。
對於C#、VB等高級語言而言,此時編譯器完成的功能是把源碼(SourceCode)編譯成通用中間語言(MSIL/CIL)的字節碼(ByteCode)。最後運行的時候通過通用語言運行庫的轉換,編程最終可以被CPU直接計算的機器碼(NativeCode)。
Java進階:SE6調用編譯器的兩種方法[2]
三 從內存中編譯
JavaCompiler不僅可以編譯硬盤上的Java文件 而且還可以編譯內存中的Java代碼 然後使用reflection來運行它們 我們可以編寫一個JavaSourceFromString類 通過這個類可以輸入Java源代碼 一但建立這個對象 你可以向其中輸入任意的Java代碼 然後編譯和運行 而且無需向硬盤上寫 class文件
import java lang reflect *;import java io *;import javax tools *;import javax tools JavaCompiler CompilationTask;import java util *;import java net *;public class test_pilerapi{ private static void pilerJava() throws Exception { JavaCompiler piler = ToolProvider getSystemJavaCompiler(); DiagnosticCollector diagnostics = new DiagnosticCollector(); // 定義一個StringWriter類 用於寫Java程序 StringWriter writer = new StringWriter(); PrintWriter out = new PrintWriter(writer); // 開始寫Java程序 out println( public class HelloWorld { ); out println( public static void main(String args[]) { ); out println( System out println(\ Hello World\ ); ); out println( } ); out println( } ); out close(); //為這段代碼取個名子 HelloWorld 以便以後使用reflection調用 JavaFileObject file = new JavaSourceFromString( HelloWorld writer toString()); Iterable pilationUnits = Arrays asList(file); JavaCompiler CompilationTask task = piler getTask(null null diagnostics null null pilationUnits); boolean success = task call(); System out println( Success: + success); // 如果成功 通過reflection執行這段Java程序 if (success) { System out println( 輸出 ); Class forName( HelloWorld ) getDeclaredMethod( main new Class[] { String[] class }) invoke(null new Object[] { null }); System out println( 輸出 ); } } public static void main(String args[]) throws Exception { pilerJava(); } } // 用於傳遞源程序的JavaSourceFromString類 class JavaSourceFromString extends SimpleJavaFileObject { final String code; JavaSourceFromString(String name String code) { super(URI create( string:/// + name replace( / )+ Kind SOURCE extension) Kind SOURCE); this code = code; } @Override public CharSequence getCharContent(boolean ignoreEncodingErrors) { return code; } }
lishixinzhi/Article/program/Java/hx/201311/27240
初學java 用什麼編譯器?
一 eclipse / myeclipse
當年學習java,最先接觸到的就是 eclipse。喔了個噻,當時感覺eclipse好牛啊,有好多先進的功能:
1. 可以方便地進行包管理。可視化窗口,創建目錄和文件都很方便,移動包,複製包等都可以方便的進行。
2.熱鍵操作。複製保存啥的就不說了,代碼提示這個功能還是很不錯的,在寫着寫着,腦子突然短路的時候,可以通過快捷鍵把腦子快速帶回來。
3.代碼調試。有時候,寫着寫着代碼,突然間就報錯了,不知道哪裡錯了,咋整,這時候,如果使用編輯器的話,就可以使用 debug模式進行調試了,找出問題所在,解決問題。
4.一些代碼管理等插件。在企業中肯定要用到代碼同步工具,svn 或者 git , 在編輯器中會提供這樣的插件,方便代碼的管理。
二 idea
相比 eclipse 和 myeclipse ,idea 的基本功能差不多。
1. 包管理:也是有方便的包和資源管理。
2.熱鍵:也是提供熱鍵管理的,而且還很好用。
3.代碼調試:debug模式用起來也是很舒服。
4.插件方面:也是支持一些插件的,如 熱部署插件等。
三 比較
1. 操作:兩個軟件有不同的快捷鍵,雖然idea兼容部分eclipse快捷鍵,但是不建議這樣做。
2.資源消耗:idea更能吃內存啊呦喂,電腦配置低的傷不起啊。eclipse要更柔和一點。
3.是否免費:eclipse 是免費的,myeclipse和idea 是要付費的呦。但是嘛,你懂得。
4.專業性:idea 應該是更專業的,有更高的代碼更新機制和代碼提示功能。但是 eclipse 涉及的範圍更廣,除了java 和可以編輯其他語言的項目。
四 建議
1. 如果電腦配置比較低,建議使用 eclipse ,並且使用較低版本的,這樣,電腦不會太吃力。如果配置比較高,比如,16G內存,固態硬盤,那就使用idea吧。
2. 沒有最好的編輯器,只有最適合自己的編輯器。任何一個編輯器用習慣了,都是很不錯的。
希望對您有所幫助!~
Java用什麼編譯器?
常用的就是Eclipse,My Eclipse,idea這三種,My Eclipse相對於其他兩種不是很常用
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/219672.html