The Source for Java Technology Collaboration
User: Password:



Vikram Goyal

Vikram Goyal's Blog

What bugs you about J2ME?

Posted by gvix on November 07, 2005 at 03:42 AM | Comments (20)

In a post from couple of days back, I blogged about the massive market that Nokia has announced for J2ME applications. The comments on that post are mostly pessimistic. Most developers are unhappy with the state of J2ME, with anger directed towards Operators, Manufacturers and Sun equally. This is not an isolated case. Previously, when I had blogged about raising interest in J2ME, I had got the same complaints.

So what is wrong with J2ME? What would you like it to do? What are, as developers and companies, our options? More importantly, what are the solutions to make it a dominant player in the handheld applications market?

Maybe, if we verbalize our angst enough, we will get solutions.

I look forward to the comments.


Bookmark blog post: del.icio.us del.icio.us Digg Digg DZone DZone Furl Furl Reddit Reddit
Comments
Comments are listed in date ascending order (oldest first) | Post Comment

  • 1. More APIs to use prevalent device specific features (not the ones that can harm the phone). e.g. Reading/Writing to file systems, accessing camera (by checking if camera is present) etc.

    2. Uniform behaviour across phones and manufacturer's implementation.

    Posted by: goldylukka on November 07, 2005 at 03:56 AM

  • The biggest problem I have at the moment is device fragmentation. APIs that either behave significantly differently between devices or are broken.

    This is not to say that all phone should behave the same way as the phones themselves are often very different for good reason.

    That said, this is only a major issue if you are doing b2c applications. In our experience if you are targeting b2b applications then you have a decent chance of having a homogeneous handsets and the issues are smaller.

    Cheers


    Richard Spence
    Bluetrail
    www.bluetrail.co.uk
    Business Applications for Mobile Phones.

    Posted by: bluetrail on November 07, 2005 at 04:06 AM

  • Operators are my worst nightmare. As long as connecting to the internet is not a standard feature provided and as long as mobilists think that internet-access is expensive, J2ME apps will not become mainstream.
    Even most of my friends do not have internet access from their mobiles, although they're pretty much all gadget-minded and techy-oriented, still fidling with their phones and operator's settings.
    As long as deployment is a pain, all those phones will not be a market, and asking the magic i-Pod $0.99 per MIDlet will not take us to the milionair-status :(

    Iwan - Sticktail Games

    Posted by: ieising on November 07, 2005 at 07:00 AM

  • the biggest problem I have is the lack os visual components.
    like mask input boxes, we could have two sets of components, one richer with components for example, like Symbian phones.

    Posted by: urubatan on November 07, 2005 at 08:13 AM

  • I have a couple of ideas. First I'd like to say that Java on mobile devices is a wonderful idea. I believe enabling wireless devices with Java/HTTP capabilities has the potential to create a great foundation for both standard and unique revenue generating services. It's so obvious it's exciting to think about.

    Unfortunately it's been a complete failure and the simple foundation is broken and unusable. Here is a first stab off the top of my head list of things to fix:

    1. Fix the network.

    My customers are asking _me_ how to configure their phone for HTTP access!!! How am I supposed to know how to configure every possible phone? You can't ask users to manually configure. You have to stop building phones that force users to manually switch between WAP and HTTP before they start a WAP or HTTP application.
    Provide a simple proxy server/service to the operators so they can allow HTTP connectivity to the cell phone. Is the phone Internet accessible or not? Notifying a phone of some event is a capability a good number of useful services are going to want to do.

    Even when one phone works with HTTP on one network, that same phone doesn't work on another network. Case in point: Vodafone and Rogers.ca. The same model of phone works fine on one network but not the other. The network is fine because different models of phones work fine on those networks. I could never find out what the problem was. Network connectivity just has to work because in my experience polite emails requesting help from operators are never returned.

    Add to this the larger operators are tightening the noose by only allowing signed apps on their networks. Even if the user finds a way to install your app your J2ME app can't get HTTP access unless it's signed. I have a J2ME Java Signed application under my belt. In a nutshell the process is: stabilize a version then go through some testing hoops to get it certified/signed. This costs time and money. You want to fix a bug? Too bad, you have to go through the process again. You want to run you app on a different phone (in some cases a different firmware revision of the same phone your are already certified for) too bad. You have to go through the costly timely cert process again.

    Oh, what's that? you'd like to run your app on a different network? you may have to go through the cert process again. I don't know for sure because I gave up.

    I just realized I'm just getting warmed up:-) I doubt anyone wants to read 20 paragraphs on the frustrations of J2ME.

    To summaryize, fix the fundamentals:

    1. Enable HTTP to/from the device 100% of the time. F.E. you are not allowed to market a Java phone and an operator is not allowed to sell 'Java ME' capable bandwidth/connectivity unless HTTP to/from the device is guaranteed.

    2. Make the phones auto configure (no manual network configuration ever).

    3. Drop the cert nonsense. Allow developers access to the device/network. Operators can enjoy the increased profits from extra bandwidth usage, handling the payments, marketing, etc. Again, you are only certified if you allow unsigned apps. Look at the Internet as an example of why this is a good thing.


    Posted by: markswanson on November 07, 2005 at 08:46 AM

  • Sorry. This turned into a long one and I think it comes across more negatively that it's meant to. Perhaps I've been holding all this in too long ;-)

    My personal take on the history is as follows:

    The current state of J2ME (MIDP-1.0 and MIDP-2.0) seems to show that Sun - with it's wonderful idea of cross-platform compatibility - has been trodden heavily underfoot by the manufacturers and network operators.

    In order to get these powerful entities to adopt Java widely, compromises needed to be made to secure agreements. This meant that the specifications were too loose and contained too many mays and optionals, instead of shalls and musts.

    This let implementors off the hook and allowed the fragmentation to really take hold and proprietary APIs proliferated, along with interpretations of the specifications.

    It was quite evident that this was a known problem before MIDP-2.0 was released and Sun (or at least, the JCP), to it's credit, did seem to try to tie down that specification more tightly.

    Personally, I really enjoy developing J2ME applications. I have a background of embedded software development and I understand the concepts of devices that are restricted in both memory and speed (for those who think it's too restricted, go and look at JavaCard!). I think that there is very little actually wrong with the J2ME concept. It's mainly about the implementation.

    For any J2ME developer, number 1 on the list of real horror stories is device fragmentation. I have been to seminars by manufacturers and network operators and they are all happy to admit that this is a problem and they are all keen to resolve it. Unfortunately, they only seem to be keen on resolutions that go their way :-(

    Section 2 of JSR-271: MIDP-3 appears to be addressing the fragmentation issue, particularly with statements like "Tighten spec in all areas to improve cross-device interoperability".

    Perhaps second on the list, but also very high up are the attitudes of many (but not all) network operators. Walled gardens, expensive contracts, complex contracts and difficulty with device settings are just some of the common and very valid complaints from developers who want to access the potential markets without unfair restrictions.

    I wouldn't think that Sun is in any position to do anything about that. Let's face it, the device manufacturers are somewhat at the mercy of the network operators.

    Java Verified. Hmm. How many others have questioned this? If I have (as I do) an application written in pure MIDP-1.0, that adapts itself to screen size, colour depth, font support and keypad (and/or joystick) capabilities. An application that works perfectly on the J2MEWTK emulator and on the most restricted handset (Nokia 6310i). Why does this need to be approved on more than one device in order to become Java Verified? Surely that's Handset Verified.

    This same application was accepted by a network operator for publication on their site for several platforms. However, it was not accepted on other for reasons that I found very disagreeable. One example was that one particular handset, deliberately does not display Command.EXIT options. I'm sure other J2ME developers know which devices I'm talking about. None of the native applications on this device display an exit option. Users of these devices understand that the special button either takes them back one step or exits an application. I asked them repeatedly to reconsider, even with support (though a bit half-hearted) from one of the manufacturers support engineers.

    Another reason the application was rejected on that handset was that their test handsets had bugs! On my device (same make and model, but presumeably a different firmware version), my application could read the application properties (eg. version). Their devices were returning nulls. Is it reasonable to reject an application because the test hardware is faulty?

    If you wish to have an application published my many manufacturers or operators, they require that it be verified (either by them or the Java Verified process), usually involving significant cost (both time and financial). This seems astonishingly unfair when you look at the state of some of the handsets. How can a manufacturer be allowed to declare a device compliant when it has bugs? Input fields should work properly, application properties should be readable, Exit options should not be added to screens by the JVM (and preferably not ignored either), the JVM should not crash when requests are made to the browser, threads should work correctly, including a MIDlet Icon should not cause an installation error to be reported, font metrics should be reported correctly, etc. etc. etc. If devices are allowed into the market with faults like these, cross-platform application behaviour cannot be achieved or relied upon.

    This leads nicely to the next major issue. Upgrades to devices in the field. At the moment, I don't know of any devices that can be updated this way. It's possible, (if you know who to talk to and you're prepared to pay for it) to get device firmware upgraded, but it is not an easy process.

    JSR-233 J2EE Mobile Device Management and Monitoring Specification would appear to be addressing this, but I have concerns about what else it proposes, mainly regarding privacy.

    The JCP is at the heart of any improvements. It needs to be tight on the manufacturers and the specifications need to be rigidly imposed. Without rigorous testing and approval of devices for compliance to the standards, there is no point having the standards. Let's hope it all falls into place for MIDP-3.0 because it's too late for MIDP-1.0 and 2.0. We just have to live with their legacy.

    One final thing worth pointing out. As a member of the JCP, I recently needed to vote to ratify three positions on the JCP Micro Edition executive committee. IBM, Nokia and Philips. I took the opportunity of asking them how they intended to reduce the fragmentation problems, so prevalent in the industry. You are allowed to ask questions because the "C" in JCP stands for "Community".

    Only Philips responded. Conclusion: Watch out. Keep a close eye on the direction that the Micro Edition JSRs take and if you have the chance, comment on them to help guide the process.

    Posted by: jimmack on November 07, 2005 at 09:43 AM

  • Just a quick follow up (having read markswanson's comments)

    I agree very much with your comments Mark. Particularly the certification stuff.

    I think developers are treated as a revenue stream in the same way as the customers who will buy their products. This way, the network operators make money from every direction.

    Posted by: jimmack on November 07, 2005 at 09:48 AM

  • Hello jimmack - thanks for contributing your thoughts.

    It seems like the JCP and MIDP-3.0 are the only possible chance for the major issues to get ironed out. Since they are the ones that created the current mess I don't have any hope of things getting better. Good for you for getting involved as a member.

    Cheers.

    Posted by: markswanson on November 07, 2005 at 05:07 PM

  • There is evidently a serious problem with the way network operators are managing the data side of their business. This could be such a profitable stream for them (even without extortionate pricing), so why are they making such a hash of it?

    Posted by: jimmack on November 08, 2005 at 01:03 AM

  • The only way to reduce device fragmentation may be to provide an 'installable jvm' for the mobile phones (AND pocket pc).

    So people could easily upgrade their jvm like in Destkop Computer.

    Posted by: strf on November 08, 2005 at 04:38 AM

  • The specs should not contain *should* but only *must*. The implementers should not pick and choose subsets of the specs. And carriers (telco's) must support the specs in the phones that they offer.

    Posted by: sm1 on November 08, 2005 at 01:08 PM

  • I have to agree that device fragmentation is one of the biggest problems if not the biggest one. That was the reason why we introduced the build system which helps to deal with it in NetBeans 4. We are getting very good feedback but still there are more issues releated to device fragmentation not only the build system.

    Posted by: mryzl on November 21, 2005 at 03:56 AM

  • I think that the manufacturers have relied on the assumption that developers will usually "do what they are told". Unfortunately, this seems to be true.
    I'm not sure if the build system described by mryzl for NetBeans 4 has been added by Sun or whether it's a plug-in (personally I use Eclipse, Ant and Antenna), but if so, then Sun are tackling the problem the wrong way round. It's not the developers that need to be "helped" it's the manufacturers.

    Posted by: jimmack on November 24, 2005 at 09:25 AM

  • It is redily evident that Sun's animosity with
    Microsoft - and vice versa - prevent either from
    indicating any support for the other...

    Background: I have to port a series of PalmOS applications to WindowsCE devices. While I have been able to determine that Java Studio Enterprise and the Mobility Pack will allow me to write Java for J2ME MIDP/CLDC. I also know that emulators for many mobil devices (phones) are available.


    BUT I have found no info as to what WindowsCE devices support Java (if any) and...


    WHAT does the WindowsCE device need to have resident to run
    a Java app (including support for Swing GUI).


    IF it doesn't have it, CAN I add it and where do I get that
    from?


    Get over Microsoft , be the BIG BOY and make it evident how we can develop and run Java on Mobil WindowsOS devices.


    It's the only way to really show the power of Java.

    Posted by: mbpetersen on December 07, 2005 at 09:56 AM

  • Hi MRYZI. I think you are Martyn Ryazi from CZ. I am sorry to say that your NetBeans IDE is very slow... sometimes it hangs also... Now coming to the J2ME part... Being a J2ME professional, I am facing so many problems. The most important among them is... there is very less work available in the industry in terms of J2ME application development. people prefer other technologies with which they can directly use system level api's in there applications and of course much faster execution also(don't remind me for a perticular JSR for this). There is a long list of JSR's and manufacturers' choices differ significantly when it comes to JSR selections for their devices. Purpose of JTWI 1.0 is not achieved. The only place where J2ME is doing something... is in the area of game development. Mobile gaming industry is the only one which welcomed and embraced J2ME with open arms. The sad part is that... in mobile game development... programmer's logic plays the dominating role instead of the api's. Last so many years we have been listening this...... J2ME is the next big thing....millions of applications.... millions of jobs........It seems to be an illusion..........

    Posted by: amit_sharma on December 07, 2005 at 11:07 PM

  • Is it possible to create a magnifier software using J2ME.since it has no use of pointers i am wondering how this wud help in creating a mobile magnifier for symian phones .Series 60.

    Posted by: pebble on January 10, 2006 at 11:17 PM

  • i did not get response to my post.i thought somebody would help??????

    Posted by: pebble on February 15, 2006 at 12:54 AM

  • 盛大金属制造有限公司是以生产钢管、无缝钢管、无缝管以及销售为一体得大型文件柜更衣柜流通企业。我们提供论文发表和同声传译同声传译设备等Google排名服务,专注于企业的SEO优化培训!

    Posted by: jlj714 on October 21, 2007 at 07:57 PM

  • 网站优化-搜索引擎优化-Google排名-Google左侧排名-SEO

    Posted by: jlj714 on October 21, 2007 at 08:01 PM

  • 博澳流水线以丰富的经验和先进的计算机辅助设计生产线来满足客户的要求,设计出合理的工业流水线.

    Posted by: sunhuanjun on November 18, 2007 at 11:07 PM





Powered by
Movable Type 3.01D
 Feed java.net RSS Feeds