You Are Here:

Community: Blogs

Maximiliano Firtman's Forum Nokia Blog

Cross-Platform Mobile Widgets Development

firt | 03 August, 2009 16:32

Did you missed last InsideMobile Conference in San Jose, California? It was a great conference about mobile development in eBay Conference Center. 

Here is my presentation about cross-platform mobile widget development.

Any question about it feel free to contact me by mail or twitter.

Mobile Widgets Conference - July in Silicon Valley

firt | 08 July, 2009 21:07

Hi,

If anyone is near San Jose, California this month, I will be speaking at InsideMobile Conference organized by O'Reilly and 360 Conferences.

My session will be Mobile Widget Development and it will cover WRT Widgets for Symbian, migration from/to other platforms and OVI Store publication.

"Today is possible to create mobile offline (and installed) applications using web-related technologies (XHTML, CSS, JavaScript, AJAX, Flash) and additional APIs. WRT for Nokia-Symbian, WebUI for Motorola, WebOS for Palm Pre, online/offline Webapps for iPhone 3.0, widgets for BlackBerry, and other mobile widget platforms. There is also a new hybrid paradigm using the best of the web technologies and a native development, like the PhoneGap project.

What can we do using this technology? what are the differences between platforms? Can we distribute them in the Application Stores? What compatibility do we have with web standards? What kind of applications are best-suited for this platforms? How to access location, contacts, accelerometer, SMS, home screen and Internet for each platform? What about security and privacy of my code?"

To see full schedule, other sessions information and registration details look at the official sites:

www.insidemobilecon.com or training.oreilly.com/insidemobile

Hope to see some of you there. Drop me a line if you are near! I will be arriving to USA on July, 24th.

 

Type less in your mobile! Try the new Mobile Tiny URL free service

firt | 16 April, 2009 17:29

Hi! A long time not posting. I was working ;-) Here is the first project I want to share with you. It's still in beta testing, and I'm opening to suggestions, critics, bugs, and other comments.

You can try it free at www.mobiletinyurl.com

Mobile Tiny URL is a URL shortener service optimized for mobile keypads. So, if you want to access forumnokia.mobi from your mobile phone, try to type ad.ag/wapdat instead. You'll save 36 keypresses!! Go and try it now in your mobile phone.

Ok, perhaps you won't remember this new URL, but it's for use having the address in front of you (like this post).

With the service you can:

  • Access any mobile URL easily, your favorite website, that long post (with long URL) that you want to continue reading in your mobile and that excelent video you are seeing online and you want to save it in your device.
  • Install any mobile content (Java, WRT Widget, Flash Lite, Symbian, etc.) Over-The-AIR (OTA) in some seconds, even if the URL to the installer has 1000 characters.
  • Integrate the Mobile Tiny URL with your own system. Using the public API you can automatically generate Mobile Tiny URLs for your dynamic content, as application downloads, confirmations, prototypes, posts.
  • Share that new Mobile content or website you found with web visitors, followers and friends in your blog, twitter or social network. It'll be very easy to try it.
  • Allow or disallow desktop and/or iPhone browsing to the Mobile Tiny URL.
  • Receive stats and info about the usage of the URL by e-mai.
  • Use the bookmarklet, so, if you are browsing a content in your desktop that you want to transfer to your phone, just click on the button in the Links bar of your browser and you'll get the Mobile Tiny URL in seconds.

Give it a try and share it with your friends!

More projects to share soon! 

PHP and MySQL on Symbian

firt | 25 January, 2008 04:27

Yes guys, I’ve just installed PAMP (Personal Apache, MySQL and PHP) on my N95 and it worked!

Do we need another language for Symbian? I’ve also been a beta tester of a .NET Compact Framework for Symbian and it worked well too (but this is for another post).

So, my first thought was: “great, I can see a PHP running on my phone… and now what?” I’ve seen PHP running on an iPhone last weeks. But then, I realized that this are real good news. Not only because of PHP or Apache, because of MySQL too. We have MySQL on Symbian! A great database (recently acquired by Sun) with a lot of features that all web developers love.

Is PHP useful? Now you can port in 1 minute a development you already have in a website or intranet. There are thousands (millons?) of PHP developers in the world and now, they can run their applications in many Series 60 devices with no change. Many CMS (Content Management System) as Joomla or Drupal worked well too.

