May 06, 2008 Performance discussion at JavaOne Posted by Gorkem Ercan at 03:11 PM | Categories: Community

If you are attending the JavaOne 2008 conference, there will be a BOF on creating efficient MIDP applications. S60 Java platform engineers will discuss about varying issues on creating well performing, pleasant MIDP applications. To start the discussion, we will be sharing some tips that we have gathered working with software and game houses. The tips will cover anything from graphics performance to usability.

There is a little known program run by S60 Java platform team. We regularly work with software and game houses to find out about the problems on our platform and also help them solve problems on their applications. We hope to extend our reach with this BOF to broader developer community. I will be at the BOF and will be sharing some usability tips, I know that most of the S60 engineers that are attending the conference are going to be there. I am really hoping to hear about some of the performance tips and also problems that you face when working with the S60 Java platform.

Permalink | Comments (0) | AddThis Social Bookmark Button
April 28, 2008 Ready at the JavaOne conference Posted by Gorkem Ercan at 01:58 PM | Categories: Community

JavaOne conference is very close now and looks like we are ready for it. Your friendly neighborhood bloggers, Aleksi and I, will have  a technical session titled "Touch UI in Mobile Java Technology based Devices". In this talk we will be covering the touch UI features of  all of the UI technologies that you can use on S60 devices. There will be also tips for designing touch friendly java applications. I highly recommend this session not only because I am on it, but also because of the rising importance of touch enabled devices.

This year, we will have several of the engineers and architects that build the java platform for S60 available during the conference. We will be occasionally hanging around the Nokia booth on the Pavillion. If you have questions or opinions you want to share or just like to see a demo and some code, find the Nokia booth on the Pavillion. If you want to meet S60 java bloggers,  Aleksi and I have scheduled ourselves to be at the booth on Tuesday after 16:00, during the JavaOne Pavilion Welcome Reception. We will be very happy to meet you.

Permalink | Comments (0) | AddThis Social Bookmark Button
April 22, 2008 What I like about WidSets Posted by Gorkem Ercan at 10:08 PM | Categories: Applications

There are many reasons why I like Widsets. What is not to like, it allows me to access to the web 2.0 content from my phone. It is based on java. In fact, it is one of the most innovative applications that is running on S60 java platform.

In case you have not heard of WidSets, I recommend you to take a moment and visit WidSets website. In a nustshell, WidSets is a widget platform. Simply put widgets is the name of the general concept of small applications that runs on devices and PCs. Widgets are commonly used to show web content, such as news, blog feeds etc.

One of the features of WidSets that amazes the little engineer in me is WidSets provides a user interface and scripting language itself. In a sense, it is a full-blown platform that runs on top of the java platform. The scripting language is good enough to allow developers to develop small applications, such as sudoku or chat for the platform.

But my vote for best WidSets feature is content discovery. If you are looking for some content to use in your mobile phone, it is probable that WidSets have it. WidSets web site and mobile client provides several ways to explore the available content. The list for the existing content is comprehensive and growing. If you happen to be a content provider then WidSets is an easy way to share that on mobile world and it is amazingly effective. A few days ago, I have experimented with WidSets to create a widget that shows the content of my personal blog and I was surprised to find that I had around 20 users in less than 24 hours.

Overall, WidSets is a highly recommended java application if you are looking for ways to consume web 2.0 content on your S60 phone.

Permalink | Comments (0) | AddThis Social Bookmark Button
April 01, 2008 eSWT Article Posted Posted by Aleksi Uotila at 10:21 AM | Categories: Development

I've just posted an article discussing about the new eSWT UI API that is available in S60 Java from 3rd ed fp 2 devices. (Nokia has announced some of these devices already.)

The article was originally published in S60 News magazine. S60 News is a newsletter for S60 licensees, S60 Product Creation Community Members and Operators. Since eSWT is a new public Java API for rich user interface creation I thought it's best to make the article available to anyone. Here you go:

"Taking S60 Java Platform user interface capabilities to the next level"
Download PDF file

Permalink | Comments (1) | AddThis Social Bookmark Button
February 22, 2008 Events for the java developers Posted by Gorkem Ercan at 03:29 PM | Categories:

There are a couple of upcoming java developer events where you can spot the members of the S60 java team.

