Wednesday, 14 November 2007

Installing IBM J9 on windows mobile

This article is for people who want to run java software on their windows mobile devices.
Most java applications for mobile devices are so called 'MIDlets'. Midlets can run on most mobile phones and those Windows mobile devices that have java support. Your device does not have java support which is why you are reading this article :-). The IBM J9 WEME java runtime environment works on Windows Mobile 2003 and above. The smartphone version will work on smartphones and PDA's.
The documentation by IBM is aimed at intermediate level software developers and definitely not at beginners or end-users.

The following assumes you want to run MIDlets on your Windows mobile device:

Installation Steps
  1. Download IBM J9 WEME for windows mobile smartphone edition. The page is here: http://www-128.ibm.com/developerworks/websphere/zones/wireless/weme_eval_runtimes.html?S_CMP=rnav, you need to register and then get the download.
  2. If your are not sure which processor / windows version you have, choose this one: Windows Mobile 5.0 Smartphone Edition, ARM, CLDC 1.1, MIDP 2.0, iMate SP5m, Dopod 577w. Its the last entry in the first table on the page. I tried it succesfully on three devices (HTC/QTec/MDA, HP iPaq and MIO). Once you have registered and got to the download bit of IBM's site you will most likely get this file: ibm-weme-wm50-sp-arm-midp20_6.1.0.20060727-102926.exe. (If there is a newer version on the site, check that the first 27 characters are the same; ibm-weme-wm50-sp-arm-midp20....). The file is about 80MB but don't be alarmed, you only install about 3MB on your device. Why IBM chooses to include 77 MB of stuff you are not interested in is a mystery to me.
  3. Run the file, and let the installer do its stuff. It will install a directory structure on your PC.
  4. Go to the installed directory (on my PC it looks like this: C:\IBM\WEME\runtimes\61\wm50-arm-sp-midp20) and open the zip file: weme-wm50-sp-arm-midp20_6.1.0.20060727-102926.zip. It contains the runtime for windows mobile. Extract the directories bin, lib and examples to somewhere on your PC.
  5. Create a directory J9 on your windows mobile device. It can be on the device itself or on a storage card. Copy the directories bin, lib and examples to the J9 directory on your windows mobile device.
  6. Open file explorer on your device and go to J9/bin. Run the file emulator.exe. If you get an empty screen with 'Install' and 'Action' menu's at the bottom of the screen the installation was succesful.

Now run your first MIDlet

Run emulator.exe on your windows mobile device (see above) and choose 'Install'. Enter a URL (a what? i hear you say) that refers to your MIDlet. The syntax for installing files that are on your windows mobile device is: file://[path to file]. So to install the example MIDlet included in the installation enter file:///Storage Card/J9/examples/GolfScoreTrackerSuite.jad (this assumes you have installed the java runtime in a directory J9 on your storage card).

Thats it for now. A couple of things i will be writing about later on are:

  • How to create shortcuts that run a midlet directly.
  • How to tweak the runtime environment to get rid of the annoying security questions i.e. "XYZ Midlet wants to connect to a website, do you want this to happen?".
  • How to get midlets to access the file system.

21 comments:

Harvey said...

Hey, great concept for a blog!!! Java on Windows Mobile is confusing.

Can you elaborate on the difference between installing, onto a Windows Mobile device, IBM J9 to support J2ME vs. say... installing MySaifu JVM or JamVM to support J2SE? What was Personal Java?

Are there good competitors to IBM J9? Does it cost $6 to license IBM J9 JVM?

Can I run Opera Mini if I get IBM J9 installed? What is the RAM memory requirement when J9 is executed?

Also, perhaps you can give a little background on the origin of MIDlets. What is MIDP 2.0? what is CDC/CLDC?

Okay, so my comment isn't really a comment, but a bunch of questions. Kudos for putting up this blog.

Robin said...

Hi Harvey,
When i have time i'll structure these answers in an article, but for the time being:

Q. Can you elaborate on the difference between installing, onto a Windows Mobile device, IBM J9 to support J2ME vs. say... installing MySaifu JVM or JamVM to support J2SE? What was Personal Java?

