I am very interested in mobile application development. But which language or framework is more popular, useful and usable?
I know Java well. If you have any idea and/or experience, please help me to take my decision.
J2ME is much more popular than Android – many phones of many vendors (Nokia, Sony Ericson, Motorola, LG, Samsung and more) have it, and you can deploy application to them. The price is limited capabilities and no consolidated distribution channel (for the moment, Sun is talking about the Java Store).
On the other hand, Andriod has much more capabilities, its API is closer to the Java API, and it has more capabilities, but there is a limited number of phones. Also, you have the Android market as a distribution channel.
If you can describe what you have in mind, I can elaborate more.
The J2ME market is quite large, but Android is rising fast – it is a true smartphone, a segment which has become more and more popular in the recent years. According to job trends, both are have roughly the same demand now:
I’ve dabbled in some J2ME programming, but right now I’ve written about 4 Android apps.
- The Android API is a lot of fun to use. J2ME is showing its age. For example, a JSON parser is built in. And you have access to SQLite. Android’s SQLite access code is like an amalgam of lessons learnt from Ruby on Rails, REST and plain-old SQL.
- In terms of deployment numbers, there are more J2ME apps than Android apps. However if you want to enter the smartphone market, Android is second in mindshare to iPhone (BlackBerry is reinventing itself, but its API is still looking like a J2ME++). Read this article.
- The whole platform is open source. So learning it and mastering it is easy.
I think you’re missing an important fact: Android is not only a platform, but also brings with it a fully fledged application framework which continues to grow and gets backing from some very big players (Open Handset Alliance). J2ME is just a stripped down version of the Java platform. That’s a major difference.
Having worked with Android since over a year now, I can definitely say that is has grown into a very powerful system and decent tool support.
Only Android Can Catch the iPhone
There are something like 20 Android phones coming out before the end of the year.(*)
Networks like Verizon that ship only deliberately-crippled handsets will be hard-pressed to win sophisticated consumers. Their customers mostly make voice calls and text each other, to get fancy they might run Song ID or VZ Navigator.
I think the issue is: which phone owners actually d/l and use the apps? The walled-off Verizon customers, not so much. Right now, the action is in the iPhone, but I think Android might catch up.
(*) Here is just one.
I have to agree with others on shying away from J2ME development. I have a Motorola RAZR V3xx that I’ve used for a few years. It is as standard a J2ME-supporting phone as you’re likely to get from most carriers. I decided to look into doing some J2ME development for the phone to give myself some helpful utilities.
Long story short, there is a reason you pretty much only see games on J2ME phones. Unless you are willing/able to shell out big bucks for signing certificates, you cannot even access the most useful APIs available on the phone. Things like File IO, PIM (contacts, calendar), Bluetooth, etc. are simply blocked unless you get your application signed using a carrier’s (AT&T, T-Mobile, Sprint, Verizon, etc.) special certificate. And the cost of these certificates can easily exceed hundreds or thousands of dollars. Putting this simply out of the range of your average hobbyist.
For me, this pretty much means I will be targeting the Android in the future. The iPhone is also a good place to be targeting. The current state of J2ME on handsets here in the U.S. is just not worth my time for pet projects. Which is disappointing, as most of these phones are capable of doing many useful things otherwise.
It depends on what you mean by ‘popular’. If you are counting in terms of installed handsets, then J2ME wins hands down. As far as current installed handsets, Android has few mobile phone companies and only recent mobile phones (whereas J2ME has been around for the last six odd years).
However, that doesn’t make working with J2ME a nice-to-have. Sadly, each manufacturer cripples it in some way, and not all phones with the J2ME badge are equal; some are more equal than others. MIDP, MIDP2.0, CLDC, CDC … the list of acronyms goes on. And when you buy a phone, it has ‘Java enabled’ without actually saying what it is that it supports, so even the customer doesn’t have a clue.
Despite its large installed base, J2ME remains fundamentally unpowered for the world’s current generation of mobile phones; the upgrade path is usually non-existent (though it’s the manufacturers to blame for that, unfortunately) and you can’t even do things like access Bluetooth or contacts in any useful way; though extensions have been proposed for J2ME, they’ve never really lived up to the expectation of write-once-run-anywhere.
Whether Android goes down this route as well remains to be seen – the biggest concern is manufacturers are trying to ‘do their own thing’ (e.g. Motorolla’s BLUR UI) which will further fragment the market.
Lastly, don’t forget that it’s in the handset manufacturer’s interests for you to throw away your old phone and buy a new one every year (or two). Support, bug-fixes, and generally upgrading your old phone’s software, though technically feasible, never happens. I had a P990, and despite a few rounds of updates, it remained as buggy as hell (which is why I ditched it for the iPhone when it came out).
So, from a programming perspective, Android is better than J2ME. For reaching many handsets, J2ME is better than Android. For general user interface and power, choose an iPhone.
Android and J2ME aren’t exactly similar in their scope as platforms, in a way, it’s like comparing apples and oranges.
When we talk about Android, we are talking about full-blown mobile OS, with much more extended capabilities than J2ME. It could be used for pretty much everything you can think about – system utilities, social network services, location-based apps, games, etc. Android has also richer UI kit and lots of available source code to learn from.
In Android you have access to many APIs, designed to be used in modern smartphones, and these APIs are being refined constantly, while J2ME has started to feel aged, and is concentrated mostly on graphics.
The penetration rate of J2ME is currently bigger than Android’s, and by bigger I mean much, much bigger, but business analysis doesn’t end just with number of handsets of the given platform.
If you have idea for a great app, you’d better do it for Android and/or iPhone OS – it will be easier for you and you’ll be reaching to users that are more likely to need such app, and that are more likely to pay reasonable price for it.
Overall, I would recommend to start with the newer platform, even if only because it would be more interesting and a better learning experience for you.
While there is no shortage of ‘feature-phones’ supporting j2me in the wild, I suspect third party applications get very little market ‘traction’ because the users aren’t looking to install new software on the phone.
Android is a breeze to develop for. I think you should try it.
There is no harm in getting the SDK and experimenting for a few hours..
J2ME is very popular because almost every phone can run these applications.
Android on the other side has just few phones and netbooks supported, but Android API/SDK is more powerful than J2ME. Android phones come with great hardware and you’ll have the opportunity to work with all these “cool” touch screens, gps, accelerometers, etc. It’s still in development, but I think it has a future.
From my point of view, Android is more and more better than the J2ME
Learn Android and enjoy… we have lot of fun while developing the Android apps
J2ME apps look and feel and development environment not effective compare with the Android
J2ME is the most popular. Because many mobile phones have a support for J2ME. J2ME’s main advantage is that it belongs to the Java family, it is open source and widely supported by various kinds of devices.
Many mobile phones and other devices support J2ME due to its simplicity, easy to implement, etc.
The J2ME is the base for Blackberry,Android,etc.Because the others (other than J2ME) are developed after the J2ME.After eliminating the tough concepts in j2me,using some j2me concepts they build their environment like android,blackberry,etc.
J2ME is very old .It have many drawbacks,limitations,etc.
These drawbacks are overcomed in the latest technology like android,blackberry,etc.
J2me is good .It is old.It have many disadvantages,etc
Android overcome that disadvantages.Android keep on growing
The general java feature “platform independent” is failed sometimes,some scenarios in J2ME.
Android is new technology.It have many features,etc than J2ME.
Developing an application for android devices is simple,easy,etc.
We need ot get the pay liscence for developing application and deploying (applications) into the device.
The android SDK is obtained by free versions.
My opinion is Android is better than J2ME.