Ok, I had to install five applications and libraries (7.5Mb), I’ve received almost 15 warnings and disclaimers, but it worked. A simple user will be a bit frustrated. But this is the first beta of the product (hosted by Nokia Open Source) and I think there is a great opportunity in the future for this solution.

After installing it, I opened PAMP application and start both Apache and MySQL (you can start only one if you need). After 5-8 seconds I’ve both services running. Then, I opened my S60 browser and type 127.0.0.1 and I could see a phpinfo page with all the information about PHP version (5.2) and packages installed (like GD for image manipulation).

The PAMP application shows the obtained IP in your LAN, so you can type that URL in your desktop browser and you are receiving PHP files from your phone.

After that, I opened a MySQL client I frequently use for web development and tried to connect it to my phone’s IP, it worked too; so I created a database and one table. I inserted some records, all from my desktop computer (we still need a MySQL native client on Symbian, anyone?).

I could also write some CREATE SQL statements from the phone, but I don’t have a bluetooth keyboard ;-)

Then I opened PyEd on my N95 (the Python on device Editor) and wrote a simple PHP file that connects to the the MySQL and show me the results on an HTML page. I saved it on e:dataapachehtdocs (the root folder on my MicroSD card) and… everything worked!. And, I was surprised about the speed, even browsing the webpage from my desktop. It wasn’t a hard benchmark, but I’m satisfied about the response time.

I saw in the PHP’s package list some S60 packages, like contacts, messaging, but I couldn’t find any documentation about them. But I think you can use some Symbian API from PHP.

What's missing?

  • An API to access and query MySQL from Symbian, Python, Java ME and Flash Lite. It isn’t so hard to do. I’ve just review the MySQL protocol and with some free time, anyone can write a framework using sockets. Anyone with free time? Tongue out
  • Java ME and Flash applications connecting to Apache and calling PHP code
  • A native MySQL client for administration
  • Memory and battery optimizations
  • Cleaner and easier installer
  • MySQL alone?
  • A super duration battery and a fixed IP over 3G and we have portable web hosting Cool

What kind of application can we see developed in PHP?

  • Rapid CRUD applications for managing records.
  • AJAX applications with a rich UI over the browser.
  • Existing Open source CMS for many situations: blogs, eLearning, eCommerce. Only some of then will be useful to run on the phone.
  • Mini intranets. Just open your wifi connection and all the computers in the LAN (and other mobile devices, iPhones, iPods, Internet Tablets, etc) can access your application to view, upload and edit information from the browser. Close the Wifi connection or go ouside ;-) and the application is offline. Simple, clean, secure and quick.

Congratulations to the porting team that is working on PAMP and I would like to see more about this project.

By the way, only the N95 8B was tested succesfully by the team, but in my N95 classic with firmware v20 it worked ok in my little test. 

Follow the installation instructions and try it. What do you think?

The nicest and slowest UI: Yahoo! Go 3.0, Android competitor?

firt | 17 January, 2008 00:35

Recently, Yahoo! announced his new Yahoo! Go 3.0 platform (beta). “The best Internet experience on your phone. Period.” Let’s see after the period.

Yahoo! Go is a Java ME application available to many MIDP 2.0 devices and is the On-Device Portal that Yahoo! published for access mobile content provided by the company as Mail, Maps & Local, News, Financial, Sports and Web navigation.

 Yahoo! Go 3.0 is also one response to Google’s Android. It isn't a new operating system as Android, but it has the ability to host new Widgets and Snippets developed by any using the Blueprint language, an XML based language on XForms. The first thing to note is that the platform doesn't use the standard way to develop widgets: XHTML, CSS and JavaScript/AJAX, as Series 60 Widgets. All applications inside the download are Widgets developed with this language. You can download more using Internet.

A widget is some kind of application that is installed inside Yahoo Go! and can use RSS and internet information using some visual controls (similar to iPhone UI). All widgets are shown on a carrousel (like Android Home application) and when you browse them, you can see resume information about them (for example, your last e-mails or current weather information). You can access a submenu of each widget using up and down when you are over a widget on the carrousel.

A snippet is a "mini widget" that appears on Yahoo WAP Home Page and Yahoo Go Home Page and shares the layout with other snippets. They can link to widgets or external websites. All of this happens inside the Yahoo Go application that has its own browser implementation. I like more Opera Mini's renderization than this one's.