EclipseCon 2008 is the annual gathering of  the Eclipse open source community. I will be hosting, together with Majumder Deeptendu, a tutorial on developing applications using embedded Rich Client Platform (eRCP).  Our java team actively participates on the eRCP project. eSWT, which Aleksi has blogged about earlier, is the first part of out of our open source efforts in eRCP that has become a resident part of java platform earlier. The tutorial will cover eRCP on most part but there is a growing request for eSWT specific material that we have not anticipated for when preparing our proposals for the conference. We will also include a quick introduction to eSWT use on MIDP in the tutorial in order not to frustrate our eSWT crowd. Apart from the tutorial, I will also present a short eRCP project update. If you are attending the EclipseCon, I will be glad to meet you.

Later in May 2008, java team will be present in the JavaOne 2008. We will have several technical sessions and BOFs. You should also expect a satisfactory S60 presence on the exhibitor's pavilion. I will not describe these activities in detail in this post. They deserve their own post but here is a teaser for that post, one of our technical sessions is about the use of touch in mobile java applications!

Permalink | Comments (0) | AddThis Social Bookmark Button
January 29, 2008 YouTube available as a Java client for S60 devices Posted by Aleksi Uotila at 07:47 PM | Categories: Applications

YouTube is available as a beta for some S60 devices (device models N73, N95, E65, 6110, 6120). Check www.youtube.com/yt_mobile_app.

Continue reading "YouTube available as a Java client for S60 devices" »

Permalink | Comments (3) | AddThis Social Bookmark Button
December 17, 2007 New Java Developer's Library Posted by Aleksi Uotila at 12:00 AM | Categories: Development

There's a new version of our Java ME Developer's Library available at Forum Nokia. It covers the announced new features of S60 Java available for developers.

We have Javadocs for the new APIs: eSWT and IAPInfo. You can also find API overviews and examples for these from UI and graphics and Networking sections, respectively. We've put back the Nokia UI API Javadoc as it's still used by applications and since the standard MIDP 2 API doesn't have all the functionality; we'll try to aim this with MIDP 3 standard in future.

The library also has significant update on MIDP implementation notes document. There we have a table of Nokia specific JAD and JAR attributes for easy reference. There's also Scaling topic about Canvas graphics scaling and scalable MIDlet icons, and a System properties table.

Permalink | Comments (1) | AddThis Social Bookmark Button
December 13, 2007 Open source APIs Posted by Aleksi Uotila at 02:34 PM | Categories: Open source

Our Java Platform guys' first real experience of a open source project has been the eSWT API development. We had multiple different reasons why we ended up collaborating with the Eclipse open source community. Lately there has been other announcements for mobile Java open source projects. Even some Java Community Process JSRs are developed as open source. So to me it seems that it starts to be a defacto way to introduce new mobile Java APIs the open source way.

The primary reason for us doing open source is to improve the compatibility of our API implementation. Opening implementation code for an API will also allow other parties more easily start implementation of the same API on other platforms. Since the implementation mostly shares exactly as-is much of the code base this improves directly compatibility more than just some technology compatibility kit (a test set verifying API signature and expected API behavior). Testing never grabs all the details, similar API compatibility tests won't test everything. Sharing implementation code will ensure in a much better and simple way behavioral compatibility. Open source is thus a way to truly limit fragmentation - a too much used curse word among java apis.

However, the open source license has to be such that it allows commercial usage of the code. The API implementation code must be possible to be used as part of closed or proprietary products. Also the license must not have a viral effect on applications using the API. Open source API implementation should not mean that the applications using that API are also forced to be open source. In other words linking from code with a different license should be allowed. I personally for example would like to see much more mobile Java APIs being developed in open source style licenses.

Open source way of working is also lot more fun. You get to be more in contact with potential clients for your API as well as discussions with other implementation teams is more easy as communication can be open.

Permalink | Comments (2) | AddThis Social Bookmark Button
December 09, 2007 S60.com technology update on Java Posted by Aleksi Uotila at 10:00 PM | Categories: Development

Recently we posted a short overview on M2G and eSWT APIs on s60.com:

Richer user experience with S60 Mobile Java

