Friday 24 July 2009

Delphi apps as Chrome apps?

Google is doing a lot of great stuff with Chrome these days. The first version of the browser included it's own task manager, process administration, sandboxing etc., but Google now also announced accelerated 3D support and native code, sandboxed. I would not surprised to see Google Earth to be one of the first applications, that stop being Windows applications and start being Google Chrome applications: Install chrome and visit a specific URL, and it works. No more "download this app" or "install this app", except for Chrome itself.

This is all great, of course, but what development tools do we use for that? C/C++ is notoriously unproductive, and so are web apps. Web 2.0 apps are even worse. We need some tool that can create cross-platform apps, delivered using Google Chrome or similar, that perform well and are easy to write. Delphi has previously shown, that it can compile to several platforms, and Delphi Prism officially targets mono, so why not take on this one?

14 comments:

Anonymous said...

Chrome? Great. Another browser to support, and more security holes to patch.

Anonymous said...

Yep, adding another hardware abstraction layer is going backwards.

Also not to keen on Google knowing what I search for, where I browse to, what apps I use, let alone potential access to my data.

Lars D said...

I guess it should be treated like just another platform. We have Java VM, .net, mono, Win32, Linux, Python runtime, Javascript runtimes. However, this one is cross-platform, Open Source, and does not require administrative rights to be installed on a Windows computer. It is not bound to Google, since it is Open Source, and Chrome/Chromium can be used 100% offline.

In other words, it is much more powerful than .net with regard to deployment on Windows, while supporting other operating systems, too.

Warren said...

It's only a platform if you're a web developer. Otherwise it's not a platform. IN other words, web developers have a twisted (wrong) idea of what the word platform means.

How do you "compile to chrome"? It's not bytecode. It's a browser written in C/C++. It's not a platform, it's an application. A small, fast, web browser with ~1% marketshare.

W

Taqyon said...

I love this discussion. I have a few problems with Google's new direction.

1. Most of it may be Open Source (not all is) but it's still running on Google's cloud. They're only using Open Source to accelerate take-on. They will maintain complete control.

2. If Chrome becomes dominant, it would mean the IE problem all over again, where non-standard W3C features are sneaked in (like their drag & drop applet) to retain it's position.

3. Building an operating system or a development platform to run as a browser add-on is like building an OS in an Excel macro. There are too many compromises.

Anonymous said...

"I guess it should be treated like just another platform."

Same old same old.

Netscape was going to be the new Windows-killer platform, too.

Remember Marc, Clark and Bark? Or am I just getting old and cynical?

Anonymous said...

"However, this one is cross-platform, ... and does not require administrative rights to be installed on a Windows computer."

Just stop and think about that for a minute.

Lars D said...

@Warren: Please look up Google's plans for native code... because yes, you do COMPILE for google Chrome.

If you compile for Intel Pentium/AMD, it will only run on those computers. If you want your application to run on Chrome using ARM CPUs, you need to compile your source code to ARM machine code.

In other words, it's not bytecode, it's native, and it is fast.

Native code and hardware accelerated 3D sounds more like World of Warcraft to me, than web development.

Lars D said...

@Tagyon:

Making applications using Chrome does not use any Google services. It's basically like a free, Open Source runtime. However, of course, somebody needs to patch security holes, but if Google stops doing so, and Google Chrome becomes a common runtime for applications, then I'm sure that others will step in, just like most important Open Source applications.

I don't agree that Chrome can copy the MSIE problem, simply because it can be forked, whereas MSIE cannot.

Also, I don't agree that Chrome is a browser-addon. It's more like a sandboxed platform where HTML is one of several technologies for user interfaces. If you create flash applications, java applets or silverlight apps, Chrome still delivers. Now that native code and accelerated 3D graphics is introduced, too, C/C++ becomes a vital programming tool for the Chrome sandboxing system.

The main reason that we download and install applications on Windows, is to ensure that the user makes an active choice, so that malware is not downloaded and installed too easily. By sandboxing native applications, but still running them natively, Chrome simplifies deployment.

As far as I see it, it would be fully technically possible to create a Delphi that compiles to native code and delivers VCL functionality in Chrome applications, in a future version of Chrome.

I'm not sure about Embarcarderos new cross-platform route - but they know that Chrome is a possible path forward for Delphi. Delphi shares many properties with C/C++, but is significantly more productive.

Lars D said...

@Warren: Chrome currently has 11% share of the visitors on this blog, 7.3% share on po.dk (like gorm.po.dk), and 2% share on a website I have with 1000 visitors per day that focuses on consumers.

However, if you want, you can distribute Chrome as part of your application, rebrand it etc., so that nobody finds out that Chrome is part of your application. It will still beat .net with regards to deployment. If you run Chrome in app mode, it will even behave like an application, making it impossible to gain access to Chrome's menus, preventing that your application is dragged into a normal Chrome browser window as a tab etc.

Lars D said...

Google has made some 3D examples available, that work in Chrome today:

http://code.google.com/apis/o3d/docs/samplesdirectory.html

Anonymous said...

"you can distribute Chrome as part of your application, rebrand it etc., so that nobody finds out that Chrome is part of your application."

Chrome by stealth. I find this very disturbing.

Anonymous said...

"you can distribute Chrome as part of your application, rebrand it etc., so that nobody finds out that Chrome is part of your application."

I don't know about you, but this scares me.

Lars D said...

@Anonymous: Why disturbing?