-
程序设计平台
-
与现存代码的相容性问题是其应用于某一领域需要面对的
-
java不止是一种语言,还是一个完整的平台,有一个庞大的库
-
可重用代码
-
一个提供安全性、跨操作系统的可移植性以及自动垃圾收集等服务的执行环境
-
关键术语
-
简单性
-
C++纯净版
-
接近c++
-
剔除c++中很少使用、难以理解、易混淆的特性
-
头文件、指针运算、结构、联合、操作符重载、虚基类
-
小
-
开发能够在小型机器上独立运行的程序
-
基本解释器及类支持40KB
-
基础标准类库和对线程的支持(自包含的微内核)增加175KB
-
注:经扩展以上up...则有Java微型版用于嵌入式开发
-
可视化编程环境
-
第三方开发环境
-
面向对象
-
将重点放在数据(对象)和对象的接口上
-
与c++不同于多继承——>接口、元类模型替代
-
网络技能
-
例程库
-
处理TCP/IP协议
-
健壮性
-
Java的指针模型可以消除重写内存和损坏数据的可能性
-
隐式指针:
-
不构造字符串、数组这样的结构(安全[不会有内存分配错误和内存泄漏])
-
又可实现许多数据结构(相对于没有显式指针的)
-
Java编译器能检测许多在其他语言中仅在运行时刻才能检测出来的问题
-
早期问题检测
-
后期动态(运行时)检测
-
消除有出错倾向的状态
-
安全性
-
Java适用于网络/分布式环境
-
可以构建防病毒、防篡改的系统
-
运行时堆栈溢出(蠕虫等病毒攻击手段)
-
在自己处理空间之外破坏内存
-
未经授权读写文件
-
数字签名类(类->作者->权限)
-
体系结构中立
-
编译器生成体系结构中立的目标文件.class
-
有java运行时系统即可运行
-
缺点:比直接运行机器指令慢
-
改进:把使用最频繁的字节码序列翻译成机器码(即时编译)
-
虚拟机还可检测指令序列行为,以增强其安全性
-
可移植性
-
没有“依赖具体实现
-
基本数据类型大小明确”——>代码移植方便
-
二进制以固定格式进行存储传输,消除了字节顺序的困扰
-
字符串标准的Unicode格式存储
-
系统组成部分类库,定义了可移植接口(不同环境不同实现)
-
解释型
-
Java解释器可以在任何移植了解释器的机器上执行Java字节码(.class)
-
链接是一个增值且简便的过程——>开发过程快捷、具有探索性
-
早期Java开发工具速度相当慢——>即时编译器(字节码 —> 机器码)
-
高性能
-
需要更高效的性能
-
即时编译器
-
可以监控经常执行哪些代码并优化以提高速度
-
消除函数调用(即内嵌)
-
基于已加载的类集,且特定函数不被覆盖就可以内嵌
-
多线程
-
带来交互响应和实时行为
-
可利用多个处理器
-
多线程编译简单性
-
平台无关性
-
代码相同,由底层操作系统或线程库实现多线程
-
动态性
-
能够适应不断发展的环境
-
库中可以*添加新方法和实例变量,对客户端无影响
-
找到运行时类型信息简单
-
JavaApplet与Internet
-
JavaApplet在网页中运行
-
需要web浏览器执行字节码
-
Sun发放Java源代码许可证,坚持不允许对语言和基本类库的结构做任何修改
-
得到的程序版本一致
-
不怕恶意代码袭击
-
Java版本不一致——>不推荐开发applet
-
动态效果现在用JavaScript或Flash
-
Java用于开发服务器端应用程序(产生网页、运行后端逻辑)
-
发展史
-
1991年,Patrick Naughton和James Gosling带领的Sun公司的工程师小组想要设计一种小型的计算机语言(代码小、紧凑、平台无关),项目命名Green
-
使用虚拟机
-
命名:
-
Oak——>Java(因为Oak已有)
-
Internet的万维网壮大
-
开发浏览器(中立、实时、可靠、安全)
-
HotJava浏览器——>执行网页具有内嵌代码的能力
-
一次编写,随处运行
-
改进:
-
泛型、for each循环、自动打包、元数据
-
常见误解(以下正确)
-
Java 程序设计语言
-
HTML描述网页结构的方式
-
XML描述数据的方式
-
JavaAPI对处理XML提供了很好的支持
-
C#借鉴了Java的好的思想
-
Java开发源代码(2007)
-
Java早期是解释型的,现在使用即时编译器,热点代码运行速度和C++差不多
-
Java有额外开销:
-
虚拟机启动时间
-
Java GUI比本地GUI慢(平台无关绘图方式)
-
仅JavaApplet运行在网页中
-
JavaScript是在网页中使用的脚本语言
-
语法类似Java,与Java没关系