Recommendation: RemObject's Elements

I was so disappointed last week when I started testing my bytecode interpreter (written in Xojo) and found its performance to be terrible. My default assumption was that my code was poor. On a whim, I thought I’d rewrite just the interpreter in a different language to compare performance.

I’ve been meaning to learn C# for a while so I figured now was as good a time as any. I’d had experience in the past messing around with Visual Studio and Mono but always found it more of a challenge than it should be writing c# on a Mac.

Enter RemObjects.

RemObjects is a small company that make an amazing toolchain. They have a cross-platform (macOS, Win, Linux, Android and iOS) compiler that lets you code in any one of five languages (Swift, C#, Pascal, Java and Go) with a VB-like language in the works (codenamed Mercury). They take your code and compile it either to machine code or (if you prefer) to the Java VM, Mono or Microsoft’s CLR. Yes, for the eagle-eyed amongst you, you can write Swift and run it on Windows!

They have an IDE for macOS (called Fire) and one for Windows (called Water). The cool thing is that you can mix and match languages within the same project. You can write one class in Swift and another in C# and they just work as you’d expect. They also have an open source runtime they call Elements RTL that provides loads of functionality (like Dictionaries, Timers, etc) that you can code against giving you one codebase for all platforms.

The performance of their compiler is insane. I literally ported the Xojo code for my VM to C# (not that hard actually) and performed no optimisations. I am seeing two orders of magnitude speed increase in the performance of Possum’s VM!! It’s now about 2x slower than Python with zero optimisations.

The customer service that RemObjects offer blows Xojo out of the water. Their two chief architects watch the forum like hawks, answering questions incredibly quickly and comprehensively. I found a small bug (converting a DateTime object to a string) and mentioned it on their forum. I kid you not, within 30 minutes the bug was fixed! They push out a new release every week.

Their IDEs are really good but they do not have any form of UI designer. You can certainly do UI work using their toolchain but it’s not integrated into the IDE like it is with Xojo. Some of you will certainly see this as a negative but I urge you to take a look at it. If you’re doing console application based work then this tool is amazing.

Their licensing is really generous. You can code in Swift on any platform for free, forever. They offer academic and personal pricing plans for non-commercial work. There is a 30-day free trial. I just purchased the personal license ($199 for all languages for 1 year) as I am only currently working on hobby projects but should I try to monetise something then I will have no hesitation in paying the full price.

2 Likes

So basically Dave could compile his visual IDE with their compiler for all targets?

Or is it only for the console stuff (as I understand it)?

It can compile against any UI framework. I don’t think @DaveS could compile what he has and run it on Windows as is as he’d need to link against the WPF framework or something else (much like he’d have to with GTK on Linux).

It is certainly possible however to do what Dave is doing on Windows with Swift using their tool.

I think he should be able to compile it as is with their Fire IDE instead of Xcode though and it should work…

What I am doing cannot (at the moment) be compiled for anything other than macOS, as the GUI ability of the open source versions of Swift are lagging, and even if/when they do catch up… I doubt those versions of Swift will be trully XPlat (as the Windows API required won’t match the AppKit/UIKit/Cocoa API that does the current controls)

I know them for years. Never understood their model, seems that besides no Visual UI Design, they also have hidden costs. Looks like that for data access you need to buy something they call Data Abstract that can cost 999+ (each platform?) alone. And for client/server “networking” you need “Remoting SDK” that costs $699 per seat… So they never got my real attention.

Sorry, but YAWN…
Yet another in the 10,000 languages that can make a x-plat console app.
Give me a X-plat UI designer. The seemingly impossible task that only Xojo, Delphi, Lazarus and QT have been able to accomplish, AFAIK.

Don’t be too disparaging @Meestor_X. I didn’t say you can’t make a GUI app - far from it. Their Mac and Windows IDEs are both written with Elements.

Perusing their blog, roadmap and forums as well it would seem that a universal cross platform GUI designer is being worked on by them as we speak. If I were Xojo, I’d be worried.

I DID say “Sorry”… :sunglasses:

There seem to be many that are heading this direction

Nope. RemObjects is not a real competitor, they run in a very distinct niche. For me, it’s almost useless as other tools give me more for less, and that includes Xojo.

But yes, as Norman said, “others” are going to become a threat.

hope Garry doesn’t mind me jumping in here (thanx for the warm recommendation, much appreciated!)

Rick,

That is not true, sorry.

For UI, we support the native UI widget of each platform, be it WinForms of WPF on .NET, AppKit/UIKit on Mac, XM L layouts on Android and so on. the only thing we doin’t have — purposefully so — is a cross-platform abstraction for UI, as that’s a Bad Idea™, in our opinion. Users deserve a platform-native user experience.

As for Data Abstract and Remoting SDK, these ar separate products, not related to Elements. you can use them with Elements, bit you don’t have to; you can also use them with other development tools (such as Xcode, Visual C#, or Delphi). Here too, Elements does not preclude you form using any other (including free-with-the-platform) database or networking APIs.

For example, you could sue the same kind of ADO.NET-based data access as you would from Visual C#, with Elements on .NET.

Meestor,

it’s purposely not what Elements is about. I understand that if thats what you’re looking for then Elements is not for you (and Delphi or Xamarin ir Xojo might be better suited for your needs). Elements is specifically about targeting each platform natively.

thanx,
marc

2 Likes

Welcome to the community !

I’m curious what your thoughts are on MS MAUI approach for moving .Net into the cross platform world ?

To me honest, I haven’t looked at in detail enough to comment yet. As I understand, it’s basically Xamarin vNext, correct?

That said, I’m a big proponent of designing the UI bespoke for each platform. I have a blog post about one way to do this with Elements here, that shows the basics of how we handle this for our IDEs, Fire and Water.

Fire and Water are essentially the same code base, compiled for native Cocoa and for .NET/WPF respectively. All the non-UI code is shared, and (most) all the UI code consists of split partial classes, with a lot of shared code and just a few per-platform bits (some use partials, some just use #if indie the code — depending on complexity), but most importantly thats the controller code thats shared, but is complemented with a separate view/window (.xib, for Cocoa, and a .xaml+/.xaml.pas for WPF).

I find that it’s very little “duplicate” work to support rug b oth platforms with that, but the little but extra effort pays off dividends in term oof having a great bespoke UX in both Mac and Windows.

Hi @dwarfland - welcome!

Not at all!

Very welcome.

1 Like

Let me remove your clarification and start over talking about my personal experience:

I know them for years. Never understood their model, seemed that besides no Visual UI Design, they also have hidden costs. (Missing features needing to buy extras, but Marc said later that the product is feature complete and their confuse website made me wrongly believe that “other products” were part of the complete solution) So they never got my real attention.

And yes, this is fact, that’s my personal experience reading about the products, reading the forums, following the development of Fire and Water thinking that they would include some kind of VCL palette at some time, etc. So it is true. My experience and impression was true. The only part we could agree as “not true”, but I would need to experiment the product to know, is “they seem to have hidden costs”, just a confuse website and line of products, that creates such impression. But a “no UI designer” don’t attract me for a trial.

That’s fair enough, the product is not for everyone.

That doesn’t change that the rest you claimed is very misleading (to say the least), even after your “clarification”. Many companies sell more than one product, and often these products are additive. Saying Elements has “hidden costs” because you can also optionally buy Data Abstract (if you want to use it) is like saying Windows has hidden costs because you can also optionally buy SQL Server.

I used the word “seems”, not made an affirmation, just expressed the impression I had. Thank you for coming here and interacting with us for clarifications.

Any time!

and I’ll review what we can do to make this more explicit on the website. Thanx!

remember… there is no reality… just a perception of reality, and we each have our own perception