·Java EE (Java 2 Platform Enterprise Edition,java平台企业版) Java EE(Java Platform,Enterprise Edition)。这个版本以前称为J2EE。企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端 Java 应用程序。Java EE 是在Java SE 的基础上构建的,它提供Web 服务、组件模型、管理和通信API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和Web 2.0 应用程序。
·Java ME (Java 2 Platform Micro Edition,java平台微型版) Java ME(Java Platform,Micro Edition)。这个版本以前称为J2ME,也叫K-JAVA。Java ME 为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。Java ME 包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。基于Java ME 规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。
1.4 Java 虚拟机(JVM)
Java虚拟机(即JVM,Java Virtual Machine的缩写) 是一个虚构出来的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。
1.4.1 什么是Java虚拟机
1、Java的安全性和可移植性的关键在于Java编译器的输出并不是可执行代码,而是字节码。
2、字节码是一套设计用来在Java运行时环境执行的高度优化指令集,该运行时环境就称为Java虚拟机(JVM)。
3、在标准形式下,JVM是一个字节码解释器。
4、可以将JVM看成一个微型操作系统,它依附于计算机具体的操作系统之上,JVM本身具有一套虚拟机器指令,并有自身的栈、寄存器组件等等,通过JVM 将编译过的 .class 文件与底层硬件平台、操作系统联系起来。有利于跨平台(即可移植性)。
1.4.2 JVM的功能是什么
1、提供运行时环境 2、提供垃圾回收机制
3、提供中立的体系结构,即字节码
1.4.2.1 提供运行时环境
1>. Class loader 类加载器 —— 加载代码
加载程序执行所需要的全部类。使用“命名空间”分隔本地文件系统的类和网络导入的类。全部类被加载后,可执行文件的内存就确定下来,防止未授权的访问。
2>. Byte code verifier 字节码校验器 —— 校验代码
代码是否符合JVM规定的文件格式、是否有访问权限的违例、是否引起操作数的堆栈溢出、参数类型是否正确、是否有转型错误发生等。
3>. JIT code generator JIT代码生成器 —— 执行代码
JIT编译器:Just In Time 实时编译器。JIT编译器是Java 虚拟机的一部分,它的主要用途是将字节码指令集转换为针对某一特定微处理器的机器代码指令。通过使用JIT编译器提高了Java 代码的执行速度。
JVM提供运行时环境原理如图1-2所示:
图1-2 JVM运行时环境
1.4.2.2 提供垃圾回收机制
其它编程语言,例如C++,内存的分配和释放都是程序员的责任。Java编程语言提供了一种系统级线程来跟踪内存的分配情况,程序员不用去管内存的回收情况,JVM会自动完成检查和释放不再需要的内存。
1.4.2.3 提供中立的体系架构
一般的高级语言编写的程序如果要在不同的平台上运行,需要利用不同的编译工具编译成不同的目标代码,即跟具体的体系架构和处理器是相关的。而引入Java语言虚拟机后,Java程序在不同平台上运行时不需要重新编译。Java屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。
综上所述,JVM的功能如图1-3所示:
图1-3 Java虚拟机
从图1-3中不难明白JAVA可以实现可移植性的原因,只要在操作系统上(WINNT、Linux、Unix)植入JVM(Java虚拟机),JAVA程序就具有可移植性,也符合SUN公司提出的口号“Write Once, Run Anywhere”(即:一次编写,处处运行)。
1.5 JDK 的安装及环境变量的配置
JDK(Java SE Development Kit)即java标准开发包,是Sun提供的一套用于开发Java应用程序的开发包,它提供了编译、运行java程序所需要的各种工具和资源,包含java编译器、java运行时环境(JRE)、以及常用的java类库等。
要开发Java程序,首先需要安装JDK,然后配置好环境变量即可。这里我选用的是j2sdk1.6版本。
安装分为两个步骤:
1、安装JDK:jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008.exe 2、配置环境变量path。 安装过程如下:
图1-4 启动JDK安装程序
图1-5 将安装路径设置为c:\\j2sdk
之后按照默认的安装设置即可。
安装完毕在JDK安装路径下面看到如下文件路径:
bin:该路径下存放了jdk的各种工具命令,常用的javac、java等命令 demo:该路径下存放了JDK提供的演示代码。 jre:(Java Runtime Environment,Java运行环境),该路径下安装的是运行java程序所必需的JRE环境。包含JVM标准实现及Java核心类库。
lib:该路径在存放的是JDK工具命令的实际执行程序,如tools.jar sample:该路径下存放了JDK提供的一些简单示例代码。 src.zip:该压缩包里存放的就是java所有核心类库的源代码。 从图1-3可以看出,在编译Java程序时需要用到javac这个命令,执行Java程序需要java这个命令,而这两个命令并不是windows自带的命令,所以使用它们的时候需要配置好环境变量,这样就可以在任何的目录下使用这两个命令了。
那么该如何设置环境变量呢?
在“我的电脑”上点击右键?选择“属性”?选择“高级”?“环境变量”,弹出“环境变量对话框”,如图1-6所示:
图1-6 系统环境变量的配置
在“系统变量”栏选择“新建”,在变量名编辑框中输入:JAVA_HOME,在变量值编辑框中输入:c:\\j2sdk\\
在“系统变量”栏选择“新建”, 在变量名编辑框中输入:CLASSPATH,在变量值编辑框中输入:.;%JAVA_HOME%\\lib
在“系统变量”栏中找到“Path”,选择“编辑”,在变量值的最前面加上:%JAVA_HOME%\\bin;
如何检测环境变量配置成功呢?
启动命令行,输入:java -version 或 javac –version,如果你能看到JAVA的版本号,如 1.6.0,表示环境变量配置成功。这样就可以在命令行的任何目录下使用javac和java这两个命令了来编译运行Java程序了。 ·编译Java源代码:
进入DOS命令行,改变当前路径到源文件所在目录:
javac HelloWorld.java 带包名的源代码编译: javac -d . ./HelloWorld.java //将包生成到当前 ·运行JAVA应用程序
执行不带包名的JAVA应用程序: java HelloWorld
执行带包名的JAVA应用程序,指定classpath的执行方式: java -classpath . com.itjob.HelloWorld 或 java com.itjob.HelloWorld 注意:
编译时,Java源文件名要包含扩展名,而在执行Java代码时,不要扩展名。 CLASSPATH环境变量作用:
当我们使用“java java类名”命令来运行java程序时,JRE到哪里搜索java类?在当前路劲下。
Jdk1.4及之前版本,需要在CLASSPATH环境变量里面添加一点“.”。用来告诉jre需要在当前路径下面搜索java类,另外编译和运行还需要JDK的lib路径的dt.jar、tools.jar文件的java类。
在jdk1.5及以上版本完全不用设置CLASSPATH,sun公司改进jdk设计,jre会自动搜索当前路径下面的类文件,而且使用java的编译和运行工具时,系统可以自动加载dt.jar和tools.jar文件中的java类。
但是如果你在jdk1.5及以上版本设置了CLASSPATH环境变量,jre就会按你指定的路径搜索Java类。如果CLASSPATH没有包含一点(.),那么jre就不会在当前路径中搜索java类。所以这是要注意的。
如果我们希望运行java程序时,临时指定jre搜索java类的路径,可以使用-classpath选项,格式如下:
java -classpath dir1;dir2;?;dirN java类
如果你想CLASSPATH环境指定的搜索路径有效,而且还会在当前路径搜索java类,格式如下
java -classpath %CLASSPATH%;.;dir1;dir2;?;dirN java类
1.6 编写第一个 Java 程序
说了这么多,现在就自己来动手编写一个Java的程序来亲自感受一下Java语言的基本形式。需要说明的是,JAVA 程序分为两种形式:一种是网页上使用的Applet程序(Java小程序),另一种是Appliction程序(即:Java应用程序),我们主要讲解的是Java Application程序。
范例:Hello.java
public class Hello { //程序的入口,所有程序由此开始运行
public static void main(String args[]) { //此语句表示向屏幕上打印\字符串 System.out.println(\ }