November 8, 2010

Delphi 7 to Delphi XE or move to Java like the manager says?

I got a good question from sales and a partner rep about a company where the Delphi developers were being pushed by management to switch to Java and worried there would be too many headaches migrating a Delphi 7 app to XE. Here was my reply with info from other customers and a leading research company on why staying with the best technology for the job (like Delphi) is a better solution.

We just interviewed a company this week that builds golf tee time and course management solutions. They were facing pressure to move to Java but made the decision to stay with their Delphi multi-tier solution because they are certain that the Delphi-based solution will provide the best experience for the golfers who use the system and the best performance for the major golf course and resort operators that they provide services to. They knew that providing the best solution for their customers was their #1 priority if they wanted to be successful. Since making that choice, they are expanding their company and acquiring rather than being sold. Their competitors haven't fared as well.

We've seen similar situations with a variety of other customers like a major company who weren't able to deliver an important project on time in Java. They ended up scrapping the Java project, quickly building it in Delphi instead, and successfully launching their promotion.

In a Forrester Research presentation last week announcing the results of a Dr. Dobbs developer survey, the industry analyst mentioned how developers and development teams are usually the best at identifying and choosing the right technology for a given job while management is more likely to favor the latest hyped technologies and what they see as the most popular solution rather than what the developers closest to the project might identify as the best choice for the job. Here's a good quote that sums it up:

"If there's one takeaway from this year's Forrester-Dr. Dobb's Developer Technographics Survey, it's this: Developers are increasingly driving technology adoption within their development organizations, making choices that can shape technology skills, platforms, and strategies far down the road. Developers are making these choices not for what's cool, but for the practical reasons of how can they meet the business needs of the company more quickly and at lower cost."

"Empowering developers this way is proving to be good for developers and for the enterprise as a whole. IT leaders, however, should stay in touch with what decisions their development teams are making." - source

Delphi 7 to Delphi XE migration can be some work (or sometimes even a headache) because it requires the migration to Unicode. We have information available on our Upgrade Center web page  including a featured white paper from Cary Jensen on Unicode migration to help that go as smoothly as possible. The page also has information on finding updated versions of any third party components they may be using, moving from BDE to dbExpress and other topics they may need to know about. Andreano Lanusse will be updating his "Reasons to Migrate" white paper for XE very soon too.

Regarding their questions about needing the apps to run on for 64-bit Windows 7, the 32-bit applications you build today with Delphi XE run on 64-bit Windows today. We added support for Windows 7 APIs and features last year with Delphi 2010 within weeks of the release of Windows 7 so we are right up with the latest Windows releases. We realize that there is a need to build 64-bit apps too and that is scheduled for next year's release (per our roadmap).

If they've made a significant investment in Delphi code and that Delphi code works, it also often makes more financial sense to migrate that working code to a newer version of Delphi and deal with the Unicode transition work and updating third party components rather than trying to build the system again from scratch and introducing new bugs and new issues as they try to rewrite the core business functionality.

Delphi provides a lot of other benefits including visual design, an amazing variety of available components, rapid prototyping, readable and easy-to-understand code, fast compiled performance without Java overhead, and a very supportive community of third parties and developers. All of those combine to make Delphi  a top solution for rapid delivery of high quality applications.

If you've evaluated Java or other technologies and determined that Delphi is the better choice, feel free to add a comment to this post and let me know about it.


wiert said...

For all the arguments you can make against Delphi, you can make similar arguments against Java.

A lot of people consider Java dead.
A lot of people consider COBOL dead too.

Truckloads of companies have tried to rewrite their software using other platforms, only coming to the conclusion that they need to invest at least the resources they already spent on the original products.

Switching platforms (languages, libraries, frameworks, databases) is always a really expensive operation.


Anonymous said...

If you write windows desktop apps, then you should probably stick to delphi, especially if you have a large existing codebase, and developer experience.

Delphi-guys, as of my experience, think of forms and components, and not of objects ;-)

Java shines IMHO in web development. You have all the good:

good IDEs (e.g. eclipse)
good containers (e.g. tomcat)
zillions of software libraries)
easy and strongly typed language
runs on many OSes
You don't need to care about 32 or 64 bit

And the ugly of java (gui-development), you dont have. (Even I have to admit, with Netbeans, building guis is easy and probably comparable to delphi)

