best mobile ecosphere for developers - mobile

Now that the Windows 8 development environment is here I am interested in an actual comparison of the three major mobile ecospheres; Windows Phone, IOS & Android, from a development perspective.
Objective things to consider are...
The cost to buy in (price of Visual Studio, Apple Developers group, etc).
The percentage of actual dollars spent on apps in each realm.
The percentage of sales paid to the App Stores.
The power of the development language in real terms such as lines of code, and number of classes to achieve similar functionality.
The maintainability of software from OS release to release ( for example how easy is it to accommodate new screen resolutions ).
The availability and completeness of mocking and testing frameworks libraries and IDE integration.
How friendly to developers are each and in what ways, based on measurable facts?

Related

Most popular mobile platform to develop on?

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 :)

Free cross-platform tools for web development [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 3 years ago.
Improve this question
This question is geared towards a group of newly hired developers that need to adopt into a minimal learning curve, maximum development/programming/management effort. Some of the developers have senior level experience and will be mentoring the junior developers. My question is I would like a solid set of tools that can run on any system (as they can choose what they like) but be the same for the entire group. The focus is on Mobile web (Not App) Development but are looking to venture into the Application market once the team gets up to speed with the web development.
Categories of software I need,
Web Development:
IDE (I think I'm set on Aptana stand alone version, unless someone sees something better)
Database GUI (I like DBVisualizer but I'm open to suggestions. MySQL and PostgreSQL are my options)
Code Repository (SVN, GIT, CVS ???)
Debugging tools (need server side as well as client side)
Frameworks (PHP, Ruby, Perl, jQuery, CSS framwork???)
Development Methodology (Agile, Scrum, etc...)
Workflow Documentation (Something like Visio but free)
Mobile Browser set (Firefox, Multi IE, Opera, Safari, Google Chrome) Why/Why Not???
Missing anything from the list???
App Development:
Application SDK's (iPhone,Android, Pre if it still exists)
Handset device
Anything else I might need to plan for???
For communication we are using Google Hosted Apps as well as Wave.
Code Repository: Add Mercurial - Its the only free, distributed version control system that easily runs on windows, mac, linux, etc. SVN will be the only one of those that has a friendly interface.
You'll need to plan for how to make your UI cross platform compatible. As of this writing, its quite difficult to perform a write-once interface in HTML/JS. Although state-of-compatibility is getting better, I would plan to very carefully separate your UI from your business logic because I think you'll likely need to either deploy separate versions of the UI for each device or to have unified, but very simplified, UI that works on many devices (assuming a web app).
Plan on unit test your business code to make sure it works on all of your devices. The JS engines differ, and you need to know that early in your dev process.
Plan ahead as to how to handle user input. If your users have a physical keypad, for example, they'll expect to use it. You may want a very different layout for a site targeting Blackberries with trackballs, then an iPhone or Storm that uses finger taps.
Know ahead of time which platforms you will target, and then buy those phones. If its worth doing, its worth buying the phone. As an example, my first iPhone app talked to the database. It worked fine on the simulator but I was waiting for my developer key before I could test on the device. Once on the device, I discovered that what I thought would be a 1/2 second delay was more like a 40 second delay, which forced me to totally revamp the project.
Hope this helps.
IDE - I think Eclipse (Aptana is a custom version of Eclipse) is a good choice for a cross platform and cross-language IDE. You could also look into NetBeans.
Database GUI - I haven't used many DB Visualizer's myself, so I'll pass on that one.
Source Control - I would go with GIT even if your developers haven't used it before. They will learn to like it quickly and the client tools have improved considerably in the last year or so. Check out Git Extensions for Windows and GitX for Mac.
Web Framework - This should be based on your team's experience and the requirements of your project. I would pick whatever your team feels the most comfortable with. Personally, I'm a fan of Ruby on Rails and ASP.Net MVC, but Asp.Net MVC is microsoft platform, and it seems like you want to stay open source.
Dev Methodology - Whatever your team feels comfortable with. I would say look into Agile and TDD (test driven development)
Workflow Documentation - Not sure about this one
Browser Set - Use them all. Test your applications in as many places as possible. For testing multiple versions of IE, I use IETester. Safari and some extensions for Firefox allow you to change your browser's user agent, which can be useful.

Why the lack of innovation and Silverlight on Windows CE?

A manager asked me to do some quick research on the possibility of doing Silverlight development on Windows CE devices.
After 15 minutes I was surprised that:
Silverlight for Windows CE seems to be nowhere in sight, with some sites wanting to report it so bad they they are quoting twitter tweets as their source of news, the word "mobile" is even missing on Silverlight 3 Feature Lists but you find it in the comments with people saying things like I was hoping to hear an update on getting Silverlight onto Windows Mobile and Nokia devices.
Windows CE 6.5, which is not even out yet, is getting scathing reviews such as this article which basically says: nothing new, interface improvements behind the curve, UI tweaks (honeycomb) skin deep, no capacitive touch screens, not due till Q4 2009, not backwards compatible, no zune, no new windows media player, no decent screen keyboard, browser pales against competition and, number 10: by showing little innovation on their latest mobile OS, Microsoft is showing zero leadership in the mobile space. It seems that Microsoft is weakly limping along in the shadow of the iPhone. The apparent lack of Silverlight on Windows CE 6.5 didn't even make the list of woes.
I thought things were different. So I sadly have to report that Silverlight on mobile devices may have to wait a year or more.
Does anyone have any more positive, substantial news that I can report about Silverlight on mobile devices?
Update by YMS (not the original OP):
This question is somehow deprecated now that Windows Compact 7 has been released with (some kind of) Silverlight support.
I also very recently researched the use of Silverlight on Windows CE. The result is that while it seems to be almost there, with videos showcasing it from MIX08, it may be released some time this year, but likely not in the first half. They said "some time 2009", and for some months now, it was in "private testing".
Because of that, while I'd love to use Silverlight, I decided to go with OpenGL ES 2.0 and OpenVG, which is fully hardware-accelerated on our current target device. Plenty of power and not that hard to use, even from .NET Compact Framework.
Oh, and the iPhone is all that cool for a phone (or a music player), but Windows CE is available for many more devices, including non-personal-gadget / non-mobile products. That's an area where Apple does not shine because they don't license their platform.
I've heard rumors that the UI for WindowsMobile 7.0 will be Silverlight/WPF based. It doesn't sound like Microsoft is putting any effort into any version before that, because as soon as WM7 is out, they'll want to kill anything off that came before.

Multi platform mobile application

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

Mobile devices for developers

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

Resources