Forum General

Xamarin, others ... future

LevikeSzaboLevikeSzabo USMember

Hi,

I hope that on this forum I will get enough information about Xamarin. I intend to make some interesting applications that I would like to use on multiple platforms. Therefore I started to read many articles about one of the best solutions or "THE BEST" solution to make cross-platform applications.

The HTML5 + CSS it's not the solution I want, therefore what I found most interesting are Xamarin products and Remobjects Oxygene products. I have to admit that each one has it's strength, each one has pros and cons. But here I would find more about Xamarin and what will be it's future, meaning I don't want to invest money and time to learn and use something that in a few years will disappear. The partnership between Xamarin and Microsoft looks promising. Anyway I have some problems regarding Xamarin compared to Oxygene.

A friend, let me try (on a remote computer) the Xamarin product that he bought and I become very sad when generating a simple Hello World application for Android that generated a 3 MB app (in release mode) compared to Oxygene that's only a few KB. Than I tried the JetBoy app and it grew up to more than 9 MB compared to 1.5 MB on Oxygene. Using your products to make my app, that has multiple plugins will reach to an enormous file size. The second problem would be the apps starting time that's quite long compared to the same Oxygene generated app. Will these change or not - maybe I'm doing something wrong? I have to admit that after the app started it worked as intended.

Another issue is related to the price. To have the chance of deploying apps on multiple platforms I would have to pay a big amount of money (~ $3000) for each developer compared to Oxygene price ($699). Will this change in nearest future? I know that you work hard to make it work and you have to be rewarded for that, but with that amount of money I would pay for Xamarin products for one developer I could buy 4 copies of Oxygene, for 4 developers. OK, I know, code reuse would be better in case of Xamarin compared to Oxygene, meaning more work for developers.

Another issue would be related to how fast can you make updates for a new OS version (like Android or iOS). Will I have to wait a longer period of time to have all the bindings done?

I want to know how much can I rely on your products. I have to choose between Xamarin and Oxygene in such a way that I would not regret. So please help me with extra information about Xamarin that would let me choose the best solution.

Thank you very much.

Levente.