Cameron said...

Delphi is a niche product but gets the job done. Java, C# and web development is ugly IMO. You end up needing to know far more than Java to code a decent app on the web. HTML and JScript alone are temperamental enough to be considered their own language. C# is always viable for web development but it is ugly as well. WPF is on an uncertain path, Silverlight is likely a dead tech walking leaving MVC which is web development. If you need a multi-platform app that can run on iOS, Java or C# are good choices. Delphi's main detractor is the inability to find good devs willing to work in it which long term is a big consideration. We are porting our multi-million line app to C# currently but it is an uphill fight.

Anonymous said...

Hi, while I generally agree with what you are writing, I have my concerns about the Delphi component-market. It's true that there are thousands of components out there, many of them free to use. However, there isn't a single vendor that offers everything that we need. Now we use DevExpress for UI, TeeChart, WPTools, QuickReport, Gnostice eDocEngine. All of these, except DevExpress, are integrated with each other. Dealing with many different vendors when the components doesn't integrate as designed is a hassle - one blaming the other - and upgrading Delphi a nightmare. So much time vasted on other things than programming.

Seeing that DevExpress and their competitors offers everything that we need in one package, except it's not for Delphi, makes me depressed. I imagine we could save maybe 25% of our programming resources if we could stick to only one quality vendor.

Regards, O

Mike said...

Buy Oracle, Cisco and Sun - go public. We are curretnly in such a pushing like we had in 2k so it is no wonder that Java is there.

Java as Anyonymous described it is an alternative in Enterprise apps. Honestly for me the difference to Delphi is minor ... when we come to web apps except of Delphi not working under Linux. If we look at what is taken (beside SOA... this is a differnt thing - this is another world also in Java) it serves the same prupose and solve the same issues.

Cameron ... Nothing is dead - don't run into the trap of being confused by M$ confused acting while competing the rest of the IT world ... this is barking ...

Pete said...

I'm currently writing a java app with jsp. If I could have done it in Delphi as a win32 exe, I would have done it in a quarter of the time and it would have a lot more functionality. Go figure.

I always quote 3x times the cost/time on browser applications and warn the customer that the application will be more limited and will have a higher maintenance cost.

As a language, I prefer Delphi. It's easier to read, more structured, case insensitive, less quirky (eg look at the way Java does dates) and I like the way it does database stuff (much faster to implement).

jeremy-north said...

Doing a new project in C# due to management hype. Definitely not the right tool for the job, but it adds to the resume ;-)

Anonymous said...

I'm also doing a new project in C# wcf. But decision to do it in C# was mine. It's a soap client that just can't be easily done in delphi (ws-security etc.). Well at least its a nice addition to my resume.

LDS said...

"a soap client that just can't be easily done in delphi (ws-security etc.)."

That's show what is becoming increasingly a reason to use another tool instead of Delphi. Delphi is lagging behind in many areas, especially when it comes to large distributed applications. Its lack of actual standards support, system integration and so on make it a great choice for some standalone desktop applications, but a so-so one for many larger n-tier ones.
(please, don't tell me "there's Datasnap" - it still has to show it is a real, usable technology, it hasn't been till now).

Anonymous said...

All I can say is that I hate Java client applications. Case in point, I just evaluated Jetbrain's PyCharm. Functionality wise, it's a great IDE, but the slowness and weird behaviour of its Swing GUI is driving me nuts (I'm using Linux) - that's why I'm NOT buying. For me, Java is about the worst path you can take. If you stay on Windows and don't need Web, Delphi is still great. If not, take a look at PyQt and Python's various webframeworks.
Or you might want to look at .NET, if you prefer strong typing.

ctv said...

Delphi is a nice solution for many applications, its problem from management view is that it is becoming harder to find talented people who knows it. Universities use Java and Net for teaching and there are hordes of people who knows those languages, if I put an add for recruiting a C# programmer I will receive lots of applicants from which to choose, but when I require Delphi programmers only a few that are not obsolete and really know object programming applies.

If you want to stop the falling of Delphi you must secure some agreements with Universities world wide.

Anonymous said...

Guys...Java is everywhere no exceptions...make no mistake with getting good with this language...u most likely gonna be very rich one day...