Welcome Guest.   Make a donation to an author on the site October 23, 2014, 10:09:28 AM  *

Please login or register.
Or did you miss your validation email?


Login with username and password (forgot your password?)
Why not become a lifetime supporting member of the site with a one-time donation of any amount? Your donation entitles you to a ton of additional benefits, including access to exclusive discounts and downloads, the ability to enter monthly free software drawings, and a single non-expiring license key for all of our programs.


You must sign up here before you can post and access some areas of the site. Registration is totally free and confidential.
 
View the new Member Awards and Badges page.
   
   Forum Home   Thread Marks Chat! Downloads Search Login Register  
Pages: [1]   Go Down
  Reply  |  New Topic  |  Print  
Author Topic: Cross-platform mobile apps development: MonoTouch/MonoDroid, Marmalade, etc.  (Read 9038 times)
Armando
Charter Member
***
Posts: 2,680



see users location on a map View Profile Give some DonationCredits to this forum member
« on: September 28, 2011, 04:32:47 PM »

I'm looking at the various options for cross-platform mobile apps development, reading forums and various articles (Mobile application development).

The C#/.Net way with MonoTouch/MonoDroid is attractive... but then Marmalade looks nice too. There are also other interesting options like Rhodes.

There are of course several parameters to consider (familiarity of language, price, development speed, etc.). But I don't want to clog the discussion right away...  embarassed

Any opinion/"hands on" experience on the matter ?
« Last Edit: September 30, 2011, 09:51:27 AM by Armando; Reason: [Change the thread title to better reflect the discussion.] » Logged

"I suppose it can be said that I'm an absent-minded driver. It's true that I've driven through a number of red lights on occasion, but on the other hand, I've stopped at a lot of green ones but never gotten credit for it."
Glenn Gould
Armando
Charter Member
***
Posts: 2,680



see users location on a map View Profile Give some DonationCredits to this forum member
« Reply #1 on: September 28, 2011, 09:19:14 PM »

Nice (older) post on MonoTouch and Objective C on stackoverflow. Is MonoTouch worth the cost or should I just learn Objective-C?
Logged

"I suppose it can be said that I'm an absent-minded driver. It's true that I've driven through a number of red lights on occasion, but on the other hand, I've stopped at a lot of green ones but never gotten credit for it."
Glenn Gould
EĆ³in
Charter Member
***
Posts: 1,400


O'Callaghan

see users location on a map View Profile WWW Give some DonationCredits to this forum member
« Reply #2 on: September 28, 2011, 09:55:02 PM »

I'm using Marmalade to develop a game, I started back when it was still called AirPlay SDK. Being primarily a C++ coder I wanted to stick with the language and Marmalade allowed me to do that and avail of many of the Boost libraries too (not all though). The whole build once, then deploy to any platform really does work too, it is a fantastic dev environment.

BUT... a 2nd app I'm working on really requires a good UI, and I'm a stickler for wanting my applications to have the "native feel". Marmalade claims in a future version (the next version even) that it will support native UIs. I didn't have the luxury of waiting to see how that turns out so I opted to write a portable C++ core and glue it to separate Android/Java and iOS/ObjC user interfaces.

The type of app you want to develop is important, how much OS integration will you want?
Logged

Interviewer: Is there anything you don't like?
Bjarne Stroustrup: Marketing hype as a substitute for technical argument. Thoughtless adherence to dogma. Pride in ignorance.
mahesh2k
Supporting Member
**
Posts: 1,408



see users location on a map View Profile WWW Give some DonationCredits to this forum member
« Reply #3 on: September 29, 2011, 12:18:28 AM »

Maybe off topic but have you checked Sencha Touch ?
Logged
Renegade
Charter Member
***
Posts: 11,633



Tell me something you don't know...

see users location on a map View Profile WWW Give some DonationCredits to this forum member
« Reply #4 on: September 30, 2011, 01:11:45 AM »

Marmalade looks very nice! Rhodes looks interesting as well.

However, don't buy into hype for any dev tools. Whether that's MonoTouch/Mono for Android or Marmalade or whatever. At some point you WILL encounter obstacles that must be solved at the native level. You need to have flexibility there to solve those problems, and not all SDKs or toolkits will let you do that.

Whether that's at the UI level, or being able to open a media file (which you CANNOT do on iOS in a sane manner)... Those problems crop up when you least expect them.

Whichever toolkit you choose, just make sure that you're comfortable with it.

To be honest, I think I'd go with a C~ish language if I were to choose again. (I use the Mono toolkits.) A lot of mobile kits are basically just high-level scripting languages with little possibility to do much other than line of business applications (which they are designed for). Marmalade looks very nice there as it would also let you easily move to other C-based SDKs like bada.