Posts

  • JonathanPryorJonathanPryor USXamarin Team Xamurai

    Note: I haven't used Oxygene, and I'm a Xamarin employee, so I'm not unbiased. ;-)

    I become very sad when generating a simple Hello World application for Android that generated a 3 MB app (in release mode) compared to Oxygene that's only a few KB. Than I tried the JetBoy app and it grew up to more than 9 MB compared to 1.5 MB on Oxygene.

    Knowing nothing of Oxygene, I'm going to guess that it's actually generating Java bytecode or Dalvik bytecode, and has no/minimal additional runtime dependencies.

    Xamarin.Android and Xamarin.iOS, meanwhile, make it possible to reuse pre-existing .NET code. This has potentially large runtime dependencies, from additional (non-platform native but portable) class libraries (WebRequest, etc.) to runtime dependencies (JIT with full generics support, GC, etc.).

    These additional Xamarin dependencies are not small -- though the linker helps -- but they're not large either. 9MB is, all things considered, fairly tiny compared to the several GB that mobile devices provide these days, and if you're writing anything with large "resources" -- videos, images, etc., like a game -- then the Xamarin "overhead" can drop significantly.

    However, it's precisely this "overhead" which makes Xamarin so useful. Xamarin.Android without the Mono runtime would mean using Java's "type erasure" generics, or generating lots of duplicate code, as Scala/etc. do. Properly supporting "value type" (struct) semantics would open another kettle of fish. Removing the class libraries would make it much harder to reuse pre-existing, already debugged (and working!) code.

    The "overhead" is a large part of our value proposition. :-)

    The second problem would be the apps starting time that's quite long compared to the same Oxygene generated app.

    I don't think there is significant startup time on iOS. On Android there is some startup overhead -- ~1.5s on a 3 year old Nexus One, last I profiled -- but we considered this to be acceptable at the time. It is something we revisit.

    Another issue would be related to how fast can you make updates for a new OS version (like Android or iOS).

    Xamarin.iOS has had same day support for the latest iOS releases for the past several years.

    Xamarin.Android is unfortunately in a different boat.

    Both Xamarin.Android and Xamarin.iOS support manually invoking "unbound" APIs, so even if an API is not immediately available, it can still be used without needing to wait for an update. (It's not as fun, certainly, but it's possible.)

  • softlionsoftlion FRBeta ✭✭✭

    For apk size, you can split x86 / armv7 releases. It divides the apk size by half. Google play supports it. It will distribute the correct version to matching devices.

    I also found that the size is not increasing past 12MB. With a 12MB app you bound all the apis you really use is most apps.

    And finally, a "good" size means a good app in the head of customers. So it is not a bad thing.

  • FabioGFabioG ITBeta, University ✭✭✭

    A comparison between RemObjects Oxygene and Xamarin based on binaries size is a bit unfair. Oxygen is an Object Pascal derivative language that target .NET/Mono, Java/Dalvik and Cocoa/CocoaTouch. I think it may appeal people who are familiar with Delphi. As stated by RemObjects themselves: "it does not come with an extensive runtime library or class frameworks of its own. When working with Oxygene, the class libraries you work with are those provided by the platform vendor". There is an ongoing open source project called "Sugar" to map types from different platforms that will help to share more code but if you want to write cross platform apps you'll have to write a lot of code by yourself to abstract platform features. Xamarin offers the BCL on all the supported platforms, that's a big advantage; of course, you get bigger binaries. Another huge problem is that Oxygene is a niche language and I suspect it will be a lot harder to find tutorials, examples and help. On the other hand, C# is widely used and Xamarin is getting a lot of traction recently so it's quite easy to find blogs and people (here or on Stack Overflow) who can help solving problems.

  • LevikeSzaboLevikeSzabo USMember

    Hi,

    thank you very much for your answers.

    @FabioG - beside Oxygene in the nearest future there will be a C# version, too, named Hydrogene, the same stuff with a different front end programming language. The most interesting thing about Oxygene is that I can paste through the Oxydizer: Java, Delphi and C# code that's quite nice, meaning I can reuse native code (OSX/iOS, Java, .NET). Oxygene comes with Visual Studio Shell, therefore I don't have to pay extra money to use Visual Studio.

    With Xamarin, code reuse is 75%, while with Oxygene will be a little smaller, around 55%-60% (based on my experience) or maybe more (depends on developer knowledge) but it gives more flexibility.

    Regarding price, really I think that $3000 for 3 platforms is really expensive but a $699 for Oxygene or Hydrogene (3 platforms) is a fair price.

    A plus for choosing Xamarin is related to the number of developers (more developers, more free code, more help) and the partnership with Microsoft.

    Finally I've chosen the Oxygene/Hydrogene version due to it's price, smaller apps size, etc. Anyway that doesn't mean I will give up permanently on Xamarin, if there will be some price drop maybe I will reconsider this option, too.

    Thanks again.

  • Bewolf2Bewolf2 KHMember, Beta

    If Hydrogene can compile .net 4.5 code to native app, and keep the same price range as Oxygene, then Xamarin might has a serious competitor in 2014. But it seems there's still no much info about Hydrogene on remobject website.

  • EidandEidand GBMember, University ✭✭✭

    you're touching on what I've said as well a long time ago in emails to Xamarin :

    1. The price is prohibitively high.
    2. The 1 month trial version in my case has been filled with bugs, broken builds and I haven't managed to build even the simplest app due to various issues with Xamarin.
    3. Seeing as it does not even work, how can anyone ask for so much money just to be able to use Visual Studio ( which any dot net developer would use ).

    For Xamarin : please sort out your products, develop a stable version that even happens to work and lower the prices considerably.

  • FusionGamerFusionGamer USMember

    @Eidand:

    1. I agree. Charging per platform, even for the Enterprise edition is ridiculous. $1899 x 3 platforms (iOS, Mac, Droid) = $5697, and that is still per year pricing.

    2. There is no "one month" trial version. There never was. You can publish apps via MonoMac (non-bundled) and GTK. You only buy a license when you want to publish apps to dedicated app stores. (iOS, OS X, Android)

    If your Xamarin is broken, the please reinstall it. My version is very stable and usable. The only bug I noticed is that the menus grey out when using full screen.

    1. Once again, corrupt download / corrupt install. Xamarin is not broken and everyone has the right to pay themselves.
  • EidandEidand GBMember, University ✭✭✭

    Hi Andrew,

    All I can say is that I activated my licenses and I had 1 month trial because I wanted the Visual Studio extension to play with.
    As for reinstalling, I did that 4 times.
    I tried to use Xamarin Studio and it failed because it complained about being unable to get my license info or something like that. I wrote a bit of code, got it to build. Closed Xamarin Studio , came back to the same thing and then build didn't work any more.

    I tried to get it to work with my Mac Book pro on my local network, no joy. Followed all the advice I could find and still no joy.

    After 4 weeks of playing this game I just gave up. I still think Xamarin is a good idea and will probably get better, but right now, it does not seem stable to me.

  • GuillermoGutierrezGuillermoGutierrez ESMember ✭✭✭

    Saying that code reuse in Oxygene would be around 55%-60% is completely false. Currently the code reuse is 0%. Maybe when Sugar is released, maybe it could reach 25-30%. Don't get me wrong, I'm looking forward to use Oxygene in a very close future, but comparing with a full .Net environment is a completely no point.

    With Xamarin + MvvmCross the code reuse is around 60-85% depending on the project, and for Android most of the files are just interface definition files with no code at all.

  • LevikeSzaboLevikeSzabo USMember

    @GuillermoGutierrez

    Hi,

    OK. Both, Xamarin and Oxygene try the same thing, meaning to let you reuse code. As both use the native UI, the non-visual code can be shared between Windows, Android, Mac and iOS. The ratio of reusable code is mainly based on visual/non-visual related code (in complex apps, where intensive calculus has to be done and only a few visual items are present in the app, that that ratio will change). I checked recently the DietCalculator app (made with Xamarin), where each implementation (Android, iOS) was written in it's own style on the visual side, yes that's true, more reused code, but saying that code reuse in case of Oxygene is 0% is also false. In that 55% - 60% I included what Sugar will allow, but forgot to mention.

    So there's no major difference between the two approach, only the fact that Xamarin abstracts framework classes while Oxygene and future Hidrogene helps to code against the framework. So in both cases the non-visual code can be reused while visual related code has to be written according to the style of that certain platform and yes before you say anything, Xamarin has more reused code than Oxygene.

    I like this component based style of Xamarin; I like that it has the partnership with Microsoft; I like those countless sample apps; I like the whole idea, but there are a few things that I don't like, the generated app size (maybe in time I'll get used to this) and the price of development environment (that's too much). Maybe if I'll have enough money I will buy the "Indie plan" to be able to code various apps when required by clients.

    Have a nice day.

  • GuillermoGutierrezGuillermoGutierrez ESMember ✭✭✭

    @LevikeSzabo Without Sugar, you can't even define a simple entity model without using #define directives. You have to use NSMutableArray for iOS, Java ArrayList for Android and List for .Net. So, no much code reuse there.

    Here's where Sugar comes into action. I agree that it's awesome to code cross-platform code that runs with the native types for each platform. But right now, it's still a Beta version and it's far from complete yet. And I don't think that you can get much more than 30% code reuse if you have to code HTTP clients, Database Access, Controllers/Activities, and GUI definition in platform-specific code.

    With Xamarin PCL and MvvmCross, only GUI definition is left in the platform-specific projects.

    Lets see how it evolves, but right now I don't think that it can be seen as a decent cross-platform alternative. Probably the same discussion in the Oxygene forums will obtain a different conclusion, thou.

    Cheers!

  • YonatanNYonatanN ILMember

    I hope I get an honest reply..
    Has something changed now that almost 2 years has passed? Xamarin is a quality product but is still super expensive which is actually the only reason why I'm still not using it.
    Does Oxygene/Hydrogene delivers now the same quality for a cheaper price?

  • YonatanNYonatanN ILMember

    or any other cross platform solutions? C# is the best option of course

Sign In or Register to comment.