重温JAVA之路
上班接近四年,一些基础知识已经生疏,在阅读《JAVA核心技术》一书,用此博客记录阅读心得:
- 简单性
- 面向对象
- 分布式
- 健壮性
- 安全性
- 体系结构中立
- 可移植性
- 解释型
- 高性能
- 多线程
- 动态性
简单性
JAVA的语法相当于C++语法的纯净版,C++中的指针、头文件、结构、联合等JAVA都没有采用,当然,也没有将所有的C++语法特性都清除,例如switch语句的语法在JAVA中就没有改变。另外简单的另外一个理解就是体积够小,在JAVA早期版本,其解释器以及类的大小仅有40KB,但是目前因为不断的扩展,类库体积也会越来越大。
面向对象设计
在JAVA上市之前,面向对象技术已经相当成熟,比如C++。面向对象设计是一种程序设计技术,它将重点放在数据(即对象)和对象的接口上,打个比方,一个家电制造商,一个“面向对象的”制造商始终关注的是所制造的家电,第二个才是制造的步骤,而“非面向对象设计的”制造商第一个关注的制造的步骤以及工具,其次才是最后的产品。
JAVA和C++不同的在于多重继承,在JAVA中,取而代之的是更简单的接口概念,与C++相比,JAVA提供了丰富的自省功能。
分布式
JAVA中提供了丰富的例程库,可以处理像HTTP和FTO之类的TCP/IP协议。JAVA应用可以通过URL打开或者访问网络上的对象。
健壮性
在以往其他语言的编辑器中,当代码或者语法出现错误,只能在运行编译时发现错误,但是JAVA编译器能够即使检测大部分的语法错误。这对于曾经花费几个小时来检查由于指针BUG而引起内存冲突的开发人员来说无疑是一件喜事。
安全性
从JAVA设计之初就能够防范各种攻击包括:
- 运行时堆栈移除
- 破坏自己的进程空间之外的内存
- 未经授权读写文件
- 沙箱运行,不可脱离沙箱
- 数字证书验证,必须用户点击同意后才加载
体系结构中立
JAVA的编译器会将开发人员所书写的代码编译成一个体系结构中立的目标文件格式,只要有JAVA运行时的系统,这些代码可以在许多处理器上运行。JAVA编译器通过生成与特定的计算机体系结构无关的字节码来实现这一特性。
当然,解释虚拟机指令肯定回比全速运行机器指令慢很多,然而,虚拟机有一个选项,可以讲执行最频繁的字节码序列翻译成机器码,之一过程叫做即时编译
可移植性
与C和C++不同,JAVA的规范中没有“依赖具体实现”的地方。基本数据类型大小以及有关运算都做了明确的说明。
例如,JAVA中int类型永远为32位的整数,而在C/C++中,int可能是16位整数、32位整数,也可能编译器厂商指定的其他大小。在JAVA中,数据类型具有固定的大小,这消除了代码移植时令人头痛的主要原因,二进制数据以固定的格式存储和传输,消除了字节顺序的困扰,字符串是用标准的Unicode格式存储的。
但是对于跨操作系统开发,JAVA显然还是存在问题的。不过除了与用户界面有关的比分之外,所有的JAVA库都能很好的支持平台的独立性,你可以处理文件,处理时间,正则表达式,XML,数据库等。而不用操心底层操作系统。不仅程序可以移植,JAVAAPI往往也比原生的质量更高。
解释型
Java解释器可以在任何移植了解释器的代码上执行JAVA字节码。
高性能:
字节码可以动态的翻译对应运行这个应用的特定CPU的机器码。例如:即时编译其可以监控经常执行那些代码并优化这些代码提高速度。
多线程
在考虑一个应用时,不可缺少的需要吧并发计算在内,JAVA在用户操作时确保用户界面不会"冻住"
动态性
当需要将某些代码添加到正在运行的程序中时,动态性将是一个非常重要的特性。
通过此章,可以了解到JAVA的11个基础特性,其中重要特性有:面向对象、多线程、动态性、体系结构中立。更多的只是需要慢慢的去咀嚼消化,绝不是简单的敲打键盘。