将Delphi应用程序迁移到Java或Web应用程序

6
我们希望将 UI 丰富的应用程序从 Delphi 迁移到 Java 或 Web 应用程序。
原因是我们希望该应用程序能在所有操作系统上可移植。
Delphi 中当前应用程序的组件和模块:
- 我们使用 TWebBrowser 组件显示 HTML 内容。 - 我们点击 HTML 上的某些内容时,会播放从 FileStream 提取的 mp3。 - 所有 HTML 的资源都从内嵌数据库 Firebird/Ms Access 中检索。 - 为了同步一些内容,我们会向 PHP 脚本进行 HTTP POST,以将数据集中在 Web 服务器上。
部署:
- 应用程序必须在 CD 上部署,并安装在 Mac OS、Linux、Windows 上的桌面计算机上。
我需要你的帮助来处理这个迁移。是选择 Java UI 还是 Web 应用程序,在 Linux 和 Mac 的 WAMP/XAMP 和适当的版本上部署呢?
编辑:
对于音频功能,我有一些具体的要求。音频文件是分布在 CD 或 USB 上的单独文件。音频文件是由内部编译的 mp3 文件组成的一个整体文件。应用程序将需要能够根据索引文件中存储的偏移量和 mp3 大小提取 mp3 并实时播放...这如何影响使用此方法的 Web 应用程序的想法。
6个回答

4
为什么不尝试使用FreePascal?它使用与Delphi相同的语言,并且可以在Windows/Linux/Mac上编译成本地应用程序。既然您已经有了Delphi应用程序,转换应该不会太困难。
请查看FreePascal网站

3
如果我需要在光盘上部署,我可能会选择Adobe的AIR。它以一种合理的方式实现了Java 10年前所做出的承诺。虽然不是完美的,但它做得相当不错。

如果必须在本地部署,那么AIR确实是最好的选择。 - cgp
你说不完美是什么意思?看看我最新编辑的关于从流中播放音频文件的内容。在Air中该如何实现呢? - Irfan Mulic
部署本地的原因是有大量音频数据,约500 MB? 如果你想从HTTP服务器加载数据到本地,这仍然是有意义的,但在这种情况下,我仍然不确定未来的架构。 - Irfan Mulic
我不太熟悉Air如何处理音乐流。Flex支持从流数据中加载类型,但我不知道是否可以给出偏移量等。也许了解为什么需要将所有文件连接成一个大文件会更有助于构建解决方案。 - Travis Jensen

2
我听说互联网正在迅速发展。在过去的10年中,应用程序之所以在线上运行,原因已经不需要太多讨论了。
虽然Java很可靠,但分发和更新这些应用程序是繁重且耗时的。
我做了9年的Delphi开发。我曾经抵制将“真正的”应用程序通过网络分发的想法。如今,我无法相信还有人会选择继续这种方式。
一个好处是,如果你有创意,可能可以在后端重复使用一些Delphi逻辑。(我只建议在短期内这样做)
但是,这个答案并没有真正解决你的问题,因为你说你必须通过CD分发它。

从Delphi迁移到Java有多无缝?我印象中大多数Delphi迁移都是朝着.Net的方向进行的 - 这将解决海报的跨平台要求,但它是否更接近原始源代码库? - Chris Collins
是的,如果你想保留原始源代码,.NET可能更适合。我喜欢使用AIR的想法,因为它促使你思考到一个只在在线上运行应用程序的日子。 - cgp
.NET 可能是最简单的方法,但由于 Linux 和 MAC OS 的原因,不是一个选项。 - Irfan Mulic

2
Java 6u10版本支持在介质上分发Java WebStart应用程序,而不是通过Web服务器分发,这可能正是您需要的。如果需要,您还可以将Windows的JRE安装程序放在CD上。您对跨平台的要求究竟是什么?

我不理解这个问题,我想通过将应用程序从Delphi移植到Java来解决平台限制。Delphi仅适用于Windows操作系统。 - Irfan Mulic
你需要运行一个GUI客户端(较难)还是所有内容都通过浏览器交付(更容易)?对于嵌入式数据库,请查看Apache Derby。对于可嵌入的Web服务器,请查看Jetty。 - Thorbjørn Ravn Andersen

1
如果应用程序的大部分都是基于HTML的,那为什么不将其制作为完整的Web应用程序,使用Ajax和Java?
我推荐使用NetBeans和ICEFaces,它是一个带有Ajax支持的Java Server Faces实现,包括并发更新 - 如果一个用户编辑记录,所有其他用户将在其网页中看到更新。
可以将整个应用程序打包成一个单独的jar文件,包括Servlet容器(例如Jetty),因此只需简单的java -jar myapp.jar即可运行应用程序。
NetBeans允许对ICEFaces网页进行可视化编辑,甚至可以对页面关系进行可视化编辑。NetBeans.org上的教程非常好,并且借助Maven、Hudson等工具,代码质量和开发流程可以达到非常高的水平。

我喜欢这种方法。对于音频部分,我有一些具体的要求。音频文件是单独的文件,分布在CD或USB或其他设备上。 音频文件是由内部的mp3编译而成的一个实体文件。 应用程序将需要能够根据索引文件中存储的mp3偏移量和大小提取mp3并实时播放... 这如何影响使用此方法的Web应用程序的想法。谢谢。 - Irfan Mulic
1
如果是多媒体应用程序,Sun公司的新JavaFX客户端技术可能是用户界面的一个选择:http://en.wikipedia.org/wiki/JavaFX - mjn

1
如果您有一些使用Datasnap的Delphi应用程序:您还可以在Delphi Prism中重用使用Datasnap制作的Delphi服务器,并创建Silverlight应用程序。
对于DataAbstract也是如此。

这是个好主意,但我们不想再依赖Delphi平台了。 - Irfan Mulic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接