分享
 
 
 

将 Java 应用程序迁移到 .NET(2)

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

不使用自动迁移功能的技术

Visual J# .NET 和 java Language Conversion Assistant(Java 语言转换助手)的目标都是 Java 语言、JDK 1.1.4 库以及 Visual J++ 6.0 附带的 Microsoft 库。有些应用程序还使用 J2EE、J2SE 等新 Java 版本的技术。这些应用程序在迁移到 .NET 时经常需要进行一些额外修改。这些修改通常非常简单:迁移后,应用程序的大部分(业务逻辑和 JDK 1.1.4 类)都会得到完美的迁移。在迁移后的代码中,不支持的技术将保留不变。您必须使用类似的 .NET 技术替换未迁移的 Java 技术以完成迁移。由于 .NET 提供了一套比 Java 更丰富的类,因此在进行技术替换时您经常可以进行一些重大改进。

Swing 窗体软件包的迁移是一个很好的例子。

迁移 Swing

Java 包含两个竞争的窗体软件包:Abstract Windowing Toolkit (AWT) 和 Swing。JDK 1.1.4 提供 AWT。Visual J# .NET 支持 AWT,可以通过 Java Language Conversion Assistant(Java 语言转换助手)将 AWT 转换为 Windows 窗体。JDK 1.1.4 可以使用一个附加的 Swing 库,这个库是 J2SE 和 J2EE 类库的一部分。Swing 窗体布局不能自动迁移到 .NET。在迁移过程中,代码中的 Javax.Swing 类保留不变,您必须用 Windows 窗体类来替换它。为此,请在被迁移的应用程序中对各 Swing 窗体执行以下步骤:

向被迁移应用程序中添加一个新的 Windows 窗体

向窗体中添加控件以获得与原有 Swing 窗体相同的布局

将事件逻辑代码从被迁移的 Swing 窗体复制到新的 Windows 窗体中的事件处理程序

从应用程序中删除被迁移的 Swing 窗体

图 2:在 Visual Studio 中重画 Swing 窗体

Windows 窗体提供了比 AWT 或 Swing 更丰富的环境,并且几乎在所有方面都包含 Java 平台中所能找到的功能的超集。例如,Windows 窗体使得控制窗体布局更加轻易。Java 中的布局治理器经常会带来困难。获得所需的窗体布局需要了解布局治理器,并且即使是最基本的布局都需要编写许多代码。Windows 窗体通过为所有控件提供绝对定位而简化了窗体治理。另外,Windows 窗体可以通过靠接和锚定轻易地调整窗体大小。靠接规定一个控件应该始终占据屏幕的特定区域。锚定将窗体控件的一个或多个角“钉住”。调整窗体大小时使用这些“钉”确定控件的位置。使用靠接和锚定通常可以彻底消除复杂的窗体大小调整代码。

将 Swing 窗体迁移到 .NET 不仅非常简单,而且还可以利用 .NET Framework 更丰富的类改善应用程序。

迁移 Java Server Page

Java Server Page (jsp) 和 Servlet 都是创建支持 Java 的 Web 页的技术。JSP 提供了与 asp 相似的脚本嵌入式 Html 体系结构。Servlet 为没有 HTML 代码的编译后 JSP 页提供了一个机制。两项技术都使用 Java 代码,都为 Web 页提供基于事件的编程。

JSP 和 Servlet 可以迁移到 asp.net,这么做有很多好处:ASP.NET 是一种更加强大的技术,它比 JSP、php(PHP 超文本预处理器)、ASP 及其他解释型脚本嵌入式 HTML 体系结构具有更高的可伸缩性和性能。但是,在撰写本文时还没有将 JSP 迁移到 ASP.NET 的自动系统。Microsoft 已经公布在 2002 年下半年推出将 JSP 转换为 C# ASP.NET 的 Java Language Conversion Assistant(Java 语言转换助手)扩展。同时也在考虑今后推出 JSP 到 Visual J# .NET ASP.NET 的转换。

演练

本节演练从 Visual J++ 6.0 到 Visual J# .NET 的升级和从 Java 到 C# 的转换。两个演练的目的都是介绍迁移技术。显然,两种迁移都远远不止这里介绍的内容。另外,可以使用任意一种迁移技术很好地迁移这两个应用程序示例。

如何将 Visual J++ 6.0 项目升级到 Visual J# .NET

本节将一步步演练 Visual J++ 6.0 应用程序升级到 Visual J# .NET 和 .NET 的过程。

要升级的应用程序是 MDIWordPad 项目。这是 Visual J++ 6.0 附带的 MSDN 示例,可以作为 Visual J++ 6.0 产品示例的一部分下载。此应用程序的功能与 WordPad 相似。它提供打开和编辑多个文本文件的功能。它还提供简单的格式化功能。这些功能是通过菜单或工具栏提供的。图 3 是 MDIWordpad 应用程序的 Visual J++ 版本。

图 3:用 J++ 编写的应用程序 MDIWordPad

为了得到最佳结果,应该使用 Visual J# .NET Upgrade Wizard(Visual J# .NET 升级向导)将 Visual J++ 6.0 项目升级到 Visual J# .NET。请按以下步骤进行升级:

