支持下一代IP的Java虚拟机及广域系统异步面向对象并行分布式计算
立即解锁
发布时间: 2025-08-21 02:39:50 阅读量: 1 订阅数: 11 

### 支持下一代 IP 的 Java 虚拟机及广域系统异步面向对象并行分布式计算
在当今的网络和计算环境中,随着技术的不断发展,对网络编程和分布式计算的需求也日益增长。IPv6 的出现为网络编程带来了新的机遇和挑战,同时,广域系统的分布式计算也需要更灵活有效的编程模型。下面将详细介绍支持 IPv6 的 Java 虚拟机的开发以及广域系统异步面向对象并行分布式计算的相关内容。
#### 1. IPv6 相关特性
- **移动性**:移动性原则是一个较新的概念,其目标是让计算机在物理移动时仍能保持与互联网的连接。计算机连接到 IP 网络时能自动获取地址,并且可通过固定地址被访问,这极大地提高了网络管理和架构的灵活性。为此还编写了基于扩展的协议,用于协商计算机主地址与实际所在路由器之间的关联。这种新能力有助于设计新的接口,以支持分布式、异构计算平台上的一系列科学活动。
- **服务质量能力**:新增了对特定流量“流”的数据包进行标记的能力,发送方可以请求特殊处理,如非默认的服务质量或“实时”服务。这种流量类别对于增强具有特定特征(如交互性、严格时间约束等)的分布式应用很有用。同时,定义了一种名为“集群地址”的新地址类型,用于标识拓扑区域而非单个节点。结合 IPv6 源路由功能使用集群地址,节点可以对其流量路径进行更多控制。
#### 2. 为 Java 开发 IPv6 包
- **架构**:Java.net 包的不同类可分为三个主要层次。第一层由仅处理 Java 机制(异常)的类组成;第二层由实现会话或应用机制的类组成;第三层处理传输机制,大致与 TCP/IP 相关,这里将其称为网络集,开发 IPv6 功能就从这一层入手。为了使包具有良好的集成能力并便于上层对象的开发,决定保持网络集的结构不变。这样做的好处包括:代码复用,不仅适用于包本身的设计和编码,也适用于网络交互对象,从现有的 IPv4 对象向 IPv6 网络能力的过渡简单、灵活且易于实现,多数情况下可通过语法转换自动完成;不引入新类,不改变 Java 的底层语义,不降低安全性,网络编程方式保持不变;便于将该包集成到 JVM 中。将网络集从 IPv4 转换到 IPv6 时,首先要进行纯语法层面的操作,即找到新名称并更新相关对象的所有引用,这一步可通过简单的流编辑器自动完成。此外,为了处理 IPv6 规范(如地址存储大小),还对对象内部进行了修改,同时也考虑了 IPv4 和 IPv6 概念变化带来的其他修改,并集成了新的 IPv6 特性来改进现有接口。
- **底层机制的实现**:在 Java 中开发标准 Java 类库之外的新特性,需要处理 Java 虚拟机本身无法提供的机制,这里主要涉及 IPv6 套接字和地址的操作。为此,使用 Java 本地接口(JNI)开发了一个库,将 Java 虚拟机嵌入到本地网络操作中。JNI 允许 JVM 内运行的 Java 代码与用其他编程语言(如 C、C++ 和汇编)编写的应用程序和库进行交互。开发过程中遇到的主要问题是线程安全问题,Java 是多线程环境,需要采取预防措施。由于只有有限数量的系统调用(主要是 I/O 调用,如 open、read 或 write)受影响,且这些调用在 JVM 中已经用于支持 Java.net 包,JVM 中已将有争议的系统调用映射到伪函数中,这些伪函数会处理线程相关的预防措施。因此,决定以与经典网络库相同的方式将库集成到 JVM 架构中,C 函数调用相同的伪函数。
#### 3. 结果与扩展
- **原始级别和新选项**:在经典 Java 环境中,原始套接字不可访问,这在某些情况下会缺乏灵活性。例如,可能需要使用模拟器重现特定环境进行测试,生成特定流量(如 ICMP、路由器警报等),或者在使用或优化并行应用时监控网络流量。为此,为 Java 编写了原始套接字接口。同时,还为网络 API 添加了新的 IPv6 选项,如 IPsec(此前 Java 包中未包含,但在 IPv4 中已定义)和流控制。
- **支持 IPv6 的 JVM**:由于 IPv6 包表现良好,决定用上述 IPv6 机制完全替换经典 JVM 中的 IPv4 网络机制,以实现透明的支持 IPv6 的 JVM。具体做法是用自己的对象替换原始的 Java.net 对象,并将 IPv6 库集成到 JVM 内部。这样,任何 Java 对象不仅可以在 IPv6 环境下无修改地通信,还能处理 IPv4 消息。IPv6 提供了从 IPv4 简单灵活的过渡方式,简单互联网过渡(SIT)模型确保了 IPv6 主机和 IPv4 主机在互联网上的互操作性。这意味着 JVM 允许任何 Java 程序在 IPv6 和 IPv4 环境下工作,使用网络的 Java 应用可以在 IPv6 环境中随意使用 IPv4 地址或 IPv6 地址,并能在 IPv4 JVM 或全 I
0
0
复制全文
相关推荐