M2G allows to render SVG content inside Java applications, and it's already available in latest S60 and Series 40 devices out there (Nokia N95 etc.). It basically allows very easy way for reaching 2D graphics scalability. Making device resolution independent games has been hard this far and many games are simply fixed to certain resolution only. Game publishers had to do multiple variants for the same game for multiple resolutions. I'm eagerly waiting for some games to utilize this. Of course it's not just games the technology is targeted, you can use it also to create fancy looking 2D UIs.

Permalink | Comments (3) | AddThis Social Bookmark Button
November 23, 2007 New Java features of 3rd Ed. fp 2 Posted by Aleksi Uotila at 11:00 AM | Categories: Development

We've announced already the new flexible UI toolkit eSWT in our previous post. eSWT is definitely the most biggest new feature in S60 Java Platform for developers in 3rd Edition Feature Pack 2.

But there's a lot more in the new S60 Java Platform. We have both, new API features and under-the-hood functionality. Below I'll try to list most of the nitty-gritty features. We'll be providing more information on how to use these via Forum Nokia Wiki site, and perhaps cover some in more details in future posts here too. They will also be covered in our reference documentation in Java ME Developer's Library when a 3rd Ed FP 2 version will be available.

New APIs available:

  • Nokia IAPInfo API
  • Device dedicated Media keys (Play/Pause/Stop) access as normal key events
  • Control over End call key (Red call key) behavior for application's lifecycle
  • Enabling device theme background for Canvases for custom component usage
  • Prevention of screen saver via Nokia UI API
  • Foreground/background events via pauseApp/startApp
  • Flip close event for fold/clamshell devices via pauseApp
  • Access to device IMEI, network access type (gprs / csd etc.), network id, network signal level, battery level, country code, date and time formats via system properties
  • LCDUI Canvas Graphics scaling (introduced originally in 3rd ed) enhanced for orientation switching devices


IAPInfo API allows to access device's Internet Access Points configuration and allows to specific explicitly for General Connection Framework network connections (http etc.) which IAP should be used.

New other functionality:

  • Java application startup time is better due to OS on-demand paging and other changes (and as a result you also have more user RAM available).
  • Support for scalable icons (SVG) for MIDlets
  • Support for categorization of MIDlets: game / application
  • Device volume keys will change audio output volume of MMAPI
  • Selection key has a label (as a result LCDUI Commands are more aligned with Series 40 Java)


New architecture

Regarding under-the-hood functionality, the S60 Java Platform has gone through a big architectural change. We've changed the VM from a monolithic architecture to more flexible one. Prior to 3rd Ed fp 2, S60 Java had traditional CLDC VM architecture where all API code (class files) were compiled into the virtual machine executable. Now the Java API implementation code is no longer in the VM executable but will be dynamically loaded when needed.

The new architecture allows us to dynamically extend the virtual machine with new APIs. Which is exactly what is used e.g. in our eSWT implementation. When there will be new releases available from us for eSWT, we'll release that directly to developers. Anyone can install that upgrade package to 3rd ed FP 2 devices. Another result of the new architecture is of course memory saving: applications not needing some of the optional APIs wont have them in memory.

We also have changed the threading implementation. Now Java Threads are native. Each Java Thread has a native thread counterpart. Prior to 3rd FP2 the Java threads used so called light-weight threading (sometimes referred to as "green threads" which is a small misnomer) where Java VM had it's own thread implementation and scheduling. Now Java threads are scheduled by OS.

Runtime performance

On MMAPI we have done performance improvements. In overall the mixing of audio content now works lot better and playback latency is smaller. This means improvements to Java gaming experience. The media deallocation now properly frees the memory and concurrent number of players being in pre-fetch state is increased.

One smaller, but rather dramatic change has been implemented on LCDUI Canvas class. Previously each Canvas instance contained it's own double buffer for graphics contents. The size of the buffer image is the size of the screen so it consumes quite much runtime memory. Double buffering for Canvas is nowadays required feature by MIDP specification 2.1. If a MIDlet has multiple Canvas instances the memory may easily run out. On other platforms e.g. Nokia Series 40 had implemented different double buffering scheme: each Canvas instance simply shared the same double buffer. We at S60 Java decided to implement the same scheme and as a result we are behaving the same with Series 40 devices.

Permalink | Comments (7) | AddThis Social Bookmark Button

Back