According to the roadmap, in the future the Widgets will run directly on the device. I don't know how, will it generate dynamically a JAD and JAR only for your widget? Today it hasn't some client script programming language, all the logic must be implemented server-side.

  The User Interface is really cool, smooth animations and transitions. But there is one big problem: IT'S TOO SLOW! I'm talking about the UI, not the response time from the server.

I've tried in my Nokia N95 (with a good CPU) and it's really slow. In the Home Page carrousel when I press the right or left key I've to wait one second until the UI shows next widget on the carrousel. To open a Widget sometimes you need to wait 3/4 seconds and to move from one news or item to another leaves you another seconds. Everything feels slow. Reading news and looking for some restaurants, I pressed down key to scroll the information and it reacted 7 seconds later!  To go back from a widget to the carrousel (the * key) you have to wait 3 seconds. Opening the soft key menu "Options" take 1 second or more.

You don't know if the application is alive or not. There isn't any waiting signal in the UI or clock pointer: a big UI mistake. If some operation will take more than 1 second you need to warn the user to wait.

Try it yourself in your mobile phone and tell me if it's only me ;-) Go to get.go.yahoo.com from your mobile phone or go.yahoo.com from your desktop. If you want to learn about how to develop Widgets and Snippets you can see the developer site or download the Blueprint Developer Guide in PDF.

I think it has a great UI, but if the Y! team don't speed up the UI in final version, I won't use it, and I won’t develop widgets for it. For now, Nokia's Widsets has more content developed and the UI is much faster.

What do you think?

Here is a video showing the application (on a desktop) in CES 2008 Las Vegas

Localize me... even if I don't have a GPS

firt | 01 December, 2007 20:24

Let's analyze many ways to get the user's geolocation.Uncentainty location in Google Maps

Recently, Google updated its Google Maps Mobile application with a new "My Location" feature that works even without GPS. If you do not have a GPS-enabled phone, you might see a blue dot surrounded by a light blue circle over the map to indicate uncertainty about your location. Let's see how we can do this.

We all know that Location Based Services (LBS) are a great feature to add to many mobile applications. I want information based on my location. I don't want to receive restaurants from other city, I want to see weather, driving directions or traffic data from my geographical zone, I want to geotag my photos, and I want to know what other people think about the place where I am right now. I also want to socialize, play games, and organize meetings with people near me.

So, all we need is a GPS? The first answer seems to be "yes". The GPS is one of the best solutions to find the location of a user. The GPS (Global Position System) gives the developer the coordinates (Latitude and Longitude) of the user with some error (usually less than 100m) using satellites. And the AGPS (Assisted GPS) could be even better. The AGPS (if you have a Nokia N95, just update your firmware to get this feature) is a data-based feature to help the GPS to find faster the possition of the user. With AGPS in Nokia N95 now I can localize myself in less than 10 seconds outside and sometimes I can do it inside a building too.

We can query the (A)GPS from many platforms, like Java ME (Location API), GPS with Symbian C++ or Python and then search for information in our local database or remote server using the Internet connection of the phone. If we need information about the street, neighbourhood or any other data regarding the calculated coordinates we can use some inverse geocoding service: if I have some latitude and longitude, can you give me the street name and address?.

At this time only a few devices have GPS integrated, and less people have a bluetooth GPS connected to the mobile phone.
But, what happen with the millons of non-GPS devices?

 Just look to these other solutions.

Solution 1

You can use the cell information of the phone to georeference the user. When you are connected to a mobile cell network you are in range of one or more towers. The range of the tower is called a cell. Since every cell has it owns range (100m, 500m, 1km for example) we really don't know exactly where the user is, but we know the zone with some error. Sometime this is enough useful to give the user the information. But, how can you use the cell to know latitude and longitude?

    a) In Java ME there isn't any standard solution. You can query the CellID (Identification Number) using System.Properties("phone.cid") on some devices only. For example, this doesn't work in Series 40 devices. It only works in some Motorola or Sony Ericsson's phones.

   b) In Symbian (Signed), you can get the Cell, Area and the Carrier (see this sample). With this combination you have a unique cell number in the world. You "only" need to convert this information in geographical information. How to do this? Here comes the difficult part. There isn't any direct way to make this conversion. You can use a Carrier API (if they have one), you can use some Open Source collection (like CellSpotting.com) or you can make your own one. 

   c) In dev cert Python, you can get this information. Just see this sample

