【Java 8】一、Java的历史与演变

目的:为完全了解Java,需要理解Java的诞生原因、成型动力以及他继承的思想。
计算机语言的创新与发展的原因:适应环境和用途的变化;实现编程艺术的完善和提高。

1.1 Java的家世

Java大量特性从C和C++继承过来。

C语言的诞生

C语言前,BASIC、COBOL、FORTRAN这几种编程语言没有遵循结构化原则设计,依赖GOTO作为程序控制手段;Pascal虽是结构化语言,但不是针对高效率设计的,无法设计系统级代码。
C语言出现的2个条件:软件需求加快,学术界在努力创建一种新的设计语言;计算机硬件普及,计算机不再被锁起来,程序员可以随意使用计算机进行尝试。
C语言是一种功能强大、高效率、结构化的语言;而且他是程序员设计的,为程序员服务的语言。

C++

出现的原因:更好地管理程序的复杂性。
改进:C++是在C#的基础上,增加了对面向对象(OOP)的支持,使程序员能理解和管理更大的程序。

Java出现的条件

20世纪80年代末90年代初,万维网(World Wide Web)和因特网发展到了临界规模。

1.2 Java诞生

Java于1991年,由Sun公司构想出。
最初开发Java的推动力:对平台独立的语言的需求。

推动力

当时需要为一些电子设备(微波炉、遥控器等)的各种CPU开发程序,如果使用C或者C++需要对每一种CPU开发对应的编译器,所以需要一种可移植对平台独立的语言。
因特网成就Java:刚好这个时候因特网的飞速发展,也需要可移植的程序,Java的特性也适合于因特网的需求,使Java的关注点从消费电子产品转移到Internet。

Java的特性

1、为了吸引C/C++的程序员,Java继承了很多C/C++的特性,但Java不是为了替代它们,而是为了解决特定领域问题而出现的。
2、Java是专门针对程序员的语言,因为他的设计、测试、改进都是由程序员完成,扎根与程序员的需求,也为程序员开放了足够的权限。

与C#的关系

Java影响了C#语言的发展,两者共享相同语法,支持分布式编程,使用相似的对象模型。

1.3 Java改变Internet的方式

Internet推动了Java,Java也影响了Internet。
Java简化了Web编程,创建了新的网络程序类型applet,解决了一些Internet棘手问题如移植性和安全性。

Java applet

applet是一种可以在Internet上传送的程序,可以在兼容Java的Web浏览器中自动运行。
applet扩展了网络空间自由流动的对象的范畴。这是一种动态的,自动运行的代码,由服务器端初始化,然后在客户端自动运行。
虽然这种动态的联网程序符合人们愿望,但是同时带来了严重的安全性和可移植性。

安全性

当下载这个自动执行的程序的时候,里面可能包含各种病毒或者恶意代码。
而Java将applet限定在Java的执行环境内,不允许访问计算机的其它部分来实现安全性。

可移植性

applet会被下载到不同的环境,不同的系统中,如何实现在这些不同的环境下的运行,下面将讲解。

1.4 Java的魔力:字节码

解决安全性和可移植性的关键:字节码。
Java编译器输出的不是可执行代码,而是高度优化的指令集合。
字节码在Java运行时系统中执行,Java运行时系统也称为Java虚拟机(Java Virtual Machine,JVM),原始也称为字节码解释器。

字节码和JVM实现了移植性和安全性

移植性:同一个程序,Java编译器输出的是相同的字节码;而这个字节码需要在不同的环境中运行,只需要实现对应环境的JVM即可;这些不同的JVM,运行的是相同的字节码,从而实现了移植性。
安全性:因为Java程序依赖JVM来运行,所以在JVM之外的系统其它部分,Java代码是无法修改的,从而实现了一定的安全性。
速度:一般来说,这样经过一个中间层再执行代码,理论上会慢一点;但是Java对字节码进行了足够的高度的优化,所以这个速度是足够快的。
执行代码:为了提高性能,Java也提供了HotSpot技术,为字节码提供了即时(Just In Time,JIT)编译器,可将字节码实时编译为系统可执行代码。

1.5 servlet:服务器端的Java

Java横跨服务器/客户端:servlet是在服务器中执行的Java程序,像applet扩展了Web浏览器的功能一样,servlet扩展了Web服务器的功能。
servlet用于动态创建发送到客户端的内容,如servlet可以读取服务器数据库,然后整理为客户端想要的内容,发送到客户端;同时,servlet还提供了一些额外的优点,例如性能的提升。
可移植性:因为servlet是Java程序,他们被编译成字节码,由JVM执行,所以servlet可以用于不同服务器环境,只要服务器支持JVM和servlet容器。

1.6 Java关键特性

简单性:继承C/C++语法和面向对象特性;本来的设计目标就是让程序员高效学习和使用。
安全性:上面已讲述。
可移植性:上面已讲述。
面向对象:Java中的对象模型既简单又容易扩展,基本类型仍然是高性能的非对象类型。
健壮性:编译时检查代码;可预见的方式运行;自动管理内存回收;面向对象的异常处理。
多线程:Java提供了易用的多线程方法。
体系结构中立:Java提供了Java虚拟机(JVM),解决了程序对不同电脑,或者同一台电脑,不同状态,可能导致程序不能运行的问题。
解释执行和高性能:虽然Java使用了字节码和JVM,但是经过Java的优化,使用计时编译器,可使这种模式依然保持了如本机代码一样的高性能。
分布式:Java是针对Internet的分布式环境而设计的,所以对分布式有很多强大的支持。
动态性:支持运行时类型信息,可在运行时验证和解决对象访问的问题。

猜你喜欢

转载自www.cnblogs.com/LiveYourLife/p/9105824.html