I am a mobile application developer and have pretty decent experience in Windows Phone application development and Android. Now, I want to start developing for Blackberry also.
Going through the offcial BlackBerry website, I came to know it is possible to port my existing Android applications to Blackberry 10 and BlackBerry Playbook by using the various Runtime for Android apps tools.
My question : What is preferable? Should I develop applications for Blackberry using the standard Blackberry Java SDK or is it okay to make my applications on Android and then just repackage them for BlackBerry-10 and BlackBerry Playbook? I am aware of the fact that some of the Android applications might not be compatible with BlackBerry, such as pacakges that rely on Google Maps or Android's Text-to-Speech Engine, but right now I am not planning to use them in my apps for Blackberry.
Given my knowledge in programming, I guess I have three options :
Build using the C/C++ NDK
Build Applications on Android and then later repackage them for BlackBerry
Build using BlackBerry Java (Mobile Edition)
Which is the most preferable one and convenient one ?
I am very comfortable in Android but have no knowledge in J2ME. Hence, I thought that instead of learning to make my way around the UI in J2ME, I would just do it in Android and repackage it for Blackberry. Would that be the correct way of doing it ?
You've mixed up the legacy BlackBerry Java platform with the newer QNX based BlackBerry Playbook (tablet) and Blackberry 10 (phone) platforms. You first have to decide which platform you are actually targeting. Typically, "BlackBerry" without any qualifiers means the BlackBerry Java platform, which is the platform with 80 million users right now. BlackBerry 10 is still in development, so has no users, and BlackBerry Playbook has substantially fewer users than the BlackBerry Java platform.
If you want to target those 80 million BlackBerry users, then there is no real decision here - only Java-ME apps will run on that platform. There is no Runtime for Android on the legacy BlackBerry platform.
If you are looking to the future, and want to target BlackBerry 10 or BlackBerry Playbook, then yes, the Runtime for Android is a good choice for you, if you already have an Android app written.
You mention JavaME but also mention repackaging an Android app. JavaME corresponds to the java-based BlackBerry platforms; the current version is BlackBerry 7.1. The Android player is not based on JavaME but rather follows the Android versions and is only available for the new BlackBerry platforms, including BlackBerry PlayBook OS (2.1 is latest) and BlackBerry 10, currently on beta 3 (note that RIM has already announced it will provide a port of BlackBerry 10 at some point).
Many Android applications will just need repackaging, not even recompilation. Repackage and submit to the PlayBook/BlackBerry 10 store.
See https://developer.blackberry.com/android/ for more details.
Native Blackberry development means:
1) Java ME for OS 7 and lower - huge customer base
2) QNX for Playbook - smaller customer base, will be replaced by BB10 in Q2/2013
3) Cascades/Qt/QML for BB10 - difficult to estimate how big user base will be
My personal feelings from Blackberry 10 development:
I'm quite skilled Android developer (my apps in total have more than 6 millions downloads from Play Store) and I spent some time with developing BB10 app with Cascades/Qt/C++ and I must say that it is sometimes even easier than Android development and learning curve is steep.
Especially QML is much more easy to use and intuitive than Android's layouts. While creating app for BB10 you can mix QML/Javascript code with C/C++ (theoretically it is even possible to avoid C/C++ and use QML/Javascript only).
Worst thing for me was C++ as this language (comparing to Java) has more features (multiple ways how to use pointers, multiple ways how to create object instance, overridden operators and preprocessor macros) so it is easier to get lost than in Java. But it was still doable nothing crucial.
Regarding porting Android apps: I don't think it is good idea. They look ugly on BB10/Playbook so I don't think they will give you success.
Good to hear that you are comfortable in coding with Android. And would congrats you that Blackberry has opened a path for you to deploy your application in blackberry world.
So,clear your mind leaving few thing your application will be accepted by Blackberry users.
Since you are coding for android, it means you are comfortable with java.And you will be tooo comfortable with J2ME.
Its almost same.
Now QNX is a little different but not that different that you won't understand.
And above all you know c/c++ .
Welcome to Blackberry world ... don't think so much ...give a try
Related
I have developed application for android based mobile using Java. I have tried developing apps for Windows based mobile phones using C# and heard about iOS that one would need to know Objective C.
Wondering if there is any way to have one language to develop an application that can run on all these platforms. I understand every operating system executes programs having different binaries that it execute. But just wondering if there is any common platform like JRE that is run on these mobile operating systems.
Thanks for the reply
Short of working with HTML mobile webapps, I reckon your closest bet to a common language between the 3 platforms would be C# using Mono.
Check out Mono for Android and MonoTouch for iOS both supported by the same company.
Whilst you could probably use the same language for your apps and even share internal APIs across the different platforms, you would still start to encounter differences in how the UI is handled on each of the platforms.
There is a project: http://www.appcelerator.com/platform which can be used for writing apps for Android and iOS... But from my experience I can tell that this is good only for simple prototype apps. The more fancy app, the bigger issues you would have with it.
I am developing an application which is kind of similar to Skype with some more features. I am amused and surprised by Skype's response to various mobile platforms i.e. iPhone, Android, BlackBerry, Symbian, Bada OS etc.
I want to know how Skype is able to so rapidly release versions for iPhone, Android and Blackberry?
Do they write code targeting every platform separately or do they write code once and then use some utility to make it available across all platforms?
As a developer I am kind of curious to know the real technique which can be the reason of behind the scene magic. Any clues?
Answers with valid sources and references are more appreciated.
They are an $800 million/year revenue company, its probably not a huge deal to support many platforms.
From Quora : http://www.quora.com/Skype/What-programming-language-was-Skype-originally-written-in
The original internal alpha version of UI was built in QT and we hoped
to do few platforms at same take. However the result looked like crap,
our progress seemed slow and we ditched the QT about 2 months before
public beta release.
Delphi was chosen because our first senior UI developer was very
skilled at Delphi (besides dozen other languages-environments) and we
saw D as most productive, fastest, efficient way to build our app
given our team/lead developer skills and also getting very good UX on
MSWin platform.
For linux the QT remained and on OSX it has been Cocoa from the start.
The functional core components which did the heavy lifting under the
UI have always been the same C/C++ as Ahti pointed out.
They developed different versions for every platform. There is no single language that supports all platforms, unfortunately. If there was, it'd still be a hassle because every platform his it's own platform API.
I have to develop an app for the Ipad. It has to be non-browser based. That's a requirement and I can't change it.
I think it likely that the app would be useful on other tablet PC types and have a good chance of a second app which requires IPad and Android at a minimum; Windows and Linux would also be useful.
If it makes any differences these are "desktop" apps for tablet PCs and it is not envisaged that there will be any handphone development.
Is there a “Grand Unifying Theory” of cross-platform desktop app development? Is there a good IDE, preferably FOSS? I'd rather code C++ or Java and am less keen on Ruby or Python (through lack of experience) but would accept if there is no alternative.
I need a GUI builder, something like Borland Delphi or MSVC or the Eclipse Android plugin and I need a way of executing different code on different platforms (#ifdef Android … etc)
Any ideas, or should I just go ahead and code the current project for Ipad only and stick to browser based HTML5 + CSS3 with Jquery/Ajax for cross platform apps (the problem being that some will need to execute native system calls, like en/de-crypting a file and at least one app has to work in “local mode” if there is so internet access, so I guess I would have to bundle a web server (Apache) if I go browser based (in order to serve the web pages), which would not be necessary with a “desktop app”.
Any recommended IDEs, Web sites? Books? Thanks
The "grand unifying theory" is that core business logic should reside in the cloud; that allows your iOS and Android implementations to be just a thin GUI on top of this shared logic. Unfortunately, there isn't really a way to reuse the GUI, and even if you did, it would go against the intuition of users on one or both platforms, since you wouldn't be using the paradigms of those specific platforms.
Google App Engine provides a way for implementing your core business logic in Java on top of Google's cloud computing infrastructure at reasonable costs (development is free, cost is proportionate to usage, and one can put caps on how much one is willing to pay). There is an Eclipse plugin for developing App Engine applications. When developing for Android, you will similarly want to use Eclipse (there is a plugin specifically for Android development), although the Android SDK can be used just from the commandline (which is good for setting up a continuous build and test system).
For iOS, you will want to use the standard Xcode and the iOS SDK. Xcode is an IDE, but it is possible to build Xcode projects directly from the commandline using the xcodebuild command (also good for continuous building). The standard language for iOS applications is Objective-C.
You should take a look at jQuery Mobile. I used it to cross develop between Android and Playbook. I know that it also does iOS.
Maybe for you the downside is that you have to program in JavaScript.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
More and more mobile platforms are being launched and sdk's are available to developers. There are various mobile platform are available:
Android, iOS, Moblin, Windows mobile 7, RIM, symbian, bada, maemo etc.
And making of cross platform application is headache for developers. I am searching for common things across the platforms which will help to developers who want to port application to all platforms. Like what are the diff screen resolutions, input methods, open gl support etc.
please share details that you know for the any of platform.
Or are there possibilities, by writing code in html (widget type of thing) and loading it into native application.
I know about the android, in which we can add the web view into application by calling setContentView(view)
Please share the class details where we can add the html view into native application of different type of platforms that you know.
Purpose of this thread is share common details across developers. marking as community wiki.
Cross platform tools & library
XMLVM, Codename One and iSpectrum (cross compile Java code from an Android app or creating one from scratch
Phone Gap (cross platform mobile apps)
Titanium (to build native mobile and desktop apps with web technologies)
Mono Touch ( C# for iphone )
rhomobile - http://rhomobile.com/
samples are here: http://github.com/rhomobile/rhodes-system-api-samples
Sencha Touch - Sencha Touch is a HTML5 mobile app framework that allows you to develop web apps that look and feel native on Apple iOS and Google Android touchscreen devices. http://www.sencha.com/products/touch/
Corona - Iphone/Ipad / Android application cross platform library . Too awesome.
http://anscamobile.com/corona/
A guide to port existing Android app to Windows Phone 7
http://windowsphone.interoperabilitybridges.com/articles/windows-phone-7-guide-for-iphone-application-developers
Jquery MobileTouch-Optimized Web Framework for Smartphones & Tablets
My answer here covers some of the technical limitations of cross-platfrom tools but let me expand a bit:
I think that cross-platform tools have historically always been also-rans because such tools have the wrong philosophical focus.
All the selling points for cross-plaform tools are the benefits they bring to developers. They are sold on the idea that they allow the developers to write-once-run-anywhere. They are sold on the idea that they allow the developers to expand their market without learning new APIs. They are sold on the idea that they allow the developers to slash cost and time to market.
What cross-plaform tool are NOT sold on is the benefit they bring to end users.
Benefit to the end user is not a selling point because cross-platform development is seldom a benefit to the end user. The end user does not care how hard the developer had to work to bring the product to market. Nor do they care how many platforms the app can run on when they they don't use but one platform. They just care if the app does what they need it to on the hardware they need to run it on. Unless they have a specific need to run the app on many different platforms, the fact that it does brings them no value.
Conversely, the inevitable compromises of making a cross-platform API mean that all the apps created by the API will be at best B-grade on every platform. They will never be the best tool to use on each platform.
All this means that in most use cases, cross-platform tools give the end user an inferior product compared to ones made with platform specific APIs. The end user will always have a better choice.
You make money in the long run by giving end users the most useful tools. If you don't philosophically concentrate on making the end user's life easier and more productive, you are pretty much doomed from the outset. End users have lots of choices and if your tool isn't one of the best you won't make it in the market.
You should only use cross-platform tools if you think, "the users will really benefit from running this app on many different platforms." If you start out looking at cross-platform tools solely because they will make your (the developers) life easier, then you have picked them for the wrong reason and they will hurt you more than they will help.
There are several approaches to cross-platform development on mobile devices. Of course they all have limitations. No solution manages to take advantage of all the device's functionalities the way a native application can.
Re-using code
While all mobile OS don't use the same development language and API you can sometimes share some classes or logic tier code.
C++ for example can probably be re-used for an iOS application, for an Android app by using the NDK, for a Symbian app since they are developed in C++, etc.
Some solutions also offer the possibility to write the app in an other language than the one normally used by the device. The most famous (in fact the only one I know) are commercial and based on the Mono project (C# development):
MonoTouch for iPhone [ 1 ]
MonoDroid for Android (still in development)
Similar project for BlackBerry (still in development)
But I'm not sure we can really call this cross-platform development since the re-use of code is limited depending on the device :
Windows Phone 7 will not allow native code development (maybe in further updates)
AFAIK mono like project do not exist for all platforms (yet?) bada, webOS, maemo, etc.
And the UI part also stays specific to each device.
Web development
A regular answer when asking about cross-platform development for mobiles is web development. We would then need a wrapper, that will use the mobile browser, to make it look and behave like a native application. That is how some of the cross-platform framework that we will see further on work.
The rise of HTML5 brings to web development functionalities that could only be done with a native application like geolocation, off-line application, local storage.
We can found more and more frameworks to develop web application for mobiles with a native look and feel by taking advantage of the latest web standards HTML5, CSS3, Js:
Sencha Touch
JQTouch based on jQuery
JQuery Mobile framework
But HTML5 is still very young and implementation may vary from a browser to another. Most default mobile browsers use the WebKit engine (main exception being Windows mobile/phone using Internet Explorer) and even so they don't necessarily support the same functionalities. Local database is still awkward to work with and we can't be sure how it is going to implemented by the different browsers. Moreover, even with HTML5, web development is still very limited compared to a native app. You can't access contacts, camera, accelerometer, etc.
Edit: Earlier this month the W3C have delivered some warnings about the evolution of HTML5: Article from ZDNet
So it will only suit a limited category of applications.
Cross-platform frameworks
And than we have the cross-platform mobile applications frameworks. With which you can presumably develop once and deploy on different platforms. These solutions usually focus on iOS and Android and rely on the WebKit engine. They offer more interaction with the phone functionalities while developing with web technologies. The most well-known are Nitobi PhoneGap, RhoMobile Rhodes, Appcelerator Titanium. But many others are out there and don't all use the same technique like MoSync which translate your code to it's own intermediate language before compiling it for the desired platform.
[ 1 ] Remember that Apple has a special policy about apps written for their platform. They don't seem to be blocking these apps at this date but it is an information that should be taken into account.
Edit: Apple has changed this policy since September 9.
You get some commonality when deploying as a webapp (html5 as mentioned above) but for rich native apps the APIs are completely different for the various smartphones.
HTML5 may improve things somewhat but to do interesting things you need to go native.
There are 'cross platform' smartphone frameworks such as Phonegap but I've heard mostly bad things about using it for "real" work. (lots of overhead etc)
Yes, html5 is getting some attention. You should also look at this consortium & platform to come in Q4.
Not sure about the success of that project, as it sounds like a huge challenge, but here are the details:
Website:
http://www.wholesaleappcommunity.com/default.aspx
News:
http://news.google.de/news/search?aq=f&pz=1&cf=all&ned=us&hl=en&q=%22Wholesale+Applications+Community%22
WAC aims to publish its initial
specification and components of its
SDK to developers in November. This
specification will be based on W3C
standards and create a strong platform
for developing rich mobile web
applications. WAC will also provide
backwards compatibility for devices
based upon the current JIL and BONDI
specifications.
(http://www.convergedigest.com/Bandwidth/newnetworksarticle.asp?ID=31021)
.
It IS an international coalition of around 25 telecom companies that's aiming to create a platform open to all developers and selling to all mobile phone users.
(http://www.downloadsquad.com/2010/02/15/atandt-wholesale-applications-community-is-a-platform-not-an-app/)
As far as I know most of those devices are able to run this:
Java ME - the Most Ubiquitous Application Platform for Mobile Devices
I think this can serve both as good and bad example.
Can anyone please clear my doubt regarding the query that does Android Programming has anything to do with the J2ME?
Does Android Development comes under J2ME Platform as J2ME is used basically for the Mobile Applications and Android is also the same one.
Please let me know if anybody is knowing it.
Android has nothing to do with J2ME beyond using the core Java language. In fact, the standard library is more reminiscent of Java SE.
Like Yann mentioned , j2me is not Android and vice versa, however they use the same language with different VMS. Google basically created their own JVM called DAVLIk which got Sun to sue Google because google used their technology without their approval.
There are however some J2ME to Android wrappers. LWUIT currently has such a wrapper.
in both same language will used which is JAVA.
but j2me is made for small devices which is run on kJVM .,
Android is basically made for smart devices.,
using j2me we can developed Third party app .,but Android is the native app which is fully supported by Android OS.
Also you may want to look at MicroEmulator http://microemu.blogspot.ru/2009/08/converting-javame-applications-to.html, it provides J2ME CLDC/MIDP wrappers for Java SE and Android, so basically you can write a midlet and pack it with MicroEmu to run on Android. But it will limit your app to J2ME UI which is quite weak, no comparison with Android. CodenameOne (former LWUIT mentioned in other answer) is a best choice for a cross-platform solution if you need to cover J2ME, Blackberry, Android, iOS and Windows Phone. But if you do not need to support J2ME and Blackberry, there are other solutions too (Xamarin, Marmelade, PhoneGap)