所谓的J2SE全名为The JavaTM 2 Platform, Standard Edition,现在最新的版本为1.3.1,各种作业系统(Solaris SPARC/x86、Linux、Windows),有相对应的J2SE,可以至Sun的网站Download(http://java.sun.com/j2se/1.3/)。
安装:
在Linux上安装J2SE:
在Sun的网站有两种版本可供下载,一种是RedHat RPM shell script形式,一种是GNUZIP Tar shell script形式。在开始安奘前,请切换使用者为su。
RedHat RPM shell script:
执行下载的档案:
切换至该档案的目录,执行:
./j2sdk-1_3_1-linux-i386-rpm.bin
该档案是一个shell script,所以在执行前请先确定档案有执行的权限
chmod +x j2sdk-1_3_1-linux-i386-rpm.bin
或直接用
sh j2sdk-1_3_1-linux-i386-rpm.bin
来执行。
在看完License的宣告後,当然是yes,此时就会开始解压缩,完成後在相同的路径下,会出现一个rpm的档案jdk-1.3.1.i386.rpm,接着再执行:
rpm -ivh jdk-1.3.1.i386.rpm
就会进行安装。若出错误讯息,说有dependence的问题,则加入 --nodeps的option即可。
rpm -ivh jdk-1.3.1.i386.rpm --nodeps
完成後,JDK被安装在/usr/java/jdk1.3.1,记得将/usr/java/jdk1.3.1/bin加入PATH哦。
GNUZIP Tar shell script:
执行下载的档案:
切换至该档案的目录,在执行该程式之前,请先决定要将JDK安装在什麽地方,因为执行该shell script後,会将jdk1.3.1安装在执行安装的路径下。
所以请先决定所以要安装的路径,将j2sdk-1_3_1-linux-i386.bin搬到该目录下,执行:
./j2sdk-1_3_1-linux-i386.bin
一样请先确定该档案是否有执行的权限。
看完License後,一样是key入yes,则开始解压缩,完成後再个目录会多了一个jdk1.3.1的目录,即安装完成。一样记得将jdk1.3.1下的bin加入PATH。
在Windows上安装J2SE:
windows的JDK安装很简单,只要执行下载的档案,并随着指示即可完成,在此不多加赘述。
J2SE的目录架构(以windows为例):
安装完後,目录的结构如左:
jdk1.3.1为安装的根目录,
以下针对一些重要的目录作介绍:
jdk1.3.1\bin:
这里放置的都是开发者所需要的工具,都是可执行档,例如:java、javac、javah、rmic、rmiregistry等等,所以最好将只路径加入PATH。
jdk1.3.1\lib:
开发工具所需要的档案,例如:tools.jar,dt.jar,而jdk1.3.1还将htmlconverter.jar也放进来,可以不用在分开下载。
jdk1.3.1\jre:
顾名思义,就是runtime的根目录,在执行java程式时,可从系统的property--java.home,得到该路径。
jdk1.3.1\jre\lib:
libraries和工具所需要的档案,有一些可执行档,一些dll档。
jdk1.3.1\jre\bin\classic:
Java 2 Classic Virtual Machinen所使用的dll档。
jdk1.3.1\jre\bin\hotspot:
Java HotSpotTM Client Virtual Machine所使用的dll档。
jdk1.3.1\jre\lib:
主要java runtime environment所需要的library、property、和resources都放在这里。
jdk1.3.1\jre\lib\ext:
和扩充机制有关,放一些额外package的jar档,或helper的jar档。放到这里的jar档,当执行java十虽然没有加入CLASSPATH,一样可被找到。
jdk1.3.1\jre\lib\security:
存放Security Manager所使用的档案,例如:java.policy,java.security。
安装後的设定:
设定PATH:
先将 [JDK root]\bin加入PATH,如此一来,在命令列直接打java就能执行java的程式了。因为之前说过,在bin这个目录下放的就是开发这用的工具,例如:java、javac、javadoc、javah、rmic等等。
设定CLASSPATH:
这个设定是用在当执行java的程式时,VM要去哪里找所要执行的class,或程式中用到的class,等一下会说明java VM寻找class的机制。
所以如果你有一些class是经常要用到的,或是执行某个程式必须要用到其他的class时,则要让java VM可以找到所要引用的class,最简单的方式是将该class写入CLASSPATH中。另外,CLASSPATH通常都会设 . (即目前路径),以及 ../ (执行路径的上一层),此外,windows的分隔符号为分号(;),linux上则为茂号(:)。
例如:
在windows的环境下:
set CLASSPATH=.;../;c:\MyClass.class;c:\MyJar.jar
基本观念的介绍:
java为物件导向的程式语言,对java来说,我们写的一支程式,至少就是一个以上的class(意思类似於类别,以下我们还是会直接写class),而class和class可以互相继承或是引用(假使所要引用或是继承的class并没有多加限制的话),而Java Platform将classes大概分为三大类,
Bootstrap classes:
就是构成主要Java Platform的基本classes,包含在rt.jar和i18n.jar这两个jar档里,放在[JDK root]\jre\lib目录下。只要执行java,这些classes可以自动被找到。
Extension classes:
就是在[JDK root]\jre\lib\ext下,所有.jar的档案,所谓的jar档,其实就是一大堆classes的集合,用java提供的tool---jar,将很多的class压缩成一个.jar的档案。广泛来说,其实jar是一个压缩工具,所以.jar里还可以放置其他的档案,或是程式执行时所需要的resources,例如:图形档,纯文字档,设定档等等。
而放在[JDK root]\jre\lib\ext下的jar档,Java VM在执行时也会自动找到。
(此即所谓的Extension Mechanism。)
User classes:
开发者或是一般使用者,所要用的classes,要Java VM找到这些classes有两种方式,
将所要用的classes加入环境变数CLASSPATH中。
在执行程式的command line多加入参数 -classpath 来指定其他的classes。例如要执行MyClass.class时,要用到YourClass.class,我将YourClass.class放在c:\otherclasses下,而MyClass.class放在c:\myclasses下,则执行时下以下的指令即可:
java -classpath c:\otherclasses c:\myclasses\MyClass
所以当新写了一个class,用javac编译完後,用java执行时,出现ClassNotFountException时,即说明你要执行的class,或是引用的class,Java VM在以上三类中classes中没有找到。解决的方式就是将所要用到的classes加入第二和第三类的classes中,在执行一次即可。
简单的例:
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello World!!");
}
}
随便打开一个文字编辑器,将以上的程式并贴上,将该档案存成HelloWorld.java,注意大小写对java来说是有差别的,储存完毕後到console下,切换路径到存放档案的目录下,执行:
javac HelloWorld.java
则在相同的路径下会产生一个HelloWorld.class的档案,即所谓的class档,接着在执行:
java HelloWorld
则会在console输出"Hello World!!"的字串。若有问题,参考安装後的设定,以及基本观念两节。
Jar Tool的基本用法:
jar是用来将很多classes包成一个jar档的压缩工具,即基本原理和zip相当,所以用来解zip档的解压所工具,一样可以将jar档解开。jar的主要目的是压缩classes,加速网路下载时间。基本用法:
将classes档案压缩
jar cvf MyJar.jar c:\myclasses\*.class
c --- create jar file ,压缩档案,产生jar档。
v --- verbose
f --- 指定档案名称
上一个指令的意思是将c:\myclasses\下所有的class档,包成MyJar.jar档,并在处理的过程中秀讯息到console。
将jar档解开:
jar xvf MyJar.jar
x --- 解压缩
v --- verbose
f --- 指定档案名称
上一个指令是将MyJar.jar解开到现在的目录。
jar tf MyJar.jar
t --- 检视Jar档内容
f --- 指定档案名称
上一个指令即检视MyJar.jar里的档案。