Java的可移植性
- 与 C 和 C++ 不同,Java 规范中没有“ 依赖具体实现” 的地方基本教据类型的大小以及有关运算都做了明确的说明 。
- 例如,Java 中的 int 永远为 32 位的整数,而在 C/C++ 中, int 可能是 16 位整数、 32 位整
数, 也可能是编译器提供商指定的其他大小。 - 唯一的限制只是 int 类型的大小不能低于 short int, 并且不能高于 long int。在 Java 中,数据类型具有固定的大小, 这消除了代码移植时令人头痛的主要问题。
- 二进制数据以固定的格式进行存储和传输, 消除了字节顺序的困扰。字符串是用标准的 Unicode 格式存储的。
- 作为系统组成部分的类库, 定义了可移植的接口例如,有一个抽象的 Window类, 并给出了在 UNIX、 Windows 和 Macintosh 环境下的不同实现。
- 选择 Window 类作为例子可能并不太合适。 凡是尝试过的人都知道, 要编写一个在Windows、 Macintosh 和 10 种不同风格的 UNIX 上看起来都不错的程序有多么困难 Java 1.0 就尝试着做了这么一个壮举,发布了一个将常用的用户界面元素映射到不同平台上的简单工具包。
- 遗憾的是, 花费了大量的心血,却构建了一个在各个平台上都难以让人接受的库。
- 原先的用户界面工具包已经重写, 而且后来又再次重写,不过跨平台的可移植性仍然是个问题。
- 不过,除了与用户界面有关的部分外,所有其他 Java 库都能很好地支持平台独立性。
你可以处理文件、 正则表达式、 XML、 日期和时间、 数据库、 网络连接、 线程等,而不用操心
底层操作系统。 - 不仅程序是可移植的,Java API 往往也比原生 API 质量更高。