A. As you say; MySaifu and JamVM ( i've never tried the latter) are trying to be J2SE implementations. This means most apps will be too heavy for mobile devices. For instance Swing is going to be really slow. Also, these implementations are not complete (for the time being) so many J2SE features will not work.
The IBM java implementations are based on specifications written for processor and memory constrained mobile devices. So applications running under these specifications will have been written to for these devices too and have adequate performance.
Personal Java grew up to be Java Micro Edition Personal Profile (i.e. Java for PDA's and smartphones). It runs on CDC and therefore on a proper JVM.

Q. Are there good competitors to IBM J9? Does it cost $6 to license IBM J9 JVM?

A. For private individuals - No. And its free to trial (indefinitely)
For companies - Yes.

Q. Can I run Opera Mini if I get IBM J9 installed? What is the RAM memory requirement when J9 is executed?

A. Yes you can. You would have to look up the memory requirement in the install.pdf document (in the \doc directory of the IBM J9 download). I've tested it on three different Windows mobile devices without any problems. The smallest had 64 MB RAM, so no problems there i think.

Q. Also, perhaps you can give a little background on the origin of MIDlets. What is MIDP 2.0? what is CDC/CLDC?

A. MIDP is Java for mobile phones, Personal Profile is for PDA's and smartphones.
I'll come back to this later, i'm out of time and a customer is breathing down my neck.

salazartatiana said...

Hello! thanks for your information... but I have a problem, I can't find ibm-weme-wm50-sp-arm-midp20_6.1.0.20060727-102926.exe anywhere... it isn't avaliable on IBM's link that you suggested... can you tell me where I can find it? or can you send it to me?... Please, I really need it.

Robin said...

Hi salazartatiana,

Since i wrote this article IBM has removed the link for the windows mobile version. IBM has two products in this space: WEME and Lotus Expeditor (mobile office). I think they are leaning towards the Lotus product. Support and sales for WEME has been taken over by IBM partners. In Europe this is Microdoc (www.microdoc.com) in Germany. They only distribute under an OEM agreement - that is, you have to add some value by means of an application. Their product information page is http://www.microdoc.com/products/certified-me-runtimes. You might be able to get an evaluation copy from them. If you are located anywhere else in the world your best bet is to contact IBM. Good luck!

Anonymous said...

You can still download it from the IBM site. Just register for some of the mobilinux downloads. Then you will see the Windows Mobile downloads along with the Mobilinux files.

WM5 files are:
ibm-weme-wm50-arm-midp20_6.1.1.20061110-161633.exe
ibm-weme-wm50-arm-vga-midp20_6.1.1.20061110-161633.exe

The license reads:

"Evaluation Period

The evaluation period begins on the date that You agree to the terms of this Agreement and ends after 90 days. "

Daniel Cabrera said...

Does it work for WM2003?
Thanks.

Robin said...

Yes IBM J9 WEME also works on Windows Mobile 2003.

jayesh thadani said...

Hi Robin

I have developed an application i.e. Midlet with midp2.0 & cldc1.0 configuration.

I dont have knowledge of personal profile. but i want to run my Midlet application on cellphones, pdas & windows mobiles... can i do tht on all.

I have tested application on cell phones but never done tht in windows mobiles.

please help me out..

Thanks,
Jayesh Thadani

Robin said...

There are two versions of the IBM java runtime for windows mobile:
1. Personal Profile
2. MIDP

If your application is written for MIDP, just install the MIDP runtime on a windows mobile device and then install your application. The posts in this blog describe the installation procedure.

Anonymous said...

Hi just wondering if youve writen anything about how to get midlets to access a file on a pda?

Ive installed J9 on a Dell Axim and now im trying to write to a file but im not having much luck.

Robin said...

File i/o from a midlet requires jsr-75 support. I haven't tried writing to any files from a midlet, but i've read files from the 'My Documents' folder.

I'll write an entry later today.

sank said...

Robin your blog is really helpful, I have few questions:

1. Is there any windows based emulator available for plugging in with netbeans 6.1? or i need to go IBM way(J9)?

2. This may not be the right question here, but din't get answer anywere.Want to know which is the best method for writing code for consuming web services from MIDP apps? is it using KSOAP2 or using JSR 172 wizard of netbeans or HTTPConnection? I have no idea, what is popular/best practice for consuming web services from MIDP 2.0. I am targeting HTC XDA devices.

Anonymous said...

Can u please tell Robin, how much complications u need to develop J9, What Team size and expert group did u use to develop j9, and How many days did it require you to develop J9.

Riad said...

Hello,

I am wondering how the distribution work.
If I was to build a mass-marlet application using J9, can I include a CAB or something like that in my app or does the user needs to install J9 him/herself?

Duy said...

I need to run "push registry" on my HTC P3300 running Windows Mobile 2006. I already failed with the standard JVM on phone. Can IBM J9 support push registry.

I can not find out IBM J9 anywhere. Unfornately, I dont have any account that can buy it. I am in Vietnam. Can anybody please share it to me? I really need this one for my university project.

Duy said...

my email: haduy1982@gmail.com

Anonymous said...

hey, i can't find any download about IBM J9 VM kann any bady give me a link? thanks!!

johanstein@gmx.de

Kaerol said...

Hi, I'm realy happy that I found Your blog.

I'm developing an application for Windows Mobile 6.1 using Java SWT. Now I'm using MySaifu but it's slow. So I started to looking for another JVM. Now I'm wondering is there another JVM like MySaifu which allow me to run my SWT application and is faster. Can I run my SWT application with J9?

Anonymous said...

Hello Robin

I was searching around the net for Java VMs and I red your blog. You have made a very good job. I want to make an application on a Symbol MC9000 device (Arm Processor and Windows Pocket 2003) and I can't find anywhere a JVM for the device. I am wonder if you can help me somehow.
Thanks in advance and congratulations about your blog and your job.
My e-mail is jim.papageorgiou at gmail.com

nnnddd said...
This comment has been removed by the author.
nnnddd said...

Dear Robin
Thanks for this blog
But I didn’t find way to download JE JVM or Jeode JVM
I have Motorola Symbol MC3xxx device windows mobile 6


Could you please me to find JE or Jeode