I know that the edge-case problems that I've seen have been solvable in MonoTouch, and I expect that it would be the same with Marmalade. I'm not sure about Rhodes though -- I'm not very familiar with Ruby.

Do post back though when you choose, and any thoughts or opinions you develop. I'd be interested to hear.
Logged

Slow Down Music - Where I commit thought crimes...

Freedom is the right to be wrong, not the right to do wrong. - John Diefenbaker
Armando
Charter Member
***
Posts: 2,680



see users location on a map View Profile Give some DonationCredits to this forum member
« Reply #5 on: September 30, 2011, 09:43:15 AM »

Thanks for your opinions! Some quick answers/thoughts :

@mahesh2k: Thanks. Looks nice and powerful too. I bookmarked it and will study it some more later.

@EĆ³in: I knew you were using marmalade from another thread here. Thanks for sharing your thoughts about UI aspects. Marmalade seems like it's putting a lot of effort into its UI framework and so maybe it'll soon be able to lenify your (legitimate) "criticisms". Wink

Quote from: EĆ³in
The type of app you want to develop is important, how much OS integration will you want?"


It's of course an important point, and I know my intro was a bit vague (on purpose)... Unfortunately, I'm not entirely "there" yet, in terms of details etc.. It will most probably be database oriented, with information exchange (xml, json), grids to display data, etc. For that type of stuff, I have the feeling (from what I've read) that MonoTouch would be a good candidate. But it's mostly an (educated) feeling at this point as other packages would be able to handle that easily as well I believe.

@Renegade:Yes, I saw you're using MonoTouch. MonoTouch looks great. And the posts on stackoverflow and other articles all around are pretty positive and inspiring. Not to mention the "most important" MonoDroid side of the coin which makes the whole package even more attractive.

Quote from: Renegade
Whichever toolkit you choose, just make sure that you're comfortable with it.

To be honest, I think I'd go with a C~ish language if I were to choose again. (I use the Mono toolkits.) A lot of mobile kits are basically just high-level scripting languages with little possibility to do much other than line of business applications (which they are designed for). Marmalade looks very nice there as it would also let you easily move to other C-based SDKs like bada.

This is just the beginning of the trip for me, and I don't know how much time and energy I want to invest in that "project" yet. I'm also a beginner and I need to make choices without loosing touch with the "big picture" (i.e.: other contracts and future jobs which might not be linked to mobile development).

In "C~ish type of language", I guess you don't include C#, or... do you ?

My "background" (ahem -- more of a foreground...) is Java and VB (with all the other usual stuff like XML, JSON, etc.), so in any case I'm ready to learn a new language if necessary -- C#, .Net, C++, Objective C, JavaScript, Ruby, Python, whatever.  Of course -- as I just suggested -- it'd ideally be a language which I could also relatively easily use for other contracts (i.e.: a language well adapted to the current market). I know C# and Objective C are still growing in popularity and C++ is pretty stable. The little I've read on C#, I like... But so did the stuff I read about C++ and Objective C. However, I'm wondering how much use Objective-C has outside Apple and iOS, so it doesn't look like the best choice at this point -- especially that I'm not targeting iOS per se, but also Android and Windows (mobile).  I might be wrong though.

Anyway... I don't want to get into a dull/superficial language debate as I'm pretty sure you guys will understand my points.

looking forward to even more points of view !
Logged

"I suppose it can be said that I'm an absent-minded driver. It's true that I've driven through a number of red lights on occasion, but on the other hand, I've stopped at a lot of green ones but never gotten credit for it."
Glenn Gould
Renegade
Charter Member
***
Posts: 11,633



Tell me something you don't know...

see users location on a map View Profile WWW Give some DonationCredits to this forum member
« Reply #6 on: September 30, 2011, 10:00:03 PM »

For C~ish, I'd include C#. You can port between C# and C++ relatively easily compared to something like VB.NET or Delphi to C++.

If you already know Java and VB, then C# is a very easy transition.

For Objective-C, it allows you to use pure C, which allows inline assembler, and regular C++, so you can still side with those more standardized languages there and shy away from the Objective-C somewhat.

Quote
I'm also a beginner and I need to make choices without loosing touch with the "big picture" (i.e.: other contracts and future jobs which might not be linked to mobile development).

I think that's the key. For me, as a small developer, getting caught up in the details is a death trap. Focusing on the big picture is the only way to survive. There are simply too many details to worry about.

If you're thinking about this as something going forward and possibly non-mobile, if I were in your shoes, I'd definitely go with the C~ish route. It simply opens more doors. While I'm partial to C#, I think that the future is only getting brighter for C++. If I were to switch to another language for most of my development, I would 100% jump over to C++.

I'm not sure how parallel my situation is to yours though. My clients and my software put food on the table, so I'm risk-averse for a lot of things.
Logged

Slow Down Music - Where I commit thought crimes...

Freedom is the right to be wrong, not the right to do wrong. - John Diefenbaker
f0dder
Charter Honorary Member
***
Posts: 8,774



[Well, THAT escalated quickly!]

see users location on a map View Profile WWW Read user's biography. Give some DonationCredits to this forum member
« Reply #7 on: October 02, 2011, 05:47:54 PM »

I didn't have the luxury of waiting to see how that turns out so I opted to write a portable C++ core and glue it to separate Android/Java and iOS/ObjC user interfaces.
I can see how you can glue a C++ core to iOS/ObjC, but how do you do it for Android?

As for Rhodes, no experience with it, but... Ruby? Ugh. A lot of the people I see praising Ruby are those "Anti People" (first they make the move from Windows to Mac, then they make the move from Java to Ruby... and are probably too young to have ever touched C or C++).

The language is cute enough and all, but I personally don't see the attraction to it (apart from Rails, but that's "just" a framework). The mainline implementation is S-L-O-W, being a dynamic language is has relatively poor tooling support, and (again, because of being a dynamic language) it's a second-class citizen on the JVM, Dalvik and .NET VMs. And then there's the utter configuration & maintenance hell - Ruby is known for even non-major versions breaking backwards compatibility... and that's "just" the core language, it's libraries are even worse.

