Hybrid vs. Cross-platform application - mobile

What are the difference between Hybrid vs. Cross-platform applications? I did research about these two categories and there seem to have too common properties between these two (e.g., using website languages, usable on various mobile platforms, cost reduction for developing, etc.).
I did find one character for cross-platform is that its code is reusable. But then the question is why this character is not for Hybrid since both are using the language for website (HTML, CSS, JS, etc.) ?
Thank you in advance

Related

PhoneGap or Appcelerator Implementation

This is more of an advice question rather than a specific question. I am developing an application for mobile devices. Its basic functionality will be to open PDF files, Video files, and to open certain webpages. Would this be best implemented in PhoneGap or Appcelerator?
PhoneGap and Appcelerator Titanium are both very popular open-source JavaScript frameworks for packaging and deploying mobile applications. At Universal Mind, we have clients that leverage both and clearly both frameworks have countless successful implementations on numerous platforms. However, there are enough significant differences between the two products that it doesn’t really make that much sense to compare them directly. The fundamental difference is that PhoneGap is a web-based solution where Appcelerator Titanium is a pure JavaScript API that creates native code. At the core, they serve different functions for an organization.
PhoneGap:
JavaScript API that provides access to Native Functions
Supports HTML5/CSS3
Supports Web Standards & Re-use Across Enterprise Apps
Supports DOM based JavaScript Libraries/Frameworks
Supports the most platforms
Appcelerator Titanium:
JavaScript API that provides access to Native Functions
Compiles to Native Code
Could provide better performance.
So as per my view i prefer Phonegap
I think a key difference implied is that PhoneGap uses HTML and CSS to render the user interface while Appcelerator renders platform specific native user interface components.
Phonegap have very small list of api that enables it to adapt itself to all(partially) platform, whereas appcelerator have larger api. That's is why they are emphasized on only two platform(completely).
I think with this understanding i would prefer appcelerator for complex applications and phonegap for multiple platform.

How cross-platform is Monotouch/Mono for Android development?

