Java语言概述

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就称之为解释型语言,解释型语言的特征是:读取一行代码,然后翻译成二进制,然后再运行,最后抛弃。

这样多个人并发访问的话都要重新执行这些步骤(过程),这样效率很低下。



在Java里,JDK1.2之后就出现,产生一种新技术,这种新技术称之为即使编译,也就是Just in time(JIT),装载类之后变成二进制代码,然后缓存起来,别的客户再来运行时,就直接运行二进制代码


(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程序的代码和数据都限制在一定的内存空间里执行,不允许程序访问该内存空间外的内存
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值