#1 2011-08-08 13:09:08

ab
Administrator
From: France
Registered: 2010-06-21
Posts: 14,165
Website

Our mORMot won't hibernate this winter, thanks to FireMonkey

Our little mORMot will like FireMonkey!
Here is why...

What is FireMonkey?

FireMonkey is a scalable vector graphics based GUI framework exploiting GPU capabilities for hardware accelerated cross platform GUI's, running on Windows, Mac OS X and iOS.
It's based on previous work of Eugene A. Kryukov, who has been hired by Embarcadero last year.
This previous framework was named DXScene, and you can still a lot of pictures, even on iOS support on Eugene's blog.

What's up, doc?

FireMonkey is the main feature of XE2, but not the only one.

From the compiler point of view, the main features are 64 bit compilation, and OS X cross-compilation and cross-debugging. You'll need to buy a Mac (or try some hack to install a virtual Mac on your PC) in order to test it, but it's very promising.

In comparison, the DataSnap enhancements included in XE2 are not so groovy: client proxy generation – for Android, .NET, Objective-C, Blackberry, iOS etc.. Should not be so difficult to implement, in a RESTful / JSON world...

LiveBindings – a way to create 'live" relationships not just between objects but between individual properties of objects - is a tempting technology. Sounds more compatible with the n-Tier model than the previous RAD approach.

Our mORMot won't hibernate this winter

Thanks to FireMonkey, our framework will be able to work during this winter.
mORMot.png

Here is why:
- Its n-Tier architecture make it easy to change the presentation layer: the RESTful server can be accessed, through JSON, by light clients running on OS X or iOS - our mORMot is just waiting for FireMonkey to appear at its burrow's entrance - it is already LiveBindings friendly;
- Our kernel database is SQLite3, which is already part of both OS X and iOS;
- Our code was designed to be 64 bit ready, and since the optimized asm functions have their "pure pascal" version, it will be able to run on ARM - even low-level performance tricks will work as expected, since iOS uses little-endian ARM, just as x86/x64 CPUs;
- Most of the framework low-level stuff is concentrated in the SynCommons unit - we tried to avoid code duplication where possible, and there is already a full coverage of regression tests, ready to be run on new Operating Systems / CPUs;
- We don't rely on third-party components, and we manage the full source code of all our units;
- Some Windows-specific units (like SynGdiPlus or such) are already simple and abstract enough to be implemented easily on another platform - and some specific classes (like the http.sys kernel server) have their own "generic" version (using plain sockets or Fastcgi).

So we are waiting for the fire to be released... keyboards on your mark!

FPC at the end of the tunnel

For its ARM back-end, it sounds like if Delphi will use FPC / Lazarus on the OS X site, within XCode, to create iOS applications. Even if I'm quite sure Embarcadero will get rid of the FPC compatibility as soon as possible (i.e. when their ARM compiler back-end will be available), there was certainly some internal debate in the San Francisco's building to embed or not FPC to Delphi XE2. I'm quite happy that the war I spoke about one year ago did not occur.

I don't know if it comes from open-mindedness or from pragmatism, but it surely put some lights on Free Pascal, which deserve it.

See http://blog.synopse.info/post/2011/08/0 … FireMonkey

Offline

#2 2011-08-10 08:44:35

ab
Administrator
From: France
Registered: 2010-06-21
Posts: 14,165
Website

Re: Our mORMot won't hibernate this winter, thanks to FireMonkey

I'm considering adding native ODBC support in the SynDB classes.
This is an older technology than OleDB, but is cross-platform.
It may help connecting to any database in MacOS X, for instance.

In all cases, the external database layer is mandatory on Server-side only.
For the client, there is no difference between a SQLite3 table or an external table.
Since Mac OS X should be use as client using FireMonkey, not as Server, it's perhaps not on #1 priority.
When Delphi (XE3?) will release a Linux cross-compiler, we'll certainly add ODBC support.

Offline

#3 2011-08-19 08:29:54

ab
Administrator
From: France
Registered: 2010-06-21
Posts: 14,165
Website

Re: Our mORMot won't hibernate this winter, thanks to FireMonkey

Thanks to Andre, and his latest holidays in the french mountains, I changed the mORMot logo.
See the original photo in his blog: http://photofaure.over-blog.com

Offline

#4 2011-09-26 07:43:44

ab
Administrator
From: France
Registered: 2010-06-21
Posts: 14,165
Website

Re: Our mORMot won't hibernate this winter, thanks to FireMonkey

About Objective-C, it sounds like if Embarcadero did makes its own Delphi-based wrapper around the OOP layout of this technology.

FPC did extend the compiler so that Objective-C style of coding appeared in the code: this is the so-called "Objective Pascal" mode.

Embarcadero compiler team uses the new RTTI and generics language features to expose the Objective-C API into standard Delphi interfaces.

I don't have any preference. Both have pros and cons. The FPC solution sounds lighter and automated (the OSX APIs are created using an automated process). The EMB solution sounds more "pascalish", since the language was not modified, but some wrappers were designed over the OSX APIs.

The new "unit scope names" introduced in Delphi XE2 for handling several platforms (Windows/Posix or VCL/FireMonkey) do make sense to me. http://docwiki.embarcadero.com/RADStudi … cope_Names By the way, it seems definitively better than the previous LibC huge unit, as used for Kylix. And perhaps more rigid than the FPC library.

In all cases, this is a quite interesting step into cross-platform.

Offline

#5 2011-10-01 09:32:55

ab
Administrator
From: France
Registered: 2010-06-21
Posts: 14,165
Website

Re: Our mORMot won't hibernate this winter, thanks to FireMonkey

See this thread to continue the talk:
http://synopse.info/forum/viewtopic.php?id=456

Offline

Board footer

Powered by FluxBB