sexta-feira, 19 de novembro de 2010

Smartphones for Pascal developers as of Nov 2010

The topic of the analying the smartphone market comes up very often. In fact so often that I though that a blog post might well be a good choice. So, when it comes to the smartphones things are going like this:

First of all, let me present the world wide market shares:

2007 Q2 Symbian 66%, BlackBerry 9%, WinCE 12%, Mac 1%  
2008 Q3 Symbian 50%, BlackBerry 15%, WinCE 11%, Mac 13%
2009 Q3 Symbian 45%, BlackBerry 19%, WinCE 8%, Mac 17%, Android 4%
2010 Q3 Symbian 37%, BlackBerry 15%, WinCE 3%, Mac 17%, Android 21%

And the equivalent in devices sold:

2007 Q2 Symbian 18m, BlackBerry 3m, WinCE 3m
2008 Q3 Symbian 19m, BlackBerry 6m, WinCE 4m, Mac 5m
2009 Q3 Symbian 19m, BlackBerry 8m, WinCE 3m, Mac 7m, Android 2m
2010 Q3 Symbian 29m, BlackBerry 12m, WinCE 2m, Mac 13m, Android 26m

More info and sources on: http://wiki.freepascal.org/Smartphone_Development

This numbers already say that Windows CE is dying and that iPhone and Android and the fastest growing platforms.

Now going into details about each platform:

1> Windows CE

Lazarus has a very good support for Windows CE (I am the maintainer actually). With ActiveSync debugging in the IDE even.

http://wiki.freepascal.org/Windows_CE_Interface

Unfortunately this Operating System is now dying, because Microsoft decided to stop working on Windows Mobile and launched Windows Phone 7 instead, which runs only silverlight applications, which basically means that it is now the most incompatible platform in the world. I doesn't run native applications, it doesn't run Java, it doesn't even run desktop GUI .NET applications.

Everyone is jumping out of the sinking boat of Windows Phone, including me and Firefox (http://www.zdnet.com/blog/hardware/microsofts-windows-phone-7-code-limitation-puts-an-end-to-mobile-firefox/7785).

But this is old news, and the Windows Mobile market share has been sinking even since Microsoft started talking about Windows Phone 7. Now in November 2010 they actually launched it, after spending 500 million dolars in propaganda, but managed to sell only 40.000 in the first day. If they keep going like this, by the end of the year they will have spent 250 dolars for each device sold. That's what I call a disaster.

Source: http://www.digitaltrends.com/mobile/windows-phone-7-sells-40000-on-first-day-in-the-u-s/

2> iPhone

Personally I never used it. It seams to be a very good phone that sell really well in the United States, but poorly everywhere else, basically because it is terribly expensive. In Poland an iPhone costs 4.000zl, which is about 1.000 euros.

Free Pascal has support for developing iPhone applications, as explained here:

http://wiki.freepascal.org/iPhone/iPod_development

Developing an iPhone interface for Lazarus shouldn't be too dificult, but since I am only one person, I decided to concentrate in Android.

3> Android

The star of the smartphone market. This platform is exploding in popularity and it presents highly capable yet cheap devices. HTC Wildfire, for example, costs only 1.000 zl (250 euros), while providing Bluetooth, GPS, WiFi, a 5 megapixel camera, video recording, 512 MB of RAM, etc.

Unfortunately for developers, Android has a very chaotic development environment using it's own virtual machine, Dalvik, which has it's own bytecode incompatible with Java, huge differences between devices and even between Android versions and the pain which is making Java interact with software written in other languages. Despite all this, native applications can also run with some effort and I started working on a Lazarus interface for Android =)

http://wiki.freepascal.org/Android_Interface

My choice platform for Smartphones for the next years is Android, because of it's huge market share and because many Pascal developers are interrested in investing in a Lazarus port. But this time I won't repeat the errors I made with previous platforms: Windows CE and Symbian. This time the work will be focused on creating a work which is as reusable as possible, and this has been my guideline for development. There will be no changes in FPC, because this is very hard to execute. No native controls will be used, only my own custom drawn controls drawn on top of OpenGL. What's the point in wasting years of development time implementing a Lazarus interface which uses native widgets if it's creator just kills it like Microsoft did, or if it looses it's market share? The same is valid for application developers as well, a single person cannot hope to master all the totally incompatible tecnologies from so many smartphone platforms, and that's where a custom drawn Lazarus interface will shine.

4> MeeGo

Looks a great platform, being based on Linux and offering Gtk and Qt, it should be trivial to port Lazarus application to it =)

The bad points of this platform are: tiny market share with currently only one significant phone, Nokia N900, which isn't that cheap at 1.900 zl in Poland (about 500 euros). The platform's future is also far from sure and it is currently rather unstable, undergoing changes, being that Nokia promisses to release the first phones with the remodeled platform in 2011.

5> Symbian

Better stay away from this one. I once tryed to port Free Pascal to Symbian OS, but the platform is so balkanized with so many differences between versions and between toolkits that one can't expect reasonably to develop native applications for this platform without a huge team. Even my original target, the Symbian UIQ toolkit no longer exists and the UIQ Foundation closed it's doors.

Summing everything up I decided to make a table comparing the platforms =)


PlatformPrice of devices

Development

Market ShareAPI Stability

FPC /Lazarus support

Windows Mobile

(up to 6.5)

Dead now

EasyDead nowDead now
Both
iPhoneExpensive

Medium

High in the USA

Low elsewhere

StableFPC only
Android

Cheap and

Medium 

HardHighUnstable
Under develop.
MeeGoMedium   EasyLowUnstable
Both

Most data here is also present in http://wiki.freepascal.org/Smartphone_Development, but I wanted to have a version of this data with more of my personal view =)

4 comentários:

Gustavo disse...

I think you have to update some information about Nokia. They are thrown away Symbian and MeeGo in favor of WM7. But I have other question: What about Froyo native support whithout the Java layer? In your page of Android_Interface you say that don´t want cover it. Are there some people of Lazarus interested on it?

Gustavo disse...
Este comentário foi removido pelo autor.
Emerson Cavalcanti disse...

Hello Felipe

I would propose you to do a little post analyzing the components TBGRABitmap and TBGRAControls. There are two interesting projects, which will assist the lives of many users. I like your posts.

Thanks

Emerson

Ítalo Moreira Toffolo disse...

Oi, Felipe.

Eu vi uma mensagem tua numa discussão sobre a continuação do GPC. Fiquei feliz em saber que é brasileiro. :D

Sou iniciante em programação desktop, mas já tenho conhecimentos em PHP, JS, SQL, HTML, CSS, XML, etc.

Você pode me indicar sobre qual escolher: GPC, Pascalzin, DevPascal, Free Pascal ou outro?
E eu devo mesmo aprender Pascal ou passar direto para Delphy, C, C++, Java, ou outro?

Muito obrigado, Felipe!
Que Deus abençõe tua vida sempre!