Chinaunix首页 | 论坛 | 博客
  • 博客访问: 30154
  • 博文数量: 6
  • 博客积分: 311
  • 博客等级: 二等列兵
  • 技术积分: 95
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-08 09:05
文章分类

全部博文(6)

文章存档

2012年(1)

2010年(5)

我的朋友

分类: 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--不断发展的计算平台

       1JavaSEJ2SE):Java语言的规范,可以开发application应用程序,

       2JavaEEJava技术移植到服务器领域,就产生了JavaEE技术,

       3JavaME:嵌入式开发,如开发手机游戏,是市场的需要,因此成功,而Oak却没有成功

 

五、Java 2的版本

       1J2SE Java 2 Standard Edition标准版。

              用于PC桌面开发,低端商务,

             

       2J2ME:Java 2 Micro Edition适用于小型设备和智能卡的版本,

              致力于消费商品和嵌入式设备,如移动电话,银行卡

             

       3J2SE:J2SE为基础,在J2SE基础上扩展了一些API

              在服务器平台开发企业级应用程序,在J2SE基础上

 

六、Java语言的特点

       1、简单(相对于C++,少了指针,在C++上需要我们自己管理内存等)

       2、完全的OO(单根结构)

       3、可靠安全健壮(运行前校验,GC等)

       4、平台无关性(可移植):(口号:开发一次,到处运行)

       5、重生于网络时代,最好的网络编程语言:

       6、分布式开发,支持多线程:支撑我们大型网站运行,可能一台服务器不够,需要多台服务器共同支撑运行

       7、开放先进的技术:由J2P组织:Java通讯组织,这个组织可以制定Java的规范

       8、动态性(更灵活,扩展性好):反射机制

 

七、Java现状

       1Java是现在全球最时髦的开发工具之一

       2Java的出现,给程序界带来了巨大的冲击

       3Java在企业的应用中的日志完美

       4、在国内,Java也如火如荼

       5Java将不可避免地影响一代程序员

 

八、Java的发展前景

       1、电子政务

       2、电子商务

       3、企业信息化工程

       4、移动计算领域(手机,PDA等无线设备)

       5Web Service+XML

       6、网络计算

       7、家庭综合信息服务系统(JINI技术等)

       8、行业应用

 

九、Java的工作原理

源文件(*.javaà 编译器(compilerà 字节码文件(*.class[源文件经过编译器编译成点class文件] à 解析器(interpreterà01010101……(由解析器解析成计算机语言)

 

注意:点Java文件是对计算机下的一些指令

       Java中编译:中间代码,称之为字节码

       C++中编译:编译成(生成)在特定平台下特定的二进制代码,生成高效的二进制代码

问题1为什么Java语言不直接编译成0110的二进制代码?

       答:因为二进制代码是跟特定的机器相关,不同的机器有不同的二进制代码,如果编译成二进制代码,那Java程序就不具备可移植特点了,因此Java语言采取了变通的方式,

中间代码跟各种是不平台相关的,

 

问题2编译成点class文件之后需要转换成二进制,那是谁转换的,又是什么时候转换的?

       答:是JREJava文件转换成点class文件的,JRE又称之为Java运行环境Java运行环境核心:JVMJava虚拟机)

当我们需要运行那个点class文件时,JVM才负责翻译成二进制语言

 

十、Java虚拟机(JVM

1Java虚拟机是一个概念(一个定义):可以由硬件实现,也可以由软件(大多数)

       Java虚拟机用途:主要是帮助我们屏蔽底层硬件平台的差异

 

2Java虚拟机定义了硬件平台的规范

       如(定义)CPU指令集、寄存器、Class字节码类文件格式、Stack(堆)、Garbage-collected headMemory area

 

想支持Java技术就要开发一个Java虚拟机,满足JVM规范,也就是满足Sun公司定义出来的Java虚拟机规范,点class文件就可以由Java虚拟机来执行,转换成二进制语言。

 

 

注意:在不同平台不同系统下有不同的Java虚拟机

 

问题3Java虚拟机是什么时候将点class文件翻译成机器代码的

       答:不是在编写代码时,也不是用Java策来编译时,而是在运行之前,先装载我们的类,再适时地编译成计算代码,这种称之为解释执行,因此在以前Java就称之为解释型语言解释型语言的特征是:读取一行代码,然后翻译成二进制,然后再运行,最后抛弃。

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

 

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

 

1JREJava运行环境,核心:Java虚拟机

 

2Java虚拟机+JavaAPI=Java平台(Java运行环境:JRE

 

JavaAPISun公司以及众界开发的一些类

Java平台:是在硬件平台或操作系统平台下运行

 

在这个平台底层就是不同的异构操作系统,在这种系统上有JREJava运行环境),在Java运行环境中有Java虚拟机(Java HostSpot Runtime)、JavaAPIJava各种工具

 

十三、Java:无用内存自动回收机制

Java最重要的特征:1、可移植性;2、自动内存管理

注意:如果不及时进行无用内存的回收,就会导致内存泄露,进而导致系统崩溃

Java中自动管理内存,而在C++中内存需要我们程序员手动管理,管理不好,将出现内存泄露,给需要使用的对象、数据分配内存,用完之后我们还要释放内存,往往我们会忘记释放内存或误用了指针,导致一些错误的出现。

Java运行环境中,始终存在着一个系统级的线程,专门跟踪内存的使用情况,定期检测出不再使用的村村,并进行自动回收,避免了内存的泄露,也减轻了程序员的工作量。

有了这个垃圾收集器也称:内存自动回收机制,这就是GC

 

十四、代码安全性检查机制

Java代码的工作原理:

源文件(*.javaà 编译器(compilerà 字节码文件(*.class[源文件经过编译器编译成点class文件] à 解析器(interpreterà01010101……(由解析器解析成计算机语言)

 

1、字节码(点class文件)的执行需要经过三个步骤

       1)类装载器(class loader):负责把类文件加载到JVMJava运行环境:也称JRE)中,在此过程需要检验该类文件是否符合类文件的规范

       2)字节码校验器(bytecode verifier):检查该类文件的代码中是否存在着某些非法操作

       3)字节码校验器检验通过,由Java解释器负责把该类文件解释成为机器码进行执行。

2JVM采用采用的是“沙箱”运行模式,即把Java程序的代码和数据都限制在一定的内存空间里执行,不允许程序访问该内存空间外的内存

 

 

 

阅读(730) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~