what are the operating systems which run on mobile devices?On which language are these developed?
For the major smart-phones:
As of Q2/2009, the majority of smart-phones run Symbian OS, and applications are developed using either a specialized version of C++ or a variety of other languages including Python, Java ME, Flash Lite, Ruby, .NET, Web Runtime (WRT) Widgets and Standard C/C++.
iPhone runs iPhone OS, and apps are generally developed in Objective C.
Blackberry runs BlackBerry OS, and apps are developed using Java.
Palm Pre runs webOS, and applications are written in JavaScript.
Many newer smart-phone devices run Android, and apps are developed using Java.
Many other smart-phones run Windows Mobile, and applications would typically be developed using either C++ or languages on the .NET Compact Framework, which include C# and VB.NET.
For a long list, see this Wikipedia entry.
Short list of a few currently-popular options:
RIM devices run BlackBerry OS, apps can be written in Java
The iPhone/iPad run iPhone OS (OSX derivative), apps can be written in Objective C
A variety of devices run Windows Mobile, apps can be written in a variety of languages
A variety of devices run Android, apps are typically written in Java
Newer Palm devices run WebOS, apps can be written in web languages (HTML 5, CSS, JavaScript)
A variety of devices run Symbian, apps are typically written in C++ (although other options like Java and Python exist)
Related
I want to develop an application for Nokia mobiles. For that I need the Nokia OS and a suitable SDK
Where can I get these two, possibly with some sample applications to ease the learning?
This looks like pretty much everything you would need to know - I know it's not a specific answer but it should provide a great starting place:
http://www.forum.nokia.com/
Nokia phones use Symbian OS. Symbian is an open source OS, which was maintained by the Symbian.org.
Unfortunately, Symbian.org recently converted to a licensing body only and stopped any further development on the OS, and as part of that the Symbian official website was shut down. The Symbian platform is still accessible over FTP, until March 31, 2011.
The further OS development will officially be driven and maintained by Nokia. You can read the latest news about this from Nokia official Symbian blog. You can find some samples and documentation about the platform at Forum Nokia. There you can also find the latest Symbian SDK (S^3 SDK), along with other Nokia-specific SDKs and libraries, like S60 development library and Qt development library.
what you refer to as Nokia OS in fact:
legally not available to 3rd party
not suitable for "normal" binary apps - it had been designed to not have installable applications in order to protect telco environment from malware and other risks on terminal side
you can develop at least for S40 but you don't need "Nokia OS" for that, all necessary tools are available there - it is common J2ME programming with (optionally) some Nokia flavors
I bought an iPod touch 3rd Gen half year ago, and I got recently an iPad WiFi. I also have a Onyx Bold Blackberry.
I don't have a Mac Book or any other apple product of laptop.
As a programmer, I speak C, Delphi and Java. I'd like to start playing around in mobile application.
I don't know whether I should start in Blackberry platform, iPod /iPad platform, or Android platform.
Ok, for each platform, what is the cheapest way to get started to play around the language?
1. Blackberry
2. iPod
3. Android
Learn HTML5 and you can build apps that can work on all platforms such as IPhone/IPad, Android and Blackberry. You can just build a mobile version of your site such as mobile.mysite.com. You can then choose to implement the server side with the language of your choice/familiarity.
The path of least resistance and also of lowest cost for you is Java development for Android. Only problem, you don't seem to have an Android phone. Though i'm sure you can pick up a used one cheap.
Why: The Eclipse IDE is free, there are free Eclipse plugins available from Google for Android dev, there's no annual dev cost like with iPhone/iPad development
In my opinion, you should start with an Android phone. You will be able to write your applications in Java, and test your applications on the device. The iPhone requires that you write your applications in objective-c, and requires developers to be a part of the iPhone Developer's Program in order to run their applications on an actual device (The membership fee is $99/year).
The documentation for the Android OS is superb, and once you have installed the Android SDK with the Eclipse Plugin, you can have a hello world application finished in a few minutes.
What SDKs/Tools/Toolkits/IDEs should I download to start programming mobile applications for iPhone, Symbian and BlackBerry from within Windows platform?
And from where can I download them?
For the iPhone platform, your current option is to become an iPhone developer, use the iPhone SDK and develop on a Mac. The IDE you will most likely use is XCode and the language of development will be Objective-C.
The Mono project seems to be developing an alternative to this in the form of the MonoTouch framework. Using this framework you can develop your iPhone applications in C# using MonoDevelop and they will be compiled to native iPhone applications; however, you still need the iPhone SDK and you still need to develop on a Mac. This framework is in closed preview at the moment, though.
For Symbian, it used to be the case that you needed to develop using the C/C++ libraries provided by the Symbian SDK but now you have the choice to develop in C++ using the Qt for S60 toolkit (I should note that it is still a technical preview).
Depending on what you are trying to build, you might want to develop J2ME applications which will work on all Java-enabled phones (thus you won't be limited to just the S60 platform). You can develop such J2ME applications using the EclipseME plugin for Eclipse.
For Blackberry, the default development environment is the Blackberry JDE. However, I hate the user interface on that tool and (for me at least) the usability leaves a lot to be desired. However, you have an alternative: There is an official Blackberry JDE plugin for the Eclipse IDE that makes developing Blackberry applications a joy (well not so much :) but still makes it really easy)
In case you are interested, you can develop Windows Mobile applications in C# targeting the .NET Compact Framework using Visual Studio (I think you can use the Express Edition, which is free).
Then, there is the Android platform. The default development environment for that platform is using the Android Eclipse plugin and developing in Java.
Hope, it helps.
iPhone sdk
Symbian
Blackberry
For Symbian, I would recommand Qt.
Moreover, you can use it for Windows CE based mobile.
From here I read S60 is currently amongst the leading smartphone platforms in the world.
However I can't understand:
What the S60 does, what is the need
for a platform when there already
exists an underlying Symbian OS?
If I write applications in Symbian
C++ or Java ME is it for the Symbian
OS or the S60 platform?
Can I directly write apps for the
Symbian OS bypassing the S60 layer.
S60 is essentially a UI framework and a collection of middleware components on top of Symbian OS. Historically, Symbian provided the base operating system (e.g. kernel, communications, multimedia services, core application engines, reference UI) and device manufacturers added their own code on top of it to differentiate from competition and to optimize their devices for a particular purpose.
S60 is one of these add-ons, originally developed for phones intended for one-handed usage with a keypad. There have been others UI frameworks on top of Symbian OS as well, for example Nokia's Series 80 and Series 90, UIQ and MOAP(S).
Now as Symbian is moving to the Symbian Foundation mode of operation, S60 and Symbian OS are essentially merged into one Symbian Foundation platform. The other UI frameworks have been discontinued. But devices currently on the market still have the distinction between Symbian OS and S60.
If I write applications in Symbian C++ or Java ME is it for the Symbian OS or the S60 platform?
Can I directly write apps for the Symbian OS bypassing the S60 layer.
Depends on which APIs you use.
With Java ME it's easier to write applications that don't rely on S60-specific add-ons. In C++ it's likely that you want some UI for your app and therefore have to use the S60 Avkon UI. Though, if you want more platform-independent UI for your C++ app, have a look at Qt for S60.
In any case, writing C++ apps so that the same binary can be run on all Symbian OS based devices is practically not possible. In Java, "write once run everywhere" works in theory, but in practice it's more like "write once test everywhere and try to work around the differences between devices".
In theory S60 is a UI framework (Avkon) and collection of applications, where as Symbian OS provides the fundamental OS services. In practice it is more complicated because S60 also features middleware and other services not limited to pure UI elements.
Symbian does feature a generic UI framework called UIKON but I don't think it is used very often. Also the Symbian world is pretty much dominated by S60 outside of Japan (which has it's own environment called MOAP).
Not sure about the Java question.
It depends what your application does whether it bypasses S60. You can write very simple apps and OS level services with no dependencies on S60.
I am willing to develop a mobile application. I wish to have something working for android, windows mobile, symbian and blackberry.
Which is the best way to do that?
I had read here:
You could aim to wrap the sections of
the platform specific APIs (iPhone SDK
etc.) that you use with your own
interfaces. In doing so you are
effectively hiding the platform
specific libraries and making your
design and code easier to manage when
dealing with differences in the
platforms.
I was hoping there exists a framework that does this for me, but it doesn't exist or I didn't find any.
I feel that sort of things will make my code harder to maintain and perhaps it's better to have one version for each platform.
Anyone with experience in the field?
Another links of interest:
most-promising-mobile-platforms
long-term-potential-of-iphone-windows-mobile-development-platforms
Does Java not count (in various guises)
Java on Symbian
Java for Windows Mobile
Java on Blackberry
Android Java Virtual Machine
It should be simpler to manage API differences in a consistent language/runtime platform where capabilities can be assessed in-code ... and configurations of code made at build-time.
As much as I dislike Java, it is fairly ubiquitous. As for the iPhone ... apart from it being much hyped and locked down ... you can get Java to run on jail-broken phones ...
What happened to Apple's open and friendly appearance? The cynic-inside knows the answer ;)
You might want to look into PhoneGap (http://phonegap.com/). From their own description page:
PhoneGap is an open source development tool for building fast, easy mobile apps with JavaScript.
If you’re a web developer who wants to build mobile applications in HTML and JavaScript while still taking advantage of the core features in the iPhone, Android and Blackberry SDKs, PhoneGap is for you.
In addition to using JavaScript, it supports JavaScript acccess to native controls and features of the phones (GPS, accelerometers etc...).
There really isn't any magic bullet that I'm aware of. Even within just the Blackberry platform, there are tons of different devices with different capabilities, screen resolutions, etc. And that's just from one, single manufacturer; Symbian and Windows Mobile are likely even worse.
The answer is likely that you should focus on relatively new and consistent platforms (accordingly with very few and all pretty much similar devices), like Android and iPhone OS, if you really want to reduce your code forking and maximize your audience.
My advice will almost certainly change within a few years when there are nine different iPhone OS devices and two dozen Android platforms.
The first question to ask yourself is if you need a native application, if you do not then designing a mobile web site solution should give you the most cross compatibility, failing that I would make a iPhone and J2ME solution (the J2ME can then be ported for Android relatively easily) for the greatest coverage of users
Or investigate Movilizer. Supports iOS, Android, WinPhone, WinMobile, Desktop PCs, embedded devices, ... and many more. It uses a design once run anywhere approach.
http://www.movilizer.com
try out different cross platform dev tools,
Developing cross platform mobile application