在 Visual Studio .NET 中,从菜单中选择 File(文件),再选择 Open(打开),然后选择 PRoject(项目)。

找到 MDIWordPad.vjp 项目文件的位置并单击 Open(打开)。

Visual Studio .NET 检测到您要打开的文件是 Visual J++ 6.0 项目并打开 Visual J# .NET Upgrade Wizard(Visual J# .NET 升级向导)。

阅读完介绍文字后,单击下一步进入向导的第二页。此页面要求提供您正在升级的项目的类型信息。MDIWordPad 示例是一个 Windows 应用程序,因此默认值是正确的。假如您要升级的项目是一个控制台应用程序或类库,您就应该选择一个选项。确认选定了 Windows 应用程序后,单击下一步进入升级向导的下一页。

图 4:Visual J# .NET Upgrade Wizard(Visual J# .NET 升级向导)提示选择项目目标类型

对于使用 Active X 控件或其他 COM 引用的应用程序,您可以在这一页上明确添加对这些组件的引用。添加这些引用可以帮助升级向导找到项目中使用的附加类型。虽然即使您不在这里指定它们,升级向导也可以找到并将这些引用添加到项目中,但是现在添加它们可以加快升级速度。MDIWordPad 没有使用任何外部组件,因此请单击 Next(下一步)而不需要做任何改动。

现在,升级向导开始评估项目并将项目文件和引用升级到 Visual J# .NET。会显示一个状态条和变化的文本,提示向导目前的进度。处理结束之后,升级向导将自动进入最后一页。

在向导的最后一页中,您可以使用一个复选框选择是否查看项目升级报告。单击 Finish(完成)显示升级报告。升级报告列出了有关应用程序及升级进程的信息。假如在项目转换中发现了问题或丢失的引用,它们将在这里列出。该报告中还包括有关升级向导向新解决方案中添加的文件的信息。

在 Solution EXPlorer(解决方案资源治理器)中双击文件 MDIWordPad.java 以便在 Code Editor(代码编辑器)中将其打开。通过浏览该文件,您会发现源代码看起来与原先完全相同。事实上,将一个项目升级到 Visual J# .NET 并不要求任何形式的源代码修改,所要求修改的只是解决方案、项目和资源文件。源代码文件本身的内容保持不变。

按 F5 运行升级后的应用程序。用程序的表现没有变化,您可以通过编辑一些文本来验证这一点。应用程序的操作与升级前完全相同,只是它现在是运行在 .NET 上。

图 5:MDIWordPad 的升级版本,运行在 Visual Studio .NET 上,使用 .NET

将应用程序升级到 Visual J# .NET 是一个非常简单的过程。升级向导会帮助您提供顺利升级所需的信息,并且升级后项目的源代码没有任何变化。通过 Visual J# .NET 提供的工具升级到 .NET 是一个极其快速和简单的过程。由于二者有相似的语言和类库,因此升级到 Visual J# .NET 是将 J++ 项目迁移到 .NET 的最快方法。

如何将 Java 项目转换到 C#

本节将一步步演练将一个 Visual J++ 6.0 应用程序转换到 C# 和 .NET 的过程。要转换的应用程序是一个称为 Island Book Sales 的简单的最终用户购买程序。该应用程序演示转换的各个方面(AWT 到 Windows 窗体、JDBC 到 ADO.NET、Java 到 C#)。它还演示转换后需要解决的一些问题。Island Book Sales 有两个窗体。第一个窗体向用户展示可供出售的书的列表。所提供的书包含在一个 access 数据库中,可使用 JDBC 读取该数据库。用户可以选择要购买的物品并将它放入购物车中。用户的购物车显示在第二个窗体中。该窗体使用户能够取消或购买购物车中的物品。图 6 是运行中的应用程序。

注重:您必须将数据库 bookstore.mdb 注册为 ODBC DSN 才能运行 Bookstore 应用程序。

图 6:Island Book Sales 应用程序

以下是将应用程序转换到 C# 和 .NET 所需的步骤:

在 Visual Studio 中的 File(文件)菜单上单击 Open(打开),然后单击 Convert(转换)。

这将启动 Conversion(转换)对话框。

选定 Java Language Conversion Assistant(Java 语言转换助手)图标后单击 OK(确定),启动 Java Language Conversion Assistant(Java 语言转换助手)。

虽然原应用程序是使用 Visual J++ 编写的,但本例中将它视作一个基于目录的转换。在向导的第二页中选择进行基于目录的转换选项,然后单击 Next(下一步)。

在 Java Language Conversion Assistant(Java 语言转换助手)的第三页中,选择包含应用程序源代码的目录,然后单击 Next(下一步)。

向导的第四页要求您输入一些有关应用程序的信息。键入“Bookstore”作为项目名。其他两个选项使用默认值,然后单击 Next(下一步)。

图 7:提供有关您的项目的信息

现在,Java Language Conversion Assistant(Java 语言转换助手)询问将转换后的项目文件写到哪里。选择要使用的目录后单击 Next(下一步),必要时让 Java Language Conversion Assistant(Java

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有