全部博文(6)
分类: Java
2010-04-11 19:10:57
Java语言概述
一、1991年,Sun公司为能够在消费电子商品上开发应用程序,寻找合适的变成语言,
而以前的技术及系统存在着跨平台的问题
考虑过C++,但C++过于复杂和庞大,安全性也并不令人满意,于是着手设计和开发出一种语言,称之为Oak语言
但Oak语言在商业上并未获得成功,原因:这种语言过于超前
二、1995年,互联网在世界上缝勃发展,Sun公司发现Oak语言非常符合互联网的需求,于是改进了该语言的设计,
达到以下几个目标
1、面向对象
2、程序代码独立于平台
3、程序员容易掌握
4、使程序更安全
5、实现多线程
6、提供动态装载程序代码的机制
7、提供代码校验机制以保证安全性
三、Java语言的前生:Oak语言
四、Java--不断发展的计算平台
1、JavaSE(J2SE):Java语言的规范,可以开发application应用程序,
2、JavaEE:Java技术移植到服务器领域,就产生了JavaEE技术,
3、JavaME:嵌入式开发,如开发手机游戏,是市场的需要,因此成功,而Oak却没有成功
五、Java 2的版本
1、J2SE :Java 2 Standard Edition标准版。
用于PC桌面开发,低端商务,
2、J2ME:Java 2 Micro Edition适用于小型设备和智能卡的版本,
致力于消费商品和嵌入式设备,如移动电话,银行卡
3、J2SE:以J2SE为基础,在J2SE基础上扩展了一些API
在服务器平台开发企业级应用程序,在J2SE基础上
六、Java语言的特点
1、简单(相对于C++,少了指针,在C++上需要我们自己管理内存等)
2、完全的OO(单根结构)
3、可靠安全健壮(运行前校验,GC等)
4、平台无关性(可移植):(口号:开发一次,到处运行)
5、重生于网络时代,最好的网络编程语言:
6、分布式开发,支持多线程:支撑我们大型网站运行,可能一台服务器不够,需要多台服务器共同支撑运行
7、开放先进的技术:由J2P组织:Java通讯组织,这个组织可以制定Java的规范
8、动态性(更灵活,扩展性好):反射机制
七、Java现状
1、Java是现在全球最时髦的开发工具之一
2、Java的出现,给程序界带来了巨大的冲击
3、Java在企业的应用中的日志完美
4、在国内,Java也如火如荼
5、Java将不可避免地影响一代程序员
八、Java的发展前景
1、电子政务
2、电子商务
3、企业信息化工程
4、移动计算领域(手机,PDA等无线设备)
5、Web Service+XML
6、网络计算
7、家庭综合信息服务系统(JINI技术等)
8、行业应用
九、Java的工作原理
源文件(*.java)à 编译器(compiler)à 字节码文件(*.class)[源文件经过编译器编译成点class文件] à 解析器(interpreter)à01010101……(由解析器解析成计算机语言)
注意:点Java文件是对计算机下的一些指令
在Java中编译:中间代码,称之为字节码
在C++中编译:编译成(生成)在特定平台下特定的二进制代码,生成高效的二进制代码
问题1:为什么Java语言不直接编译成0110的二进制代码?
答:因为二进制代码是跟特定的机器相关,不同的机器有不同的二进制代码,如果编译成二进制代码,那Java程序就不具备可移植特点了,因此Java语言采取了变通的方式,
中间代码跟各种是不平台相关的,
问题2:编译成点class文件之后需要转换成二进制,那是谁转换的,又是什么时候转换的?
答:是JRE将Java文件转换成点class文件的,JRE又称之为Java运行环境,Java运行环境核心:JVM(Java虚拟机)
当我们需要运行那个点class文件时,JVM才负责翻译成二进制语言
十、Java虚拟机(JVM)
(1)Java虚拟机是一个概念(一个定义):可以由硬件实现,也可以由软件(大多数)
Java虚拟机用途:主要是帮助我们屏蔽底层硬件平台的差异
(2)Java虚拟机定义了硬件平台的规范
如(定义)CPU指令集、寄存器、Class字节码类文件格式、Stack(堆)、Garbage-collected head、Memory area
想支持Java技术就要开发一个Java虚拟机,满足JVM规范,也就是满足Sun公司定义出来的Java虚拟机规范,点class文件就可以由Java虚拟机来执行,转换成二进制语言。
注意:在不同平台不同系统下有不同的Java虚拟机
问题3:Java虚拟机是什么时候将点class文件翻译成机器代码的
答:不是在编写代码时,也不是用Java策来编译时,而是在运行之前,先装载我们的类,再适时地编译成计算代码,这种称之为解释执行,因此在以前Java就称之为解释型语言,解释型语言的特征是:读取一行代码,然后翻译成二进制,然后再运行,最后抛弃。
这样多个人并发访问的话都要重新执行这些步骤(过程),这样效率很低下。
(1)JRE:Java运行环境,核心:Java虚拟机
(2)Java虚拟机+JavaAPI=Java平台(Java运行环境:JRE)
JavaAPI:Sun公司以及众界开发的一些类
Java平台:是在硬件平台或操作系统平台下运行
在这个平台底层就是不同的异构操作系统,在这种系统上有JRE(Java运行环境),在Java运行环境中有Java虚拟机(Java HostSpot Runtime)、JavaAPI、Java各种工具
十三、Java:无用内存自动回收机制
Java最重要的特征:1、可移植性;2、自动内存管理
注意:如果不及时进行无用内存的回收,就会导致内存泄露,进而导致系统崩溃
在Java中自动管理内存,而在C++中内存需要我们程序员手动管理,管理不好,将出现内存泄露,给需要使用的对象、数据分配内存,用完之后我们还要释放内存,往往我们会忘记释放内存或误用了指针,导致一些错误的出现。
在Java运行环境中,始终存在着一个系统级的线程,专门跟踪内存的使用情况,定期检测出不再使用的村村,并进行自动回收,避免了内存的泄露,也减轻了程序员的工作量。
有了这个垃圾收集器也称:内存自动回收机制,这就是GC
十四、代码安全性检查机制
Java代码的工作原理:
源文件(*.java)à 编译器(compiler)à 字节码文件(*.class)[源文件经过编译器编译成点class文件] à 解析器(interpreter)à01010101……(由解析器解析成计算机语言)
1、字节码(点class文件)的执行需要经过三个步骤
(1)类装载器(class loader):负责把类文件加载到JVM(Java运行环境:也称JRE)中,在此过程需要检验该类文件是否符合类文件的规范
(2)字节码校验器(bytecode verifier):检查该类文件的代码中是否存在着某些非法操作
(3)字节码校验器检验通过,由Java解释器负责把该类文件解释成为机器码进行执行。
2、JVM采用采用的是“沙箱”运行模式,即把Java程序的代码和数据都限制在一定的内存空间里执行,不允许程序访问该内存空间外的内存