Java ME and Flash Lite expert in Forum Nokia Americas, Mountain View. Besides mobile technologies, interested in HCI and the use of technology in sports.
hartti | 29 May, 2007 15:09
When I made my travel reservations for a business trip to Finland I made sure to use Lufthansa as I remembered them offering WiFi connectivity during the flights.
Turns out I was wrong. They were offering wireless connectivity (Connecxion by Boeing) on their flighs starting 2004, but the service was discontinued in August 2006. Luckily a friend of mine pointed this to me before the flight, so I was able to come with some other things to do during the flight (like a couple of movies and a good nap).
Which brings me to my final question: How could I miss that announcement in the fall of last year? Or did I forget the announcement as soon as I saw it?
hartti | 25 May, 2007 10:33
To make the Java ME security domain review complete (I wish...) the last piece of information I have gathered is that Orange Israel indeed likely has same security domain policy in use as Hutchinson 3G. I asked this at JavaOne (yes, this was a little while ago, but I forgot blog this...) from a Orange representative, who told that even though there is "Orange" in the Orange Israel name, the operator is not owned by Orange, but instead has business relations to Hutchinson 3G.
This has been also discussed on FN Discussion Boards quite a few times, like here and here
The next step is expand the FN Wiki section on this with more detailed information... Stay tuned.
hartti | 22 May, 2007 21:34
Creating a compelling user interface with the existing MIDP 2.0 classes can be challenging (ok, some of you might want to use stronger words in here). The high-level UI classes allow you to create simple forms and lists with native look-and-feel, but you do not have much control over layout, and you definitely do not have tools to create rich UIs with those limited classes.
The other solution is to use Canvas and take care of all the screen drawing and user interaction yourself (and at the same time lose the native look-and-feel) - or to use a third party UI frameworks, like J2ME Polish. If someone wants to see what can be done with this approach (writing UI framework from scratch), look no further than Google's gmail and maps Java applications. The result can be nice, but definitely it means a lot of work.
Fortunately there is light in the end of the tunnel. eSWT (Embedded Standard Widget Toolkit) is an open source UI widget toolkit for Java designed to provide efficient, portable access to the user-interface facilities of the devices on which it is implemented. eSWT is the embedded version of SWT, which adds mobile extensions to the SWT. In the future it is going to be replacing the limited LCDUI framework on mobile devices.
I have not yet used eSWT myself, but a colleague of mine commented that "SWT is as sophisticated as Swing but easier to program with and much faster" and that "eSWT is not a dumb version of SWT; it has many sophisticated controls (the Extensions even have Drag and Drop, Web Browser, etc.) but still works in mobile devices". I hope we get this on our devices as soon as possible.
Additional eSWT + mobile discussion here.
hartti | 21 May, 2007 08:36
Java ME (MIDP over CLDC) does not allow access to native APIs - in other words, JNI (Java Native Interface) is not implemented. However, I was asked to gather feedback from mobile developers, if there is interest in accessing native functionality from MIDlets. Of course this would require that there would be some way to do native programming, which sort of leaves Series 40 out of the question (when speaking of Nokia developer platforms).
Now, feel free to give us your comments. Either to me directly, or as a response to this blog post. If you do not want to get your feedback published, remember to write "DO NOT PUBLISH" in the beginning of your reply. (..or you could also use my screen name in Forum Nokia discussion boards).
And, instead of not just saying "Yes!" or "Interested", could you please note why you would need it (like getting around the limitations on the Java ME, performance, or something else), and if you are representing some company/application, please state that too.
Final note: Please remember, that this is feedback gathering. Not a promise to implement this kind of functionality (but your feedback is valuable in making decisions!)
hartti | 19 May, 2007 03:26
We have had our device specifications out on Forum Nokia web site for quite a long time. It has been possible to select a sub-group of all devices using the pull-down list on the main device spec page (note, that this feature has been spiced up), and it has been also possible to get directly to a certain device specification pages directly with simple URLs in the form of forum.nokia.com/devices/<device number> like N95, and 5700.
Recently, a device search functionality was added on the page.
Now, we would like to get feedback for the search functionality, so, please post your feedback in this thread. Any feedback is good feedback!
If you do not want to give your feedback in public, just mark your comment with "DO NOT PUBLISH" so I will prevent those messages from getting published in this thread.
hartti | 17 May, 2007 22:50
Here are the slides I prepared for the Silicon Valley Symbian Programming SIG about different runtimes on S60 (warning: 1.4 MB file). With runtimes I mean here Java ME, Flash Lite and Python, even tough there are many more runtimes available on S60 (browser, Perl, Ruby, LUA, you name it).
The structure of the presentation basically is
I got material for the presentation from different sources including Mr. PyS60 himself, Bill Perry from Adobe (you will notice which slides are from his presentation, as their graphical quality stands out...), and of course my colleagues from Forum Nokia. Big thanks to everyone (and all the other people I forgot to thank above)!
I tried to be as diligent as possible in filling in all the tables, but it is possible that there are still some kinks which needs to be corrected. Please chime in if you find a mistake in here. And note, all the mistakes are mine.
The event itself was a cozy meeting with a handful of mobile developers. The talk ran over the time limit very very much, thanks to me having way too many slides and the attendees asking a lot of really good questions. Special thanks for John Kern for organizing this event and Mozilla Foundation for hosting it!
hartti | 16 May, 2007 01:53
Bruce Eckel has written a thoughtful "essay" about the problems of Java suggesting that a mix and match solution could be the best solution in many cases. (I know the entry is already a couple of months old, but I enjoyed reading it, and I thought some FN visitors might find it interesting too, as well as the other content on artima Web site...)
Basically Eckel says that because Java was rushed out, some bad decisions were made, which still have not been corrected - especially bad was the UI framework, which has been replaced many time and still no good solution exists for creating a cross-platform GUI. Also support of Java for various things (like Media) and platforms (e.g. Mac and Linux) has not been always great.
It is also notable that rich Internet applications were not created with Java applets. The problem with applets is that, well, the applets just do not work. Many systems use JavaScript (as the J in AJAX), although this solution is not great either (including cross-platform issues). However many of the successful Web 2.0 apps were programmed with Flash (Flickr and YouTube are examples - do one need to say more..)
The main point in the essay is not that everything should be Flash and Flex, but that people should be ready to use various tools in their projects
"It’s clear that we can’t wait for Sun to fix all of Java’s problems. Open-sourcing Java might, eventually, have a huge impact on repairing Java’s deficiencies. For example, work on the JMF might get resurrected. Maybe installation issues will even be fixed someday. The possibilities might be limitless, but if you need to solve problems now, then the solution is to hybridize parts of the language.
We do this already. You don’t insist on using a Java database for an application; you use a specialized system like MySQL or Oracle. Sun is directly supporting the development of JRuby for hybrid Java/JRuby programming. We are seeing other special-purpose languages arise to solve specialized problems. Why insist on using a Java library for UI if a specialized system solves the problem better?"
hartti | 14 May, 2007 20:54
I promise, the last blog post for JavaOne2007...
Compared to last year, mobility was more prominent in JavaOne 2007, but still way smaller than for example Web 2.0 and AJAX. Those topics were dominating the JavaOne already last year, so nothing has really changed in one year. Another topic high in the interest list was robots and robotics (I saw quite a few people buying robots with programming kits for 250 bucks or so; one buyer mentioned that if he had not bought it he would have kicked himself later - although he was suspecting that he would have no time to play with the robot in any case...)
On mobility side JavaFX was a hot topic of course, although I still do not have a good understanding what it really is, maybe this week I will have some time to read the materials and learn more. Besides that SVG API was displayed in many talks, and for a good reason. SVG allows you to create high-quality UI for your application and the tools for creating these graphics seem to be getting better as we speak.
What comes to the talk I gave (the second to last spot on Friday afternoon and in the whole conference), there was many more people attending, than I expected, which really does not mean much... About 25-30 people showed up, which was about as many more than I expected. The talk was about smart cards, SIM cards and SATSA APDU. The API itself is really simple, but the challenges are in getting access to the smart card (it is a secure environment after all, and it should stay that way).
The most misleading title of a talk goes to the talk titled "Tools for Developing Advanced Mobile Multimedia Applications", which I thought would contain information on tools to create AMMS-capable applications (JSR-234). It ended up being a demonstration of Sprint developer tools for mobile developers. Nice toolset, no question, but is this the reason I missed a simultaneous talk on Java Speech API v 2.0...
hartti | 11 May, 2007 12:11
Now, only because I came in a couple of minutes late to listen to the talk on static and dynamic analysis of code, I do not know the name of my new idol. Really. This guy from Sun (either Aleksandr Kuzmin or Mikhail Davidov) showed that he knows everything about the code analysis both in theory and in practise. Wov!
I do not claim to be an expert of these tools, but here are some snapshots of the talk. (According to the presenter: "Try these tools, you'll love them!")
Static code analysis basically means modeling dynamics of the software relying solely on source code. This method allows you to find defects beyond the limitations of runtime coverage. Control Flow Graph (CFG) is the core component of static analysis, which can be enhanced with dataflow analysis (relate the values of variables in corresponding CFG nodes) and data range analysis.
Typical errors detected by static analysis tools
In dynamic analysis "the tools insert some analysis code at every line of the source code. They build a database of all program elements and the at runtime the tools check each data value and memory reference against its database to verify consistency and correctness."
Typical errors detected by dynamic analysis
When starting to use code analysis, one could get a lot of false positives in the beginning, but those can be limited with for example filters and using proper prirization for the rules. Also analyzing threaded applications can lead undeterministic behavior.
Some of the tools are free including findbugs and valgrind. Polyspace was mentioned many times during the talk. I guess that means something...
hartti | 11 May, 2007 11:41
I decided to attend the Thursday evening's JSR-226 talk by after seeing the nice demos created with SVG during the talks on previous days. And I have to admit it was a excellent overview of SVG in general and also how to use JSR-226 on mobile phones. Thank you Aastha and Venkatesh for a great tutorial!
For those of you who are not familiar with SVG, go and check the phoneME UI lab pages, which contain nice overview on SVG. After you have familiarized yourself with the file format, you can also learn the basics of SVG API from these pages.
And what tools to use? For coding any IDE does the trick. NetBeans Mobility Pack contains the basic visual tools to create MIDlets utilizing SVG graphics, where you can utilize SVG content created with for example Adobe Illustrator.
Even though this talk did not showcase Ikivo Animator, I got a glimpse of that tool in the earlier presentations, and that tool seems to allow you to create really interactive SVG content. (Note, this tool is commercial product which has a 30-day trial version available, and the full version costs 295 Euros).
And note also that we have some SVG API related guides on Forum Nokia Web-site
hartti | 10 May, 2007 09:12
The most important piece of information from the Wednesday's phoneME development session: The correct pronunciation of phoneME. (No, not "phone-me" but something along "foh-neh-mee", incorrect phonetic transcription by the author).
But seriously speaking, there were some good tidbits about working with the open sourced Java ME environment.
First of all, if you want to play with phoneME, it is much easier using Linux. It is possible to get the project built on Windows machines too, but that requires some hacking. Apparently Terrence Barr has somewhere instructions how to make it work, but I did not yet find those instructions on the Web.
phoneME comes in two flavors: phoneME Feature (CLDC/MIDP stack) and Advanced (CDC stack for smarter phones - this is the version which has been ported to N800 Internet Tablet too...).
Tools you need to build and play with the project are: make, gcc, and ant 1.6.5.
When checking out the source from the repository (Subversion), don't just check out the whole thing. You will end up with about hundred copies of the source code. Instead check out multiple trunks (the components you need using "svn go")
The bug fixes made to the phoneME source will not end to the real devices (unless manufacturers start to use phoneME or correct the bugs in their own source trees).
phoneME uses GPL 2 licensing. To be more precise, the package is dual-licensed also with a commercial license, enabling proprietary use.
hartti | 10 May, 2007 08:41
The couple of blog entries I have so far written (and will still write for the next few days) from JavaOne has been shamelessly written from mobile mobile perspective. It is important to remember that the event is still far more Java EE, and Java SE event, than event for mobile developers. Don't get me wrong, there is a great selection of mobile sessions on the mobility track and the presentations have been generally good. However the masses are attending other presentations. The long queues have been to the Web 2.0 and AJAX sessions like last year.
Similarly the expo bookstore is carrying only a few mobile Java related books, but tens of different books dedicated to server and desktop Java issues. However the expo floor seems to have a little more mobility related stands (although I still have not found time to walk around the show floor to visit other booths...).
And if I am not mistaken the audience numbers in mobility related technical sessions are a little higher than last year (or then I just remember wrong...)
At the Nokia booth I have had a number of discussions with people asking general Java ME related questions. Like last year many of the questions are from people who are not yet mobile developers, but are interested in moving over. However only a few people have been interested on the APDU stand, which I have been manning, but instead they have been flocking to see the device showcase and the OSGi demo on N800 Internet Tablet. I guess our APDU demo is not flashy enough.
hartti | 09 May, 2007 09:35
The device fragmentation technical session turned out to be... well... interesting. The Sun and Orange representatives had a presentation prepared, but the presentation was quickly derailed by frequent developer comments. As there was a Q&A time reserved in the end, it would have been proper to let the presenters to go though the presentation without interruptions (even though I know this is an important topic for the developers). At least that way the audience would have been able to hear the whole presentation, just not two thirds of it. But what do I know...
Basically what the presentation was about how the developers should not try to create a different version of the app for each target handset. The development should not start with one device in mind only, but the developer should design the application in a way that it fits as many device models as possible. Nothing new here.
They also presented a number of detailed case studies of various application areas, like localization, handling key different key codes, handling different screen sizes, and HTTP 302 handling.
Localization can be done with JAD files, JAR resources and localization classes with own resource bundle implementation (suggested approach). Graphics can be fitted on different screens with tiling or using clipping methods from Graphics package. Key handling can be done with getGameAction() or with mapping keys to actions in JAD files. The most interesting part was HTTP 302 handling, but unfortunately I missed the URL they referred for more information as the time ran out. (Basically there are three different behaviors among the Java ME implementations. Either the implementation handles the redirection properly, the implementation returns 302 with address set to null and after the redirected address is received 200 is returned, or then the redirect address is inside the response content due to bad parsing of HTTP headers.)
A good point from one developer was that it could still cause more work, if one tries to have smaller number of builds than one for each device, as in that case one needs to keep track which version works with which devices and still the apps need to be tested with all the possible devices.
hartti | 09 May, 2007 09:13
Or as one developer put it: "We developers bring the innovation. The title should be 'how the carriers work with the developers..."
Four carrier representatives (Orange, AT&T, Sprint, and China Mobile) sat in the panel in front of an audience of maybe 60-70 people strong (at 9:00 pm - nice feat...). Here are some discussion highlights.
Naturally the issue of carrier specific signing came up (although it was not the first question like I expected, but only second...). It was surprising to hear Sprint's candid response. Basically the Sprint rep stated that they spend 10 billion a year for network upgrades and device subsidies. To bring in money they need to sell value-add services. They need to make profit.
AT&T's response was along the security and privacy protection. Orange said that they go by the standards (they have no changes in the security domains).
The discussion then moved to how a hobbyist can get certified. Buying the Verisign certificate for hundreds of bucks per year is too much for a hobbyist. Orange said that they endorse Java Verified and they also have a no-cost Orange Endorsement. However they need to have the developers traceable - that is usually much easier for companies. AT&T needs a SLA (Service Level Agreement) to make sure the customers get the quality of service they are paying for - if you cannot scale to support many many customers, getting that SLA might be impossible. Sprint has a developer certificate (Orange btw promised to look in to that).
In response to what should an aspiring game developer to do to raise interest among the operators. The responses varied again. Orange rep said that we have already enough games, give use something else. Something innovative and new.
AT&T and Sprint mentioned that gaming is important, but that brand names sell. Good point. If you do not have name yourself or do not have a game for certain recognized brand, you might have a hard time selling your game to the carriers.
hartti | 08 May, 2007 11:14
Blogging can be hard work. Especially if you are trying to provide timely postings from an on-going event (JavaOne in my case). And especially if your computer decides not to cooperate with the conference Wifi access points (and you are too lazy to type the postings with your N800 Internet Tablet). And especially if the blog site login seems to not work when you finally get the network connection working late night in the hotel. My apologies for the delayed report from Monday....
The forthcoming NetBeans version (6.0) was showcased in a number of presentations. A number of new features in the coming NetBeans Mobility (used to be Mobility Pack) version:
Profiling is not available for mobile devices, unfortunately.
Demonstrations of the Mobility tools included matching NetBeans with Ikivo Animator and Mobile Complete's DeviceAnywhere testing service. Cool stuff. In fact the Ikivo Animator and the resulting SVG animations reminded me of Flash Lite animations. There was not much difference between the results or in the workflow.