初识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的所有程序代码结束为止。
- 初识Java之概念
- UML之概念初识
- Java反射之初识
- Java之IO初识
- java初识之旅
- JAVA 基础之初识JAVA
- Java基础之初识Java
- Java入门之初识Java
- Java之_初识JNI
- java nio 之 初识 channel
- J2SE视频之初识Java
- Java之spring框架初识
- JAVA设计模式之初识
- java之spring框架初识
- java注解之初识注解
- JAVA之初识springMVC框架
- java之抽象概念
- RabbitMQ学习之:(一)初识、概念及心得
- Redo Log File(inactive、active)损坏,处理恢复对策
- js中getDay()和getDate(),常用的时间函数
- laravel5基础用法
- 【PM】【进度】:把握项目节奏的方法
- IntelliJ使用指南—— 导入Eclipse的Web项目
- 初识Java之概念
- 经典案例-制作FAO列表页
- caffe loss 曲线(python 正则表达式)
- UEFI原理与编程(四):UEFI工程模块文件-使用main函数的应用程序工程模块
- 正则表达式
- JAVA实现仿微信红包分配规则
- JQuery动画
- 进程死锁算法——Peterson与Dekker
- altera FPGA时序工程约束主要命令