Xojo vs MonoDevelop/Mono

I have not seen much talk of Xojo vs MonoDevelop. Anybody know the pros and cons? I may consider using both Xojo and MonoDevelop. I am pretty sure there is no XojoScript equivalent. Be as biosed as you wish. I am wondering because there are some things that I prefer with VB.NET and some things that I prefer with Xojo. Thanks

Mono and .NET have compiler as a service. So you can execute code that was ‘scripted’ like XojoScript.

Otherwise its difficult to compare them. They are entirely different.

Well, Xojo has an easier approach to the GUI part of the X-development. Mono needs you to have a diverse approach for each environment. There isn’t really a write once, use everywhere under Mono. When you go to Linux you probably will need GTK# to write your interface, when you go to Windows WinForms, when you go to a Mac you need Xcode Interface Builder. All code MUST have a MVC like approach (to separate the View module) and It’s not easy to maintain such GUI dependent code.

Thanks

[quote=26755:@Phillip Zedalis @ 1701 Software, Inc.]Mono and .NET have compiler as a service. So you can execute code that was ‘scripted’ like XojoScript.

Otherwise its difficult to compare them. They are entirely different.[/quote]
Sounds interesting. Thanks

To chime in with a few more details –

Mono’s VisualBasic.NET is more of a second class citizen. It works fairly well, but their focus is on C# and F# as their primary languages. VisualBasic.NET doesn’t seem to get quite as much attention for improvement. Last I checked, VisualBasic.NET is not supported for their mobile platforms (no VB.NET for iOS or Android). You will definitely need to look at C# for mobile with Mono/Xamarin.

Compiler as a service, as mentioned by Phillip is certainly an option under mono. There are also some lighter weight options, if you just need scripting. There is a Lua plug-in assembly .dll for Mono/.NET that gives something similar to XojoScript (but based on Lua language, not BASIC-esque).

As Rick mentioned, Mono doesn’t let you build a single NATIVE UI for all platforms. However, more clarification is needed. You can certainly build GTK# UIs in Mono. GTK# was designed to be a cross-platform UI toolkit. A single GTK# app can run on Mac & Windows almost as easily as it does Linux, but the UI is not “native”. On Mac, GTK# looks rather unpleasant (subjective), but definitely does not look like a Cocoa or Carbon app.

Similarly, you can also build and run WinForms on Mac and Linux, (in addition to Windows), but again, not native. MonoDevelop IDE lacks a WinForms designer as well, so you would need to hand-code a WinForms UI.

On the positives of Mono, if you want to learn C#, there are many more resources available for learning the language and the .NET framework – given that the abundance of Microsoft .NET courses; books; videos; web tutorials all would apply to Mono (~98% of the time). You also benefit that you will find many more opensource libraries that could be used for your own apps.

Xamarin/Mono support for mobile is already quite mature; Xojo has yet to release their first version supporting iOS.

Xojo’s web application support in the IDE is very nice and much like the desktop UI editor. On MonoDevelop, for web apps, you must hand code the UI. There is no built-in web UI designer in MonoDevelop (yet).

Both Mono and Xojo are viable options in many respects. However, each with different strengths and weaknesses. Personally, I use both – depending on the specifics of a given project. I find that I do more console console and web service related things in Mono. Desktop GUI apps, I tend to work with Xojo, especially if I want it to be cross platform. I am working on a project right now that uses a Mono based server and a Xojo-based desktop app accessing the server via REST.

This topic comes up fairly regularly (alternatives to Xojo). I’m a fan of using the right tool for the job - and then cracking on with it and getting the job done and making some money. For 15 years, that has usually been Xojo (and its previous incarnations). There’s lots of reasons for this but I’ll give you a couple:

  • I trust Xojo Inc to stick around. They’ve been doing this for a long time, through many industry changes and they’re still here. I don’t agree with all of their decisions but it’s not my company. I question how long some competing tools will be around.
  • Native controls. I can’t tell you the amount of times I’ve been told about a competing product and as soon as I look into it, I can see that the controls aren’t native. Depending on your market, this might not matter. In the market I play in, this matters hugely. (I only wish that Xojo’s IDE itself used more native controls but that’s another topic.) Their choice of native controls has meant that iOS is taking longer than some competing products - but that choice lays a strong foundation. If they had spent all this time making custom controls to look like iOS 6, they’d have been in for a world of pain with iOS 7.

So decide what you want to create. Pick your tool, warts and all. And get on with it! :wink:

[quote=27213:@Robert Lawrence]To chime in with a few more details –

Mono’s VisualBasic.NET is more of a second class citizen. It works fairly well, but their focus is on C# and F# as their primary languages. VisualBasic.NET doesn’t seem to get quite as much attention for improvement. Last I checked, VisualBasic.NET is not supported for their mobile platforms (no VB.NET for iOS or Android). You will definitely need to look at C# for mobile with Mono/Xamarin.

Compiler as a service, as mentioned by Phillip is certainly an option under mono. There are also some lighter weight options, if you just need scripting. There is a Lua plug-in assembly .dll for Mono/.NET that gives something similar to XojoScript (but based on Lua language, not BASIC-esque).

As Rick mentioned, Mono doesn’t let you build a single NATIVE UI for all platforms. However, more clarification is needed. You can certainly build GTK# UIs in Mono. GTK# was designed to be a cross-platform UI toolkit. A single GTK# app can run on Mac & Windows almost as easily as it does Linux, but the UI is not “native”. On Mac, GTK# looks rather unpleasant (subjective), but definitely does not look like a Cocoa or Carbon app.

Similarly, you can also build and run WinForms on Mac and Linux, (in addition to Windows), but again, not native. MonoDevelop IDE lacks a WinForms designer as well, so you would need to hand-code a WinForms UI.

On the positives of Mono, if you want to learn C#, there are many more resources available for learning the language and the .NET framework – given that the abundance of Microsoft .NET courses; books; videos; web tutorials all would apply to Mono (~98% of the time). You also benefit that you will find many more opensource libraries that could be used for your own apps.

Xamarin/Mono support for mobile is already quite mature; Xojo has yet to release their first version supporting iOS.

Xojo’s web application support in the IDE is very nice and much like the desktop UI editor. On MonoDevelop, for web apps, you must hand code the UI. There is no built-in web UI designer in MonoDevelop (yet).

Both Mono and Xojo are viable options in many respects. However, each with different strengths and weaknesses. Personally, I use both – depending on the specifics of a given project. I find that I do more console console and web service related things in Mono. Desktop GUI apps, I tend to work with Xojo, especially if I want it to be cross platform. I am working on a project right now that uses a Mono based server and a Xojo-based desktop app accessing the server via REST.[/quote]
Sounds great. It sounds like it is only better to use VB.NET if I am only developing for Windows.