One exceptional thing about Java ME is that once you write the code it runs on almost all compatibles devices (well almost, once you have already programmed in Java ME you know that you already have to test you app in all phones that your app is meant to run :D )
and the thing I do not like about Java MS is that you never has access to the powerful resources of the devices your...
on Jan 20, 2007
A very interesting in-depth interview of Sun's CEO Jonathan Schwartz where he comments on the iPhone, open source, and multiple near-death experiences. Highly recommended.
The iPhone-related comments begin at around 8 mins. into the interview: "The market ability of a device that is truly closed [limited to static content but not open to dynamic/executable content] just limits its appeal....
on Jan 19, 2007
So, of course the big news of the week was the introduction of the Apple iPhone.
And I have to say: It's impressive. Slick. Cool. It will, in more ways than one, reshape the mobile industry. It is a personal mobile "accessory" with desktop-class power that is tuned to meet the needs of the mobile consumer life-style. It shatters conventions because it radically simplifies and integrates...
on Jan 12, 2007
In my last few entries, I've been talking about a bug I'm currently fixing. One of the reason I haven't been updating daily is because said bug is taking a lot more of my time than expected. There is always more to the picture than meets the eye. Anyway, in my last entry, I briefly discussed the internals of the CVM (phoneME Advanced VM)'s JIT (officially, the dynamic adaptive compiler)....
on Jan 11, 2007
Sorry for not writing for a while. I've been really busy. In my last entry, I described a bug that needs to be fixed and all the background information behind it. Below, I will get into the details of how we'll fix the bug. Of course, we'll talk more about the internals of the phoneME Advanced VM (CVM) as we proceed with the fix.
Resources: start of CVM internals discussion, copy of the CVM...
on Jan 5, 2007
I hope you all had a safe and enjoyable holiday break. We here at the Mobile & Embedded Community sure welcomed a bit of a rest after the intense weeks and months up to the Java ME open source launch.
The new year is always a good time for reflection and to ponder things to come. So, while things are still quiet I figured I'd take the opportunity to share some thoughts.
From all I've seen...
on Jan 3, 2007
API testing vs AMS testing
article described the primary test execution mechanisms,
used in the world of Java ME implementation test suites:
'Server/Agent' approach, used for CDC implementations,
where test code is downloaded by Agent application from the Server
'autotest' approach, where tests are packaged into sequence
of applications, that are repeatedly downloaded/executed/...
on Dec 18, 2006
This article is a continuation of my series of discussions about the internals of the phoneME Advanced VM (commonly known as CVM) for JavaME CDC. Below, I'll work on fixing a bug in the VM. Along the way, I'll discuss more of CVM's internal mechanisms. Note: for the purpose of this discussion, I will only focus on the coding aspects. The source code version control details will not be...
on Dec 14, 2006
People kept asking me what my first blog entry was going to be about. I suppose they assumed it would be about something grandiose, earth shattering or some how amazingly interesting. Well, here it is -- and its about .... BUGS. Ok, so maybe not so earth shattering, but important none the less. We had some questions around this topic from community members, there is one such reference in...
on Dec 14, 2006
For those interested in creating a
phoneME Advanced implementation on other platforms with other
windowing toolkits, you may be wondering how and where to start. The
first thing you'll want to do is get the CDC VM (CVM) up and running.
I won't go into detail about this, but an important point to note is
that the CDC (Connected Device Configuration) specifies a set of Java
classes that must be...
on Dec 13, 2006
This past Thursday night Sun sponsored the CT JUG's holiday party. We were lucky to get guest speaker Angela Caicedo all the way from Sydney Australia. Angela "stopped by" on her from the Austin JUG to JavaPolis to talk about Sun SPOTs. JUG leader Ryan Cuprak did a great job of getting the word out to the robotics community as we had attendees drive over 90 miles to attend her talk. I...
on Dec 10, 2006
There are a lot of not so nice things about using native methods. Here are some:
less safe - think "stray pointers".
less portable - you'll have to recompile them for every target device architecture you deploy on, present and future.
less cost effective - need extra work to build and test all the architecture variations, extra disk storage for deploying all the different binary versions, etc....
on Dec 7, 2006
The phoneME Advanced VM (CVM) comes with a dynamic adaptive compiler (JIT) which generates compiled code. Today's article will talk about how JIT compiled code uses the runtime execution stacks. I will also point out a few other tidbits about efficiency and performance as pertaining to the runtime stacks.
Resources: start of CVM data structure discussion, start of stacks discussion, copy...
on Dec 6, 2006
In a response to my previous blog entry, JB asked whether we could have opened up the source code and then cleaned it up after the fact, in public. The question was about OpenJDK but it applies equally well to phoneME.
For phoneME at least, and probably also for OpenJDK, doing the cleanup in public is unfortunately a non-starter. In several instances the source code contained some technology that...
on Dec 6, 2006
There's a term that I commonly use to describe CVM: embedded friendliness. Is this really a proper English term? Maybe, or maybe not. But it concisely expresses the idea that a system is suitably designed to work on embedded systems, and thereby has the property of embedded friendliness. And CVM is embedded friendly. If you are a purist of the English language, I apologize. But for the...
on Dec 5, 2006
Welcome to a continuation of the discussion on the internals of the phoneME Advanced VM (CVM). If you missed the beginning of this discussion, look here where I did a high level introduction of some of the major VM data structures using the CVM map. Today, I'll get into the execution of Java methods and how this appears in the runtime stacks. By stacks, I mean stacks as in the thread...
on Nov 30, 2006
Gotta get some work done. So, short entry for today. CVM Internals will have to be postponed again ... sorry. On to today's topic ...
The second law of thermodynamics states that [at least how I would like to remember it] ... universal entropy always increases. An interesting corollary of that is ... local entropy can be reduced by infusing energy, but this also comes at the cost of...
on Nov 29, 2006
Today, I started reading this thread on java.net forums. It made me wonder if people all mean the same thing when they talk about a multi-tasking Java platform. So, I decided to postpone my discussion of CVM internals for a day, and go over the topic of multi-tasking (which is also relevant to phoneME and CVM).
Disclaimer: Before getting into it, I should clarify that my opinions are my own...
on Nov 28, 2006
In this blog entry, I'll be talking
about the directory layout of the phoneME Advanced project. You can
follow along by browsing the source code here
while you're reading this blog. You'll have to join the project to
The start of the phoneME Advanced code
is located components/cdc/trunk
directory. Underneath the trunk directory are these directories:
– contains the...
on Nov 27, 2006
Personally, when I dive into a new system, one of the first thing that I try to figure out is how everything fits together. If you are a visual thinker like me, one of the best ways to do that is to draw a diagram of all the things that you think are important and see how they relate to one another. In the case of embedded systems, in my experience, it is also important to know what goes where...
on Nov 27, 2006