Java核心技术
Java基础概念
Java特性
- 简单性
- Java相较于C++去除了头文件、指针运算、结构、联合、操作符重载、虚基类等;
- Java目标之一是支持开发能够在小型机器上独立运行的软件,由于不断扩展,类库已经相当庞大,并不能很好的运营在小型机器上了,Java微型版(Java Micro Edition)使用于嵌入式设备;
- 面向对象
- 面向对象设计是一种程序设计技术,他将重点放在数据(即对象)和对象的接口上。
- 于C++不同的是Java的多重继承是更简单的接口概念
- 分布式
- Java 有一个丰富的例程库,用于处理像 HTTP 和 FIT 之类的 TCP/IP 协议。Java 应用程序能够通过 URL 打开和访问网络上的对象,其便捷程度就好像访问本地文件一样。
- 健壮性
- Java能够在编写时就检测出bug
- 安全性
- Java适用于网络/分布式环境
- 使用Java可以构建防病毒、防篡改的系统,防范各种攻击
- 运行时堆栈溢出。如蠕虫和病毒常用的攻击手段。
- 破坏自己的进程空间之外的内存
- 未经授权的读写
- 但是Java安全模型并没有原来预想的那么成功,但在那个时代是很超前的设计
- 体系结构中立
- 采用虚拟机生成代码,编译生成一个体系结构中立的目标文件格式
- 生成的字节码指令与特定的计算机体系结构无关,可以在任何机器上解释执行
- 解释虚拟机指令肯定会比全速运行机器指令慢很多。 然而, 虚拟机有一个选项,可以将执行最频繁的字节码序列翻译成机器码,这一过程被称为即时编译。
- Java 虚拟机还有一些其他的优点。它可以检测指令序列的行为, 从而增强其安全性。
- 可移植性
- Java数据格式具有固定大小,消除了在代码移植时,因为编译器不同数据格式的变化
- 二进制数据以固定的格式进行存储和传输消除了字节顺序的困扰,字符串是标准的Unicode格式存储的
- 除用户界面相关部分,其他Java库都能很好地支持平台独立性。你可以处理文件、正则表达式、XML、日期和时间、数据库、网络连接、线程等,而不用操心底层操作系统。不仅程序是可移植的,Java API往往也比原生 API 质量更高。
- 解释型
- Java解释器可以在任何移植了解释器的机器上执行Java字节码,链接是一种增量式且轻量级的过程,是开发过程更加快捷
- 高性能
- 字节码可以(在运行时刻)动态地翻译成对应运行这个应用的特定CPU的机器码。
- 通过编译时的优化提高代码执行的速度,必要时还可以撤销优化
- 多线程
- 多线程可以带来更好地交互响应和实时行为
- 第一个支持并发程序设计的主流语言
- 动态性
- 能够适应不断发展的环境,库可以自由的添加新方法和实例变量,动态语言可以更容易的实现运行程序的演进
Java发展史
- 1996年,Sun发布了Java第一版,并不能用于应用开发,随后进行改进发布了Java 1.1 但仍有局限性
- 1998年,发布了Java 1.2版,使图形工具箱更具伸缩性,更加接近“一次编写,随处运行”
- Sun还推出了两个版本,用于手机等嵌入式设备的“微型版”和用于服务器处理的“企业版”
- 标准版的1.3和1.4对最初的Java 2版本进行了改进,扩展了标准类库,提高了系统性能
- 5.0版是自1.1版以来对Java语言做出了重大改进的版本,添加了泛型类型(generic type)(类似于C++的模板)
- 2006年,发布版本6,没有对语言方面进行改进,改进了其他性能,并增强了类库
- 2009年Sun被Oracle收购,2011年发布Java 7,只做了一些简单的改进
- 2014年Java 8发布,提供了“函数式”编程,可以很容易地表述并发执行的计算
- 2017年发布Java 9,引入了系统模块,引入了新的响应式流API支持Java 9中的响应式编程
- 2018年接连推出Java 10和Java 11,对语言特性进行了改进,优化了系统,在此之前,Java 基本上是两年一个版本,除了 Java SE 7 经过了五年,Java SE 8 经过了三年。在此之后,就是每六个月发布一次新版本。但是不是每个版本都是 LTS(Long-Term-Support)。
- 2019年推出Java 12