Fun if you like playing on the bleeding edge, but not something I'd personally choose for professional development.
Logged

- carpe noctem
EĆ³in
Charter Member
***
Posts: 1,400


O'Callaghan

see users location on a map View Profile WWW Give some DonationCredits to this forum member
« Reply #8 on: October 02, 2011, 06:29:23 PM »

I didn't have the luxury of waiting to see how that turns out so I opted to write a portable C++ core and glue it to separate Android/Java and iOS/ObjC user interfaces.
I can see how you can glue a C++ core to iOS/ObjC, but how do you do it for Android?

With JNI and the NDK. It's messier that ObjC++ of course, but a few lightweight headers and you can make calling make calling static and member methods on Java side very easy. For example, once you have the object handle of an android Button widget you can call member functions with something like the following

Formatted for C++ with the GeSHI Syntax Highlighter [copy or print]
  1. void button::set_text(const std::string& text) const
  2. {
  3. handle->call_method<void>("setText", "(Ljava/lang/CharSequence;)V", jni::to_jstr(text));
  4. }
  5.  
  6. void button::set_enabled(bool enable) const
  7. {
  8. handle->call_method<void>("setEnabled", "(Z)V", enable);
  9. }

Like I say, it's a bit messy, but I've managed to make it clean enough to not get in the way. The JNI interface seems complete enough that a more experienced programmer could surely write a Boost.Python, or luabind wrapper to automate all the boiler plate.
Logged

Interviewer: Is there anything you don't like?
Bjarne Stroustrup: Marketing hype as a substitute for technical argument. Thoughtless adherence to dogma. Pride in ignorance.
Armando
Charter Member
***
Posts: 2,680



see users location on a map View Profile Give some DonationCredits to this forum member
« Reply #9 on: October 03, 2011, 08:55:22 AM »

@Renegade: Thanks for your thoughts, I appreciate. The C~ish route does seem pretty sensible (in terms of employment, language versatility, robustness, performance and "expendability"), and since my own reflections and curiosity (not to mention experience) tend to go/be into that direction too, it seems like a good "match". But I'll see.

As f0dder says, Rhodes and maybe other alternative -- even if they seem nice at the first glance -- aren't as sensible choices. At least in my case:  the story might be different if I was a Ruby programmer, but I am not...

I haven't been doing much work on the whole mobile app development subject in the last few days. But when I will, I'll update this thread with other thoughts/opinions.
Logged

"I suppose it can be said that I'm an absent-minded driver. It's true that I've driven through a number of red lights on occasion, but on the other hand, I've stopped at a lot of green ones but never gotten credit for it."
Glenn Gould
f0dder
Charter Honorary Member
***
Posts: 8,774



[Well, THAT escalated quickly!]

see users location on a map View Profile WWW Read user's biography. Give some DonationCredits to this forum member
« Reply #10 on: October 04, 2011, 01:18:30 PM »

