Java的特性包含简单性、可移植性、面向对象、解释型、网络技能(Network-Savvy)、高性能、健壮性、多线程、安全性、动态性、体系结构中立。之所以要专门用一篇博客来说明这些特性,是因为觉得在使用一个工具之前应该了解该工具所具有的优缺点,这样在学习的时候思路才会更加清新。有阐述错误的请各位指教,后序会进行修改。下文红色字体为摘抄书本,绿色为自己的理解。
简单特性
- Java的简单包括两个方面
- 语法简单,这里的语法简单是相对与C++来说的,Java在开发之初尽量的贴近C++,这样是为了构建一个无序深奥的专业训练就可以进行编程的系统
- 简单的另外一个方面就是小。Java的目标之一是支持开发能够在小型机器上独立运行的软件。基本的解释器以及类支持大约仅为40KB;再加上基础的标准类库和对线程的支持(基本上是yield自包含的微内核)大约需要增加175KB。这里应该说的是代码进行编译,生成的可执行文件的大小
面向对象
- 重点放在数据和对象的接口上,学过C++的应该都明白,这里就不进行详述了。
网络技能
- Java有一个扩展的例程库,用于处理像HTTP和FTP这类的TCP/IP协议。Java应用程序能够通过URL打开和访问网络上的对象,就像访问本地文件一样。不同于C++,需要include几个网络库,进行socket编程。不需要设置地址信息,bind端口,connect,accept等步骤,Java可直接通过URL访问互联网资源
健壮性
- Java的设计目标之一在于使得JAVA编写的程序具有多方面的可靠性,JAVA投入了大量的精力进行早期的问题检测、后期动态检测,并消除了有出错倾向的状态。Java和C++最大的不同在与Java采用的指针模型可以消除重写内存和损坏数据的可能性。简而言之,Java编译器能够检测许多在其它语言仅在运行时刻才能够检测出来的问题,第二点就是Java解决了内存冲突1
安全性
- Java适用与网络/分布式环境。为了达到这个目标,在安全方面投入了很大的精力。Sun Microsystems大理支持对Java的安全性研究,制订了使用规范,实现了虚拟机和安全裤,并迅速地处理了所有一直的安全bug。
- Java能够防范的攻击包括:
- 运行时堆栈溢出。如,蠕虫等病毒常用的攻击手段
- 在自己的处理空间之外破坏内存
- 未授权读写文件
体系结构中立
- 编译器生成一个体系结构中立的目标文件格式,这是一种编译过的代码,只要有Java运行时系统,就可以在许多处理器上运行。Java编译器通过生成与特定的计算机体系结构无关的字节码指令来实现这一特性。
- 但是解释字节码肯定会比全速地运行机器指令慢很多。然而,虚拟机有一个选项,可以将使用最平凡的字节码序列翻译成机器码,这一过程被称为即时编译2。
可移植性
- 与C/C++不同,Java规范中没有“依赖具体实现3”的地方。基本数据类型的大小以及有关算法都做了明确的说明。
- 正因为Java的数据类型具有固定的大小,这消除了代码移植的时候产生的主要问题:二进制数据以固定的格式进行存储和传输,消除了字节顺序的困扰。字符串是用标准的Unicode格式存储的。
解释xing
- Java解释器可以在任何移植了解释器的机器上执行Java字节码,由于链接是一个增值且边界的过程,所以,开发过程也变得更加快捷,更加具有探索性
高性能
- 尽管对解释后的字节码性能已经比较满意,但在有些场合下却需要更加搞笑的性能,字节码可以在运行时刻快速地编译成运行这个应用程序的特定CPU的机器码
多线程
- Java把多线程的实现交给了底层的操作系统或线程库来完成,即Java的多线程使用的是内核级线程,而不是用户级线程。
动态性
- 当需要将某些代码添加到正在运行的程序中的时候,动态性是一个非常重要的特性。例如:从Internet上下载代码,然后在浏览器上运行,Java能够自由地添加新方法和实例变量,而对客户端却没有任何影响。