Java核心技术第一章

JAVA 十一月 16, 2019

Java核心技术第一章

文章字数 1.6k 阅读约需 1 mins. 阅读次数 1000000

Java“白皮书”关键术语

简单性:

  • Java语法是C++语法的一个“纯净版本“:没有头文件、指针运算(甚至指针语法)、结构、联合、操作符重载、虚基类等

面向对象:

  • Java的面向对象特性与C++相当
  • Java中的多重继承采用相对于C++更简单的接口概念
  • Java提供了比C++更丰富的运行时自省功能

分布式:

  • Java有丰富的例程库, 用于处理像HTTP和FTP之类的TCP/IP协议

健壮性:

  • 此方面Java和C++最大的不同在于Java采用的指针模型可以消除重写内存和损坏数据的可能性
  • Java编译器能够检测许多在其他语言中仅在运行时才能够检测出来的问题

安全性:

  • Java适用于网络/分布式环境,因此在安全性投入很大精力
  • 能够防范运行时堆栈溢出。如蠕虫、病毒常用的攻击手段
  • 能够防范破坏自己的进程空间之外的内存
  • 能够防范未经授权读写文件

体系结构中立:

  • Java编译器通过生成与特定的计算机体系结构无关的字节码指令来实现生成一个体系结构中立的目标文件格式从而使得编译后的代码可以很容易在任何机器上解释执行
  • Java虚拟机的一些优点:
    • 虽弱解释虚拟机指令肯定会比全速运行机器指令慢很多,但是虚拟机有一个选项,可以将执行最频繁的字节码序列翻译成机器码,这一过程成为即时编译
    • 可以检测指令序列的行为,从而增强安全性

可移植性:

  • Java规范中没有”依赖具体实现“的地方,基本数据类型的大小以及有关运算都做了明确说明
  • Java中数据类型具有固定的大小,比如int永远为32位整数
  • 二进制数据以固定的格式进行存储和传输,消除了字节顺序的困扰
  • 字符串用标准的Unicode格式存储

解释型:

Java首先由编译器编译成.class(字节码)文件,然后在通过JVM从.class文件中读一行解释执行一行,所以它是解释型语言。 Java开发环境并没有将重点放在“尝试后能立即看到结果”这种体验上。

高性能:

字节码可以(在运行时刻)动态地翻译成对应运行这个应用的特定 CPU 的机器码。Java即时编译器可以监控经常执行哪些代码并优化这些代码以提高速度。更为复杂的优化是消除函数调用(即“内联”),即时编译器知道哪些类已经加载。基于当前加载的类集,如果特定的函数不会被覆盖,就可以使用内联。必要时,还可以撤销优化。

多线程:

多线程可以带来更好的交互响应和实时行为。

动态性:

动态语言,是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等 。Java虽然属于静态语言,但是比C&C++拥有更好的动态性。库中可以自由地添加新方法和实例变量, 而对客户端却没有任何影响。在 Java 中找出运行时类型信息十分简单。

0%