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
Related
Since there are different standards to develop Apps for the different Mobile Platforms, perhaps J2ME maybe a common base for all.
Is J2ME supported by most modern phones, particularly those by Apple(they tend to be different from others).
No. Android, iOS don't support J2ME.
Actually J2ME is supported by most older phones and less so modern phones. Most of the phones prior to the big touchscreen breakthrough of iPhone supported three standards.
J2ME - which applied to the largest subset of GSM phones
BREW - A proprietary OS and software package for CDMA phones on the
Verizon network
Symbian - A proprietary technology for another subset of GSM
phones produced for Nokia phones primarily and maintained by Nokia.
J2ME is the most popular of the bunch and applied to most of the phones you would see from the likes of Motorola, LG, Audiovox to name a few.
Some select Windows Mobile phones today also support J2ME, but it's hardly a standard anymore.
You can see which phones currently support J2ME by going to PhoneScoop phone finder and filtering by Java-ME.
http://www.phonescoop.com/phones/finder.php
If you are able to install kJVM into a phone then you can install any J2ME application on it. But remember j2me have lots of restrictions .
What is the best IDE for developing a C++ application targeting Symbian UIQ-based phones like p990 and p1?
So far I have come across Carbide C++ which seems good but I am not sure if it supports UIQ (maybe it only supports S60 platform) and if it's the best option.
Yes Carbide C++ is the right answer. UIQ SDK availability is another story, however. After the bankruptcy of UIQ the rights to UIQ were locked down, and have not been contributed to Symbian Foundation.
As far as I know there is no "legitimate" way to get hold of the SDK. On the other hand, there is no rightsholder who will chase you down if you do...
Carbide C++ should support UIQ, but I think you need to download a UIQ SDK separately.
Not sure where you can get that today as UIQ has closed there website.
Sony Ericsson used to have SDK extensions for some of their devices available from developer.sonyericsson.com
Sony Ericsson has a UIQ archive here.
It mentions Borland C++ Builder and I seem to remember that the UIQ3 SDK also supported Visual Studio.
Do you absolutely need to be programming in C++? It should still be pretty easy to write JavaME applications for the P990 and P1.
This question may not directly relate to programming. I have noticed that the technology of today has gone mobile. I want to go mobile with it. What is the most popular mobile OS?(excluding iPhone OS. Sorry, I don't have a Mac to develop on) Some choices could be BlackBerry OS, Windows Phone, Symbian OS, Android OS, etc. I want to make and sell applications for a mobile OS.
If you have Java experience, learn Android. It's becoming widely popular next to the iPhone. Although, I cannot prove that it is the most popular mobile platform to develop on, but it's popularity is increasing.
If you are interested in publishing an applcation for Android you would need to signup on the Android Market.
It would also be wise to read the Android Market Developer Distribution Agreement so you can learn about processing payments, fees, and any other aspect when publishing paid apps.
One thing to throw in the mix while deciding this is the percentage of handsets having a given platform in your target market. Iphone and Android seems to be the platforms for the future, their adoption is going to increase. But if your target market, say India has a significant number of J2ME supporting handsets, then it would make sense to start on J2ME. This aspect needs to be researched and factored in while making your decision.
Also if you design carefully it possible to support multiple platforms, say, Android and BlackBerry since both are Java based.
Difficult question.
While Blackberry detains the biggest share on mobile market, Android is surely coming out fast. I think Windows Mobile isn't at the level of the others, so my choices are BlackBerry and Android. If I have to choose, for the future, Android.
I agree with Anthony, Android is the way to go if you have Java experience. If you have more Microsoft experience, then take a look at Windows Phone 7. It's totally different than all previous Microsoft phone systems and everybody is starting from scratch. It's anybody's guess how successful it's going to be but it does have a big company behind it, and what you learn there will be applicable to many non-mobile scenarios as well whether you choose Silverlight or XNA as your development environment.
A survey by Admob http://metrics.admob.com/2010/03/admob-publisher-survey/
Pretty much explains what you are asking :)
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 need to develop some programs for mobile devices but haven't decided the platform to build upon. I'm looking for Palm or Pocket PC devices that have Touch screen and Wi-Fi connection and are cheep because I'll need to buy several of them.
I don't really need camera, mp3 players, video players, pdf readers or anything else since the apps are going to be simple data collection to feed via wireless to a server database.
I'm proficient with C and C#. I could learn Java if I had to.
What devices do you recommend? Linux devices maybe?
PS: Changed the title because I don't want a flamewar between platforms. Please, don't answer with Windows Mobile sucks/rules. I'm looking for devices instead.
Thanks
Windows Mobile
It supports C#, and Visual Studio comes with the mobile SDK. So if you know C# you probably already have the tools you need. And in spite of the iPhone/iPodTouch buzz, the Windows Mobile deployment is still 10X greater.
In order of preference
Neo Freerunner
Maemo & the N800 (cheap)
Beagleboard
If you are comfortable with Visual Studio then programming for windows mobile is extremely easy. The SDK for mobile comes with emulators for all the latest and popular versions of windows mobile- and you can even debug on teh device itself using a USB cable.
On windows mobile you have a choice: Develop a .Net application or develop native (likely MFC based). Either one gives you a great development environment.
As far as iPhone development goes- you would need an apple computer to install and use iPhone SDK- and you can't run an iPhone app on your phone. You would have to go through the process of getting it registered with iTunes for you to install your own apps on your own phone!
When I first started playing with mobile development I had a few questions:
Can I develop using my favorite IDE- Visual Studio. Will it be as easy as developing a desktop app: yes.
Will I be able to access the internet from my application without 'unlocking' or in some other way enabling the phone that was not intended by the service provider? yes.
Will I be able to access device specific functionality such as GPS easily? Is there good support for doing so within the API? Yes.
You should probably target the Windows Mobile platform. The Palm platform is rather archaic and no longer widely used. The development environment is also rather spartan, while Microsoft has full IDEs available for Windows Mobile development. You might also consider the iPhone/iPod touch platform - I have a feeling the number of devices will multiply at an exponential rate and I've heard that developing applications is much easier due to the completeness of the system stack.
You should probably at least evaluate the Apple iPod Touch. It certainly meets your basic "touch screen + WiFi" spec, and your users presumably won't object to all the the other nice features that will come along for the ride.
I don't know what your cutoff for "cheap" is, but $299 for the base model seems pretty reasonable for a high-quality touch screen and WiFi in a pocketable device.
Windows Mobile and CE used to suck, really, really badly. These days however it's definitely passable and worth checking out, especially if you code C#.
Just remember that it is the baby brother of the full framework and has nowhere near enough toys and throws a lot of NotImplementedExceptions. :)
Blackberry publishes its SDK on its web site. Its apps run J2ME, so with some Java experience it shouldn't be too difficult to get started. They also give you an emulator. Disclaimer: I have no experience in writing Blackberry apps, but I looked into it once.
I would not recommend a PalmOS based handset. I have written code for PalmOS and it's about as painful as writing raw Win32 code in C. Since Palm has switched its high end handsets to Windows Mobile, PalmOS will just remain stagnant and only run on the slower, less capable hardware.
If I were to write a mobile app, I'd agree that Windows Mobile is worth checking out.
It all depends on the users who you are targeting at, If you are looking for a wide market then you should be fine with J2ME/Blackberry . However most of them lack the touchscreen and wifi features ( The HTC range of phones [WIFI/TouchScreen/Windows Mobile] have a JVM built with it),so it would work on most of the Windows devices also.
If you are making a more niche product, moving with the current buzz 'iphone' will be good . Windows Mobile is also worth checking out
The best option here would be the Neo Freerunner, with that device you can build a dedicated unit were every aspect is made especially for you're needs. The Freerunner is WiFi enabled, and has a touch interface. If you use the Qt SDK, a lot of the work is already done for you. It comes complete with emulator, as a Live linux cd. You can run in a WM, such as wmplayer. Everything is included.
I'm not gonna lie, it will take tweaking. But the final product would be really nice and intuitive.
Looking at Windows Mobile devices, your requirement of touchscreen pretty much sets your pricing at the higher end of the spectrum. You'll get those things you say you don't need just because of that.
Here's expansys's selection of touchscreens.
Mobdeal is a handy one too as that effectively filters all phones by features.
I've developed against the HTC TYTN 2, HTC Touch Diamond and randomly a PSION Teklogix Ikon
There's generally very little difference between these models, some manufacturers have SDKs that can help sometimes.
I think your cheapest option will probably be something like getting HTC TYTN 2s on ebay. They're pretty old now (hence cheap) but have Wifi, camera, touchscreen, qwerty keypad all the things you seem to be after.
you can target iPhone "touch" platform with Apple's iPhone SDK. the development environment requires a Mac, but you can get the entire IDE + tool chain + excellent debugging and profiling tools for free. And the free documentation is top notch.
As a registered iPhone developer, it is free (no cost) to target the simulator, which is sufficient for most learning and development you'll likely need to up front.
To target the actual hardware device (and up to and including release/selling your app on the Apple's AppStore) is only $99/yr. If you got an iPod Touch for your hardware target, most of the SDK applies and you are not tied into a service contract for an iPhone.
iPhone app development environment is in Objective-C, but it is a really productive, object-oriented environment so do not concerned that that may be a language you are unfamiliar with.
If you decide that your mobile app(s) would be better suited as webapps, the iPhone/iPod touch platform again is an industry leader in this space, and you have the additional benefit or being able to target other mobile platforms (and not necessarily be tied to one mobile SDK).