I am working on map/gps/navigation app using J2ME. I would like to make this app so great that it would replace Google Maps in daily usage for me. The main problem is graphic performance on Windows Mobile with WVGA screen. It is a university project and at this moment I cannot switch from Java to anything else. What I can do is reuse the code to make several versions for different runtime environments.
I have been searching for an working environment that would be able to run Java code using hardware acceleration on Windows Mobile. So far I have found only two solutions: MySaifu that supports Java3D and J9 that has JNI and theoretically could run OpenGL. I failed to find any J2ME virtual machine supporting hardware accelerated M3G (JSR-184) or OpenGL binding (JSR-239) that runs on WM.
MySaifu is incredibly unstable and I could not make it run any of 3d samples on HTC blackstone. J9 seems to lack an OpenGL wrapper at the moment. I think it would be relatively feasible to make a wrapper, esspecially using existing code from LWJGL or JOGL. I know that JBlend supports M3G but it does it software wise and performance is too low.
I would like to ask the XDA community: do you know any Java VM that supports hardware acceleration on Windows Mobile? Is there another way to approach my problem?
Thanks in advance,
dwaradzyn
Related
OK Chaps..(and any Chapesses..of course. :wink: )
Whilst accsessing the web, I noticed that any JAVA appletts I came across didnt work........
I gather this is somthing to do with downloading some .jab, .jar files, / midlet suite into the Midlet manager.........
Where do I find such beasts........
(Looked at Midlet.com. but didn't see the XDA listed...or am I just being stupid?)
Many thanks
Steve.
A lot of confusion goes on with Java. The XDAII does not support full Java, i.e. embedded Java applets in web pages, or Java applications.
It does support a flavour of ECMAScript, called JScript, for scripting simple things on web pages - this is often confused with Java because Netscape called the original scripting language JavaScript. Apart from a similarity in syntax, it has very little to do with "real" Java.
However with the latest ROM update from O2, you get Midlet Manager which can run standalone applications using a particular cut-down version of "real" Java called J2ME (java 2 micro edition; with MIDP - mobile information device profiles) . These are generally called midlets, and are normally packaged as jar or jad files.
There are two problems here -
Hardware: these applications are usually written for mobile phones with a keypad, which the XDA lacks and midlet manager doesn't simulate, so many of the midlets are just not usuable; mobile phones have teeny weeny screens, and of course the XDA has a nice big one, so midlets generally will look awful.
Software: Because mobile phones are pretty low spec compared to our glorious XDAs, midlets are generally pathetic comared with real pocketPC applications.
If you want to try some midlets, just to see how pointless they are, there are a lot of free ones at www.midlet.org
If you want to run full Java on the XDA, you can purchase a proper JVM. I beleive Jeode runs OK, but it is $50.
There's also Waba, which is a free, similarly cut-down java variant, that is a good alternative to J2ME; and IBM Websphere Micro Edition, that is a cheap alternative full J2ME.
I've heard that the NetFront alternative browser has a companion JVM for applets, so this might be your best bet if you want to run Java Applets in web pages.
Cheers.!!!
Midlet Manager
cant be downloaded from anywhere can it
is it comercial and only in roms like the new o2 one ?
Yeah, it's one of those products that the vendor only licenses to OEMs. I suppose you could get somebody to send you the cab from the extended rom and see if it'll install.
Noob question: Does HTC have an SDK for their devices, or do they just rely on the WM6 SDK?
And on a related note...
I'm just starting to get into VB programming for WM (specifically, for my Tilt/Kaiser). Any advice on how best to get started? Stupid beginner mistakes to avoid? Best sites for finding sample code?
Thanks all!
-Florp
There is no special SDK form HTC devices.
In fact you do not even have to use WM 6 SDK specifically, programs compiled with previous SDKs will work as well.
Here is a site to start with: www.pocketpcdn.com
Personally, VB is not a language I recommend for WM based devices. Aside from a fact that you need the expansive VS 2005 (full version) to program in it, .NET compact framework makes for slower apps and on devices pre WM 6 it takes 5 MB to install CF 2.
Also, you can not use it to write things like today plugins and keyboards and accessing other system functions is a problem.
Thanks for the info!
If not VB, how about C#? Is that a well-supported language on WM?
-Florp
Well C# is a bit better than VB syntax vise but it suffers from all the same problems I listed before:
Need VS 2005
Need .NET CF2 -which is slow and built in only in WM 6
Difficulty accessing native APIs.
My personal recommendation is C++. If you are really interested in programming and don't know it - learn it.
Why?
MS has a free tool to compile for WM devices: Embedded visual C++ 4
You can write anything with it and access any system API directly with no problem.
Native codes runs faster and is more memory officiant because no supporting framework needs to be loaded.
Of course it all really depends on what you want to do. If you just want to make a quick simple app for you own use VB or C# may be more than enough provided you can get you hands on VS 2005.
As I understand it, eMbedded VC++ can be used to write applications that will work in Windows Mobile 5/6. I'm curious as to what I would miss out on in terms of API. In other words, what's new and shiny in VS 2005 that would make it worth my money to purchase instead of just using eMbedded VC++?
Particularly, I'm interested in writing a Today Screen plugin (so the .Net features don't matter to me very much). Is there any API breakage between Pocket PC 2003 and Windows Mobile 5/6 regarding Today Screen .dll's?
Alternately, is there a way to use the Windows Mobile 5/6 SDK with eMbedded VC++?
embedded vc++ apps can run on wm6 devices because in most cases all arm wm apps can run on all wm devices
the beta2 of visual stuio 2008 is free and can also do what vs2005 can and more
Rudegar said:
embedded vc++ apps can run on wm6 devices because in most cases all arm wm apps can run on all wm devices
the beta2 of visual stuio 2008 is free and can also do what vs2005 can and more
Click to expand...
Click to collapse
I know eMbedded VC++ apps can run on WM6, my question was more about whether there are any differences in available library/API calls using the older development platform, any name mangling issues writing DLL's, etc. Can I just use eMbedded VC++ to compile against the newest SDK libraries?
You will miss the following:
1) 1GB+ of you hard drive wasted.
2) 5 minutes wasted every time you try to access built in help
3) A lot of time lost due to slow response of the IDE
4) Programs that are not backward compatible.
5) Spending lots of money unless you have "other" ways of acquiring VS which we do not condone.
I worked with VS 2005 and still prefer eVC 4.
API is just a matter of what libraries you link to. You can get all the shiny new bells and whistles (frankly I am not familiar with any critical API, and certainly there is nothing new for today plugins) in two ways:
1) Manually unpack WM 5 or 6 SDK and link to its libs.
(Project->Settings->Link)
2) Use LoadLibrary and GetProcAddress to dynamically gain access to the API.
Oh and if you want to write today plugin check out this article and the link to RegDisplay in my signature. It is a skeleton plugin project you can use as a base.
Oh and stay away from VS 2008 at least till it comes out of beta. VS 2005 beta was the worst nightmare I ever seen and I can bet MS track record has not improved.
Right now I am using IBM's J9 Midlet Manager and it works out well with the maps application, but it's slower than JBED and for some reason it doesn't show the maps in high resolution even with the high resolution J9 version installed. JBED's only problem is that you can't connect to the serial ports of your phone and thus MGMAPS keeps reporting that there is no GPS unit available. I've had the same problem with the Intent Midlet Manager and thus would like to know if there is
a) a way to make it work with JBED or Intent.
b) a way to make IBM's J9 display high resolution.
Please no "use Mobile GMaps" answers as I have my reasons for using the midlet (offline maps, favorites, extra services). Any help on this would be greatly appreciated as I really hope this can be fixed either way.
Falk said:
a) a way to make it work with JBED or Intent.
Click to expand...
Click to collapse
Nope, they don't support serial ports.
b) a way to make IBM's J9 display high resolution.
Click to expand...
Click to collapse
This is easy and has already been explained in my MIDlet Bible (see row "Opera Mini 4 beta 2 fonts - VGA?" of the chart at http://www.winmobiletech.com/092007MidletBible/CompatibilityAndMain.html ):
Forcing J9MIDP20.EXE (or, for that matter, ANY .EXE's) doesn't help, as opposed to earlier, 5.7-series J9 versions. The only way to get high-res support is switching to Real VGA mode and using the QVGA version of J9 (NOT the VGA version - the latter won't execute your deployed MIDlets at all!). An example screenshot of this is HERE (using Large characters). Note that, as the QVGA and VGA versions can co-exist on the same machine and will use the same deployed MIDlets, this seems to be a usable solution to get hi-res support when you really need it (and, at the same time, can live without hardware softkey support - you'll need to use the on-screen menus to issue commands, unlike with the VGA version. At least this was the case on my VGA Universal.).
Thank you! Problem solved. It's really a shame that HTC didn't get around to put a decent midlet manager onto their devices. I could play with a N95 a bit recently and like your comparison chart shows it's a whole different world. I am not a heavy user, but MGMAPS sure has taught me a lesson that midlets can even be better than native Windows apps... with the right manager / device.
AFAIK it is still not possible, so I'm wondering how to create similar applications with C# and .NET Compact Framework 3.5? What I need are cool buttons and other standard controls on windows form with nice graphics and some animations, for example like Touchflo 3D has.
How to achieve that?
thx
No one knows?
TF3D is developed with Lua. But I think you can develop very nice applications with the Microsoft tools and components..
The only thing that will come close is Silverlight for MinMo. It is still in development, and is planned to be released in 2009. Check this link: http://silverlight.net/learn/mobile.aspx
I've not seen anything planned for full WPF on mobile ... damn shame. Silverlight will just be a browser plug-in.