Related
Hello XDA-dev community
For the past couple of months i've been thinking about getting a Pocket PC for a new phone instead of a Symbian Nokia [ah my old 6630, may she rest in pieces...]. Anywho, I think i've decided on the HTC Touch Pro / Raphael. At ~AU$600 it's the highest I was trying not to pay (i'm not rich), however it seems to be a pretty powerful and full featured device.
I do have a few questions I hope some of the kind experts/veterans here might be able to answer for me though
1) I written a few things in Java and PHP and other even-more-basic languages, but am interested in learning a new language with hopes to create software for both Windows PC and Windows Mobile. What choices do we as end-users have here? .NET is an obvious one [I own a copy of Visual Studio 2008 Pro], but are there any other languages of note?
2) From the Raphael specs on the Wiki here, it lists it as an ARMv6 architecture-based processor. This comes from the ARM11 family, which is the successor (I think) to the XScale family (ARMv5TE). Are these ARMv6 processors backwards compatible with 'XScale accelerated' binary builds of software? I.E., a PPC application has two versions for download/purchase - a 'Generic ARM Release' and an 'XScale optimized release' - would the Raphael ARMv6-based device be compatible with these XScale-optimized binaries? Or do ARM do things differently and ARMv6 is not backwards compatible?
3) Has anybody ever heard any rumors or made any talks about porting Android to the Raphael? Just curious. I'd prefer a Windows Mobile device (not a Linux user) but I can see all this OpenSource stuff does have a future... EDIT: Nevermind, I found the page at http://wiki.xda-developers.com/index.php?pagename=RaphaelLinux
4) How does the device perform with 3D-heavy applications? Does it make use of any sort of acceleration (I assume no, not like the iPhone for example).
OK thats all... thanks a lot for your replies, if there's anything else you think is worth mentioning to a soon-to-be-first-time owner of a Windows Mobile device, please do say so Cheers.
In reply to 2) VS 2005 Pro onwards targets code at ARMv4I, basically generic ARM processors also capable of running the Thumb (16 bit) instruction set. Thumb represents a limited set of ARM 32 bit instructions coded as 16 bit instructions. It allows much smaller code sections, but with megabytes of memory available these days who cares? If you code in .NET none of this matters anyway, as the code is created as IL byte code, the .NET runtime sorts it out.
If you code in Embedded Visual C++ 3 or 4 the target chipset is ARMv4. When you use the IDE to create the code on a WinMo 5/6 machine it complains that the target machine cannot run the code. It's lying, what it really means is it does not recognize the processor class. As it is ARM 32bit code only it will work.
It is not worth targetting the code for a specific, (read non generic), ARM chipset. You are just making a rod for your own back when it won't work on something else.
Thanks for the reply stephj. There will indeed be a bit of research for me to do as to which language and/or IDE I decide to choose to train myself in then it seems. Specifically though...
stephj said:
It is not worth targetting the code for a specific, (read non generic), ARM chipset. You are just making a rod for your own back when it won't work on something else.
Click to expand...
Click to collapse
...what I was referring to is - I've seen some freeware PPC software, mainly emulators, that have two versions - a 'generic ARM' one and an 'XScale Compatible' alternative version. On the ARMv6 based phones, assuming the software was released back when XScale was the newest ARM family, would both work on the Raphael? If so, which would be faster?
Obviously though, for a developer, creating the most compatible/generic code to work on the widest range of devices is the main focus - later possibly implementing optimiziations or hacks that are specific to a certain platform - but I'm just wondering if these already built, older 'specifically optimized' builds are compatible with the succeeded chipsets.
P.S. Do you know where I could find some resources on choosing between Visual C++ or .NET? I.e. pros and cons of each?
Thanks a lot!
jonusc said:
Hello XDA-dev community
...
1) I written a few things in Java and PHP and other even-more-basic languages, but am interested in learning a new language with hopes to create software for both Windows PC and Windows Mobile. What choices do we as end-users have here? .NET is an obvious one [I own a copy of Visual Studio 2008 Pro], but are there any other languages of note?
...
Click to expand...
Click to collapse
Since you have VS2008Pro, C++/win32 if you want fast and lightweight applications
"P.S. Do you know where I could find some resources on choosing between Visual C++ or .NET? I.e. pros and cons of each?"
.net pros
easy to get something running fast even if one is a n00b
got a lot of components meaning less time to develop
can be programmed with c# and c++ and even eeeeewww basic
.net con
slow as in sloooooowww
require one to install the framework if the app
require a newer version then what ones phone came with and the framework is pretty big
and people don't seem to have success with installing it on sd cards
compact framework is also limited in features vs. .net on pc so apps don't just port always
limited in features unless one do unmanaged code
c++ pro
fast
require no extre stuff
small in size and again fast
have access to every feature in the phone
c++ con
one have to do everything and that mean msg loop
and a lot of leg work just to get a dialog with a button
steaper learning curve
more risks of mem leaking
harder to debug as stacktrace is not just there
like on .net
Very nice, thanks for the replies guys
So from what I can gather, a basic .NET application would be ideal for RAD (quick and dirty), particularly GUI-centric applications, but tend to be bulky; whereas C(++) is a more native / low-level language and is thus faster, but very hardcore as most functions need to be done from scratch.
I should have assumed it's pretty much the same as a Windows PC
What about C++ versus C#? And does VS2008 have a decent API/IDE set for mobile development i.e. does it have many libraries for C(++/#) already included or are more easily available?
Thanks again for the answers guys... it's obvious i'm keen to learn about it, but i'm a little worried that someone like me going from stuff like PHP and VB to C might be biting off more than I could chew....? Ah well if .NET is gonna cause problems down the line, then I guess I have no choice
Don't bother with the C++ version of .NET, the casts that you have to make, to get it to work makes the code very hard to read, and besides it only compiles to the IL level anyway, it's just not worth the effort.
So, under .NET use C#, or VB if you prefer, there is not much difference between them, but in my opinion, C# is a bit more elegant.
Under C++ you have the choices of WIN32, ATL (Active Template Library), or MFC (Microsoft Foundation Classes), programming models.
WIN32 is the simplist but the hardest to code, the other two add progressively more objects to make things easier, but you need to distribute the run time libraries with them. A simple WIN32 app can be distributed as a single .EXE if the DLLs it already uses are part of the CE/PPC operating system.
PS When it comes to running code compiled for a specific ARM class on your device, just give it a go. If the CPU hits an instruction it can't run, it will throw an exception and stop anyway.
stephj said:
Don't bother with the C++ version of .NET, the casts that you have to make, to get it to work makes the code very hard to read, and besides it only compiles to the IL level anyway, it's just not worth the effort.
Click to expand...
Click to collapse
Fair enough. So C++ in VS2008 is a bad idea
stephj said:
So, under .NET use C#, or VB if you prefer, there is not much difference between them, but in my opinion, C# is a bit more elegant.
Click to expand...
Click to collapse
I thought VB was dead? Wasn't VB6 the last one they made? Or is VB just what they call generic/common .NET Framework apps? Anyway, yeah i've read good things about C#, especially compared to .NET in general. EDIT: Oh, .NET is not the program language but VB is *facepalm* I get it, nevermind
stephj said:
Under C++ you have the choices of WIN32, ATL (Active Template Library), or MFC (Microsoft Foundation Classes), programming models.
WIN32 is the simplist but the hardest to code, the other two add progressively more objects to make things easier, but you need to distribute the run time libraries with them. A simple WIN32 app can be distributed as a single .EXE if the DLLs it already uses are part of the CE/PPC operating system.
Click to expand...
Click to collapse
Ah, same as a Windows PC. That makes sense.
Thanks for the answers I think I might take a look at C sharp.
C++ in VS2008 is fine, use the smart device WIN32 ,ATL, or MFC models take your pick.
Sorry my mistake, the C++ .NET version is not available for smart devices. Its the three models above only.
After additional research, I don't really want to be tied down with the proprietary C# system. So is VS2008 a decent IDE for WIN32 C++ development on Windows Mobile? Or are there better alternatives?
VS 2005/2008 Pro takes some beating. After you have installed about 3 CD's worth of MSDN libraries all the help is on tap. The IDE also looks at MSDN online if you have an internet connection to see if there are any forums on the same topic you are inquiring about.
The code is generated as ARMv4I and can be tested/debugged on the images provided by the WinMo 5 or 6 SDK. The emulators are that good you only put it on your phone when you have tested it to death on the emulator.
EVC 3 and 4 use a previous method where the emulators run a x86 version of the code. I still use EVC 4 for code that has to run on anything, Windows Mobile 2003 for example.
It's all pretty proprietory, when it comes down to it, but I guess we're stuck with it.
Hi there,
it seems to me most people here develop for WinMo devices, but maybe you can help me out nonetheless.
Currently, I'm a web developer in PHP (+ usual stuff). I studied computer science, so I'm not a newbie when it comes to coding I learned a lot of C and (unfortunately only) basics in Java and C++. I never got my hands on C# or VB and stuff - the only experience in developing applications for Windows Mobile was a small Texas Hold'em Clock (basically a simple countdown and some additional stuff) I did a few months back. I pretty much google'd everything I needed and copy'n pasted the code into Visual Studio - not really developing, but those where my first steps
I consider getting started in development for mobile devices like BlackBerry, Windows Mobile devices, iPhone, Symbian and/or Android. The problem is: I don't know which one of these might turn out useful on when I might be applying for a job later (which is basically my whole point doing this, I don't want to do web development for the rest of my life). Any thoughts?
What type of job do you want to do? first find out what the sort of jobs you want to do require, many software houses use c# so you could develop for windows mobile, if they require java then try android. Iphone uses objective c which isn't used outside of the mac world so unless you want to work for a company which creates mac programs maybe you should try something else.
Then again if you just want to make some cool apps and actually make money from them I would say iphone is the easiest to get you product to market then android with wm coming last.
also if you learn java then you can quickly pick up c# and vice versa so I don't think it really matters either way.
there are of course many other options, if you happen to want a job that requires python you could get the excellent upcoming n900 from nokia
Cant offer advise on that, but what you can do is write a better app for Facebook, the MS one SUCKS compared to the iphones (eeek i said the dirty word............)
ms's also sucks compared to the x1 panel facebook which again is not as good as iphones :S
Hi
I work for a small research firm/IT consultancy. I'm attending a meeting in a few weeks time, the meeting is being held by the University of the West of England (a UK Uni) and various local business groups. The aim is to discuss the development of a GPS-based program to help encourage children to exercise. As I have a bit of knowledge about various GPS-based software programs and platforms, I have been asked by a contact of mine to attend.
I've been thinking that by far the most obvious platform to target is the mobile phone - every kid has one and most these days have either GPS built-in or can access a bluetooth GPS device. Now, there are five mobile phone platforms, Java, Nokia's Symbian, Apple's iPhone, Google's Android and Microsoft's Windows Mobile. If an app could be developed across all five platforms, it would be pretty much available to all kids.
As I have very limited experience of these platforms, I was wondering if anyone cared to give any views on the difficulties involved in developing for all five platforms (is it even possible to cross-develop across all these five platforms, or would each one be a separate project?) and any other views pertinent to GPS-based programs for mobile.
Also, if you know of any Android developers (companies) in the South West of England, preferably Bristol, that would also be great.
Rupert Plumridge
Senior Research and Commercial Manager
OTR-Group
www.otr-group.com
All depends of the language that you choose, but remember that mobile devices have some limitations.
Here are some lists of the Windows Mobile limitations: DevBuzz - Windows Mobile Limitations
Cheers for the reply, yeah, I guess language is most important - Java seems the most cross platform - not sure if the iPhone can handle that though.
For iPhone the better choice is Objective-C(CocoaTouch Framework), but you will need to have a Mac if you want to develop for it. This was because I didn't buy a iPhone to start developing for it, I don't have a Mac
For Windows Mobile I suggest you to use C#(.Net 3.5) with Visual Studio 2008 Professional. It's the most featured environment for WM development, or you can try CeGCC.
For Android the best choice will be Java with a very good knowledge of XML. A good link to start is How-To Develop Android Applications
And for Symbian, the best choice will be C++, also take a look at Getting started with Symbian development
Now you choose
You can use C++ on iPhone, WinMobile, Android and Symbian using Airplay SDK - the same compiled app will run on all of them too.
This is a magic bullet for cross platform dev, enjoy!
"For Android the best choice will be Java"
think you get more kernal power in their c++ tdk then java
Qt apps work on WinCE. If WP7 is built on top of WinCE, why would Qt apps not be allowed on Win7?
I'm just trying to make sense of it here. Is it an artificial Microsoft restriction for their platform?
Because third-party apps are managed in .NET compact framework. Qt is a C++ framework and thus unmanaged. This is a smart move by MS as it increases system stability and enhances user experience.
leonard2010 said:
Because third-party apps are managed in .NET compact framework. Qt is a C++ framework and thus unmanaged. This is a smart move by MS as it increases system stability and enhances user experience.
Click to expand...
Click to collapse
If that's the lame reason they give for it not being doable then I will just need to hack Qt onto it. Dumbest move in Nokia's history!
discourse said:
If that's the lame reason they give for it not being doable then I will just need to hack Qt onto it. Dumbest move in Nokia's history!
Click to expand...
Click to collapse
givin that one of the main reasons that windows mobile 6 and for that matter windows desktop can be unstable is poor quality 3rd party programs i think the move was a very good one, forcing programers to stick to strict controls means they have to develop good software, also givin MS got most of the flak for these crap programs i think it was a good move on their part
at the cost of lower performance and code easily being stolen. MS don't care about developers. Hacking a silverlight app onto CE and calling it a new OS was a terrible shortcut and will cost them in the long run.
It's a matter of time until Microsoft releases a Native Development Kit. In a recent interview Brad Watson from Windows Phone 7 Development team said:
Brad Watson said:
8) What about native SDK? Android got theirs later, should we expect Microsoft to provide a native SDK also, or just forget about it ?
BLW – if by native SDK, you are asking will we allow anyone to run C or C++ unmanaged code on the device, the answer is “not now.” Our primary concern is ensuring that there is a fantastic customer experience on the phone. We recently announced that we have satisfaction rates for the phone at 93%. That’s amazing. We attribute at least some of that to the fact that customers can buy apps that they don’t have to worry will trash their phones, and they don’t have to worry because of the managed platform.
Over time we will certainly relax certain restrictions on the phone, but we cannot compromise the integrity of the phone experience or the marketplace experience.
Click to expand...
Click to collapse
Microsoft has to release a NDK because the competition has a NDK. Hopefully the competition will have more and more NDK applications (Firefox, Skype) which would make them more appealing to the user.
When such a NDK will be present, Qt (at least lighthouse) will be ported to Windows Phone 7
indiekiduk said:
at the cost of lower performance and code easily being stolen. MS don't care about developers. Hacking a silverlight app onto CE and calling it a new OS was a terrible shortcut and will cost them in the long run.
Click to expand...
Click to collapse
While I agree it's far from the entirely new OS we were promised I very much doubt it will cost them in the long run. They have provided a OS experience that is second to none, this is all because of the limitations they have put in place.
I would expect the platform to open up somewhat for the next wave of [higher-end] devices giving existing users an iOS-like experience where you can certainly upgrade to utilize multitasking and all that jazz but it will cost you some of the current smoothness of the UX.
The fact that .Net assemblies are easily decompiled into fully working Visual Studio projects hasn't been a huge problem on the desktop and as obfuscating tools become better and better I see no reason why it should lead to a problem on the mobile platform either. Looking thru some of the recent marketplace apps they are all but decipherable for the average developer. Also, as more and more processing moves to the cloud it becomes less and less of a problem - most startups are neither willing not capable of mirroring your closed-source/protected backend services.
The missing NDK is not the sole reason. The OS IS different. As others have pointed out, quite some GDI stuff is just not there, or doesn't do anything. So, Qt would probably just not start. And as there will never be (as MS said) (official) OpenGL drivers on WP7 you can't switch the backend.
And there has to be already some kind of NDK, as e.g. Navigon Select is a semi-native application and it is not created by OEMs.
Hades32 said:
The missing NDK is not the sole reason. The OS IS different. As others have pointed out, quite some GDI stuff is just not there, or doesn't do anything. So, Qt would probably just not start. And as there will never be (as MS said) (official) OpenGL drivers on WP7 you can't switch the backend.
And there has to be already some kind of NDK, as e.g. Navigon Select is a semi-native application and it is not created by OEMs.
Click to expand...
Click to collapse
They say IE9 will have accelerated graphics support, which I presume is based on Direct3D. For WinPhone7 Qt needs a Direct3D backend, which should work on all WinPhone7 devices.
Qt should have the same capabilities of IE9, which AFAIK is not written in managed code.
Qt could also use Google's angleproject which should help in translating "OpenGL ES 2.0 API calls to DirectX 9 API calls".
Since this is a discussion thread, this is going in WP7 General.
~~Tito~~
It will simply not happen. It's that easy. (Not w/o homebrew that is)
By not allowing Qt on WP7, Microsoft and Nokia have just shot themselves in the foot. Instead of offering a smooth migration path for the millions of Nokia users and devs, they've basically alienated the entire community. WP7 is also losing out on thousands of high quality applications like Angry Birds for Symbian^3 and MeeGo that was developed using Nokia's Qt SDK. http://www.youtube.com/watch?v=mS1dwYmKMjs
discourse said:
If that's the lame reason they give for it not being doable then I will just need to hack Qt onto it. Dumbest move in Nokia's history!
Click to expand...
Click to collapse
Good luck hacking Qt into it.
Using .NET also increases Security.
WP7 doens't need Qt, and Microsoft should do whatever it can to stop Nokia from putting Qt in WP7.
Those reasons aren't lame, unless you're missing the portion of you brain that controls logic.
discourse said:
By not allowing Qt on WP7, Microsoft and Nokia have just shot themselves in the foot. Instead of offering a smooth migration path for the millions of Nokia users and devs, they've basically alienated the entire community. WP7 is also losing out on thousands of high quality applications like Angry Birds for Symbian^3 and MeeGo that was developed using Nokia's Qt SDK. http://www.youtube.com/watch?v=mS1dwYmKMjs
Click to expand...
Click to collapse
It's much easier to develop for WP7 than it is for Symbian/Qt. I don't think the developers will have much of an issue with it. They didn't shoot themselves in the foot, you people just AREN'T developers, and don't understand it.
You know you're talking to clueless people when Angry Birds is the epitome o fa high quality application to them.
Cause you cannot develop Angry Birds in XNA, and you seriously believe porting Angry Birds to WP7 will involve nothing other than a few code line changes and a recompilation?
Give me a break.
I wish Microsoft had partnered with SE or something. Nokia's fanbase are more bat**** crazy over these pet projects than the Android people.
Qt will continue to be the development framework for Symbian and Nokia will use Symbian for further devices; continuing to develop strategic applications in Qt for Symbian platform and encouraging application developers to do the same. With 200 million users worldwide and Nokia planning to sell around 150 million more Symbian devices, Symbian still offers unparalleled geographical scale for developers.
Extending the scope of Qt further will be our first MeeGo-related open source device, which we plan to ship later this year. Though our plans for MeeGo have been adapted in light of our planned partnership with Microsoft, that device will be compatible with applications developed within the Qt framework and so give Qt developers a further device to target.
After a lot of unsuccessful searching, i figured i would try here.
Why does it always seem like every app offered is for iPod and Android phones only? Everywhere i go. Available for iPod, Android, and MAYBE BlackBerry. It occurs mainly with popular websites "Now Available As An App!". I don't understand why... Can someone shed a little light on the matter please.
It's because these devices have a different interface (small screen, touch operated), a specialized app as opposed to a full-blown website can offer a more streamlined service.
And now i am seeing that IMO.IM has an app for iPod, iPad, Android, Blackberry, or Nokia! Really? That is almost like going out of their way to not be on windows. In a way, i am glad because this was kind of what apple had gone through back in the windows vs mac days. But now i am on the losing end and i am pissed. Im still really considering getting an android over windows 7
WP7 is a relative newcomer and only has a very small market penetration. If you were hoping to make money off an app which platform would you code for first?
The main reason is C++ SDK! Currently Microsoft hasn't provided C/C++ SDK for Windows Phone 7. There are many apps for Windows mobile which aren't available for wp7. such as MS-DOS or Lingvosoft dictionary , etc.
If you can contact to developers recommend them to visit http://windowsphone.interoperabilitybridges.com/
I pray and hope that Microsoft provide a C/C++ SDK for WP7