.NET与J2EE开发全解析:从基础到互操作性挑战
发布时间: 2025-08-17 02:37:49 阅读量: 1 订阅数: 5 


Microsoft.NET与J2EE互操作性指南
# .NET 与 J2EE 开发全解析:从基础到互操作性挑战
## 1. Java 类定位与共享
在 Java 平台中,没有类似全局程序集缓存的机制。不过,应用程序仍可能需要引用或共享其他类,这时可通过名为 `CLASSPATH` 的环境变量来实现,它类似于 Windows 中 `Autoexec.bat` 启动文件里的 `PATH` 语句或系统配置文件属性。
默认的类路径是当前目录。若要将 `CLASSPATH` 环境变量设置为一个或多个不同的目录,必须明确包含主 Java 2 SDK 工具 JAR 的路径和当前目录。例如,在 Windows 上运行的 Java SDK 1.3 版本中,一个简单的 `CLASSPATH` 语句如下:
```plaintext
SET CLASSPATH = .;%J2EE_HOME%\LIB\J2EE.JAR;
```
若应用程序需要其他类或 JAR 文件,可在运行应用程序之前修改 `CLASSPATH` 变量,方法如下:
```plaintext
SET CLASSPATH = %CLASSPATH%;C:\OTHERAPP\RESOURCES.JAR;C:\OTHERAPP\CLASSES
```
这样会将新目录追加到现有的 `CLASSPATH` 中,当 Java 应用程序加载并请求某个类时,它也会在 `C:\OtherApp\Classes` 目录或 `C:\OtherApp\Resources.jar` 文件中搜索。
`Javac.exe` 编译器和 `Java.exe` 执行工具都能接受参数来包含或修改 `CLASSPATH` 变量。Java IDE 也允许包含 `CLASSPATH` 语句。此外,还可通过将库作为扩展安装在 JRE 中,自动将其添加到类搜索序列,而无需设置 `CLASSPATH`。
需要注意的是,如果 Java 应用程序抛出 `ClassNotFoundException`,很可能是因为所需的库不在 `CLASSPATH` 语句中。
## 2. Java 其他环境变量的实现
相较于基于 .NET 的应用程序,Java 应用程序更倾向于使用环境变量。这是因为 Java 应用程序能在多个操作系统上运行,所以需要能够适应不同的环境。环境变量为设置和控制配置以及应用程序执行路径提供了一种简单的方式,以确保一致性。
常见的环境变量如下表所示:
| 变量名 | 功能 |
| ---- | ---- |
| `JAVA_HOME` | Sun Java SDK 的安装位置 |
| `J2EE_HOME` | Sun J2EE SDK 的安装位置 |
| `ANT_HOME` | ANT 的主目录 |
| `PATH` | 与 Windows 的 `PATH` 语句相同 |
## 3. Java 集成开发环境的使用
有多家供应商提供用于创建和编辑的 IDE 包,从功能增强的文本编辑器到类似于 Visual Studio .NET 的完整套件都有。其中一些是商业软件包,另一些则是免费的。以下是一些示例:
- Sun One Studio
- JCreator
- Borland JBuilder
- Java GUI Builder
- JPad Pro
- CodeGuide
- NetBeans
- AnyJ
虽然可以使用 Visual Studio .NET 中的 Visual J# 来创建和编辑 Java 应用程序,但 J# IntelliSense® 技术仅适用于 Java SDK 1.1.4 版本之前的 Java API 类,并且需要使用 `Javac.exe` 从命令行构建应用程序。
所有的 IDE 包都允许在 IDE 环境中构建应用程序,也可以像使用 Visual Studio 一样从命令行构建应用程序。
## 4. 创建 Web 应用程序
在表示层组件方面,Java 使用 JSP,而在 .NET 架构中则使用 ASP.NET。JSP 是一种用于开发 Web 应用程序的服务器端技术,JSP 页面是 HTML 和 Java 代码的混合体。
基于 Java 的 Web 应用程序采用动态编译的 JSP 页面和 Servlet 的概念。Servlet 是一种 Java 编程语言类,它扩展了通过请求 - 响应编程模型访问的应用程序所在计算机的功能。也可以将 Java Servlet 视为为用户请求提供动态内容的可移植组件。
乍一看,JSP 和 Servlet 非常相似,都能生成动态内容。在 JSP 页面或 Servlet 中,所有脚本元素都使用 Java 编程语言创建。此外,JVM 在运行时会将 JSP 编译成 Servlet,因此它们使用相同的引擎。不过,开发 Servlet 需要编写 Java 类,因此比开发 JSP 需要更强的编程技能。可以将 Servlet 看作是包装 HTML 内容的 Java 代码。
与 Servlet 类似,JSP 也为用户提供动态内容,但它是 Servlet 的更高级抽象。可以将 JSP 看作是包装动态 Java 代码的静态 HTML。
JSP 和 Servlet 可以在多种环境中托管,包括免费的 Apache Tomcat 等,以及大型商业可用且有供应商支持的实现。
要实现基于 JSP 的应用程序,可使用 Java IDE 来设计应用程序。一些 IDE 具备实时编辑 JSP 页面的功能,并能预览图形或控件的任何更改效果。
目前,JSP 规范的版本是 v1.2,Servlet API 的版本是 v2.3。部署 Web 应用程序时,需将其打包成一个名为 Web 应用程序存档(WAR)文件的可部署单元,这类似于将 Java 应用程序打包成 JAR 文件。然后可以轻松地将 WAR 文件部署到 Web 服务器上。
## 5. 组件托管
JSP 页面和 Servlet 的主要功能是在表示层通过浏览器与用户进行交互。而在业务层执行业务规则则使用名为 Enterprise Java Beans(EJBs)的组件。EJBs 相当于 COM+ 组件或托管代码组件,能提供以下服务:
- 维护状态
- 事务支持
- 方法级安全
- 日志记录
- 模拟
- 消息队列支持
EJBs 有三种形式:
- 会话 Bean
- 实体 Bean
- 消息驱动 Bean
### 5.1 会话 Bean
会话 Bean 包含业务逻辑,例如定义客户关系管理系统操作的规则。会话 Bean 可以是无状态的,也可以维护状态,在对象的生命周期内将客户端与会话 Bean 绑定。通常,会话 Bean 为客户端提供某种服务,如执行身份验证等任务。
### 5.2 实体 Bean
实体 Bean 表示持久存储中的对象。每个实体 Bean 实例对应于数据库表中的一行数据。实体 Bean 有两种类型:
- 容器管理持久性(CMP)Bean:由容器管理。
- Bean 管理持久性(BMP)Bean:自行管理持久性。
对于 CMP 实体 Bean,容器使用映射文件管理 Bean 和数据库字段之间的映射。这个映射文件通常将这些映射存储为 XML 部署描述符。容器管理与数据库的所有通信。与 BMP 相比,CMP 具有以下优点:
- 更易于配置
- 更易于维护
- 无需数据库代码
不过,由于抽象级别较高,CMP 的主要缺点可能是性能问题。但 J2EE 规范的新特性引入了虚拟访问器等功能,提高了使用 CMP 的 Bean 的性能。
对于 BMP 实体 Bean,开发人员负责编写所有用于在 Bean 和数据存储之间传输数据的 JDBC 代码。与 CMP 相比,BMP 需要开发人员编写更多与数据相关
0
0
相关推荐










