sun公司(現(xiàn)在是oracle公司)提供的java(jdk,jre)都是編譯過后class打包文件給大家用的,因?yàn)閖ava是開源平臺(tái),官方也提供了編譯前的代碼,供大家參考與學(xué)習(xí),這樣的代碼就是java源代碼了。
彭水苗族土家族網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,彭水苗族土家族網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為彭水苗族土家族近1000家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)營銷網(wǎng)站建設(shè)要多少錢,請找那個(gè)售后服務(wù)好的彭水苗族土家族做網(wǎng)站的公司定做!
個(gè)人見解,僅供參考。
對于java初學(xué)者來說,往往不懂區(qū)分jdk和jre的區(qū)別,實(shí)際上這兩個(gè)東西差別很大的,有必要了解一下:
·SDK(Software Development Kit)一般指軟件開發(fā)包,可以包括函數(shù)庫、編譯程序等。
·JDK(Java Development Kit)是面向JAVA開發(fā)人員使用的SDK,它提供了Java的開發(fā)環(huán)境和運(yùn)行環(huán)境。
·JRE(Java Runtime Enviroment)是指Java的運(yùn)行環(huán)境,是面向Java程序的使用者,而不是開發(fā)者。
如果安裝了JDK,會(huì)發(fā)現(xiàn)你的電腦有兩套JRE,一套位于j2sdk\jre, 另外一套位于 C:\Program Files\Java\j2re1.4.1_01目錄下,后面這套比前面那套少了Server端的Java虛擬機(jī),不過直接將前面那套的Server端Java虛擬機(jī)復(fù)制過來就行了。
而且在安裝JDK時(shí)可以選擇是否安裝這個(gè)位于 C:\Program Files\Java 目錄下的JRE。如果你只安裝JRE,而不是JDK,那么只會(huì)在 C:\Program Files\Java 目錄下安裝唯一的一套JRE(供瀏覽器來使用)。
JRE的地位就象一臺(tái)PC機(jī)一樣,我們寫好的Win32應(yīng)用程序需要操作系統(tǒng)幫我們運(yùn)行,同樣的,我們編寫的Java程序也必須要JRE才能運(yùn)行。所以當(dāng)你裝完JDK后,如果分別在硬盤上的兩個(gè)不同地方安裝了兩套JRE,那么你可以想象你的電腦有兩臺(tái)虛擬的Java PC機(jī),都具有運(yùn)行Java程序的功能。所以我們可以說,只要你的電腦安裝了JRE,就可以正確運(yùn)行Jav a應(yīng)用程序。
1、為什么Sun要讓JDK安裝兩套相同的JRE?這是因?yàn)镴DK里面有很多用Java所編寫的開發(fā)工具(如javac.exe、jar.exe等),而且都放置在 \lib\tools.jar 里。從下面例子可以看出,先將tools.jar改名為tools1.jar,然后運(yùn)行javac.exe,顯示如下結(jié)果: Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/tools/javac /Main 這個(gè)意思是說,你輸入javac.exe與輸入 java -cp c:\jdk\lib\tools.jar com.sun.tools.javac.Main 是一樣的,會(huì)得到相同的結(jié)果。從這里我們可以證明javac.exe只是一個(gè)包裝器(Wrapper),而制作的目的是為了讓開發(fā)者免于輸入太長的指命。而且可以發(fā)現(xiàn)\lib目錄下的程序都很小,不大于2 9K,從這里我們可以得出一個(gè)結(jié)論。就是JDK里的工具幾乎是用Java所編寫,所以也是Java應(yīng)用程序,因此要使用JDK所附的工具來開發(fā)Java程序,也必須要自行附一套JRE才行,所以位于C:\Program Files\Java目錄下的那套JRE就是用來運(yùn)行一般Java程序用的。
2、如果一臺(tái)電腦安裝兩套以上的JRE,誰來決定呢?這個(gè)重大任務(wù)就落在java.exe身上。Java.exe的工作就是找到合適的JRE來運(yùn)行Java程序。 Java.exe依照底下的順序來查找JRE:自己的目錄下有沒有JRE;父目錄有沒有JRE;查詢注冊表: [HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment] 所以java.exe的運(yùn)行結(jié)果與你的電腦里面哪個(gè)JRE被執(zhí)行有很大的關(guān)系。
3、介紹JVM JRE目錄下的Bin目錄有兩個(gè)目錄:server與client。這就是真正的jvm.dll所在。 jvm.dll無法單獨(dú)工作,當(dāng)jvm.dll啟動(dòng)后,會(huì)使用explicit的方法(就是使用Win32 API之中的LoadLibrary()與GetProcAddress()來載入輔助用的動(dòng)態(tài)鏈接庫),而這些輔助用的動(dòng)態(tài)鏈接庫(.dll)都必須位于jvm.dll所在目錄的父目錄之中。因此想使用哪個(gè)JVM,只需要設(shè)置PATH,指向JRE所在目錄底下的jvm.dll。
也可以參考下面的介紹:
轉(zhuǎn)自:
Java語言的發(fā)展經(jīng)歷
(1)Sun的Java語言開發(fā)小組成立于1991年,其目的是開拓消費(fèi)類電子產(chǎn)品市場,例如,交互式電視、烤面包箱等。
(2)開始寫Java時(shí),并不局限于擴(kuò)充語言機(jī)制本身,更注重于語言所運(yùn)行的軟硬件環(huán)境。他要建立一個(gè)系統(tǒng),這個(gè)系統(tǒng)運(yùn)行于一個(gè)巨大的、分布的、異構(gòu)的網(wǎng)格環(huán)境中,完成各電子設(shè)備之間的通信與協(xié)同工作。設(shè)計(jì)中采用了虛機(jī)器碼(Virtual Machine Code)方式
(3)中性瀏覽器HotJava的誕生。不依賴于任何硬件平臺(tái)和軟件平臺(tái),它應(yīng)是一種實(shí)時(shí)性較高、可靠安全、有交互功能的瀏覽器。
(4)在以網(wǎng)絡(luò)為中心的計(jì)算時(shí)代,不支持HTML和Java,就意味著應(yīng)用程序的應(yīng)用范圍只能限于同質(zhì)的環(huán)境。
(5)未來的計(jì)算方式,每個(gè)HomePage的實(shí)質(zhì)是一個(gè)多媒體應(yīng)用程序,這些程序用Java來開發(fā)。Java應(yīng)用程序運(yùn)行在異質(zhì)的機(jī)器、異質(zhì)的操作系統(tǒng)之上,甚至于電冰箱、烤面包箱、防盜電子設(shè)備之中, 用Internet把所有的電子設(shè)備連接起來,通過TCP/IP進(jìn)行信息的交流。未來可能進(jìn)行代理(Agent)交換,代理有一定的智能性,那便是信息交換的更高級(jí)階段。
Java工業(yè)
(1)Java Card
(2)Embedded System
(3)Java Applet
(4)Java Application
(5)Java OS
Java平臺(tái)技術(shù)
Java不僅僅是一種語言,更重要是一種區(qū)別于傳統(tǒng)系統(tǒng),遵循"網(wǎng)絡(luò)就是計(jì)算機(jī)"信條的平臺(tái)技術(shù)。Java平臺(tái)將面向?qū)ο笙到y(tǒng)擴(kuò)展成包括程序和數(shù)據(jù)的網(wǎng)絡(luò)計(jì)算機(jī)(NC),而這個(gè)平臺(tái)的核心就是Java虛擬機(jī),許多使Java成為萬能開發(fā)平臺(tái)的屬性都源于Java虛擬機(jī)的概念和實(shí)現(xiàn)。以下是如干重要概念:
(1)Java虛擬機(jī):從底層看,Java虛擬機(jī)就是以Java字節(jié)碼為指令組的軟CPU。
(2)字節(jié)碼:字節(jié)碼是Java虛擬機(jī)的指令組(很象CPU上的微碼)。
(3)即用即裝入:一個(gè).class文件可以引用許多其它.class文件(在Java語言中,通過import, implement或extends語句實(shí)現(xiàn)),當(dāng)運(yùn)行的類需要其他類時(shí),Java虛擬機(jī)即從網(wǎng)絡(luò)或本地文件系統(tǒng)裝入.class文件。
(4)Java認(rèn)證器:認(rèn)證器包括四個(gè)階段的操作:類文件認(rèn)證、類型系統(tǒng)認(rèn)證、字節(jié)碼認(rèn)證和運(yùn)行時(shí)類型與訪問檢查。此外,認(rèn)證器在檢查期間還能識(shí)別算法操作的上溢和下溢等其他可能發(fā)生在運(yùn)行期間的程序錯(cuò)誤。
(5)Java效率和(Just-In-Time)JIT及時(shí)編譯技術(shù):JIT編譯器在程序開始執(zhí)行前把所有字節(jié)碼翻譯成本地機(jī)器碼,然后再將翻譯后的機(jī)器碼放在CPU上運(yùn)行。
Java可移植特性
(1)JAVA作為一種編程語言:源代碼可移植性
(2)JAVA作為一個(gè)虛擬機(jī):硬件平臺(tái)可移植性
(3)JAVA作為一種虛擬的操作系統(tǒng)(OS)和圖形用戶界面(GUI):操作系統(tǒng)移植性
Java語言特性
(1)面向?qū)ο螅簾o全局變量或函數(shù)
(2)分布式:Java包括一個(gè)支持HTTP和FTP等基于TCP/IP協(xié)議的子庫。因此,Java應(yīng)用程序可憑借URL打開并訪問網(wǎng)絡(luò)上的對象,象本地一樣。
(3)取消了C語言的:結(jié)構(gòu),指針,#define語句,多重繼承,全局變量和函數(shù),GOTO語句 ,操作符重載,自動(dòng)類型轉(zhuǎn)換等等
(4)安全健壯:例如,邊界檢查,類型檢查,字節(jié)碼認(rèn)證,自動(dòng)的指針和內(nèi)存管理 (5)結(jié)構(gòu)中立:為了建立Java作為網(wǎng)絡(luò)的一個(gè)整體
(6)垃圾收集器:虛擬機(jī)自動(dòng)啟動(dòng)的一個(gè)線程來完成不用內(nèi)存的回收,免去delete.
Java開發(fā)工具 (1)JDK:Java開發(fā)工具包 (2)Symantec café:第一個(gè)推出具有完全特性的集成開發(fā)環(huán)境的公司是Symantec。
(3)Java Workshop:Sun公司1996年中推出的全部用Java實(shí)現(xiàn)的集成開發(fā)環(huán)境。
(4)Visual J++:微軟推出的Visual Stutio組建之一
(5)Jbuilder:Borland公司推出的Windows和Linux平臺(tái)的開發(fā)環(huán)境。
庫代碼共享就是將多個(gè)開發(fā)人員的代碼集合使用,及時(shí)更新。比如A人員負(fù)責(zé)登陸模塊,B負(fù)責(zé)驗(yàn)證碼模塊,庫代碼共享可以將A和B所做的模塊進(jìn)行整合。同時(shí)又可以分工合作
java代碼就是一種軟件的程序,就想殺毒軟件一樣,靠數(shù)據(jù)來運(yùn)行。
你說的java源代碼是指編譯成的class文件前的java文件。
當(dāng)我們運(yùn)行.java文件時(shí),它會(huì)被系統(tǒng)編譯成.class文件,例如Test.java編譯之后就是Test.class,
源文件就是指Test.java文件,
一般部署項(xiàng)目時(shí),有.class文件就可以發(fā)布運(yùn)行了,但是如果想修改這個(gè)系統(tǒng),.class是不能修改的,要有.java文件才能修改
也可以上網(wǎng)去下反編譯軟件,就是能把.class文件大部分還原成.java文件的工具,但不是100%還原,而且如果不是正版的,小心有毒啊,什么的。
1. 加載一個(gè)對應(yīng)數(shù)據(jù)庫的JDBC驅(qū)動(dòng)
在建立到一個(gè)數(shù)據(jù)庫的連接之前,必須先加載這個(gè)數(shù)據(jù)庫的JDBC驅(qū)動(dòng)程序,加載之后此driver會(huì)自動(dòng)注冊到JDBC驅(qū)動(dòng)列表中。加載一個(gè)JDBC驅(qū)動(dòng)有兩種方法。
a) 在命令行方式下指定驅(qū)動(dòng)器或者用冒號(hào)分割驅(qū)動(dòng)器列表:
具體命令如下:
C:\java –Djdbc.drivers = com.company1.Driver:com.company2.Driver youProject
b)第二種方法,在程序中調(diào)用Class.forName()方法。推薦使用。。。。
try
{
String driverName = “com.imaginary.sql.msql.MsqlDriver”;
Class.forName(driverName).newInstance();
}
Catch(ClassNotFoundException e1)
{
//catch could not find database driver exception.
}
2.連接到數(shù)據(jù)庫。
根據(jù)您后臺(tái)待連接的數(shù)據(jù)庫不同,而有小小的差別。
a) 連接到Oracle數(shù)據(jù)庫。
Connection connection = null ;
try
{
//load the jdbc driver ;
String driverName = “oracle.jdbc.driver.OracleDriver”;
Class.forName(driverName).newInstance();
//create a connection to the database;
String serverName = “127.0.0.1”;
String serverPort = “1521”;
String serverID = “datebase1”
String userName = “hello”;
String userPsw = “world”;
String url = “jdbc:oracle.thin:@” + serverName + “:” + serverPort + “:” + serverID ;
Connection = DriverManager.getConnection(url , userName , userPsw);
}
catch(ClassNotFoundException e1)
{
//catch could not find database driver exception.
}
catch(SQLException e2)
{
//catch could not connect to the database exception.
}
b) 連接到一個(gè)SQL Server數(shù)據(jù)庫。
Connection connection = null ;
try
{
//load the jdbc driver ;
String driverName = “com.microsoft.jdbc.sqlserver.SQLServerDriver”;
Class.forName(driverName).newInstance();
//create a connection to the database;
String serverName = “127.0.0.1”;
String serverPort = “1433”;
String serverID = serverName + serverPort ;
String userName = “hello”;
String userPsw = “world”;
String url = “jdbc:JSQLConnect ://” + serverID ;
Connection = DriverManager.getConnection(url , userName , userPsw);
}
catch(ClassNotFoundException e1)
{
//catch could not find database driver exception.
}
catch(SQLException e2)
{
//catch could not connect to the database exception.
}
c) 連接到一個(gè)MySQL數(shù)據(jù)庫上。。。。
Connection connection = null ;
try
{
//load the jdbc driver ;
String driverName = “org.gjt.mm.mysql.Driver”;
Class.forName(driverName).newInstance();
//create a connection to the database;
String serverName = “127.0.0.1”;
String serverID = “database”;
String userName = “hello”;
String userPsw = “world”;
String url = “jdbc:mysql ://” + serverName + “/” + serverID ;
Connection = DriverManager.getConnection(url , userName , userPsw);
}
catch(ClassNotFoundException e1)
{
//catch could not find database driver exception.
}
catch(SQLException e2)
{
//catch could not connect to the database exception.
}
綜合上面的三種數(shù)據(jù)庫連接方式 , 其實(shí)大同小異。由于訪問不同的數(shù)據(jù)庫和所使用的數(shù)據(jù)庫驅(qū)動(dòng)程序不同,所以導(dǎo)致代碼表面上有小小不同,但透過表面看來,內(nèi)部都是
1. 加載一個(gè)特定的數(shù)據(jù)庫JDBC驅(qū)動(dòng)。
2. 連接到一個(gè)數(shù)據(jù)庫。
3. 之后,就可以對一個(gè)特定的數(shù)據(jù)庫進(jìn)行特定的操作了。
附上各種數(shù)據(jù)庫的JDBC驅(qū)動(dòng)起可用信息網(wǎng)址:
對于Oracle數(shù)據(jù)庫,請參考:
對于MySQL數(shù)據(jù)庫,請參考:
對于SQL Server數(shù)據(jù)庫,有很多的驅(qū)動(dòng)可選,比較常用的: