本节内容如下:
1,Java概述
2,Java运行机制
3,Java开发环境搭建
4,关于Java的一些思考
Java概述
Java诞生于Sun公司1990年的James Gosling领导的“Green计划”,Java的实现基础 是C++。Java的成功主要归功于互联网和其本身的开源特性,这就吸引了大批的程序员 来从事Java的开发,Java从此不断发展壮大。
Java主要划分为3个版本:J2ME,J2SE,J2EE。
J2ME:用于控制移动设备和内存储容量有限的设备。
J2SE:Java技术的核心和基础,是J2ME和J2EE的基础。
J2EE:Java技术中使用最广泛的部分,用于提供企业级的完整解决方案。
Java这些分类,主要依据是Java的虚拟机(JVM)和类库API的不同。
Java API可分成三类:
核心API:由Sun公司定制的基本API,即核心类库。
可选API:由Sun公司提供的扩充API,因平台而异。
特殊API:用于满足特殊要求的API,例如用于JCA和JCE的第三方加密类库。
Java运行机制
传统的计算机高级语言按执行方式可分为:编译型、解释型。
编译型语言:将源码编译成本地机器语言,并封装成本地机器可执行的程序格式。 这样的语言执行效率高,但是平台间的移植性不是很好。
解释型语言:将源码逐条翻译成本地机器语言,但不保存翻译成的机器语言。这样 的语言便于调试,跨平台比较容易,但是执行效率不如编译型语言高。
Java综合了上述两种语言的优点:将源码编译成标准字节码,然后将字节码由不同 的JVM翻译成相对应平台的机器语言来执行。所以Java的核心技术就是JVM,JVM是跟平台相关的,具有一定的绑定特性,但是标准字节码跟平台无关,只要在机器上安装了相 对应的JVM,就能执行在其它平台上编写的Java程序。这就是Java的跨平台及其优势所在。
Java开发环境搭建
要开发Java程序,就必须在计算机上安装并配置Java开发环境。
安装JDK
JDK,Java SE Development Kit,即Java标准版开发包,由Sun公司提供的一套用 于开发Java应用程序的开发包,它提供了编译、运行Java程序所需的各种工具和资源, 包括编译器、运行时环境(JRE,Java Runtime Environment)、常用的Java类库。
如果只是要运行Java程序,则只需安装JRE即可。
JDK下载地址:http://www.oracle.com
JDK有不同平台的实现版本,所择自己使用的开发平台的版本即可,下面以Windows 32位操作系统为例进行讲解。
对应的JDK版本为:jdk-7u3-windows-i586-p.exe。
下载后双击就可以进行安装,进行默认安装即可。但是建议单独安装在不带空格的 目录下,因为据资料显示,带空格的目录会导致未知问题出现(笔者还未遇到因此而导 致的问题)。
配置JDK
在进行完全安装后,接着就是配置JDK环境变量。
“我的电脑”或“计算机”右键选择“属性” ---> “高级系统设置” ---> “高级” ---> “环境变量”,之后选择“用户变量”,新建以下三个变量并赋值:
JAVA_HOME := C:Program FilesJavajdk1.7.0_01
Path := C:Program FilesJavajdk1.7.0_01in
Classpath := C:Program FilesJavajdk1.7.0_01jrelib;.
注:
符号 := 表示赋值。
Path变量的赋值,在lib后面的分后后,还必须有一个点号,这表示在执行Java程 序时,会自动搜寻lib目录下的Java类。目前高版本JDK已经不需要设置Classpath环境 变量,如果设置了Classpath出错,则Java解释器将只在设置的目录下搜寻Java类。
选择“用户变量”,是因为“用户变量”的修改不会影响“系统变量”,而“系统变量”中 往往存放这许多重要的设置,如果不小心删除了某些设置,会导致某些服务无法调用。
关于Java的一些思考
Java的执行效率相对于C/C++而言是很低的,这就要归咎于Java的垃圾回收机制。
Java的垃圾回收机制大概实现如下:
Java在内存中开辟两块等大的内存空间,在程序开始运行的时候,其中一块内存 空间中存放了当前程序所有的对象,然后经过一段时间后,Java将扫描这块内存空间, 将活着的对象(引用)copy到另一块内存中,这样就丢弃了死了的对象(即,垃圾)。 然后经过一段时间,又将这块内存中活着的对象copy到之前的内存中去,如此反复执 行,就实现了垃圾回收。
尽管垃圾回收机制能给编程带来快捷舒适的体验,但是这也带来了一个严重的系 统开销,如果经常使用垃圾回收机制,则会严重影响系统性能和程序性能。
事实上,有资料表明,如果Java抛开垃圾回收,它的执行效率将非常接近C++的执 行效率,这主要得益于Java标准字节码的设计相当合理。
这或许就是“鱼与熊掌不可兼得”,人类总是想要以更加高级和抽象的方式进行懒惰 编程,但实现的代价就是开销的增加。随着计算机硬件技术的发展,这种开销在某些应 用场合不是主要因素,所以像Java这种语言就会迅速发展并被应用起来。