javac比較
A. JVM,JDK和JRE有什麼區別它們的聯系是什麼
引言:在選擇編程語言的時候,有一些人會選擇java,Java在書寫和製作的過程中所包含的內容還是比較多的,java中有三個比較常見的名詞,分別是jvm、jdk、jre那麼這三者有什麼區別呢?之間的聯系是怎麼樣的呢?
總結
學習Java是一個非常不錯的選擇,不過學習的過程中應該注意自己的學習進度並且及時的督促自己,才能夠保證自己是能夠學習好的,所以在日常生活中還是要多做總結和分析,從而能夠保證自己是能夠有效的學習JAVA的。
B. javac 的使用
javac其實就是一個拿來編譯的命令,只是通過一些選項來輔助編譯看下javac的使用說明用法:javac <選項> <源文件>
其中,可能的選項包括:
-g 生成所有調試信息
-g:none 不生成任何調試信息
-g:{lines,vars,source} 只生成某些調試信息
-nowarn 不生成任何警告
-verbose 輸出有關編譯器正在執行的操作的消息
-deprecation 輸出使用已過時的 API 的源位置
-classpath <路徑> 指定查找用戶類文件和注釋處理程序
-cp <路徑> 指定查找用戶類文件和注釋處理程序
-sourcepath <路徑> 指定查找輸入源文件的位置
-bootclasspath <路徑> 覆蓋引導類文件的位置
-extdirs <目錄> 覆蓋安裝的擴展目錄的位置
-endorseddirs <目錄> 覆蓋簽名的標准路徑的位置
-proc:{none,only} 控制是否執行注釋處理和/或編譯。
-processor <class1>[,<class2>,<class3>...]要運行的注釋處理程序
的搜索進程
-processorpath <路徑> 指定查找注釋處理程序的位置
-d <目錄> 指定存放生成的類文件的位置
-s <目錄> 指定存放生成的源文件的位置
-implicit:{none,class} 指定是否為隱式引用文件生成類文件
-encoding <編碼> 指定源文件使用的字元編碼
-source <版本> 提供與指定版本的源兼容性
-target <版本> 生成特定 VM 版本的類文件
-version 版本信息
-help 輸出標准選項的提要
-Akey[=value] 傳遞給注釋處理程序的選項
-X 輸出非標准選項的提要
-J<標志> 直接將 <標志> 傳遞給運行時系統 比較常用的有-d . ,在編譯帶包的類的時候比較習慣用這種 javac -d . Test.java 還有一些比較-encoding,-cp , -g命令說明就在上面了,具體有什麼技巧我也不懂說反正想要什麼樣的結果就看著說明來做,如果不懂怎麼回事,那可以一個個去試
C. CMD中javac和java命令的問題
「類名.java」這是一個固定的語法規則,就像「1+1=2」是類似的道理。「包名.類名.java」之所以會出錯是因為沒有這樣的語法規則,就像「你在大街上隨便碰見個人就讓他還你錢 你說人家會幹嘛」另外你既然提到了src目錄,說明你在用java編程工具寫代碼了,就可以不用cmd這種原始工具編譯代碼了。cmd命令只適合簡單簡短的代碼,是初學者用來熟悉基礎代碼的。
java命令和javac命令,java命令是運行命令,javac是編譯命令。拿煮飯舉例子:一個java程序,javac命令是負責淘米煮飯的而java命令是負責吃飯的。當你執行java命令的時候,說明煮飯淘米已經完成。如果這兩個順序顛倒了飯都沒煮你吃什麼,不報錯才怪。「包名。類名.java」這種語法也是錯的
如果還是不明白可以留下qq遠程加好友指導你,這種問題最好是能看到源代碼,比較好解決,就單單一個圖不能直接判斷只能知道大概可能是哪些原因或者問題。不能有正對性的解決問題
D. 比較分析不同Java程序調試環境的異同和優缺點。
充分利用 J2EE 調試工具--Java 開發環境的增強功能有助於調試J2EE 應用程序
我的第一個 Java 項目包括接管由我所在公司的一個部門編寫的一個門戶,該部門現在已經關閉了。當我凝視著運行門戶代碼的伺服器終端時,我看到一行接一行的調試代碼涌現在在屏幕上。進一步的研究之後,我發現 JavaServer Pages ( JSP )和 servlet 中到處都是 System.out.println (「 [Debug Statement] 」)。由於我對我接管的語言和代碼有些陌生,我堅持自己為終端編寫調試語句,因為我不知道調試 Java 代碼的其他方法。
然而,在漫長而乏味的調試過程中,我不斷失敗。我發現在將代碼提交給 QA 之前很難移除所有的調試語句。同樣,調試涉及到重新編譯、重新部署的代碼和在執行代碼時觀察終端也非常困難。為了查找代碼中斷的點,我時常在方法中的每一行代碼後加入 println 語句,在這種情況下,過程常常為找到的每一個故障重復。
最後,在我發現 Java 平台調試架構( Java Platform Debugger Architecture , JPDA )的時候,我擺脫了調試夢魘。 JPDA 是一套組成構建調試應用程序框架的 API 。幸運的是,我們大多數人不需要自己考慮創建調試應用程序的事,因為這些是與主要的 IDE 捆綁在一起提供的。調試在這些新的 IDE 中是一個相當簡單和輕松的過程。
您必須執行幾個步驟才可以使您的開發環境成為您可以進行調試的環境。如果您正在使用 Sun 的 Java Virtual Machine ( JVM )進行調試,您必須在命令行中指定啟動 J2EE 容器的時間,其中, JVM 已經以調試模式啟動。為了執行該操作,只需在 java 命令的後邊添加 -Xdebug 參數。我們隨後將研究一個命令行調試參數的示例。為了載入 Java Debug Wire Protocol ( JDWP ) 的 JPDA 參數實現,需要使用具有隨後指定的 JPDA 選項的 -Xrunjdwp 。該參數載入進行中的調試資料庫,而其子選項提供了調試伺服器如何與調試客戶端交互的細節。我們將研究一份 JPDA 子選項列表,該列表可以幫助設置正確的調試環境。
首先,指定傳輸選項。 transport 用於在調試程序和 VM 使用的進程之間通訊。 Win32 平台的 VM 提供了很多其他平台使用的共享內存傳輸和套接字傳輸。共享的內存傳輸(僅在 Win32 平台中受支持)要求調試應用程序和目標 VM 存放在相同的機器中。套接字傳輸使用標準的 TCP/IP 套接字來與調試信息通信。調試客戶端和調試伺服器可以位於使用套接字傳輸的相同或者不同的機器中。對於遠程調試 Enterprise JavaBeans ( EJB )和 servlet 來說,我們關注於使用套接字傳輸,因為它受所有平台支持:
transport=dt_socket
我們正在啟動的 VM 需要作為調試伺服器執行。如前所述,調試伺服器是運行以調試模式編譯的應用程序的 JVM (以後講述),並具有允許客戶端連接和 監聽 應用程序的開放套接字。為了使 VM 成為一台伺服器,需要提供伺服器選項,並將其值設置為 yes :
server=yes
接下來,我們需要指出調試伺服器將要使用的埠號,同時也是埠客戶端用來連接伺服器的埠號。只有知道正在運行伺服器的埠號的客戶端才可以建立連接,因為不存在標準的調試埠,也就是 HTTP 伺服器。任何未使用的埠都適用。在我們的情況中,我們使用了埠 4000 :
address=4000
避免混亂
您可以提供一個選項,僅在調試客戶端建立連接之後啟動 VM ( suspend=y )。我的 J2EE 容器具有一種服務,它可以在容器登錄之後立即啟動,而不用添加 suspend=y 到參數列表。我發現在我的那項服務啟動之前,啟動客戶端並連接到 VM 有些混亂 。使用該選項,我就可以啟動 VM 。當它暫停的時候,我打開 IDE ,設置中斷點,然後建立調試連接。一旦連接建立,容器繼續登錄,而我可以一步步啟動服務。
onthrow 選項推遲初始化 JDWP 資料庫,直到引發指定類的異常。例如,如果需要在引發異常(如 ServletException )時執行一些操作,您需要包含如下選項:
onthrow=
javax.servlet.ServletException
同樣, JDWP 資料庫初始化也可以推遲,直到引發異常但沒有捕獲時,該操作可以通過提供 onuncaught=y 選項指定。
啟動選項指出 VM 應當基於調試事件來啟動應用程序,該事件與 onthrow 或者 onuncaught 選項一起提供:
launch=/usr/home/mydir/debugapp
讓我們研究一些我經常使用的命令行調試參數的示例。在第一個示例中,我們將指導 VM 使用套接字傳輸。調用的 VM 是伺服器,它應當監聽埠 4000 。我們還指出 VM 應當在調試伺服器建立連接後才可以暫停:
-Xrunjdwp:transport=
dt_socket,server=y,address=4000,
suspend=n
第二套參數類似於前一個示例,不同的是其傳輸現在是一種共享內存傳輸(僅限於 Windows ):
-X runjdwp:transport=
dt_shmem,server=y,address=4000,
suspend=n
第三套參數會導致 VM 通過埠 4000 上的套接字連接附加到正在運行中的調試伺服器中,這將要求 VM 以調試模式運行在埠 4000 上的 SomeHost 中:
-X runjdwp:transport=
dt_socket,server=n,address=
SomeHost:4000, suspend=n
第四套參數將導致 VM 在開始的時候暫停。 VM 將等待建立與調試客戶端的連接,然後再繼續載入。 VM 使用埠 4000 來監聽客戶端,並使用套接字連接:
-X runjdwp:transport=
dt_socket,server=y,address=
4000, suspend=y
使用第五套參數,當引發 javax.management.InstanceNotFoundException 的時候, VM 將暫停,並啟動 c:\debug.bat 。 debug.bat 腳本可以啟動調試應用程序,該應用程序可以連接伺服器,並開始調試會話:
-Xrunjdwp:transport=
dt_socket,address=4000,server=
y,suspend=y,onthrow=
javax.management.
InstanceNotFoundException,
launch=c:\debug.bat
最後一套參數將在引發異常但沒有捕獲的時候執行 debug.bat 腳本:
-Xrunjdwp:transport=
dt_socket,address=4000,server=
y,suspend=n,onuncaught=
y,launch=c:\debug.bat
我們現在可以使用一些現有的通用 IDE 來說明如何調試 J2EE 。我們在示例中使用的 J2EE 容器是 JBoss 伺服器;然而,任何標準的 J2EE 容器都是可用的。 JBoss 伺服器從 bin 目錄中的 run.bat 文件啟動。 BAT 文件可以接受調試命令行自變數,並將它們發送給 JVM 。作為一名開發人員,我發現我很少需要啟動開發環境(除了調試模式),因此我將 run.bat 復制到一個名叫 debug.bat 的新文件中,並且在該文件中添加了調試參數。以下是 JBoss debug.bat 文件的內容:
rem Read all command line
rem arguments
set ARGS=
:loop
if [%1] == [] goto endloop
set ARGS=%ARGS% %1
shift
goto loop
:endloop
set JAVA_OPTS=
-Dprogram.name=run.bat
set JAVAC_JAR=
%JAVA_HOME%\lib\tools.jar
set RUNJAR=.\run.jar
set JBOSS_CLASSPATH=
%JBOSS_CLASSPATH%;%JAVAC_JAR%;
%RUNJAR%
rem Set the debug options here
set DEBUG_OPTS =
-Xdebug -Xnoagent
-Djava.compiler=
NONE -Xrunjdwp:transport=
dt_socket,address=
4000,server=y,suspend=n
Java %JAVA_OPTS% %DEBUG_OPTS%
-classpath "%JBOSS_CLASSPATH%"
org.jboss.Main %ARGS%
調試信息
在將 IDE 的調試程序連接到伺服器之前,將應用程序放在伺服器上。確保使用打開的調試信息對應用程序進行編譯。這樣做可以在已經編譯的類文件中提供行編號方式。如果您使用 Ant 來構建項目,請確保 javac 任務包含:
debug="on"
否則, IDE 應當包含在編譯期間打開調試的選項。
我提供了 從簡單的 DocBook 文件生成 PDF E-Books 的 J2EE 應用程序 。該應用程序由會話 bean 、 JSP 文件和 servlet 組成。會話 bean 可以列舉存儲在伺服器中的 DocBook 文檔和 XSL 樣式表文件。 JSP 使用會話 bean 來顯示書籍和 XSL 文件的列表,以下拉列表的方式顯示。用戶可以選擇他們要將哪些文件轉換成 PDF ,並指定要將哪些樣式表用於轉換。作為最後一個步驟, servlet 將 DocBook 文件轉換為 PDF ,並將 PDF 顯示在用戶的 Web 瀏覽器中。 Apache 的 FOP 資料庫用於轉換文檔(參閱 資源 )。
如果您想使用我構建的應用程序,請編輯 Ebook.properties 文件,並提供到您的機器中某個位置的有效路徑,該位置中存放 DocBook 和 XSL 文件。示例 DocBook 和 XSL 文件還可以下載。請將這些文件存放在您指定的位置中。
我已經提供了一份 Ant build.xml 文件來構建應用程序和將類封裝到企業歸檔文件( EAR )中。將 EAR 文件部署到 JBoss 的目錄中,並啟動具有以下參數的容器:
-Xrunjdwp:transport=
dt_socket,server=y,address=4000,
suspend=n
現在,我們已經准備好在調試模式中連接代碼
Intelli-J IDEA 調試
為了在Intelli-J中連接調試伺服器,只需點擊工具條中的Debug按鈕,打開調試配置界面即可。然後選擇Remote標記,來查看哪些調試配置可用。最初,沒有配置可以使用。點擊屏幕左上方的+按鈕來添加新的遠程調試配置。輸入主機名稱或者IP地址和要連接到的埠(參見圖1)。
圖 1. 遠程 Intelli-J 調試
圖中有一個 Intelli-J 中的連接到本地機器的遠程調試配置。
確保伺服器啟動時具有已經為 VM 進行設置的調試選項,然後點擊 Debug 按鈕。您應當連接到 VM ,並且您的調試屏幕中將出現在 Intelli-J 屏幕的底部。您可以通過點擊 Edit 窗口右邊空白區域來輕松的在 IDE 中設置中斷點。在中斷的地方會出現一個紅點。如果圓點中有一個 X ,則您指定的中斷點無效,或者伺服器中的代碼在編譯時沒有打開調試。如果圓點中有一個校驗標記,則說明您已經成功的連接到調試伺服器,和已經選擇了有效的中斷點位置。您可以進行調試了。如果您使用的是本文提供的 示例代碼 ,則請在 EJB 的 getDocBooks() 方法中設置中斷點。將 Web 瀏覽器指向 http://localhost:8080/DocBookToPDF/DocBook.jsp 。您的瀏覽器應當顯示為懸掛狀態,並且 Intelli-J 在設置中斷點的行中應當有一個藍條。恭喜,您正在調試 EJB ,您的 IDE 已經為進入代碼准備就緒(參見 圖 2)。
圖 2. Intelli-J 中斷點
Intelli-J 中斷點在其設置的地方以藍色突出顯示。圖中,中斷點已經設置,可以進行下一步驟。
們正在調試的方法查找在 DocBookToPDF.properties 文件中指定的目錄,並返回所有以 XML 為結尾的文件。該方法假設每一個文檔都是 DocBook 文件。在我們繼續之前,確保目錄具有有效的 DocBook 和 XSL 文件,以將文檔轉換為 PDF 。
完成進入代碼之後,注意 JSP 在下拉列表中顯示 DocBook 和 XSL 文件。下一步驟是調試 DocBookToPDFServlet servlet 。將中斷點放在 Edit 窗口左邊, processRequest() 方法中的某個位置。在 Web 瀏覽器中選擇 DocBook 文件和有效的 XSL 文件,然後點擊 Web 頁面中的 Generate Book 按鈕。 servlet 中的中斷點將呈現為藍色, servlet 代碼可以進入。
NetBeans/Forte 調試
在 NetBeans 中創建一個項目,該項目包含您需要調試的代碼。使用打開的調試選項編譯它,並像在前面 Intelli-J 部分中討論的那樣,將應用程序部署到伺服器中。我提供的 Ant build XML 文件演示了如何以調試模式編譯代碼。
為了開始調試,請選擇 Debug | Start Session | Attach 菜單選項。這時,將出現一個對話框,要求填寫連接信息。指定 JPDA 為調試程序, SocketAttach 為連接程序, localhost 為主機,埠 4000 為要連接到的器。點擊 OK 按鈕,您應當附加到 J2EE 容器的 VM (參見 圖 3 )中。 Debug 窗口將成為活動窗口,您現在可以使用相同的方式來設置中斷點,就像使用 Intelli-J 那樣。在 EJB 的 getDocBooks() 方法中設置中斷點,並將 Web 瀏覽器指向 http://localhost:8080/DocBookToPDF/DocBook.jsp 。 Web 頁面應當顯示為懸掛狀態,而 NetBeans 中的中斷點將被突出顯示(參見 圖 4 )。您可以在 IDE 中點擊調試工具欄中的 Step Over 和 Step Into 按鈕來進入 NetBeans 中的代碼。您還可以在界面左邊框架中設置觀察。
圖 3. 遠程 NetBeans 調試
圖中是 NetBeans 中本地機器的遠程調試配置
圖 4. NetBeans 中斷點
NetBeans 中斷點在活動狀態時以綠色突出顯示。圖中是已經設置的中斷點,已經准備好進行調試。
為了調試 servlet ,請在 processRequest() 方法中設置中斷點。當 JSP 在 Web 瀏覽器中完成載入,並在機器中顯示 DocBooks 和 XSL 文件的列表之後,選擇 DocBook 文件和 XSL 文件,然後點擊 Web 頁面中的 Generate Book 按鈕。在 NetBeans 中,中斷點將變為突出顯示狀態,您可以開始調試 servlet 代碼了。
Eclipse
為了在Eclipse中調試,需要在Java透視圖中創建一個項目。如果您正在使用DocBook-to-PDF代碼示例,則使用Ant build.xml編譯代碼,以編譯打開調試的類。突出顯示Java應用程序,並選擇Run | Debug菜單項。此時,將出現一個對話框。突出顯示Remote Java Application,然後點擊對話框左手邊底部的New按鈕。對話框項目的名稱應當為在Java透視圖中突出顯示的項目的名稱。對話框中連接部分的主機欄位應當是您需要連接到的伺服器,埠欄位中應當具有容器的VM正在使用的調試埠(參見圖5)
圖 5. 遠程 Eclipse 調試
圖中是 Eclipse 中本地機器的遠程調試配置。
接下來,點擊Debug按鈕。Eclipse將轉到Debug透視圖。為了調試代碼,請返回到Java透視圖中,並在編輯器中打開EJB文件或者servlet。雙擊EJB的getDocBooks()方法的左手邊的窗格來設置一個中斷點。有效的中斷點具有一個藍色的圓球,並且圓球中有一個校驗標記。如果中斷點中沒有校驗標記,雙擊該中斷點,然後嘗試不同的點。
接下來,將Web瀏覽器指向相同的JSP和servlet文件,就像前面NetBeans和Intelli-J中所描述的那樣。當設置中斷點時,中斷點所在的行將被突出顯示,您可以像使用其他IDE那樣來調試代碼(參見圖6)。
圖 6. Eclipse 中斷點
Eclipse 中有效的中斷點以藍色圓球和校驗標記指示。該圖說明了如何在 Eclipse IDE 中調試代碼。當前的調試位置以綠色突出顯示
使用具有流行 IDE 的 JPDA 資料庫應當會縮短開發時間,並且允許您創建包含極少缺陷的更優秀的代碼。如果您仍在代碼中添加 System.out.println() 語句,以發現程序失敗或者中斷的位置,那麼請住手!您是在浪費時間和金錢。 Java IDE 已經推出很長時間了,它可以提供功能強大的調試工具。您僅需要對啟動 VM 的方法做一些小小的改動,就可以輕松地調試 Java 應用程序了。
E. java, cmd的使用
一、簡述:
cmd中,執行java命令與javac命令的區別:
javac:是編譯命令,將java源文件編譯成.class位元組碼文件。
例如:javac hello.java
將生成hello.class文件。
java:是運行位元組碼文件;由java虛擬機對位元組碼進行解釋和運行。
例如:java hello
二、詳述:
下面我們來寫個java文件試試。
1、打開記事本,輸入一個類+主函數
public class Hello{
public static void main(String[] args) {
System.out.println("Hello World");
}
}
2、點擊 文件->保存,保存到相應文件夾下,文件名修改了xxx.java
3、在Hello.java文件夾內,空白位置,按住鍵盤Shift,右擊滑鼠,選擇「在此處打開命令窗口」
4、輸入 javac Hello.java 回車
如果java類書寫格式沒有錯誤,cmd不會報錯,而且在java文件同目錄內生成一個class文件。
5、輸入 java Hello 回車
若輸出下圖,恭喜你,成功了!你已經把java類中,輸出列印「Hello World」顯示在cmd命令行中。
三、總結:
首先我們使用記事本編寫java源代碼,擴展名.java;
在命令行模式中,輸入命令:javac 源文件名.java,對源代碼進行編譯,生成class位元組碼文件;
編譯完成後,如果沒有報錯信息,輸入命令:java Hello,對class位元組碼文件進行解釋運行,列印「Hello World」。
為了方便大家理解javac和java編譯運行過程,可以看下圖:
至此,我相信大家應該對javac和java使用有了比較客觀的了解。
四、答疑:
接下來,我們來看一下大家在實踐中容易遇到的問題。
問題一:cmd命令一定要准確,區分大小寫,注意是否要加擴展名。
javac Hello.java
java Hello
問題二:javac命令報錯,如下圖
javac命令報錯,一般都是java代碼有誤,需要檢查修改。
下圖中,java代碼很明顯的錯誤,輸出列印語句寫在了main函數的外面,修改正確就不會報錯了。
javac命令報錯,去看java代碼,肯定有錯誤。
問題三:javac命令執行完成,生成class文件,但是java命令報錯,如下圖
我查閱資料,找到報錯的原因,首先檢查java源代碼,記住,java類不要加package路徑!再就是java環境變數有問題,咱們一起來檢查一下。
右擊「計算機-屬性-高級系統設置」,單擊「環境變數」。我相信大家都已經配置java環境變數,咱們來檢查一下。
逐一核對 」JAVA_HOME」 「Path」 「CLASSPATH」
(1)"JAVA_HOME",變數值是你的電腦JDK的安裝路徑,我的是"D:\java\tool\java1.8\JDK"
(2)"Path",在原變數值的最後面加上」;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin」
(3)」CLASSPATH」,變數值」.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar」
特別注意變數值開頭是」.;」(點分號),這個地方需要特別注意,我就是因為這個點和分號不對報錯的。
java源碼修改後,需要把之前生成的class文件刪除,從新運行javac和java命令。
環境變數修改後,一定要重啟cmd命令行窗口,再把把之前生成的class文件刪掉,重新運行javac和java命令。
註:若在輸入javac命令時,顯示'javac'不是內部或外部命令,原因也是因為沒有提前安裝好JDK開發環境或環境變數配置有誤。
F. 請詳細寫出Javac和Java兩個命令的使用方式
javaac和java兩個命令的使用詳解:
一、javac命令
javac 用於編譯Java文件,格式為:
java [options] [sourcefiles] [@files]
其中:
options:命令行選項;
sourcefiles:一個或多個要編譯的源文件;
@files:一個或多個對源文件進行列表的文件,有時候要編譯的文件很多,一個個敲命令會顯得很長,也不方便修改,可以把要編譯的源文件列在文件中,在文件名前加@,這樣就可以對多個文件進行編譯,對編譯一個工程很有用,方便,省事。
有幾個比較重要的選項:
-d 用於指定編譯成的class文件的存放位置,預設情況下不指定class文件的存放目錄,編譯的class文件將和源文件在同一目錄下;
-classpath 可以簡寫成-cp,用於搜索編譯所需的class文件,指出編譯所用到的class文件的位置,如jar、zip或者其他包含class文件的目錄,指定該選項會覆蓋CLASSPATH的設定;
-sourcepath用於搜索編譯所需的源文件(即java文件),指定要搜索的源文件的位置,如jar、zip或其他包含java文件的目錄;
需要注意windows下和linux下文件路徑分隔符和文件列表(即-classpath和-sourcepath指定的文件)分隔符的區別:
windows下文件路徑分隔符用 \ ,文件列表分隔符用分號 ;
linux下文件路徑分隔符用 / ,文件列表分隔符用冒號 :
二、java命令
java 用於執行程序,格式如下:
java [options] classfile
options:命令行選項,一般用於 -classpath 指定要執行的文件所在的位置以及需要用到的類路徑,包括jar、zip和class文件目錄,會覆蓋CLASSPATH的設定
三、腳本
如果要敲的命令很長,每次要編譯運行的時候都要重新敲一遍,這是一件很痛苦的事情,所以用腳本可以大大方便你的工作量。在linux下用shell腳本,windows下用bat批處理程序。因為是在linux下,我這里只是簡單介紹一下shell,關於bat批處理程序的語法自己網路一下,不難。
1. 開頭
linux有很多不同的shell,通常使用bash(bourne again shell),程序必須以下面的行開始:
#!/bin/sh
#!用來告訴系統用後面的參數來執行程序,這里使用的是/bin/sh
要使你的腳本能夠執行,還必須讓這個文件有可執行許可權,使用下面命令更改文件許可權:
chmod +x filename
2. 注釋
以#開始的句子表示注釋,一直到這行結束,多寫注釋有利於以後重新看的時候知道自己在做什麼
G. Java和c語言有什麼區別
從概念上看,C語言是一門面向過程、抽象化的通用程序設計語言;Java是一門面向對象編程語言,而Java語言是從C語言衍生而來,它吸收了C++語言的各種優點,並且摒棄了C++里難以理解的多繼承、指針等概念。從概念可以看出C語言相當於Java的基礎語言,學完C再學Java會更容易。
從應用領域上,C語言和Java的應用領域幾乎沒有重合。因為隨著這幾年Java、web、PHP等語言的出現,它們憑借比C更簡潔的、更安全的性能快速崛起,搶佔了大量的市場。目前因為Java有完善的框架,在多線程、高並發方面有著較好的穩定性,所以Java主要應用於企業級應用開發、大型系統開發等領域。而C語言由於編程的復雜性,退守到了系統級別語言,而且因為想要系統級軟體可以發揮出機器的功能,它的底層核心就需要用C/C++來編寫,所以C語言主要應用於軟體工業。
H. c語言和java哪個難
對於很多初學者來講,不太清楚Java和C語言的區別,為了讓那個大家更清晰的了解,近日特意給大家歸納了一些兩者的大致區別,希望能夠給大家帶來一定的幫助作用,也歡迎大家進行詳細補充和歸納。
首先,Java是針對於對象的機制,運算符「new」為每個對象分配內存空間,實際內存會隨程序的運行而發生改變。在運行的同時每個Java系統會對內存進行掃描,會對整個系統資源進行「採集」。這個時候一部分的垃圾文件就會被刪除或者暫時回收。這樣就使得整個系統資源就使用的更加充分合理,程序員對於這點就不需要擔心系統內存方面的一些管理要求,在編寫程序的時候也就變得更加的簡潔明了。而c語言則是通過malloc()和free()這兩資料庫函數來分別實現對於的內存的分配和內存的合理運用。
其次,C語言更多通過子函數調用,Java通過類和類引用,同時擁有非常多的介面。Java面向對象特徵主要表現為封裝,繼承和多變,C語言支持「運算符的重載」,這個是數據抽象和泛型編輯的一大寶典。Java本身為了降低復雜性而不支持這種多變機制,對於Java可以支持方法重載和重寫。
另外,Java比C語言多了一些修飾「Public、Private、Protected」都是一些比較常用的修飾符,而C語言沒有這類的修飾語言,換句話的意思就是C語言還缺乏一定的安全性。
再者,Java不使用指針,但是指針是C語言的精髓,然而Java中更多的是對數據每一位的操作,比如substring等。
總結來講,Java與C語言相比,Java具有簡單、面向對象、分布式、健壯、可移植、解釋性、安全、多線程、垃圾回收等等特點。而對於C語言則是一個比較宏觀的領域,因此Java可以說是C語言的基礎上開設,即C語是基石,Java在時下的運用和使用方面就比較全面。
I. java課程分享Java編程工具有哪些比較好用
一、Editplus
EditPlus是功能很全面的文本、HTML、程序源代碼編輯器。默認的支持HTML、ASP、Perl、C/C++、CSS、PHP、Java、java和VB的語法著色。通過定製語法文件還可以擴展到其他程序語言。可以在Tools菜單的ConfigureUserTools菜單項配置用戶工具,類似於UltraEdit的配置,配置好Java的編譯器Javac和解釋器Java後,通過EditPlus的菜單可以直接編譯執行Java程序。
二、UltraEdit
初學者一般用什麼開發工具?UltraEdit是一個功能強大的文本、HTML、程序源代碼編輯器。作為源代碼編輯器,它的默認配置可以對C/C++,VB,HTML,Java和Perl進行語法著色。用它設計Java程序時,可以對Java的關鍵詞進行識別並著色,方便了Java程序設計。它具有完備的復制、粘貼、剪切、查找、替換、格式控制等編輯功能。可以在Advanced菜單的ToolConfiguration菜單項配置好Java的編譯器Javac和解釋器Java,直接編譯運行Java程序。
三、Eclipse
初學者一般用什麼開發工具?Eclipse是一個開放可擴展的集成開發環境(IDE)。它不僅可以用於Java的開發,通過開發插件,它可以構建其他的開發工具。Eclipse是開放源代碼的項目,並可以免費下載。建議使用Releases或StableBuilds版本。
四、Jcreator
Jcreator是一個用於Java程序設計的集成開發環境,具有編輯、調試、運行Java程序的功能。這個軟體比較小巧,對硬體要求不是很高,完全用C++寫的,速度快、效率高。java課程http://www.kmbdqn.com/認為具有語法著色、代碼參數提示、工程向導、代碼自動完成、類向導等功能。先進次啟動時提示設置JavaJDK主目錄及JDKJavaDoc目錄,軟體自動設置好類路徑、編譯器及解釋器路徑,還可以在幫助菜單中使用JDKHelp。但目前這個版本對中文支持性不好。
J. JAVA的技術特點是什麼
JAVA的技術特點是什麼?
Java由美國SUN公司(被oracle公司收購)發明於1995年,是目前業界應用最廣泛、使用人數最多的語言,連續多年排名世界第一,可以稱之為「計算機語言界的英語」。
那麼Java這么高的評價它的特點有哪些,下面我來為題主解答:
一、跨平台/可移植性
這是Java的核心優勢。Java在設計時就很注重移植和跨平台性。比如:Java的int永遠都是32位。不像C++可能是16,32,可能是根據編譯器廠商規定的變化。這樣的話程序的移植就會非常麻煩。
Java首先利用文本編輯器編寫 Java源程序,源文件的後綴名為.java;再利用編譯器(javac)將源程序編譯成位元組碼文件,位元組碼文件的後綴名為.class; 最後利用虛擬機(解釋器,java)解釋執行。如下圖所示:
二、安全性
Java適合於網路/分布式環境,為了達到這個目標,在安全性方面投入了很大的精力,使Java可以很容易構建防病毒,防篡改的系統。比如Java取消了強大但又危險的指針。由於指針可進行移動運算,指針可隨便指向一個內存區域,而不管這個區域是否可用,這樣做是危險的。
三、面向對象
面向對象是一種程序設計技術,非常適合大型軟體的設計和開發。由於C++為了照顧大量C語言使用者而兼容了C,使得自身僅僅成為了帶類的C語言,多少影響了其面向對象的徹底性!Java則是完全的面向對象語言。
四、簡單性
Java就是C++語法的簡化版,我們也可以將Java稱之為「C++-」。跟我念「C加加減」,指的就是將C++的一些內容去掉;比如:頭文件,指針運算,結構,聯合,操作符重載,虛基類等等。同時,由於語法基於C語言,因此學習起來完全不費力。
五、高性能
Java最初發展階段,總是被人詬病「性能低」;客觀上,高級語言運行效率總是低於低級語言的,這個無法避免。Java語言本身發展中通過虛擬機的優化提升了幾十倍運行效率。比如,通過JIT(JUST IN TIME)即時編譯技術提高運行效率。 將一些「熱點」位元組碼編譯成本地機器碼,並將結果緩存起來,在需要的時候重新調用。這樣的話,使Java程序的執行效率大大提高,某些代碼甚至接近C++的效率。
因此,Java低性能的短腿,已經被完全解決了。業界發展上,我們也看到很多C++應用轉到Java開發,很多C++程序員轉型為Java程序員。
六、分布式
Java是為Internet的分布式環境設計的,因為它能夠處理TCP/IP協議。事實上,通過URL訪問一個網路資源和訪問本地文件是一樣簡單的。Java還支持遠程方法調用(RMI,Remote Method Invocation),使程序能夠通過網路調用方法。
七、多線程
多線程的使用可以帶來更好的交互響應和實時行為。 Java多線程的簡單性是Java成為主流伺服器端開發語言的主要原因之一。
八、健壯性
Java是一種健壯的語言,吸收了C/C++ 語言的優點,但去掉了其影響程序健壯性的部分(如:指針、內存的申請與釋放等)。Java程序不可能造成計算機崩潰。即使Java程序也可能有錯誤。如果出現某種出乎意料之事,程序也不會崩潰,而是把該異常拋出,再通過異常處理機制加以處理。
以上幾種特性你了解到啦嗎? 記得給個贊!
當然這些還沒完,Java除啦這些特性還有一些其他的特點我也來給你講一講!!
1.java的風格類似C++,從某種意義上講,java是C++的一個變種。但是java摒棄了C、C++中的容易引發錯誤和難以理解的指針,結構,以及內存管理等;
2.java是一種強類型的語言,比C/C++檢查還要嚴格,java區分大小寫字母;
3.java禁止非法訪問內存,因為java沒有指針,內存的申請和釋放;
4.對於不同的操作系統,會有不同的java虛擬機,這也就決定了java的可移植性;
5.java提供了自動垃圾回收機制gc,有效避免了C、C++的內存泄漏問題;
記得給個贊!