Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What's the best way to go about developing a modern J2ME app? [closed]

I've been so confused deciding on how to proceed about designing the UI of a J2ME app. Basically I have finished working on the algorithms, functions and database but I'm having trouble bringing out a good UI for it. I had two ideas:

  1. Make it a j2me app that will easily help me to leverage web compression technologies for fast and cheap internet accessibility (A core desirability).

  2. Make it a web app and make it a sort of browser app that will just load the online app. This option obviously makes it easy not to worry so much about upgrades and UI capabilities but however the internet cost and speed are limiting factors.

I'm trying to go with the first option and the first way I headed was LWUIT but along the line it became to heavy and I had trouble even debugging the app much less deploying it on a small phone. In fact, searching online made the problem worse. It seemed that interest in J2ME apps had reduced drastically and most talk about it is outdated. In fact, many people do ask me the same question, I see very visually appealing J2ME apps online but I can't seem to figure out their 'secret'.

SO I would like to hear from someone who has developed a good looking J2ME app? What's the best way to go about developing a small good looking app? Specifically I'd like links to useful tools and articles on this. Thanks!!


EDIT : CURRENT DEVELOPMENTS...

After a long thinking and research on how best to develop a standard modern J2ME app, it dawned on me that the best option would be a unified platform, perhaps something that will enable me easily port HTML5 apps to J2ME. My search so far however has been in vain. The only interesting things I have discovered are CodeNameOne and Java's Avatar One. However CodeNameOne doesn't really offer the solution I was looking for while Oracle seems to be still deeply busy with Avatar One for more than a year now. I would like to know whether I'm missing something. Having seen the capabilities of the open source LWUIT, I think it won't be too difficult to develop a HTML5 renderer that will help port a HTML5 based app to J2ME with a good understanding of HTML5. So is there something I'm missing? Any ongoing opensource projects I can be part of or something?

Thanks!

like image 772
Chibueze Opata Avatar asked Oct 08 '22 00:10

Chibueze Opata


1 Answers

Having gone through what I am suggesting here before, I don't necessarily recommend it but you asked.


If you want an application that looks as good as if it were developed with LWUIT but in a smaller jar file and that is easier to debug for you, one solution is to develop the GUI from basic geometrical shapes and images drawn on a LCDUI Canvas.

You will be sacrificing scalability and development time in order to achieve those 3 goals.

The GUI will become easier to debug for you because you will learn the code as you write it instead of having to learn LWUIT.

You will either spend time designing your GUI engine early or even more time rewriting code later.

Porting the application to a different screen size will require more work than if you used LWUIT.

If somebody else works on your code, you will have to teach them how it works.

Any GUI modification might mean having to update the underlying code to add or remove components.

The less versatile your GUI is, the smaller the application jar. You may end up giving up some of the benefits of Object Oriented Programming just to reduce the size of the application.


As far as modern approaches go, JavaME doesn't really lend itself to a Test Driven Development methodology but there is a way to approximate it that could have some benefits.

Write many tiny test MIDlets. Each of them with a maximum of one possible user interaction. They all share common engine code for your algorithms, multi-threading, storage, networking...

The common code will be used in the final product.

Once you have all you "unit tests", start combining them. each combination is only about testing the interactions between 2 smaller sets of functionality.

Make a pyramid of ever bigger MIDlets and test them along the way.

The top of the pyramid is the MIDlet you wanted to produce all along.


Most of JavaME testing is unfortunately done manually.

There are 2 ways of performing some automated testing for MIDlets.

  • Use Keynote Device Anywhere scripting tools. Setting this up will be time consuming and using the service is not free but the tests are run as close to real world conditions as you can get without buying the phones and their SIMs.

  • Use the source code of Microemulator and modify it in order to automatically run your test MIDlets and report the results of the tests, presumably as part of a Jenkins instance. Adapting Microemulator to your needs will probably not be a trivial development task and you will need to test your new automated system before you can run the first test on your MIDlets.

like image 188
michael aubert Avatar answered Oct 13 '22 11:10

michael aubert