ATTENTION: You are viewing a page formatted for mobile devices; to view the full web page, click HERE.

Other Software > Developer's Corner

Cross-platform mobile apps development: MonoTouch/MonoDroid, Marmalade, etc.

<< < (2/3) > >>

Armando:
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". ;)

The type of app you want to develop is important, how much OS integration will you want?"-Eóin
--- End quote ---


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.

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. -Renegade
--- End quote ---

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 !

Renegade:
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.

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).
--- End quote ---

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.

f0dder:
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.-Eóin (September 28, 2011, 09:55 PM)
--- End quote ---
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.

Eóin:
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.-Eóin (September 28, 2011, 09:55 PM)
--- End quote ---
I can see how you can glue a C++ core to iOS/ObjC, but how do you do it for Android?
-f0dder (October 02, 2011, 05:47 PM)
--- End quote ---

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


--- Code: C++ ---void button::set_text(const std::string& text) const{        handle->call_method<void>("setText", "(Ljava/lang/CharSequence;)V", jni::to_jstr(text));} void button::set_enabled(bool enable) const{        handle->call_method<void>("setEnabled", "(Z)V", enable);}
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.

Armando:
@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.

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version