That's what Google is doing with its recently updated Google Maps My Location feature. If you don't have a GPS, you can still find your location using the Cell information. Google can compare your cell number with querys from other users having the same Cell and GPS, for example. So, Google is making its own cell-coordinates database (or buying it).

You can see a video of how Google Mobile Maps works here:

Solution 2

The mobile carriers should bring developers an API to know the coodinates of some user. Using three cells in range, the carrier can calculate where are the user and give the information to the developer through an API. 

Solution 3

Use the IP address to find the location of the user. If the user is connected through WiFi (or 3G in some cases) you can try analize the IP address connected to the Internet. With the IP Address you can query some open database (like MaxMind or GeoIP) and then try to calculate where the user is with some error.

Solution 4

Ask the user! Don't be afraid to ask the user where is he or she! Your application can be smart and reduce the user's typing.

    - If the user knows its position: The user can insert zip code, city name, neighbourhood name, address, street name. Just ask for one quick entry. You can query your database or some webservice.

    - If the user doesn't know its position: The user can insert some information he is seeing, like a phone number found on a shop or some place name (parks, museums, stations).

Solution 5

Allow the user to select its current location from:
    - Home: ask the user where he/she lives when the application is installed and store this information.
    - Favorites places: query the Places database (GPS' devices) or make your own favorite places.
    - History: allow the user to select a recent place where he/she was. Order the list by frequency.

Visit this mobile Location design pattern in Little Springs Wiki.

 

Of course, you can make a mashup with all this solutions to develop some smarter way to get the user location. 

Do you imagine any other way to get the location of a user? I'm waiting for suggestions.

 

Microsoft launches a "Windows like" application for Nokia Java ME phones

firt | 16 December, 2006 18:14

A new free Java ME application was launched by Microsoft: Windows Live Search for Mobile. The first thing I've noticed after installed it on my Nokia N90 was the UI design. It's very, very similar to a Windows Mobile Smartphone UI application. Is it a good idea?


Windows Live Search for Mobile is a connected application available for Java ME and Windows Mobile phones that allows the user to search content into Live Maps service (similar to Google Maps, an application reviewed in a previous post here). You can find addresses, traffic information, business, restaurants, hotels, etc. in US and inside a map you can pan, zoom in and zoom out. When you are typing your search, it has a very useful autocomplete feature.


After opening the application you'll see a full-canvas design with many Windows Mobile Smartphone UI components and features, like:


  • Full width list items with horizontal scrolling labels when they are focused

  • A textbox that works a bit different as Nokia's one. You should start typing wherever the focus are, and you don't have an “editing” or “non editing” status inside the textbox.

  • The Command area for softkeys is a bit diferent than Java's one. They are two commands rendered like visual buttons, with their labels centered (not aligned to the edges).

  • The “Options” or “More Options” command is called “Menu” and opens a mini-submenu in a pop-up style where you can browse with up-down or use [1] to [9] keys to select the option (similar to Opera Mini too)

  • The “Ok” or “Select” Command is called “Go”.

  • There is a “Home” command to go the the Main Menu and you have an “Exit” application command in every screen. Sometimes there isn't a back command, so you should use “Home” instead (a bit confusing).

  • The alert messages are similar to Windows Mobile.

  • When you are typing in the search box, the autocomplete feature replaces the Home menu options with new ones. But you must clear characters with the left arrow (I've to try many keys to detect that). Right key acts as "Select". If you keep pressed a key, it doesn't appear the number corresponding to that key, you should cycle between letters and numbers, for example "abc2ABC".

Windows Mobile or Java ME application?

I think if you are a Java ME phone user, like a Nokia's one, you can feel yourself lost inside this application for a while. The usability guidelines aren't the same between Windows Mobile and Nokia/Symbian/other vendor OS.


I like the visual design and some of the “original” UI behaviour like the dynamic options based on the user partial input (similar to an autocomplete), but I'm not sure if it's a good idea for the usability to have a totally different UI compared to the device's where the application is running and different from other applications installed.


Download the application free from http://wls.live.com and tell me what do you think.


Opera Mini 3.0: Web & RSS Browser, Photo Sharing and more, all in one free Java ME application

firt | 29 November, 2006 18:12

In a recent post, I mentioned that Opera Mini 2.0 was one of the best Java ME application User Interface. Now, Opera (the Web Browser Company) releases Opera Mini 3.0, a free version of the mobile browser for Java ME devices. Don't confuse this application with "Opera Mobile", a commercial Symbian application that came with some S60 devices in the past.
 
Opera Mini is an (x)HTML/JavaScript Browser for your phone with the capabilities of browse any "big-sized" webpage, adapting and rendering that page to the screen constrains in a mobile phone. It uses an Opera remote server to pre-process and compress web contents and images to reduce client-side execution and data transfer.
 
It supports Bookmarks, downloads, history, cache, search features, many sizes of screen font and many languages.
 
In this new version, Opera Mini goes to a new dimension offering in the same package:
 
-         RSS Feeds: you can view and subscribe to any RSS in the web. RSS is an standard syndication format that is available right now in every news and blogs sites (the famous orange icon). Now, when you browse a web that contains an RSS channel, the first link you will see in the page is for the RSS viewing.
-         Photo Publishing: now you can browse to your fotolog, blog, forum or webmail, take a photo from your mobile camera and upload it to the website,  all done from Opera Mini.
-         Content Folding: this is a feature that groups lenghtly menus to save scrolling length. You will have a [+] icon to expand the menu links bar.
-         HTTPS: You can now browse secure websites, from Opera mini, like homebaking, webmails, stores.
-         Faster Navigation: If your phone and mobile operator supports TCP sockets, Opera Mini maintains an open connection to the Opera Server to accelerate communication.
 
Opera team: Excelent work. We'll expecting more features in next versions.
 
Nokia users: you must download this application, it's free and you can download it from mini.opera.com from your mobile phone, or receive it from a SMS making a request in www.operamini.com where you can also find a web simulator for the application.
If you want to help Opera Mini to browse your website, you can see this article: http://dev.opera.com/articles/view/designing-with-opera-mini-in-mind/
 

Sun Open Sources Java ME under GPL

firt | 13 November, 2006 05:09

I've received this information a few days ago, but I coudn't publish it until now. Sun Microsystems, Inc, the creator of Java technology today (Nov, 13) announced it is releasing its implementations of Java technology as free software under the GNU General Public License version two (GPLv2). Available today are a buildable implementation of Java ME (formerly J2ME) and the first pieces of source code for Java SE.

 

Available in the Java.net community is the source code for Sun's feature phone Java ME implementation with the Java ME testing and compatibility kit framework. Before the end of the year, Sun will release additional source code including its advanced operation system phone implementation and the framework for the Java Device Test Suite. Sun is also releasing as free software the javac compiler, JavaHelp and Java HotSpot technology, the heart of JVM and JRE for desktops.

 

In addition, an application developer project is available as part of the Mobile & Embedded community, with links to resources such as the NetBeans Mobility Pack.

 

Rich Green, execute vice president of Software at Sun said "By open sourcing Sun's implementation of Java technology, we will inspire a new phase of developer collaboration and innovation using the NetBeans IDE and expect the Java platform to be the foundation infrastructure for next generation Internet, desktop, mobile and enterprise applications".

 

More information on

www.sun.com/opensource/java

www.java.net

nb-openjdk.netbeans.org

 

 

What do you think?

 

Will this accelerate the development and evolution of the platform? Will this reduce fragmentation and drive down development costs throughtout the Java ME ecosystem as Sun is claiming? Will this modify your Java ME developer life?

A Flash Lite alternative in Java ME?

firt | 31 October, 2006 22:49

Sun Microsystems and Laszlo Systems, announced the code name Orbit Project. This project will allow open source framework OpenLaszlo to generate Java ME midlets without Java programming. Will it be the Flash alternative in Java platform for mobiles?


OpenLaszlo is an open source framework to develop Rich Internet Applications using a declarative XML file (called LZX) and JavaScript language (ECMAScript, similar to ActionScript too). Up to the last stable version (3.3), this framework compile to Flash SWF format for the web. Next version, OpenLaszlo 4.0 "Legals", in preview version 4 up today, can export the same project to other "engines", like AJAX-DHTML. Orbit will add support to compile to Java ME applications (JAD & JAR?).


I've worked with OpenLaszlo, so I already know the platform... I'm teaching this platform in presencial and eLearning way (in Spanish, I'm sorry). It's flexible, free, it can work over any web technology, it can make "less-code" cool animations and effects easily, and it reads XML and bind the data to visual controls. By the other side, there aren't books available about this platform, help files are a bit confusing sometimes and the only IDE available is an Eclipse plugin with too many bugs, without advanced visual or drag & drop features.

 

After the announcement, we have many question unanswered, like: will it compile MIDP 2.0 applications? Will it need any API like SVG in the phone? What Laszlo features will be available in the Java ME runtime? They announced that in december the first working demo will be available.


"Now with further extension to support the Java ME platform, OpenLaszlo will offer an unprecedented level of development portability and flexibility across a wide variety of Java technology-based phones, television set-top boxes, and other connected devices. Support for OpenLaszlo applications further enhances one of the key strengths of the Java platform – the ability to support development environments and authoring tools targeting a broad spectrum of developer skills and preferences.", OpenLaszlo team said.


We know that Flash is a powerful Java competitor in mobile multimedia applications development and that's because Java needs to evolve. I think that Sun found a solution to offer rapid rich and multimedia application development easier over Java ME platform.

 

If OpenLaszlo can offer a better IDE to work and more organized documentation in the future, it can be an alternative to Flash Lite. What do you think?

 

For more information, visit www.openlaszlo.org/orbit

Search Engine for Mobile Developers

firt | 29 October, 2006 06:19

I've just published a new site, a mobile development search engine. The idea is that you can make a search restricted only to sites that has information about Java ME, Symbian, Flash Lite, and other mobile technologies.

 

The site is powered by Google (Custom Search), so you are searching inside Google, but only in some sites, as Forum Nokia, Sun, Adobe and some other blogs and sites. 

 

The URL is www.mobiledevsearch.com and I'm inviting all mobile developers to suggest sites to add to the search engine. You can suggest blogs, user groups, forums, etc. in the site or leaving a comment on this post. We can have more accurate results when we are looking for mobile code, advices, documentation and samples.

 

I'll add more features and improvements later, cataloging the results in other way, by site, by platform, and other things. If you want to collaborate in a more intensive way, I can invite you to be a collaborator. With your Google Account, you can add and label new sites to the search engine.

The Future of Java ME II

firt | 23 October, 2006 06:26

 

Following my last post, I’m analyzing the Future of Java ME (J2ME).

Designing new UI with SVG

 

Standard Vector Graphics format, will be one of the revolutions in Java UI designs, using an SVG subset called Tiny SVG. Everyone who developed a Graphic User Interface using LCDUI Canvas (or FullCanvas in Nokia UI) knows how difficult is to design a cool UI interface; we have to do everything with Java code with a few shape methods (like fillRect), or loading heavies PNGs.

 

Many vendors, all of them in JCP (Java Community Process) are supporting the SVG API (JSR 226). Many SDKs and emulators are supporting it, and Nokia’s devices are supporting it from Series 40 3rd edition Feature Pack 1 and Series 60 3rd edition Feature Pack 1. You can find a great document from Forum Nokia about this API here

 

SVG has many advantages, as the following ones:

  • It’s a standard.
  • It’s XML based, so it is a text file, easy to store and transmit.
  • It allows to design vector graphics that scales automatically to fit the canvas size of the device.
  • It allows vector animations.
  • It allows to define hotspots over the image, to be navigated and selected by the user (yes, we can “listen” to this events).

 

So, from Java code we can capture when a user selects a hotspot, and we can also animate and modify the SVG elements structure dynamically. For example, we can change an object property (color, size, rotation, etc.), we can add new elements (like shapes, other SVG document) when we need it.

 

Using this technology, not only we are having greats advantages over using Canvas and Graphic classes, we can integrate graphic designers in our team easily. SVG is a format that every graphic designer can export from a vector tool (like Corel Draw or Adobe Illustrator), so we won’t need to convert designs into PNGs and Java code anymore.

 

And JCP team is working on a newer API that will extends this one: JSR 287 (SVG API 2.0). This API will work with SVG 1.2 format, that supports multimedia, audio and video, alpha transparency and gradients objects.

 

Other format waiting in Java ME community is CDF (Compound Document Format, JSR 290). But this is for other post...

Internationalization

 

For everyone who develops applications for a non-English market (as me), the ability to generate multiple versions for each language is a great feature. JCP (leader by Nokia in this case) worked in the Mobile Internationalization API (JSR-238). Using this API installed in the device, we can handle external resources files per language, and we can format dates, numbers and currency depending on the culture of the user’s country.

 

This API is currently supported in many IDEs for working in design mode. A great feature of some IDEs is the ability to generate many JAR packages, one per language or group of them.

 

Contactless

 

Contactless Communication API (JSR-257) allows mobile devices to read information available around in the environment, using many technologies, like visual tags (bar codes or similars), or RFID (Radio Frequency Identification). This will allow mobile phones to read URLs, number phones, semantic information, prices or other information from the “real world” to the Java ME application.

 

 

What’s next

 

In next posts I’ll talk about MIDP with CDC, Next Generation Mobile Platform, MIDP 3.0 and new tools and IDEs. 

 

See you on next post!

The future of Java ME

firt | 29 September, 2006 04:12

 Everyone who worked with Java ME a couple of years ago (for 'J2ME' fans, this is the new name of the platform), should feel very confortable with the platform today. That is because Java ME didn't evolve too much in the last years.

  

We are at a time of great changes in this area. Mobile hardware capacity has grown in the last years, and people are updating their mobile phones more frequently. That's the cause of the need of evolution in Java ME and, for that, JCP (Java Community Process) is working on multiple standars. In these series of post we'll discuss each of them. In last JavaOne in San Francisco, many of these 'new mobile architectures' were presented, and some of them are already implemented in some new devices.

   

Let's start to see some new APIs that complements MIDP and CLDC. These new JSR or APIs are the standard way to use new features in mobile Java technologies right now. Remember that if a device doesn't implement a API, we don't have a possibility to use it or install it on that device. There are a dozen of new APIs (just look at www.jcp.org), but I'll focus in this post in the following:

  

Web Services

This isn't a new API, but there aren't many developers using it yet. This API allow us to consume SOAP web services from the mobile device; a very useful feature in mobile development to create Smart Client Applications that connects to a remote server. This API is JSR-172 and it is implemented in some IDEs in a graphical way, like Nokia Carbide.j 1.5 and Netbeans Mobility Pack 5.0.

If we are working with JSR-172 no capable phones, we can still consume web services using our own library, by parsing the SOAP XML with the help of another library, like kXML, a free Java ME XML parser library.

 

Mobile Payment

This is a great feature for us (we are doing this for receive a payment, don't we? ;-) ).

In these area, there are two adittional packages to work with. These are Secure And Trusted Services APIs (SATSA JSR 177) and Payment API (PAPI JSR 229), Using this APIs we should develop, in the future, applications that charge the user for some service or content using, a) Remote Transactions (like a ringtone download) or b) Local Transactions using proximity technologies (like with a soda machine). These two APIs covers: security, interoperability and easy of use.

SATSA API add security and encryption to Java ME. With PAPI we can make mobile applications to charge the user, abstracting us the architecture behind. The user (or operator) should have available many payment mehods installed on the phone (by SMS, credit card, phone bill, etc) and we only decide how much we want to charge, and the user will be prompted to select a way to pay it.

 

Let's see some code of the process

import javax.microedition.payment.*;  

public void startApp(){

try {

   TransactionModule myTrans = new TransactionModule(this);

   myTrans.setListener(this)

   myTrans.process(featureID, “Title", "Description");

}catch (Exception e) { }

}

 

public void processed(TransactionRecord paymentRecord) {

switch(paymentRecord .getState()) {

   case TransactionRecord.TRANSACTION_SUCCESSFUL:

      // Payment OK

      break;

   case TransactionRecord.TRANSACTION_REJECTED:

      // Payment KO

      break;

}

}

The information about the price and other data is stored inside the manifest, in the JAR file.

We should use this feature in the future to offer some new cool levels for our games or, ¡new game lifes! Imagine yourself playing Space Invaders Ultimate in the last level, with the last enemy ship to kill and you lost your last life... will you pay $0,20 to get one more life? Will be 'gaming ethical' to offer this in a game? Interesting question...

 

What's Next?

In other post I'll continue with the Future of Java ME... talking about SVG, Internationalization, Contactless technologies, new tools and IDEs, and the most expected ones... MIDP with CDC, Next Generation Mobile Platform and MIDP 3.0.

Do you want to see great User Interfaces in Java ME?

firt | 31 May, 2006 07:20

If you are a Java ME (ex J2ME) developer, you know how difficult is to make a great UI using low-level APIs, drawing directly over Canvas. But you can do it, you can do a great User Interface using Canvas without making a big sized and slow application.

 

Don't you believe me? Just try the following FREE applications in any mobile phone (Nokia's too ;-) ):

"Official" Google Maps Client

It's a very cool and new application (presented in JavaOne) where you can experience a Google Maps interface like the "ajaxed" web one you should already know. Smooth map scrolling, progressive map downloads, place spots, local search and directions between two addresses are really amazing thinking about the development process, and in the service you can have on your hands. Forget the WAP version... this is a must try.

Opera mini 2.0

The first version already had a great UI. This an WML/HTML browser developed in Java ME that can render any page on the small mobile screen. The UI es really good, all in low-level canvas development. Great window, menu and HTML appareance, good scrolling and panning and... in version 2.0, we have skins! We can apply different skins to the UI interface... amazing thing! Great Job Opera! (I recognized myself as an Opera fan in desktop environment). You can now download images and music to your phone (good JSR implementation job).

 

Do you have another suggestions to this list?

Thinking in SVG

firt | 31 May, 2006 06:59

Hi and welcome to my blog. I hope we can have interesting discussions about mobile technologies, future improvements, tips and common problems that a mobile developer have . I'm a professor, book writer and developer in Java ME and other mobile technologies. I'm supporting spanish-speakers too, so "bienvenidos".

 

During May, I was visiting San Francisco and I had the opportunity to be in JavaOne 2006. I assisted to many Java ME sessions and some of them were intesting. The most powerful and useful feature that any mobile UI designer/programmer I saw on JavaOne was the future of SVG (Standard Vector Graphics) in Java ME. We have the JSR-226 to use SVG on our Java ME developments, but the thing is that SVG support will change the way we are thinking the UI in mobile games and apps. We can now make really cool graphic interfaces, with animation support and hotspot zones (we can replace a bored CLDC Form). And it is very easy to create SVG files in many graphic software (like Corel Draw) and to import in our projects. We can handle SVG events in Java too.

NetBeans 5.5 with Mobility Pack 5.5 brings us a new experience in SVG, supporting SVG screens in the flow designer, DOM (Document Object Model) manipulation inside the SVG and (perhaps the most important thing) the possibility to compile an alternative version of the UI converting automatically the SVG in PNG for different screen sizes. Just try the beta!

 

I hope we can have this feature in Carbide.j... (by the way, did you try Carbide.j?)

 

Will SVG support in mobile phones stop Adobe Flash Lite? mmm...  Adobe is currently supporting SVG too in its tools.

 
 

Rate This

 
 
Bookmark this page: DeliciousDiggFacebookGoogleYahooStumbleUponRedditDiigoTechnocratiTwitter  Share this page Share this page Print this Page Print this page Invite a friend Invite a friend
京ICP备05048969号    Email Newsletters Press Terms & Conditions Privacy Policy Sitemap Contact Us © 2009 Nokia 
RDF Facets: qdcZidentifierQSxhttpE3aE2fE2fblogsE2eforumE2enokiaE2ecomE2fblogE2fpaulE2dcoultonsE2dforumE2dnokiaE2dblogE2farchivesE2f2009E2f04E2fX qdcZtypeQUqfnZE45E78cludedFromGeneralE4cistingsQ qdcZtypeQUqfntypeZBlogContentQ qdcZtypeQUqfntypeZCommunityContentQ qdcZtypeQUqfntypeZE52esourceQ qdcZtypeQUqfntypeZWebpageQ qdcZtypeQUqmarsZManagedE52esourceQ qdcZtypeQUqwebZInformationE52esourceQ qdcZtypeQUqwebZPageQ qdcZtypeQUqwebZE52esourceQ qdcZtypeQUqrdfsZE52esourceQ qfnZtypeQUqfntypeZBlogContentQ qfnZtypeQUqfntypeZCommunityContentQ qfnZtypeQUqfntypeZE52esourceQ qfnZtypeQUqfntypeZWebpageQ qmarsZlanguageQUxhttpE3aE2fE2fswE2enokiaE2ecomE2flanguageE2d1E2fenX qrdfZtypeQUqfnZE45E78cludedFromGeneralE4cistingsQ qrdfZtypeQUqfntypeZBlogContentQ qrdfZtypeQUqfntypeZCommunityContentQ qrdfZtypeQUqfntypeZE52esourceQ qrdfZtypeQUqfntypeZWebpageQ qrdfZtypeQUqmarsZManagedE52esourceQ qrdfZtypeQUqwebZInformationE52esourceQ qrdfZtypeQUqwebZPageQ qrdfZtypeQUqwebZE52esourceQ qrdfZtypeQUqrdfsZE52esourceQ