I was asked how to start a Java (MIDP) program on a cellphone using the AT*EJAVA command (the guy asked me also if there was some AT*-command to get a list of installed midlets: he was sure that his phone implemented it).

The AT-commands were invented by Hayes for its own modems in early 80's and quickly became a de-facto standard. A large number of modem-type hardware manufacturers added their own AT extensions, mostly in "AT*xxx..." style, and this still happens. This means that you can expect (almost) any sort of AT* commands.

I wasn't aware of AT*EJAVA command; anyways, there is something weird.

The phone section of any cellular phone has its own "world", and the AT command class is there for dealing with phone features (SMS, receiving calls, establishing GPRS data connection, etc).

Thus, the operating system (Symbian or whatever) does not need special phone functions, except a "wait for event" (ring, incoming SMS, etc) and a "raise event" (place a voice call, etc), delegating everything to that "black box" of phone features, "box" controlled by AT-commands.

When the user asks for a java program, the phone section does not have to do anything (the JAD/JAR files are already in the Symbian managed filesystem).

This is also true in phones like the FIC Neo1973 (OpenMoko), which has a full Linux system, and has an AT-commands driven "black box" interface for GSM/GPRS stuff (whose internal details are not open source: full details of GSM/GPRS protocols are not fully public domain; the phone only needs a reliable data/voice communication channel) and some similar interface for its GPS-receiver (whose internal details are not open source, but it "talks" to Linux using common NMEA-formatted strings). That is, an open-source operating system using two "black-boxes" that "talk" in a clear and documented format (AT-commands, NMEA strings).

I can only guess your phone has an AT-command interpreter to implement those "AT*EJAVA" commands and similar OS-oriented stuff, passing all "true" AT-commands to the phone engine, and the rest to the operating system. But I cannot imagine reasons for engineering a phone like that.

And you should also remember that AT-commands have too high privileges: what if your user program has a bug and tries continuously to send empty SMS messages to every contact? :-)

This makes me think that the "AT*EJAVA" stuff could be only a "last resort" operation, not the normal operation. And, even worse, probability of having an AT-command to list files on the internal "disk", is lower.


Programma Champ per lo Zx Spectrum (1985)

send e-mail