初识Java之概念

来源:互联网 发布:词汇量测试什么软件 编辑:程序博客网 时间:2024/05/17 20:00

初识Java

 

SUN 是“Stanford UniversityNetwork”,1982年,Sun Microsystems公司诞生于美国斯坦福大学校园。Sun公司1986年上市,在NASDAQ的标识为SUNW后改为JAVA。

 

Java的历史可以追溯到1991年4月,Sun公司的JamesGosling领导的绿色计划(GreenProject),其原先的目的是为家用消费电子产品开发一个分布式代码系统,这样我们可以把E-mail发给电冰箱、电视机等家用电器,对它们进行控制,和它们进行信息交流。开始,准备采用C++,但C++太复杂,安全性差,最后基于C++开发一种新的语言Oak(Java的前身),Oak是一种用于网络的精巧而安全的语言,Sun公司曾依此投标一个交互式电视项目,但结果是被SGI打败。

 

直至1994年下半年,由于Internet的迅猛发展和环球信息网的快速增长,第一个全球信息网络浏览器Mosaic诞生了;此时,工业界对适合在网络异构环境下使用的语言有一种非常急迫的需求;GamesGosling决定改变绿色计划的发展方向,他们对Oak进行了小规模的改造,就这样,Java在1995年的3月23日诞生了!Java的诞生标志着互联网时代的开始,它能够被应用在全球信息网络的平台上编写互动性及强的Applet程序,而1995年的Applet无疑能给人们无穷的视觉和脑力震荡。但没有相应的开发库而只靠Java语言来进行开发肯定是困难重重,所以Sun公司在1996年的1月23日发布了JDK1.0来帮助开发人员的开发。JDK包括两大部分:运行环境和开发工具。

 

Java版本发展

http://www.360doc.com/content/16/0929/22/36949252_594752140.shtml

 

Java优点

 

a. 提供一个解释环境

1) 加速开发: Java当初目的是开发适用于智能化电子消费设备上的软件,它是基于C++语言,但做了简化,能加速软件的开发过程;

2) 一次编译到处运行: 跨平台;

3) 多线程:多线程编程的简单性是Java成为流行的服务器端开发语言的主要原因之一

4) 支持动态更新: 软件代码文件的替换即更新

b. 提供一个比较容易的方式编程

1) 更健壮:没有指针、没有内存管理;

2) 纯粹的面向对象的编程:在Java中认为一切均是对象,对象有属性以及改变属性值的方法。通过Java编程围绕着构建对象的模板、实例化对象、调用对象的方法和属性等来进行。          

 

为什么Java具有以上优点

 

虚拟机JVM提供一个解释环境,让java代码可以运行。

垃圾回收机制让程序员无需在代码中进行内存管理。

代码安全校验保证java代码的安全性。

Java虚拟机的特征;

1)  Jvm简称java 虚拟机(java virtual machine),是用软件来模拟一个虚拟的环境。我们用java编写的源程序经过编译以后生成字节码文件,Jvm 提供了一个解释运行 java字节码文件的环境,只要在不同操作系统上安装了jvm后,就能对同一个java程序进行解释运行,这就java的跨平台,一次编译,到处运行。

 

Java垃圾收集的概念

什么叫垃圾回收:

1)垃圾:无用对象所占据的内存空间;

垃圾回收:将无用对象所占据内存空间进行回收的过程;

为什么要垃圾回收?

1)      对象创建,需要占用内存空间,在一个程序运行过程中要创建无数个对象,如果对象永久占用内存,那么内存很快会消费光,导致后续对象无法创建或者出现内存不足的错误。因此必须采取一定措施及时回收那些无用对象的内存,这样保证内存可以被重复利用。

Java中垃圾回收处理:

1)      由虚拟机通过一个系统级的垃圾回收器线程自动完成,不会忘记也不会释放错,系统更加稳定;

Java中垃圾回收处理特点:             

1) 由虚拟机通过垃圾回收器线程自动完成;

2) 只有当对象不再被使用,它的内存才有可能被回收;如果虚拟机认为系统不需要额外的内存,即便对象不再使用,内存也不会回收;

3) 程序无法显示迫使垃圾回收器立即执行垃圾回收,可以通过java.lang.System.gc()/java.lang.Runtime.gc()建议虚拟机回收对象;

4) 垃圾回收器线程在释放无用对象占用内存之前会先行调用该对象的finalize()方法。该方法是否被调用以及被调用的时间极其不可靠。不建议重写。

 

Java平台代码安全实现策略

Java虚拟机为Java程序提供运行时环境,其中一项重要的任务就是管理类,管理类的加载、连接和初始化

1)加载:查找并加载类的二进制文件(class文件),将其置于内存的方法区中,然后在堆区中创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。

    Java虚拟机可以从多种来源加载类的二进制数据,包括:

    a.从本地文件系统中加载.class文件,最常见;

    b.通过网络下载.class文件;

    c.从zip,jar或其他类型的归档文件中提取.class文件;

    d.从一个专有数据库中提取.class文件;

    f.把一个java源文件动态编译为.class文件;

 

 2)连接:

   a.验证:确保被加载类的正确性(有正确的内部结构,并且与其他类协调一致);

Java虚拟机不知道某个特定的.class文件到底是由正常的Java编译器生成的,还是黑客特制的。类的验证能提高程序的健壮性,确保程序被安全地执行。

 

               类验证内容:

             .代码和jvm规范一致

             .代码不能破坏系统的完整性

             .没有堆栈的上溢和下溢

             .参数类型是正确的

             .类型转换的正确的

                         

    b. 准备:为类的静态变量分配内存,并将其初始化为默认值;

    c.解析:把类中的符号引用转换为直接引用(一个指向所调用方法在方法区内的内存位置的指针);

3) 初始化:给类的静态变量赋予正确的初始值;

Java的工作方式:

         1)源代码: 编写Java源代码文件

         2)编译器: 用编译器编译源代码。编译器会检查错误,如果有错就要改正才能产生正确的输出。

         3)输出: 编译器会产生字节码。任何支持Java的装置都能够把它转译成可执行的内容。编译后的字节码与平台无关。

         4)Java虚拟机: 可以读取与执行字节码。加载指定类,开始执行它的main方法,然后一直运行到main的所有程序代码结束为止。

0 0
原创粉丝点击