views:

357

answers:

4

Delphi 2011 will allow to compile applications that will run also on Mac OS. (Note: I wrote this sentence before Delphi-XE preview was out, and at that time everybody was speaking of ProjectX).

Is it realistic to think that it will be possible to "migrate to cross platform" a win32 application?

Will 3rd party component vendors make their library cross platform or this is practically not possible?

I use the following 3rd party components:

devexpress - UI

devart - DAC

Reportbuilder - UI

Steema/TeeChart - UI

I don't expect to have a wizard that will do the job for me, I just want to understand better the details.

+2  A: 

Well, Delphi 2011 is in a private beta at this moment, and few trusted people know about it.

So until late August i guess we won't see it in action. However, I've heard that the new cross platform applications are called UCL applications and not VCL ones.

In either way with Delphi being traditionally a windows tool, I suspect that the current applications are kind of tied to the windows platform, so I expect the process to be tedious in case of a conversion to cross platform.

When i say Tied i mean call to windows libraries or functions.

Most Delphi software use windows-specific functions, such as ShellExecute, MessageBox, functions imported from advapi, kernel32 etc and those are functions that are unavailable on other platforms since they have their own libraries.

But I'd expect this functionality to be available in the new cross platform library, In case it isn't that's be a huge failure imo.

Aldo
+4  A: 

The xplatfrom framework will be (as far as we are let to know) something alike a revised (and hopefully much improved) CLX, the Qt-based library used in Kylix. The VCL is a strongly Windows-oriented library (and it's good it is), and rely on many Windows-specific features. Thereby it is not easy at all - if not impossible or making sense - to make cross-platform components highly compatible with the VCL counterparts. It is far easier for non visual controls (i.e. DAC) than for visual ones (i.e. DevExpress widgets). If and when 3rd party vendor will roll out their library for xplat Delphi it's yet to be seen, much will depend on Delphi 2011 success and diffusion. Migrating a win32 application to be cross-platform could require little changes or big ones, depending on how it was written, how much tied to Windows, and which libraries are used. For any moderately complex application, IMHO it won't be an easy migration.

ldsandon
Of course until we don't see D2011 in action we cannot be sure, anyway being dependant on so many component vendors (expecially the ".net oriented" devexpress) makes me think that it will be really impossible to migrate. To achieve xplatform-deployment (client deployment) it would take much less investment for me to migrate to a web application (Intraweb). There is also the "extreme" wine/winebottler direction.
+1  A: 

DELPHI-XE does not allow you to compile applications for the MacOS

have a look at the Delphi-XE Feature matrix on the embarcadero site.

Charles Faiga
+3  A: 

Delphi 2011 is out and it's called Delphi XE. It supports 32-bit Windows only, like previous versions of Delphi. 64-bit, OS X, and Linux remain on the roadmap.

It's impossible to say how easy it will be to do cross-platform Windows and OS X until Delphi actually supports it. But we can make some guesses based on Kylix, which is the discontinued Linux version of Delphi.

Kylix introduced a new component library called CLX. CLX was very similar to the VCL, but not identical. CLX was availble for both Windows and Linux. The VCL was still included for Windows-only applications. Porting a VCL app to CLX was not too difficult, at least if all your 3rd party components supported CLX. The hardest part was porting those parts of your own code that call the Win32 API directly.

What some people did, including myself, was to use VCL on Windows and CLX on Linux. This made things a bit more difficult, since it required two sets of forms, one for Windows, and one for Linux. To do this successfully, you had to separate as much of the non-visual code as possible from the forms. E.g. you put your TActionList on a data module that is shared by the VCL and CLX versions on the app, and then have separate VCL and CLX versions of the form that provides the toolbars etc. that use the action list. If you're considering supporting multiple platforms in the future, you can prepare now by separating as much code into units that are not tied to a form as possible.

Since Delphi is aimed at creating native applications, you'll never have "compile once run anywhere" like Java offers. Instead we'll have "develop once compile many places", assuming Embarcadero follows through with their roadmap.

Jan Goyvaerts