Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
Java发展到今天,已经成为了一个真正意义上的语言标准Java的标准指的是一种作为应用层封装的标准,使用Java可以调用一些底层的操作但是Java的历史发展,可以归纳为如下的几个阶段:
· 第一阶段(完善期):JDK 1.0 ~ JDK 1.2;
· 第二阶段(平稳期):JDK 1.3 ~ JDK 1.4;
· 第三阶段(发展期):JDK 1.5 ~ JDK 1.7;
在1995年的时候推出了JDK 1.0、在1998年的时候推出了JDK 1.2(更名为Java2)、2005年的时候推出了JDK1.5。
此处为本人提供的提供Oracle公司JDK下载地址(推荐jdk1.7)
Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。
1. 跨平台性
所谓的跨平台性,是指软件可以不受操作系统的限制, Java自带的虚拟机(JVM)很好地实现了跨平台性。Java源程序代码经过编译后生成二进制的字节码是与平台无关的,却是可被Java虚拟机识别的一种机器码指令。Java语言是在JVM虚拟机上运行的,而JVM又是运行在操作系统上的,不同的操作系统有不同版本的JVM。
Java虚拟机提供了一个字节码到底层硬件平台及操作系统的屏障,使得Java语言具备跨平台性。Java虚拟机的最大作用是起到平台的支持上,通过如上的图形可以发现,所有要解释的程序在JVM上执行,只需要由不同版本的JVM去匹配不同的操作系统,这样只要JVM的支持不变,程序可以任意的在不同的操作系统上运行。但是这种运行方式很明显没有直接运行在操作系统上性能高,不过随着硬件技术的发展,这些问题几乎可以忽略了
2. 面向对象
面向对象是指以对象为基本粒度,其下包含属性和方法。对象的说明用属性表达,而通过使用方法来操作这个对象。面向对象技术使得应用程序的开发变得简单易用,节省代码。
Java是一种面向对象的语言,也继承了面向对象的诸多好处,如代码扩展、代码复用等,在这块先简单提下类和对象的概念。
类:是对一类实物描述,是抽象、概念上的一种定义;
对象:实际存在的该类的事物的每个个体;
这块只需要先知道类是定义,而对象是一种实例化,在内存中类的实例化,即 new 构造器会在内存的堆空间中开辟空间,类一开始就是以CLASS的形式存在磁盘上,需要的时候才由类加载器加载进内存。
3.自动垃圾回收(核心机制)
本子相当于硬盘,时不时可以翻看一下;脑袋相当于内存,太满了就塞不下了;而这里的垃圾回收就是释放那些不再使用的数据所占用的内存。众所周知,内存的有效使用对于程序计是非常重要的。对于不再被使用的数据,就应该及时释放其占据的内部,以提高内存使用效率,被称为“垃圾回收”。
Java语言的垃圾回收采用后台线程自动完成,不需要程序员通过代码完成,称为“自动垃圾回收”。后台线程将跟踪并检查内存使用情况,对于不再被引用的据,自动进行内存释放。然而,值得注意的是,虽然Java语言有自动垃圾回收机制,但是并不能保证不会出现内存泄露的问题。如果源代码的结构或算法等有问题,也同样可能出现内存泄露。
4.健壮性(Robustness)。
健壮性又称鲁棒性,Java在编译和运行时,都要对可能出现的问题进行检查,以消除错误的产生。Java提供自动垃圾回收机制来进行内存管理,防止程序员在管理内存时容易产生的错误;通过异常处理机制,帮助程序员正确地处理异常,以防止系统的崩溃
5.简单性、多线程和动态性
Java语言取消了指针,内存管理通过后台线程自动进行,不再使用goto语句,不支持多继承这些特性都保证了Java的简单性。从编程语言的角度而言,应该分为两种:
· 编译型:如C语言,编译之后会形成出一个*.exe的文件;
· 解释型:像ASP语言那样,直接将代码放到服务器上进行解释。
但是Java本身却属于两种类型的集合,观察图形下:
通过如上的图形可以发现,任何一个*.java程序首先必须经过编译,编译之后会形成一个*.class的文件(字节码文件),而后在电脑上执行的不是*.java,而是编译之后的*.class文件(这个文件可以理解为“加密”的文件),但是解释程序的电脑并不是一台真正意义上的电脑,而是一台由软件和硬件模拟出来的电脑 —— Java虚拟机。
在正式学习java并安装配置开发环境之前,有必要了解一些有关Java的专业术语:
JDK(Java Development Kit ):编写Java程序的程序员使用的软件
JRE(Java Runtime Environment):运行Java程序的用户使用的软件
Server JRE (Java SE Runtime Environment):服务端使用的 Java 运行环境
SDK(Software Development Kit):软件开发工具包,在Java中用于描述1998年~2006年之间的JDK
DAO(Data Access Object):数据访问接口,数据访问,顾名思义就是与数据库打交道
MVC(Model View Controller):模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用于组织代码用一种业务逻辑和数据显示分离的方法
Java2平台包括标准版(J2SE)、企业版(J2EE)和微缩版(J2ME)三个版本:
J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;
J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
StandardEdition(标准版)J2SE包含那些构成Java语言核心的类。比如:数据库连接、接口定义、输入/输出、网络
编程。
EnterpriseEdition(企业版)J2EE包含J2SE中的类,并且还包含用于开发企业级应用的类。比如:EJB、servlet、
JSP、XML、事务控制
MicroEdition(微缩版)J2ME包含J2SE中一部分类,用于消费类电子产品的软件开发。比如:呼机、智能卡、手机、
PDA、机顶盒
他们的范围是:J2SE包含于J2EE中,J2ME包含了J2SE的核心类,但新添加了一些专有类。笼统的讲,可以这样理解,J2SE是基础;压缩一点,再增加一些CLDC等方面的特性就是J2ME; 扩充一点,再增加一些EJB等企业应用方面的特性就是J2EE。