I am a python programmer looking to make my first mobile app. I'd like to make make an app for both iOS and Android that looks and feels native. I thought I'd start with a simple iPhone app, just to see how everyting works. Mono seems like the obvious solution. However, I was surprised to find that almost all of the example Monotouch code I found, as well as the answers here on Stackoverflow, relied heavily on the IOS frameworks, essentially making the code not cross-platform at all. For example, I was looking into using a timer. All the examples I read use NSTimer. Surely this is possible to do in C# itself so that that part is cross platform? But then, why do all these people use NSTimer?
So, my question is, how cross platform is Mono development for IOS/Android? Is it still worth considering for smallish apps, or only for very large apps with lots of business logic?
Your question is too general. I'll answer it for two scenarios:
Specific examples
If you are looking for how do create timers, create arrays, traverse lists, then why not just look for regular .NET examples and compile this into a single class library that can be in both projects.
Sharing code as a whole
If you just mean in general sharing of code between the two platforms, you should look at frameworks that already have the templates and examples created for you. Two such patterns are http://www.monocross.net/ (MVC) and mvvmcross (MVVM). This can help you architect your project from the beginning to support cross-platform development (iOS, Droid, Wp7, desktop, etc).
There are timers, arrays, and strings in the .NET Base Class Library. As you have seen, there are some in the Cocoa library that MonoTouch wraps. For example you have your regular run of the mill string in .NET, but in monotouch you also have the option of NSString. I think to answer your question, the reason people may use the iOS specific types sometimes, is either because they weren't trying to make that code cross-platform and it was a matter of preference, or they had to do something specifically that required the use of that type which wouldn't be the case for everyone.
Mono's purpose isn't just to help with cross-platform development. I come from a C#/.NET background so even if I was building an app with one screen and two buttons, I would use MonoTouch because I would rather use C# with the .NET BCL than Obj-C. But that is my own personal choice and enough of a deciding factor, for me.
EDIT
I added the links.
I think the key point is that in order to use Mono and NOT use platform specific types etc like NSSTring you need a platform specific wrapper (abstraction layer) that lets you write code that only uses Mono types.
i.e. You are asking about using Mono but what you actually need are MonoTouch and MonoDroid (the frameworks referenced by #valdetero, depend on having those wrappers underpinning them).

Comparison between native language or cross platform language such as HTML5 for mobile applications

After I researched in some websites, I found that it is better to use cross-platform language to write apps.
But, is it good for using HTML5, and is there any tutorial for writing applications for mobile?
It's not better, but it is faster and easier. Android wants Java, iPhone wants Objective C, meanwhile you can fire up e.g. PhoneGap and write everything in JavaScript. Thus, you save time on development, but the application itself will run slower, it will take more work to make it conform to the platform look and feel. As for tutorials, they accompany each individual framework.

Mobile application development frameworks : The Good, bad and ugly?

Over the last couple of years( or maybe less ) a number of different mobile application development frameworks have come up that promise you the ability to create cross platform( in some cases ) mobile applications without native device SDK programming. Some of these are OpenPlug, Redfoundry, Appcelerator, PhoneGAP, RhoMobile , Ansca-Corona
This list is steadily becoming bigger so it’s a bit of a challenge to know which are the good ones from the not so good and bad ones out there. Anyone in this group has any good/bad/ugly experience with any of these these ? If you've used any of these , are these really good enough to build real world applications ?
I'm just getting into rhomobile (Rhodes 3) and finding it very very good, mainly because I'm a Ruby/RoR developer and I am not having to face learning yet another development language and I'm finding this to be a thoroughly enjoyable experience although a little confusing to start with.
I'm tending to shy away from rhohub and develop on my local machine which I find a lot simpler to do for many reasons.
I previously had a play with buzztouch but it didn't produce a native looking app, however it works very well if you don't want to do anything too complex (functionality is quite limited)
I guess the best advice I can give you is to try out the different platforms starting with the platform that covers the language you prefer and see how you get on
We have used Phonegap to develop many cross platform applications. PhoneGap, also known as Apache Cordova, is a technology that lets programmers build a mobile application and then wrap it in the PhoneGap framework that can be installed as a native mobile application across multiple mobile device platforms easily.
Our experience with this has been very good in relation to the kind of data driven apps we have built.
If you are web programmer proficient in HTML5, CSS and JavaScript then PhoneGap brings you new opportunities! You can build native mobile apps using the web technologies that you know and love: HTML, CSS, and JavaScript. Applications that are developed using PhoneGap are hybrid applications. Parts of the application – mainly the UI, the application logic, and communication with a server, is based on HTML/JavaScript. The other part of the application that communicates and controls the device (phone or tablet) is based on the native language for that platform. PhoneGap provides a bridge from the JavaScript world to the native world of the platform, which allows the JavaScript API to access and control the device (phone or tablet).

Mobile cross-platform classes

Does the fact that different mobile platforms can use similar languages implies that you can reuse classes between these platform ? For example c++ code on iOS, Android and Symbian devices. Or is there some other things to take into account, libraries, etc. ?
In the same spirit would it be possible to share C# code between iOS, Android and Windows Phone using MonoTouch and MonoDroid(eventually) ?
Edit: Would it be possible to share the UI code between MonoTouch, MonoDroid ?
No, the languages are definitely too different. To be able to reuse classes they would have to be written in the same language. And since Apple have been kicking out every language except Objective-C from iOS, you won't be able to reuse code. The state of MonoTouch after Apple's (outrageous [subjective]) decision [1] is now very much in doubt.
However, in typical dictatorship fashion [subjective again], Apple have not been completely consistent, so they have not prohibited the use of technologies like PhoneGap ( http://phonegap.com ) or Titanium ( http://www.appcelerator.com/ ). There you write your application in HTML5, Javascript & friends. If you can live with writing apps using these techniques, a cross-platform approach with only one codebase is still possible.
And of course, remember that algorithms are not language specific. Classes in different langages can often be made almost identical in function, although you'll have the disadvantage of having to maintain several of them.
Edit:
Clarifications from discussion:
There is actually support for using C++ classes [2]. That opens up possibilities of code sharing of more abstract parts of an application.
The state of MonoDroid seems to very much unclear. The discussion referred to in [1] is long and have several strong answers pointing in both directions. It's important to remember that Apple's de facto target in their new licencing clauses are Flash, not cross-platform frameworks in themselves, no matter what Steve Jobs says [3]. That leaves open the possibility that Apple may want to silently allow apps based on MonoDroid or other cross-platform frameworks.
[1] As usual, this is not 100% clear, for example see this question: Is MonoTouch now banned on the iPhone?
[2] http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/ObjectiveC/Articles/ocCPlusPlus.html#//apple_ref/doc/uid/TP30001163-CH10-SW1
[3] http://www.apple.com/hotnews/thoughts-on-flash/?aosid=p204&siteid=1503186&program_id=2554&cid=OAS-EMEA-AFF&tduid=fb90c7ac85c9a334decb42b892cda59b

Resources