Hi folks,
After the initial presentation of the event, I’m currently now waiting for the first session to start, at Salon 7B.
I must say that the event is really well organized, and that I like Florida very much. It’s really beautiful!
I’m hosted at the World Center Marriot Hotel, the one that holds the WES.
If you’re around here and want to have a talk, just drop me an email narciso a-t elondra d-o-t com. I’ll get it right in my BlackBerry
See you!
Hi all,
I’m like crazy trying to arrange everything, but I’ll be at the BlackBerry WES at Orlando, Florida next week. From May 13th to May 15th.
If you’re going to be around there and want to talk with me please, send us an email through the contact form.
Elondra is now becoming a BlackBerry ISV Partner, and we want to improve our support for BlackBerry and also to find companies from all around the worl that want to sell our products, services or technology in their own regions.
The WES is a great place for this since it’s the biggest meeting for BlackBerry partners worlwide.
See you at Orlando!
No, this is not the datacenter where our servers are hosted (neither our sites nor our bmServer database synchronization servers), but they could
Javier, one of the partners at Elondra, instead of taking a cup of coffee was playing with a photo and came up with this:
It made me laugh a while, so I decided to post it so you could laugh a while too.
He explains that he was trying to illustrate the storage and computing power of phone with OpenBaseMovil.
Do you think he got it?
Dear readers and contributors,
We are currently taking part in the Startup 2.0 contest, and through that we have been also mentioned at KillerStartups where you can vote for the best startups.
Please, help us promote OpenBaseMovil voting for us:
Thanks!
I was writing an email for Richard Hull, explaining some of the basics of bmScript and how to use it, but after writing it, I thought that it was worth posting it instead of just sending the email.
So there it goes.
Introduction
The ant build file for openbasemovil-script creates various jar files for the engine, one of them contains just the runtime to execute compiled scripts, another one contains also the script compiler, and the other two are JavaSE tools to compile and run script files in a standard JavaSE environment. These tools can also be a good example of how to perform the same from a mobile device using JavaME.
Though bmScript is a scripting language, it is really compiled to a binary form for a couple of reasons. First to be able to compile the scripts on application build or a remote server and reduce application size by using the runtime-only jar, but most important to improve execution speed by spending time on interpretation just once.
Class loading
The engine provides the ScriptingClassLoader class, which searches for .bmc (compiled scripts) resources in the classpath under the folder “vm”. It also provides access to system defined classes and system or custom NativeClasses.
You can subclass the ScriptingClassLoader in order to provide other ways of finding classes. The compiler and runtime for JavaSE do it to find classes in standard folders, but you can extend it to download them from a remote server, for example.
Integration with non-scripting classes (Java classes)
The NativeClass provides an easy way to create proxy Java classes that can be injected in a ScriptingClassLoader to be able to access any other Java class from a script.
It could have been done a lot easier with reflection, but that is not available with JavaME, so we have to do it in another way.
The NativeClass provides all the “infrastructure” to define methods and properties and to find and check that they are properly invoked, so you can create proxy classes for Java classes easier by subclassing NativeClass.
A good example are the classes found in the bm.vm.sys package under the main src folder of openbasemovil-script: The Map class lets you create Hashtable objects from the script, though you call them “map” in the script.
The Map class declares the methods present in the class in a static block, and then just provides the implementation of the invoke method that is a switch to handle the different methods declared.
Let’s suppose that I have a NativeClass called List that will let me access java.util.Vector, and I want my scripts to access it as “list” (check the Map class, that is performed in the constructor).
Now I obviously want to run a script that will access this class, to do that all I have to do is add it to the class loader of a virtual machine (we’ll get later to the full process of creating and invoking a vm):
vm.getClassLoader().addNativeClass(
"list",
new sample.List( vm )
);
Compiling a script
The bmsc class in the tools folder of openbasemovil-script is a JavaSE command line tool to compile .bms (script files) to .bmc (compiled scripts), very much in the way you do with javac.
The source code shows how to create a custom class loader, how to create a virtual machine and how to invoke the script compiler from Java code.
It is JavaSE 1.5+, but it can be used in a very similar way from JavaME.
Running a script
The bms class in the tools folder is a command line runtime, this time like the java command line tool from the jre. It shows how to create a custom class loader, how to create a virtual machine and how to invoke a script.
Using the example of the List NativeClass above, we could do something like this:
My scripting class (foo.bms):
class foo { method int main() { var list myList; set myList = new list(); mylist.add( "hello world with list!" ); system.println( mylist.get( 0 ) ); } }
The java code to invoke the script (once compiled into foo.bmc):
final VirtualMachine vm = new VirtualMachine();
vm.getClassLoader().addNativeClass(
"list",
new sample.List( vm )
);
vm.run( "foo" );
The run method is a shortcut to the one used in bms that uses no arguments, it will load the scripting class foo, search for a main method and invoke it with no arguments.
If you want to retrieve a return value from a script, the run method or the invoke method in the virtual machine will always return an Instance object.
The Instance object represents (obviously) an instance of an ScriptingClass object.
For native types (boolean, int, etc) they always have a property called “value” that you can retrieve with the get method.
For other types, the real java object might be in an attachment. The Map class does this, it uses an attachment called “map” to hold the real Hashtable object used.
In further articles we will try to get deeper in the possibilities of the language. It obviously can be used from JavaSE, it allows you to compile or just run scripts that are loaded dynamically, and through the NativeClass system it allows you to extend the runtime to access any Java class you want.
Please, feel free to comment your thoughts, and remember that bmScript is still v0.1, it works, but it has still to be thoroughly tested and performance tunned.
A couple of days ago we created a mirror of the current English forum categories under two new languages: Spanish and German.
Thanks to Stefan Haacker for the German translation and for his collaboration as the moderator of the German part of the forum.
We hope that you use them, don’t be afraid by the fact that they have 0 topics… they are brand new!
Every now and then we search Google for OpenBaseMovil to see what the people is saying, how are they using it, etc.
We’ve found many Chinese and other Asian pages talking about it, discussing certain matters about character parsing and other issues, for example.
We’ve also found Arab pages that are trying to help people with OpenBaseMovil.
And even Spanish job offers that ask for OpenBaseMovil knowledge.
We are native Spanish speakers, since we’re from Spain, and though we decided from the start that this site and all that has to do with OpenBaseMovil should be in English for it to be more global, it seems natural that other languages should be incorporated one way or other to the site, and also to the platform documentation.
It is also clear that it is easy for us to test with different languages like English or Spanish and that there should be no problems with other left-to-right occidental languages like German, French, Italian, etc. But it is a whole different issue with Asian languages, and right-to-left languages like Arab or Hebrew, and that is far more difficult for us to try ourselves.
So this call ask for a couple of things from you:
- Do you think that we should create sections with translations to other languages?
- Would you be willing to collaborate in the task?
- Should we create also language-specific sections in the forums? This raises a moderation issue.
Hi folks,
We’ve been making some tests of the (Open)BaseMovil applications on the BlackBerry emulator (soon in a real device) and also with some Windows Mobile based devices like Qtek S200 and specially an HTC Touch Dual.
Here are some screenshoots of bmSales, our commercial SFA application running there (click to enlarge, on new window):
On the BlackBerry:
![]() |
![]() |
![]() |
On the HTC Touch:
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
We have some new features in stock that will come with the 3.1 version, but in the meanwhile we’ve decided to roll out a bug-fix release 3.0.2 which is now available for download at SourceForge and also from the download page in this site.
This release contains some minor modifications to the developer guides (database and quick start) and two bugfixes spotted by Stefan Haacker (thanks Stefan).
People have started to comment on the forums, they are getting alive and start being useful. We are very happy with that and encourage you to collaborate and help us giving life to the forums.
The major changes for the upcoming release 3.1 are the new storage engine and the new ui engine.
The storage engine will overcome the limitations imposed in the RecordStore size by some devices, such as BlackBerries, Nokia Series40 and Motorola.
The ui engine will provide better support for Nokia Series40 devices and also for touch screen devices. Depending on the schedule, the ui engine might have to wait until 3.2 but we expect to roll it out by 3.1.
Hi, I’m really tired today, yesterday was a very demanding day with very little sleep, a flight (with some delays for the way back), and again not enough sleep.
But it was a very productive day at the fair, though I still think that it’s not a fair for us to have an stand.
A friend from Unkasoft who is promoting their very promising mobile game advertising engine was so kind to invite us, they have an stand at the Spanish Pavilion. If you’re around there it’s worth to talk to them and see what they have to offer.
During the fair we had some meetings with interesting people, some arranged previously, some not. But probably the one of the most interesting and, probably, promising was meeting Robert Virkus, CEO of Enough Software, the company behind J2MEPolish. I think that there’s a way for collaboration between both parties that might lead to good opportunities and also to useful free applications. I’ll talk to Robert after the show so we can know more about each other’s platform.
I won’t talk about the thousands of new phones, android testing platforms, and so on. I think there’s enough people talking about that now
By the way, we’re a bit late with the development of the upcoming release which will fix the reported issues, and will include a new storage engine to override the current limits of many devices (S40, BlackBerry, Motorola, and more) and also a new version of the ui engine. As soon as we have a working beta version we will release it, but in the mean time we will probably publish a 3.0.2 release to just fix the current issues.
