EĆ³in: interesting - I only thought Android devices allowed Java Dalvik code, didn't know about NDK! JNI sucks monstrously, but it's better than not having the capability.
Logged

- carpe noctem
40hz
Supporting Member
**
Posts: 10,728



see users location on a map View Profile Read user's biography. Give some DonationCredits to this forum member
« Reply #11 on: October 04, 2011, 02:22:55 PM »

You might want to take a look at a product called Illumination by Radical Breeze Software. It's a cross-platform code-generator type RAD tool that runs under Windows, OS X, or Linux and outputs native source code for: Windows, OSX, Linux, Android, iOS, Maemo, and Flex/Flash. HTML5 was just added and is a free upgrade.

I bought a copy ($50) a few days ago and (so far) it looks very promising.

It is primarily designed to handle user interface and basic program functions although it's pretty robust in that regard. The really nice thing about it is that it generates decent stand-alone royalty-free code which does not require a custom runtime or library in order for it to work. The produced code can also be edited, re-purposed, or incorporated into a more traditionally developed project - or where the project requirements exceed the scope of what Illumination was designed for. Very cool.

The visual design methodology will likely draw sneers from a lot of coders. But having coded both ways, I have to admit that putting something together or starting with this tool is a major timesaver.

The code it generates can also be studied. I found some of its approaches to doing things quite interesting since Illumination's coding approach and style is often very different from my own.

Illumination is the brainchild of Linux Action Show co-host Bryan Lunduke. Smart guy with some interesting things to say about open software, coding, and Linux. There's a good intro video up on YouTube (58 mins!) where Bryan demos and talks about Illumination, the design philosophy behind it, how it works, and then does some Q&A with the audience. Well worth a watch if you're at all interested in this product or what it does. I decided to buy a copy after watching the video because I got so curious about it.

WARNING: The recorded audio quality is pretty bad, as Bryan warns at the beginning of the vid. IMO it's really not that bad (ok...it is). But it's worth putting up with since the talk is quite interesting. Especially where Bryan gets into what the design goals were for Illumination - and how they were ("mostly" by his own admission) accomplished.

<a href="http://www.youtube.com/watch?v=z_6Hu3FoO08" target="_blank">http://www.youtube.com/watch?v=z_6Hu3FoO08</a>

If the sound really drives you nuts, there's an older formal presentation that covers pretty much the same ground. Just be aware that the version in this video is version 1.0beta4. The current version is 4.0 so it's since gone a ways beyond the limitations of the version shown in this video.

<a href="http://www.youtube.com/watch?v=kHdQftq-AzI" target="_blank">http://www.youtube.com/watch?v=kHdQftq-AzI</a>

---------------------
Disclaimer: 40hz's only relation to Radical Breeze is that he bought a copy of Illumination. And with his own money too!



Logged

Don't you see? It's turtles all the way down!
Armando
Charter Member
***
Posts: 2,680



see users location on a map View Profile Give some DonationCredits to this forum member
« Reply #12 on: October 05, 2011, 08:33:51 AM »

Thanks 40hz ! I'm going to have a look at that tonight.
Logged

"I suppose it can be said that I'm an absent-minded driver. It's true that I've driven through a number of red lights on occasion, but on the other hand, I've stopped at a lot of green ones but never gotten credit for it."
Glenn Gould
Renegade
Charter Member
***
Posts: 11,633



Tell me something you don't know...

see users location on a map View Profile WWW Give some DonationCredits to this forum member
« Reply #13 on: October 07, 2011, 09:55:23 PM »

Oh... One other consideration...

Game engines are mostly C/C++, so if you plan on doing any games, the C++ route with Marmalade is likely a good choice.
Logged

Slow Down Music - Where I commit thought crimes...

Freedom is the right to be wrong, not the right to do wrong. - John Diefenbaker
Armando
Charter Member
***
Posts: 2,680



see users location on a map View Profile Give some DonationCredits to this forum member
« Reply #14 on: October 08, 2011, 11:59:03 AM »

Thanks Renegade. I'll keep that in mind.
Logged

"I suppose it can be said that I'm an absent-minded driver. It's true that I've driven through a number of red lights on occasion, but on the other hand, I've stopped at a lot of green ones but never gotten credit for it."
Glenn Gould
Pages: [1]   Go Up
  Reply  |  New Topic  |  Print  
 
Jump to:  
   Forum Home   Thread Marks Chat! Downloads Search Login Register  

DonationCoder.com | About Us
DonationCoder.com Forum | Powered by SMF
[ Page time: 0.053s | Server load: 0.21 ]