author's personal copy...java 2 micro edition (j2me)[4]. j2me emulates the cross-platform...

14
This article appeared in a journal published by Elsevier. The attached copy is furnished to the author for internal non-commercial research and education use, including for instruction at the authors institution and sharing with colleagues. Other uses, including reproduction and distribution, or selling or licensing copies, or posting to personal, institutional or third party websites are prohibited. In most cases authors are permitted to post their version of the article (e.g. in Word or Tex form) to their personal website or institutional repository. Authors requiring further information regarding Elsevier’s archiving and manuscript policies are encouraged to visit: http://www.elsevier.com/copyright

Upload: others

Post on 09-Oct-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Author's personal copy...Java 2 Micro Edition (J2ME)[4]. J2ME emulates the cross-platform nature of its desktop (Java 2 Standard Edition) and server (Java 2 Enterprise Edition) counterparts

This article appeared in a journal published by Elsevier. The attachedcopy is furnished to the author for internal non-commercial researchand education use, including for instruction at the authors institution

and sharing with colleagues.

Other uses, including reproduction and distribution, or selling orlicensing copies, or posting to personal, institutional or third party

websites are prohibited.

In most cases authors are permitted to post their version of thearticle (e.g. in Word or Tex form) to their personal website orinstitutional repository. Authors requiring further information

regarding Elsevier’s archiving and manuscript policies areencouraged to visit:

http://www.elsevier.com/copyright

Page 2: Author's personal copy...Java 2 Micro Edition (J2ME)[4]. J2ME emulates the cross-platform nature of its desktop (Java 2 Standard Edition) and server (Java 2 Enterprise Edition) counterparts

Author's personal copy

Location API 2.0 for J2ME – A new standard in location forJava-enabled mobile phones

Sean J. Barbeau a,*, Miguel A. Labrador b, Philip L. Winters a,Rafael Perez b, Nevine Labib Georggi a

a Center for Urban Transportation Research, University of South Florida 4202 E. Fowler Avenue CUT100 Tampa, FL 33620, USAb Department of Computer Science and Engineering, University of South Florida 4202 E. Fowler Ave. ENB108 Tampa, FL 33620, USA

Available online 31 January 2008

Abstract

Key aspects in realizing the maximum potential of advanced Location-Based Services (LBS) are the standardization and cross-plat-form availability of an Application Programming Interface (API) for mobile phones that allows access to real-time location information.To shorten the development time of advanced LBS, such an API should also provide essential features such as map user interfaces, geo-coding, and navigation to be used as building blocks in the context of larger mobile applications. Using these available services, appli-cation developers can focus on building innovative location-aware applications rather than re-creating existing services. This article’smain goals are to emphasize the importance of such an API and to describe the Location API for Java 2 Micro Edition (J2ME). Thisdescription includes the main features of the current ‘‘JSR179-Location API v1.0” as well as the significant enhancements and new ser-vices included in the development of ‘‘JSR293-Location API v2.0.” These new features, illustrated using coding examples, will help soft-ware developers create next-generation location-aware J2ME applications.Published by Elsevier B.V.

Keywords: Location based services; Mobile phone; Standard; Application programming interface; Java; J2ME; JSR179; JSR293

1. Introduction

The availability and pervasiveness of powerful mobilephones along with advances in software development plat-forms and communication networks promise to change theway we receive and process information. Once large, awk-ward devices owned only by the wealthy, mobile phonesare now becoming accessible to the majority of the world.In 2007, global mobile phone use will hit a record 3.25 bil-lion users, which is over half the world’s population [1].Continued escalation is being driven by growth in emergingmarkets such as China, India, and Africa. In establishedmarkets such as the United States, Europe, and Japan,innovative mobile phone applications that promise to rev-

olutionize the future seem to be emerging daily. However,ubiquitous access to real-time data threatens to put mobileusers into information overload. Subscription-based ser-vices push out messages that may be insignificant in thecontext of the user’s current position, such as traffic alertsabout a local highway when the user is out of town. Loca-tion-Based Services (LBS) will likely play an important rolein filtering down the deluge of information to relevantitems based on real-time or historical location data as wellas the relationship to the position of other users or placesconnected to the Internet. Additionally, LBS are makingnew applications possible, such as location-tagged photos,location-based social networking, and personalized naviga-tion for transit users or pedestrians.

Due to the important role LBS will serve in future soft-ware systems, global commercial demand of such servicescontinues to skyrocket. Market research confirms that theworld population of global positioning system (GPS)-enabled location-aware services subscribers will grow from

0140-3664/$ - see front matter Published by Elsevier B.V.

doi:10.1016/j.comcom.2008.01.045

* Corresponding author. Tel.: +1 813 974 7208; fax: +1 813 974 5168.E-mail addresses: [email protected] (S.J. Barbeau), labrador@cse.

usf.edu (M.A. Labrador), [email protected] (P.L. Winters), [email protected] (R. Perez), [email protected] (N.L. Georggi).

www.elsevier.com/locate/comcom

Available online at www.sciencedirect.com

Computer Communications 31 (2008) 1091–1103

Page 3: Author's personal copy...Java 2 Micro Edition (J2ME)[4]. J2ME emulates the cross-platform nature of its desktop (Java 2 Standard Edition) and server (Java 2 Enterprise Edition) counterparts

Author's personal copy

12 million in 2006 to a projected 315 million in 2011 withNorth American growth reaching 20 million users up from500,000 users in 2006 [2,3]. The software engineering indus-try must be properly prepared to develop effective mobilelocation-aware applications to serve this growing market.

The many different device manufacturers and wirelesscarriers involved in the mobile software development pro-cess can create a significant barrier to entry for softwareengineers new to mobile development. The applicationdeveloper has the option to utilize multiple programminglanguages, many of which contain features restricted to cer-tain operating systems. Therefore, an application maywork well on one mobile phone, but must be re-created ifit is to run on other unsupported models.

A cross-platform language that has emerged on differenthandsets from many manufacturers and wireless carriers isJava 2 Micro Edition (J2ME) [4]. J2ME emulates the cross-platform nature of its desktop (Java 2 Standard Edition)and server (Java 2 Enterprise Edition) counterpartsthrough the implementation of a subset of the Java pro-gramming language and libraries on mobile devices. Whilenot a perfect ‘‘write-once-run-anywhere” solution, J2ME isnot restricted to a single chipset or operating system. J2MEapplications can run on any ‘‘Java-enabled” mobile devicewithout substantial changes to the code or structure of theapplication. Additionally, since many traditional applica-tion programmers are familiar with the Java language,the barrier of learning a new language specific to mobiledevelopment is removed. These features have increasedthe popularity of J2ME and have pushed it to the forefrontof mobile application development.

An important task for software engineers new to loca-tion-aware application development is to understand howto create software that can execute on a mobile phoneand access real-time device-location information. Sincethere are currently over 1 billion Java-enabled mobilephones in the marketplace, understanding how to accesslocation data through J2ME applications is critical to thefuture of LBS [5]. This article discusses the features of anew J2ME software standard, ‘‘JSR293-Location API2.0” that will help LBS application developers createnext-generation location-aware J2ME applications.

2. The J2ME-Location API – How it differs from other

‘‘Location’’ standards

The sheer number of location-related standards can beoverwhelming to software engineers. Several popular stan-dards fall under the OpenGIS Specifications [6] as definedby the Open Geospatial Consortium, Inc. (OGC). Geog-raphy Markup Language (GML) [7] is an XML-basedmarkup language for geographic data such as latitude,longitude, and altitude. Another standard defined underOpenGIS is Location Service (OpenLS) [8], which is aprotocol that defines how location information may berequested and returned from a location data repositorysuch as a database. These standards may be useful for

the developer when persisting or transferring locationdata, but are secondary in importance for developersinterested in obtaining real-time location data from amobile phone. Other standards, such as the EuropeanTelecommunications Standards Institute (ESTI)’s ‘‘GSM03.71: Location Services (LCS)” [9] and the 3rd Genera-tion Partnership Project (3GPP)’s ‘‘TS 22.071: LocationServices (LCS)” and ‘‘TS 23.171: Functional stage 2description of location services in UMTS” describe howlocation is calculated for handsets and handled internallyfor a wireless carrier’s network and concern mainly tele-communications engineers, not the common softwaredeveloper. Additional standards exist for ‘‘network-initi-ated” location requests, or a method of using web appli-cations to query a wireless carrier’s location server toretrieve a mobile device’s position. These protocolsinclude the Open Mobile Alliance (OMA) LocationWorking Group’s Mobile Location Protocol (MLP) [10]as well as a set of telecommunication web services knownas Parlay X [11]. These ‘‘network-initiated” requests donot require any software to be installed on the device,but also have many limitations including a restrictionon the refresh rate of new location data per device, thenumber of phones that can be queried simultaneously,the characteristics of location-related data (e.g. velocity,heading, etc.), and strict access control by the wirelesscarrier. Therefore, while useful for some applications, net-work-initiated location requests are subject to many limi-tations and are unusable for advanced location-awareapplications such as real-time navigation.

The above standards should not be confused with‘‘handset-initiated” location requests, or methods thatrequest real-time location data inside software running ona mobile device. The majority of advanced mobile loca-tion-aware applications are driven by the ability to pro-grammatically retrieve real-time location data from thelocal device. Immediate access to location informationallows the handset software to work autonomously fromany application server with an extremely low latencybetween the position calculation and action taken by thesoftware on the device. Handset-initiated APIs also allowthe software developer greater control over properties suchas the frequency of position re-calculations or characteris-tics of the data returned (e.g. velocity, heading, etc.) Thestandardization of this type of on-device API is the focusof this paper.

Accessing location information from software runningon a mobile device has changed significantly over the lastdecade. In the past, location-aware applications were cre-ated by tethering a stand-alone Global Positioning System(GPS) device to a laptop or Personal Digital Assistant(PDA). The GPS device would then stream strings format-ted according to a standard, such as National Marine Elec-tronics Association (NMEA) 0183 [12], over a serialconnection, which could be implemented over a cable orwirelessly via BluetoothTM. The location-aware softwareapplication was responsible for listening for these

1092 S.J. Barbeau et al. / Computer Communications 31 (2008) 1091–1103

Page 4: Author's personal copy...Java 2 Micro Edition (J2ME)[4]. J2ME emulates the cross-platform nature of its desktop (Java 2 Standard Edition) and server (Java 2 Enterprise Edition) counterparts

Author's personal copy

‘‘sentences” and parsing the data to yield information suchas the current latitude, longitude, and altitude.

New mobile phones with embedded GPS chips and car-rier-based localization systems have changed the way loca-tion information is obtained and increased the complexityof the procedure. For example, Assisted GPS (A-GPS)retrieves data wirelessly from a server that is used to lessenthe time required to calculate a position. Alternate posi-tioning mechanisms such as trilateration based on cellularsignals can also be used to calculate the position of thedevice when GPS is not available. In addition, final posi-tion calculation can now take place on the device or on aserver in the network. To utilize these advanced positioningtechnologies, software applications must provide certaininformation to the mobile device such as the requested fre-quency of updates, requested type of positioning technol-ogy, and any other parameters required to provisionthese technologies. Therefore, modern LBS applicationsrequire more interaction with the device than their tradi-tional autonomous GPS-driven counterparts. Since thisinteraction must be accessible from software running onthe mobile phone, this functionality is exposed throughan API to make the underlying complexity transparent tothe 3rd party software developer.

As J2ME location-enabled mobile phones began toevolve, it soon became evident that simple, interactive,standardized programmatic access to real-time locationinformation on the device would be necessary. Fortunately,J2ME provides a method for continuous improvement ofthe J2ME platform through the Java Community Process(JCP). Any JCP member, including device manufacturersand wireless carriers, can submit a Java SpecificationRequest (JSR) which outlines the need for an additionaloptional feature, or API, in the J2ME environment. Ifother JCP members agree that this JSR is needed, an expertgroup is then formed to create a specification. As long as amobile software developer uses J2ME APIs defined byJSRs, the application should run seamlessly across anyJ2ME platform that fully supports that particular JSR.Following this process, in 2002 Nokia proposed the addi-tion of ‘‘JSR179: Location API for J2ME” [13] that wouldallow J2ME applications to utilize a standardized interfaceto access location data from the device. An expert groupincluding IBM, Nokia, Symbian, Intel, Motorola, Sony-Ericsson, ESRI, Sun Microsystems, Inc. and others deliber-ated on the standard and released the final version inSeptember 2003.

3. JSR179 – Location API v1.0

JSR179 allows standardized access for J2ME applica-tions to location data that represents the real-time positionof the mobile phone. JSR179 can be compared against sim-ilar J2ME APIs including Motorola’s OEM Position API[14] for integrated Digital Enhanced Network (iDEN)devices as well as Qualcomm’s Java Application Extensions(QJAE) API [15] for their Code Division Multiple Access

(CDMA) devices. However, JSR179 is the only standard-ized J2ME ‘‘location-related” API that works across differ-ent devices, chipsets, and wireless carriers. Both Motorola’sPosition API and QJAE are proprietary in format and willonly work on Motorola iDEN devices and QualcommCDMA devices, respectively, and therefore fall into the‘‘Proprietary APIs” section of the J2ME architectureshown in Fig. 1. A J2ME application utilizing JSR179 toaccess location information should require few changes toexecute across different manufacturers’ devices or wirelesscarriers’ networks. As shown in Fig. 1, JSR179 is anoptional API in the J2ME architecture and will only besupported on devices with access to positioning technolo-gies such as GPS.

JSR179 can also be compared to the proprietary loca-tion API available on Google’s new Android platform[16]. Android, an open-source software stack based onLinux, is expected to span several mobile device and chip-set manufacturers, and is therefore similar in concept toJ2ME. A main strength of Android is its support for mod-ular service-oriented applications and inter-applicationcommunication (capabilities also planned for the J2MEplatform in MIDP 3 [17] and OSGi [18]). However, sinceAndroid is new to the mobile industry and does not yetexist on any commercially available mobile phones, it isnot nearly as widespread or as generally accepted asJ2ME. Android applications are written using Java,although Android APIs are proprietary in nature and donot conform to J2ME standards. For example, Android’sproprietary location API is very similar in functionalityto JSR179 but does not conform to the JSR179 specifica-tion. Technical and political issues will dictate how wide-spread and accepted Android becomes and thereforemore time is needed to see if it will be a worthwhile plat-form for mobile application development. CurrentlyJ2ME remains the accepted standardized platform for Javadevelopment on mobile devices and JSR179 remains theonly standardized location API on the J2ME platform.

3.1. Criteria, LocationProvider, and Location

JSR179 is driven by a software object referred to as aLocationProvider, which is the source of location data forthe application. Additionally, all interactions with theunderlying technology that provides location data are han-dled through this object. Since a mobile phone maysupport multiple types of positioning technology (e.g. A-GPS, cellular signal trilateration, or cellular base stationID), multiple LocationProviders may exist. Criteria speci-fied by the application indicate what type of LocationPro-

vider is required to meet the application’s needs. Forexample, a navigation application may require highly pre-cise positioning data, it may require speed and courseinformation, and it may allow some kind of cost to beinvolved (e.g. cost to access the network for A-GPS assistdata). A LocationProvider with this type of descriptionwould be obtained through the following code:

S.J. Barbeau et al. / Computer Communications 31 (2008) 1091–1103 1093

Page 5: Author's personal copy...Java 2 Micro Edition (J2ME)[4]. J2ME emulates the cross-platform nature of its desktop (Java 2 Standard Edition) and server (Java 2 Enterprise Edition) counterparts

Author's personal copy

The mobile phone will return a LocationProvider thattypically is able to meet these criteria, or null if a Location-

Provider meeting these criteria does not exist. This processallows the mobile phone to return the ‘‘best” positioningtechnology based on the application’s needs. Therefore, ifa weather information application has a horizontal accu-racy requirement of 500 m, very coarse location informa-tion may be sufficient. In this case, a mobile phone couldquickly return the location of the cellular base station’scoverage area, or Cell ID, with very little latency and aminimum impact on the phone’s battery, since the preci-sion of GPS was not required.

Once a LocationProvider has been obtained, the applica-tion can get information about the real-time location of thedevice through the following code:

The Location object holds important informationabout the current location, including an encapsulatedQualifiedCoordinates class that contains informationabout the estimated latitude, longitude, altitude ofthe current position as well as estimated horizontaland vertical accuracies associated with the calculatedposition. This accuracy information is important, sinceno positioning technology can give results with 100%accuracy. Therefore, the estimated horizontal and ver-tical accuracy uncertainty values provide a means toestimate how far the calculated position is (in meters)from device’s true geographic location. Other impor-tant information available through the Location objectinclude:

� the timestamp when the location was calculated,� the current speed and course of the device,� whether or not the position data is valid (i.e. whether or

not a latitude and longitude could be determined),

� the location method that was used to calculate theposition.

The location method is defined by several different con-stants including MTE_SATELLITE (i.e. GPS),MTE_TIMEDIFFERENCE (i.e. cellular-signal basedpositioning), and MTE_CELLID (i.e. Cell ID) that repre-sent particular positioning technologies. Also specified iswhether the technology was assisted or unassisted (i.e.MTA constants), and whether the technology is networkor terminal (i.e. device)-based (i.e. MTY constants). Usingall of this location information, an application canevaluate its current state and decide if action needs to betaken.

3.2. LocationListener

The getLocation() function works well for applicationsthat require location information once, such as softwarethat geo-tags an image or text message. However, manylocation-aware applications require a constant knowledgeof their current location to trigger certain actions. Forthese types of applications, JSR179 defines a LocationLis-tener that allows an application to be updated at a definedinterval with new location data. The LocationListener is aJava interface and therefore must be implemented by aclass that defines several methods, including the mostimportant method which receives the updated locationinformation from the device:

The LocationListener is then set through the followinglines of code:

Criteria criteria = new Criteria();

criteria.setHorizontalAccuracy(30);//Indicate that required estimated accuracy is 30 meters

criteria.setSpeedAndCourseRequired(true);//Indicate that speed and course are required

criteria.setCostAllowed(true);//Indicate that cost is allowed

LocationProvider lp = LocationProvider.getInstance(criteria);//Request a LocationProvider that meets these Criteria

Location location;

location = lp.getLocation(20); //Request a new location object with a timeout of 20 seconds

public class LocListener implements LocationListener {

. . .public void locationUpdated(LocationProvider provider, Location location) {

// This code will be triggered with updated location data at the defined interval

}. . .}

1094 S.J. Barbeau et al. / Computer Communications 31 (2008) 1091–1103

Page 6: Author's personal copy...Java 2 Micro Edition (J2ME)[4]. J2ME emulates the cross-platform nature of its desktop (Java 2 Standard Edition) and server (Java 2 Enterprise Edition) counterparts

Author's personal copy

As a result of these instructions, every 4 s the loca-

tionUpdated() method of LocListener will be fired bythe J2ME platform, which will pass in both the Loca-

tionProvider that calculated the new location as well asthe new Location which was calculated. Every time thatthe LocationListener fires, the application can takeaction using that new Location information, such assending the new location data to a server to create areal-time tracking application. The LocationListener

provides a very simple mechanism for the 3rd partydeveloper to monitor device location and thereforeremoves the need to implement complex threads andtimers.

3.3. ProximityListener

Another common feature of LBS applications is to triggeran event when the device nears a particular location. JSR179provides a ProximityListener, also defined via an interface,which allows the application to register a specific set of Coor-dinates (i.e. latitude and longitude) as well as a proximityradius via the LocationProvider class. When it is determinedthat the device has entered the area defined by the coordi-nates and radius, the proximityEvent() method of the classthat has implemented ProximityListener is fired by theJ2ME platform. Any code that the application developerhas inserted into this method will be called upon this event:

LocListener locListener = new LocListener();

int interval = 4;// Interval between location updates is 4 s

int timeout = 2;// Timeout after location request is 2 s

int maxAge = 2;// Maximum age allowed for a duplicate location value to be returned is 2 slp.setLocationListener(locListener, interval, timeout, maxAge);

public class ProxListener implements ProximityListener{

. . .public void proximityEvent(Coordinates coordinates, Location location){

// This code will be triggered when proximity to given coordinates is detected

}. . .}

Fig. 1. J2ME Architecture.

S.J. Barbeau et al. / Computer Communications 31 (2008) 1091–1103 1095

Page 7: Author's personal copy...Java 2 Micro Edition (J2ME)[4]. J2ME emulates the cross-platform nature of its desktop (Java 2 Standard Edition) and server (Java 2 Enterprise Edition) counterparts

Author's personal copy

3.4. Landmark and LandmarkStore

JSR179 also contains an on-device database known asthe LandmarkStore, which is a persistent record of Land-

marks. Landmarks are defined by a latitude and longitudealong with other human-readable properties such as name,address information, and description. The LandmarkStore

provides basic functionality of storing and retrieving Land-

marks, as well as creating categories to which Landmarks

can be assigned.

4. JSR293-Location API v2.0

While JSR179 is a significant contribution to J2ME as astandardized API to access device location, it does haveseveral limitations. First, the use of JSR179 in real-worldscenarios has exposed areas in the API where improve-ments are needed. Since location-aware applications oper-ate in dynamic environments and with variouspositioning technologies, it is very difficult to replicate allpotential scenarios and use cases on emulators. Secondly,JSR179 was designed as a compact API for early J2MEmobile phones that were severely resource-constrained.With the advancement of mobile phone technology, thereare new and more advanced use cases such as real-timenavigation, geo-coding, map user interfaces, and theexchange of landmark information between devices. InJSR179, developers would have to code all of these ele-ments from scratch. A new API should provide these ele-ments as building blocks to software developers so theycan spend more time developing innovative applicationsand less time constructing the basic pieces of location-aware software. Both of these issues are beyond the scopeof JSR179, and therefore a new JSR is required. Nokiaproposed ‘‘JSR293: Location API 2.0” [19] in early 2006to address the needs of advanced location-aware applica-tions. An expert group including Nokia, Motorola,Sprint-Nextel, the University of South Florida, GPS hard-ware manufacturer SiRF, Samsung, Cingular, Sun Micro-systems, Inc., Sony Ericsson, European wireless carriersOrange and Telecom Italia, and China Mobile Communi-cations Co. Ltd. has been deliberating on this standard,with JSR293 currently in the public review stage. JSR293is significantly more complex than JSR179 and a thoroughdiscussion is beyond the scope of this article. Therefore, thefollowing sections focus on two major areas: criticalimprovements of elements from JSR179 Location APIv1.0 and significant new features in JSR293 LocationAPI v2.0.

4.1. Improvement of features from v1.0

One of the challenges encountered when improvingexisting features of JSR179 through JSR293 is thatJSR293 must be fully backwards-compatible withJSR179. In other words, an application developed to run

on a handset with JSR179 must exhibit identical behaviorwhen running on a handset with JSR293. JSR179 is well-designed in general, so this issue arises only in a few cases,primarily the concept of Criteria in LocationProvider

selection, the functionality of the ProximityListener, andthe abilities of the LandmarkStore. Solutions implementedin these areas were carefully designed to allow backwardscompatibility with legacy JSR179 applications whileproviding much needed improvements for futureapplications.

4.1.1. Criteria and LocationProvider

Criteria were used in JSR179 to hide the complexity ofdifferent location technologies from the 3rd party softwaredeveloper and to prevent an application from binding itsfunctionality to a specific technology. Ideally, developersdo not have to know anything about the underlying posi-tioning technologies and simply specify the needs of theirapplication through the Criteria object to the LocationPro-

vider, which then returns the ‘‘best” technology for this cir-cumstance. However, the ambiguity of this design leaves anopening for vastly different behaviors on different JSR179devices. For example, if conflicting values are set in theCriteria object such as a PREFERRED_POWER_CONSUMPTION = LOW and HORIZONTAL_ACCU-

RACY = 5 meters, the LocationProvider of one implemen-tation may choose A-GPS (thereby giving preference to thedesired accuracy) while another implementation of JSR179may choose Cell-ID (thereby giving preference to powerconsumption). This varying behavior forces the applicationdeveloper to construct software that handles a variety ofcases on different JSR179 devices based on the technologytype returned by that platform. Given the sheer number ofpermutations of criterion settings compounded by new per-mutations for different platforms and the increasing num-ber of available positioning technologies on mobilephones, this issue defeats the cross-platform concept ofJ2ME as well as the desired simplicity of hiding implemen-tation details from the developer.

Two solutions to this problem have been constructed inJSR293. First, the Criteria object now supports setting apriority from 1 to N for each criterion, with the lowestnumbered criterion (1) having the highest priority. Thisreduces ambiguity by allowing the application developerto clearly communicate to the device what criterion is themost important for his or her application. Secondly, anew method of retrieving a LocationProvider is supportedvia a new getInstance() function that does not rely on Cri-

teria. Instead, an array of prioritized location method con-stants, or technology types defined in the Location object,can be input to the API to specify the desired fallback orderof positioning technologies to be used by the LocationPro-

vider. For example, a tracking application may wish to useGPS, and if GPS is not available use cell signal-based posi-tioning, and if cell signal-based positioning is not availableuse Cell ID:

1096 S.J. Barbeau et al. / Computer Communications 31 (2008) 1091–1103

Page 8: Author's personal copy...Java 2 Micro Edition (J2ME)[4]. J2ME emulates the cross-platform nature of its desktop (Java 2 Standard Edition) and server (Java 2 Enterprise Edition) counterparts

Author's personal copy

This method will be a welcome addition for developerswho understand the pros and cons of different positioningtechnologies so they can clearly communicate their applica-tion needs to the device while still maintaining platformindependence through the use of MTE, MTA, and MTY

constants already defined in JSR179. By allowingapplications to explicitly request a certain type of position-ing technology, application developers can easily createtheir own optimized application-specific positioningrequest sequences by simply requesting a new LocationPro-

vider during application execution. For example, if anapplication knows that the device is likely to be indoorswhere GPS will fail at certain times of the day, it candirectly request a network-based cell signal trilaterationcalculation instead of requesting a GPS fix and waitingfor it to failover to a different type of positioning technol-ogy. While this was technically possible in JSR179, itinvolved keeping track of complex proprietary Criteria

mappings to technology types. Allowing smart applica-tion-level switching of positioning technologies, both net-work and terminal-based, will likely be important forfuture mobile devices that will have an increased numberof different wireless capabilities, including cellular, Wi-Fi,Bluetooth, ZigBee, and Ultra-Wideband, as well as variouspositioning options available within a single wireless tech-nology. The LocationProvider is able to hide network com-munication used to implement assisted, network-based, orhybrid positioning technologies from the application andallow the developer to concentrate on simply requestingthe right technology at the right time. In a related improve-ment to LocationProviders, a new location method technol-ogy constant MTE_INERTIALNAVIGATION is definedin JSR293 to support positioning via ‘‘dead-reckoning”

when the primary positioning technology (e.g. GPS) isnot available. This feature will allow mobile devices withembedded accelerometers or other technology to provideestimated positioning updates to the application in harshwireless environments (e.g. indoors or underground) wherethe primary positioning technology has lost the ability toprovide accurate location data.

This new method of requesting LocationProviders inJSR293 also allows the input of a ‘‘parameters” string as asecondary argument that can define values necessary for aspecific platform to function, such as a location server IPaddress and port number (‘‘SERVER_IP = XXX.XXX.

X.XX; SERVER_PORT = Y”) for network-assisted or net-work-based positioning methods. JSR179 does not supportany parameter strings and therefore this functionality hadto be accomplished through proprietary extensions toJSR179. The parameters string also allows devices and plat-forms to create settings and fallback patterns optimized forspecific types of applications on their platform. For example,a tracking application could simply specify ‘‘APPLICA-TION_TYPE = TRACKING” in the parameters stringand the device would return a LocationProvider optimizedfor tracking on its platform.

4.1.2. ProximityListener

The JSR179 ProximityListener also needed improve-ment in several areas. First, when the JSR179 Proximity-

Listener was registered for a particular circular areadefined by a point and a radius, the application had to waituntil the implementation fired the proximityEvent()

method before taking action. There was no method to setor discover the periodic refresh rate used to check thereal-time position against the registered position or anyother kind of communication from the implementation ifthe proximity was not detected. Therefore, if the methoddid not fire when expected while testing on a real device,debugging the application was extremely difficult. Causesfor failure could vary from a momentarily dropped GPSsignal, to a temporary loss in GPS accuracy, to a lowrefresh rate that could not capture the device’s entranceinto the circular area prior to its exit. Secondly, the Prox-

imityListener lacked the ability to detect an exit from a par-ticular area, as it only allows detection of an entrance intothe area. Lastly, the only geographic shape supported bythe ProximityListener was a circle, represented by a pointand a radius. There are many use cases where the detectionof a long rectangle area or an irregular polygon defined bymultiple points is desired.

Proximity detection has been greatly enhanced inJSR293. For example, an interval and timeout valuecan be defined by the application when the Proximity-

EnterAndExitListener, which has replaced the JSR179ProximityListener, is registered. At this interval, a newlocationUpdated() method is called so that the applica-tion can tell how frequently the device is checking prox-imity to the registered location. Information about thepositioning technology being used by the implementation

int[] preferredLocationMethods = new int[3];

preferredLocationMethods[0] = MTE_SATELLITE;//First preference of positioning technology

preferredLocationMethods[1] = MTE_TIMEDIFFERENCE;//Second preference of positioning technology

preferredLocationMethods[2] = MTE_CELLID;//Third preference of positioning technology

LocationProvider lp = LocationProvider.getInstance(preferredLocationMethods, parameters); //Get the LocationProvider

for given preferred location technologies

S.J. Barbeau et al. / Computer Communications 31 (2008) 1091–1103 1097

Page 9: Author's personal copy...Java 2 Micro Edition (J2ME)[4]. J2ME emulates the cross-platform nature of its desktop (Java 2 Standard Edition) and server (Java 2 Enterprise Edition) counterparts

Author's personal copy

for proximity detection is also provided so applicationdevelopers can better troubleshoot detection failures.Additionally, detection of departure from a specific areais now supported through the ProximityEnterAndExitLis-

tener. Finally, JSR293 allows the registration of differenttypes of geographic areas, including CircularGeograph-icAreas, RectangleGeographicAreas, and PolygonGeo-

graphicAreas for all JSR293 features that handlegeographic areas, including the ProximityEnterAndExit-

Listener. For example, any polygon that is representedin a server-side GIS database can now be directly trans-ferred to a mobile phone, constructed into a PolygonGe-

ographicArea, and registered with the ProximityEnter

AndExitListener. This feature alone is a huge leap aheadfor precise LBS using areas that could not be easily rep-resented with a center point and radius.

4.1.3. Landmark and LandmarkStore

The Landmark and LandmarkStore also received anoverhaul in JSR293 to lend better support for futureLBS applications. The Landmark now features new fieldssuch as author, identifier, and timestamp and the Land-markStore has methods to search the store based onthese properties. Wildcard searches are also allowed. Thisexpanded search ability should make it much easier forapplications to synchronize on-device landmarks with adatabase server and keep track of record updates. Addi-tionally, the Landmark now has a geographic area inaddition to a simple latitude and longitude to better dif-ferentiate the coverage of landmarks, such as the conceptof the ‘‘University of South Florida” as a landmark ver-sus ‘‘Bus Stop 27”. An ‘‘ExtraInfo” field has also beenadded as a dedicated field for the storage of applica-tion-specific data related to landmarks, which can beused for landmark properties that do not directly mapto existing JSR293 Landmark fields. Generic global land-mark categories are now defined and localized for a bet-ter end user experience and consistency among LBSapplications. To better support a large on-device data-base that may be accessed by multiple J2ME applicationssimultaneously, JSR293 also adds a LandmarkStoreLis-

tener that can inform the application when the contentsof the LandmarkStore are modified by another threador application. In an effort to improve the privacy andsecurity of location-aware applications, LandmarkStorescan now be declared as ‘‘private.” Private Landmark-Stores are only accessible by the application that createdthe LandmarkStore, in contrast to JSR179 Landmark-

Stores which were always shared among all J2ME appli-cations on the device. Private LandmarkStores will allowsecure LBS applications to easily store sensitive location-related data (e.g. user-generated locations, business cus-tomer locations, etc.) on the device without worry thatthe information could be easily accessed by other appli-cations. Public LandmarkStores are still allowed andencouraged in JSR293 for publically available landmark

datasets that can be shared among applications, suchas a points-of-interest database.

4.2. Features new to v2.0

JSR293 also includes many completely new features thatwill significantly accelerate LBS software development forhandsets as well as improve interoperability betweenmobile devices and server-side systems. These features pro-vide basic location-aware services to 3rd party J2ME appli-cations that developers would otherwise have to manuallycode, thus drastically shortening the development time foradvanced location-aware applications. The following fea-tures are presented in the context of a ‘‘Tourist Guide”mobile application designed to download tourist attrac-tions for a city, show these landmarks to the user on amap, and then guide the user on a tour of the city usingreal-time navigation.

4.2.1. Landmark exchange formats

An important new feature in the area of interoperabil-ity is ‘‘Landmark Exchange Formats,” implemented inan ExchangeFormatFactory. In JSR179,Landmarks

existed primarily inside a single device and were createdand accessed by the same single application. This createda ‘‘walled garden” of landmarks that could not easily beshared among other mobile phones or desktop applica-tions, or downloaded from websites. In JSR293, theExchangeFormatFactory can support multiple exchangeformats that promote interaction between mobile phonesand with desktop or server applications. This ability sig-nificantly increases the usefulness of LBS applicationsthat handle landmarks, allowing users to share favoriteplaces via email or text-message and allowing applica-tions to share landmarks via communication on specificports. Additionally, this method allows exchanges withnon-Java devices as well and promotes general interoper-ability between location-aware systems. Two exchangeformats are included in the JSR293 specification asexamples of different formats that serve various applica-tion needs: vCard (a light-weight format derived fromthe popular vCard standard) and LMX (an XML-basedformat). These formats will likely be implemented bymost device manufacturers and will be available for 3rdparty developers to utilize on most JSR293-compliantdevices. Other formats, such as KML or GML, may alsobe included by device manufactures. Additionally, theinclusion of an ExchangeFormatHandler interface allows3rd party developers to create their own formats in addi-tion to the formats that device manufacturers decide toimplement. These capabilities make landmark exchangesvirtually limitless in scope and interoperability. The fol-lowing example from the ‘‘Tourist Guide” applicationshows the simplicity of downloading popular touristattractions (i.e. landmarks formatted in the vCard for-mat) from a website and importing them into aLandmarkStore:

1098 S.J. Barbeau et al. / Computer Communications 31 (2008) 1091–1103

Page 10: Author's personal copy...Java 2 Micro Edition (J2ME)[4]. J2ME emulates the cross-platform nature of its desktop (Java 2 Standard Edition) and server (Java 2 Enterprise Edition) counterparts

Author's personal copy

4.2.2. Geocoding

In JSR293, three categories of services are derived fromnew ServiceProvider and ServiceListener superinterfaces:Geocoding, Maps, and Navigation. The use of interfacesallows device manufacturers and software developers theopportunity to explore many different types of ServicePro-

viders in addition to the main three groups listed above,and therefore adds significant expansion opportunities toJSR293.

Geocoding, or the translation of address informationinto latitude and longitude, as well as reverse geocoding,or the translation of latitude and longitude informationinto an address, are both supported through a Geocod-

ingServiceProvider. This feature is very important forinteractions with the user, since positioning technologiesprovide coordinate information (i.e. ‘‘Latitude =28.058425, Longitude = �82.416170”) which is not mean-ingful to the end user, and users provide location infor-mation in the form of an address (i.e. ‘‘4202 E. FowlerAve. Tampa, FL 33620”) which is not useful to softwareand positioning technologies. Geocoding and reverse geo-coding bridge the gap between the end user and the posi-tioning technology and enable fluid user interaction withapplications, as well as enable the other types of services

by supplying location information to software in a usableformat. In the ‘‘Tourist Guide” example, the user couldtype in an address of a tourist attraction recommendedby a friend and the application could use the Geocoding-

ServiceProvider to generate a latitude and longitude forthat address. This data could then be used to created anew Landmark that would then be added to the Land-

markStore of existing ‘‘Tampa Tourist Attractions.”

4.2.3. Map user interfaces

Another important feature of many location-aware appli-cations is the ability to display location information in theform of a map. JSR293 features a MapServiceProvider thatwill allow 3rd party software developers to rapidly buildsolutions that include rendering map information, includinglandmarks and routes, to the mobile phone screen. This abil-ity will have various levels of control. So, if the applicationsimply wants to show something on a map to the user, a sin-gle function call will hand over control to the MapService-

Provider, which will then show the map to the user in itsdefault format. In the following example, the ‘‘TouristGuide” application shows the user all ‘‘Tampa TouristAttractions” that were imported into the LandmarkStore,including the attraction recommended by a friend:

// Get format handler for vCard format

ExchangeFormatHandler handler = ExchangeFormatFactory.getExchangeFormatHandler(‘‘text/x- vcard”);

// Get reference to landmarkstore used to store landmark data for this application

LandmarkStore store = LandmarkStore.getInstance

(‘‘MyFavoriteLandmarks”);

// Open stream connection to website to download landmarks

StreamConnection conn = (StreamConnection) Connector.open(‘‘http://www.tampabaytourism.com/tourist_attractions.vcf”);InputStream is = conn.openInputStream();

// Import landmarks into a specific category in the landmark store

handler.importLandmarks(is, store, ‘‘Tampa Tourist Attractions”, true);

// Get list of landmarks from store

Enumeration enum = store.getLandmarks(‘‘Tampa Tourist Attractions”, null);// Create an array of landmarks to pass into map method

Landmark[] landmarks = new Landmark[10];

while (enum.hasMoreElements()) {

landmarks[i] = (Landmark)enum.nextElement();

i++;}

// Find map service providers

ProviderCapabilities[] providers = ProviderManager.findServiceProviders(ProviderManager.MAP, null);

// Connect to MapServiceProvider

MapServiceProvider mapProvider = (MapServiceProvider)ProviderManager. connectToServiceProvider(providers[0].

getName(), ProviderManager.MAP, null);

// Request MapServiceProvider to display landmarks on the mapmapProvider.displayMap(null, landmarks, null, null,

MapServiceProvider.MAP_TYPE_REGULAR, 0, false, false, this);

S.J. Barbeau et al. / Computer Communications 31 (2008) 1091–1103 1099

Page 11: Author's personal copy...Java 2 Micro Edition (J2ME)[4]. J2ME emulates the cross-platform nature of its desktop (Java 2 Standard Edition) and server (Java 2 Enterprise Edition) counterparts

Author's personal copy

If the application wants more control over what is ren-dered to the screen, there is also an option to retrieve aBaseMap from the MapServiceProvider and then renderthis information, along with various MapOverlays, to agraphics object defined by the application. Through themanipulation of MapOverlays the application could addor remove certain related features on a map, such as show-ing only restaurant or museum attractions to the user. AMapServiceListener is also defined to allow applicationsto react to changes on a map such as the user selecting cer-tain landmarks or features. Users will also be able to selectdifferent map views such as regular, satellite, and hybridthat are commonly found on desktop map interfaces. Hav-ing a standardized map view will provide a consistent feelto JSR293-compliant applications and will encouragemap providers to create new and advanced features thatbuild on the basics outlined in JSR293. This feature vastlysimplifies the work of the 3rd party software developer as amap can be rendered in just a few lines of code.

4.2.4. Navigation

Navigation is perhaps one of the most significant newadditions to JSR293. The ability to easily add real-timeguidance and directions to any mobile applications willpush the LBS industry forward and spur new types oflocation-aware applications. The NavigationServiceProvid-

er supports two primary modes of operation in JSR293. Ifapplications simply want to use a turn-key navigationsolution, it can make a simple call and allow the serviceprovider to take control of the user interface as well asapplication flow to navigate to a particular location.

For applications that want to handle the navigation logicand take more control over the navigation process, theNavigationServiceProvider can act as a route planner thatreturns a new Route object that contains all the informa-tion an application needs to navigate. Both methods allowthe use of NavigationServicePreferences, which can specifyanything from a mode of transportation preference(including walking and public transit), a desire to obtainthe route with the least traffic, certain geographic areasto avoid, or voice or text directions. The Route object,which consists of RouteSegments, allows more queries sothat an application can determine whether it is suitablefor its use, including whether costs such as toll roadsare involved, total travel time, and total distance. If theapplication chooses to control the actual navigation pro-cess, the RouteSegments contain the instructions as wellas the locations where the instructions should be given.These features allows the 3rd party application developerto focus on creating a better navigation application, orintegrating navigation into software in new ways, insteadof worrying about the logistics of planning a route andgetting the geographic data to the cell phone. The Routeobject can also be created by the 3rd party application,which allows 3rd party developers to combine Routeswith the landmark exchange format to allow the exchangeof favorite hiking trails, bike paths, bus routes, or scenictours. In the following example, the ‘‘Tourist Guide”

application uses the ‘‘Tampa Tourist Attraction” land-marks to generate a NavigationServiceProvider that willtake the user on a guided tour of all the landmarks usingreal-time turn-by-turn directions.

// Get list of landmarks from store

Enumeration enum = store.getLandmarks(‘‘Tampa Tourist Attractions”, null);// Create an array of coordinates to pass to NavigationServiceProvider as waypoints

Coordinates[] coords = new Coordinates[10];

Landmark lm;

while (enum.hasMoreElements()) {

lm = (Landmark)enum.nextElement();

coords[i] = lm.getQualifiedCoordinates();

i++;}

// Find navigation service providers

ProviderCapabilities[] providers = ProviderManager.findServiceProviders(ProviderManager. NAVIGATION, null);

// Connect to NavigationServiceProvider

NavigationServiceProvider navProvider = (NavigationServiceProvider)ProviderManager. connectToServiceProvider(pro-viders[0].getName(), ProviderManager.NAVIGATION, null);

// Set Navigation Service Preferences

NavigationServicePreferences prefs = new NavigationServicePreferences();

prefs.setRouteType(ROUTE_SCENIC);//Set preferred type of route as the one that is the most scenic

prefs.setTransportMode(TRANSPORT_CAR);//Set preferred transportation mode as car

prefs.setNavigationType(NAVIGATION_TYPE_REAL_TIME); //Directions to destination will be given in real-time

prefs.setInstructionType(INSTRUCTION_VOICE);//Set instructions to be given to the user via voice announcements

prefs.setMapShown(true);//Requests that a map is shown to the user while travelingprefs.setLocationShown(true);//Requests that the user’s real-time location is shown on the map while traveling

1100 S.J. Barbeau et al. / Computer Communications 31 (2008) 1091–1103

Page 12: Author's personal copy...Java 2 Micro Edition (J2ME)[4]. J2ME emulates the cross-platform nature of its desktop (Java 2 Standard Edition) and server (Java 2 Enterprise Edition) counterparts

Author's personal copy

Another class NavListener must be defined by the appli-cation that implements the NavigationServiceListener inter-face. The NavigationServiceProvider will call methods inthe NavigationServiceListener, and thereby trigger actionsin the application, when certain events occur. These eventsinclude encountering a waypoint or reaching a final desti-nation. Below is a simplified version of a NavListener class:

In the above scenario the user would be shown a naviga-tion-mode screen on their mobile phone with a map show-ing the user’s current location as well as the touristattractions, referred to as waypoints. The JSR293 platformwould then deliver audible instructions (e.g. ‘‘Turn right in150 feet”) to the user to guide them through to waypoints.Each time the user reached a waypoint, the JSR293 plat-form would call the NavListener.waypointReached()method and pass in the coordinates of the detected way-point. The application could then compare this locationagainst the list of tourist attractions to determine whichattraction the user was near, and perform an action suchas showing a picture of the attraction or announcing itsname. Navigation would continue until the last attractionwas reached, at which would the NavListener.destination-Reached() method would be called by the JSR293 plat-form. The ‘‘Tourist Guide” application could then takeaction to wrap up the tour experience.

For applications that wish to take more control over theactual navigation process, below is the code that will requestRoute information from the NavigationServiceProvider:

Route route = navProvider.getRoute(coords);

Once the application has the Route, it can access theRouteSegments that compose the Route and deliver noti-fications to the user according to the supplied informa-tion. 3rd party applications can then utilize route

information and integrate it into the application in manydifferent ways.

As mentioned earlier, the MapServiceProvider and Nav-

igationServiceProvider, along with all other objects inJSR293, allow the use of more complex geographic objectsbeyond simple circles, including RectangleGeographicAreas

(i.e. rectangles) and PolygonGeographicAreas (i.e. irregu-

larly-shaped polygons). These geographic objects can beused for many advanced features in JSR293, includingrequesting an area to be displayed on a map or defininggeographic areas to be avoided when requesting a Route

from a NavigationServiceProvider. Since few geographicfeatures in the real-world can be accurately representedusing only circles, this seemingly simple characteristic inJSR293 should make the API more adaptable to real-worldproblems.

5. Implications for stakeholders

JSR293 has many implications for various stakeholders,including device manufacturers, wireless carriers, geo-graphic data providers, and the 3rd party applicationdevelopers.

Device manufacturers are primarily responsible forimplementing the hardware and software capabilities ofthe handsets, as well as coordinating with wireless carrierswhen assisted and network-based positioning technologiesare supported. JSR293 will create some work for devicemanufacturers that are responsible for implementingJSR293 on the device, since the implementation of newcapabilities exposed in v2.0 are not trivial. JSR293 shouldprovide enough guidance to device manufacturers toensure consistency between different JSR293 platforms,while still allowing platforms to implement various featuresthat improve performance or add value on their particular

navProvider.setServicePreferences(prefs);//Set preferences in NavigationServiceProvider

// Create new object that ‘‘listens” for updates from the NavigationServiceProvider

NavListener listener = new NavListener()

// Request NavigationServiceProvider to navigate through these waypoints – Nav. Provider will take over screen here

navProvider.navigate(coords, listener);

public class NavListener implements NavigationServiceListener{

. . .public void waypointReached(Coordinates coordinates){

// This code will be triggered when the waypoint defined by these Coordinates is reached

}public void destinationReached(){

// This code will be triggered when the final destination is reached

// Control of screen would be handed back to application after this method exits

}. . .}

S.J. Barbeau et al. / Computer Communications 31 (2008) 1091–1103 1101

Page 13: Author's personal copy...Java 2 Micro Edition (J2ME)[4]. J2ME emulates the cross-platform nature of its desktop (Java 2 Standard Edition) and server (Java 2 Enterprise Edition) counterparts

Author's personal copy

platform. Since the basic ServiceProvider and ServiceLis-

tener are defined as interfaces in JSR293, there is a poten-tial for device manufacturers and/or wireless carriers tocreate new location-aware services based on these objects.Even though these services would be proprietary extensionsto JSR293 (i.e. not available on all JSR293 implementa-tions), there may be some providers that would take the ini-tiative to create and promote their own types of services fortheir specific platforms as a competitive advantage. Sincethe basic Java ServiceProvider interface already exist inJSR293, this would allow a common base with otherJSR293 service providers and familiarity to JSR293 pro-grammers, thus promoting rapid adoption of extensionsto JSR293.

Coordination with geographic data providers must alsotake place in order to make certain JSR293 services (e.g.GeocodingServiceProvider, MapServiceProvider, and Navi-

gationServiceProvider) available to the developer. Geo-graphic services are of little value without up-to-dategeographic information defining road networks andpoints-of-interest, so GIS databases must be maintainedand provisioned for access from mobile devices throughJSR293 service providers.

Third party application developers are responsible forcreating unique applications that will make efficient useof device resources, the cellular network, and geographicservices exposed in JSR293 in order to create advancedlocation-aware applications that will generate revenue forall parties involved, either directly or indirectly throughincreased use of the mobile device and cellular network.JSR293 should facilitate the integration of data from multi-ple sources in order to add value to applications. For exam-ple, an application could download a list of landmarks thatrepresent real-time areas of dense traffic and feed theseareas into a NavigationServiceProvider as places the appli-cation would like to avoid when generating a route. Multi-ple sources of information and services allow programmersto create ‘‘mash-ups” for location-aware applications thatcombine data from providers operated by multiple organi-zations. Each of these providers may have a cost, or theymay be free. JSR293 allows a mechanism for the 3rd partyapplication developer to query service providers and deter-mine the impact a provider might have on the end user (i.e.will it generate network traffic billable to the user, is therefee for the service, etc.).

The availability of different types of JSR293 Service-Provider objects directly accessible to application devel-opers on specific J2ME implementations will likely bedecided by device manufacturers and wireless carriersin coordination with commercial partners. It is hopedthat all parties involved in realizing JSR293 will supportan open system that will also allow 3rd party softwaredevelopers to create ‘‘middleware” ServiceProviders thatcould be registered and accessed through mobile applica-tions utilizing JSR293. An open environment wouldlikely allow free versions of a provider with only basicfunctionality as well as a more advanced provider with

advanced services at a subscription or per-use fee,thereby stimulating competition and ensuring that costlyservice providers add an appropriate value for the end-user of the application. Closed systems accessible onlyto commercial partners may stifle innovation and slowdown the adoption of such services.

It is also hoped that device manufacturers and wirelesscarriers will provide an open-access model that wouldallow any properly registered 3rd party application devel-oper to create and test applications that utilize JSR293on real mobile phones. Development of location-awareapplications using emulators is limiting at best, since appli-cation performance and behavior can only be properlyevaluated using the actual hardware device. Such openaccess would fuel the rapid development of many differenttypes of location-aware mobile applications, thus accelerat-ing the adoption of such software by mobile phone users.Google’s Android platform is based on these open-accessconcepts, and it is hoped that parties involved in the imple-mentation and distribution of JSR293 devices follow suit.

6. Conclusions

‘‘JSR293: Location API 2.0” is a new standard for loca-tion-aware J2ME mobile phones that improves v1.0 fea-tures (‘‘JSR179: Location API”) and adds many newadvanced location-aware capabilities. At a basic level,JSR293 allows Java applications running on board amobile device to access real-time location information froma positioning technology such as A-GPS. JSR293 also pro-motes the rapid development of advanced location-awareapplications by exposing powerful functionality to 3rdparty software developers. These capabilities include shar-ing information about favorite locations or routes throughnew Landmark Exchange Formats, viewing the location ofnearby friends using on-screen maps in a new MapService-

Provider, and providing users with customized navigationservices through a new NavigationServiceProvider. To sup-port these services a newGeocodingServiceProvider for geo-coding and reverse geocoding is supported, as well assupport for advanced geographic areas such as rectanglesand polygons in addition to simple circles. While mobilephones are the primary target of JSR293, any mobiledevice that implements J2ME’s Connected Limited DeviceConfiguration (CLDC) 1.1 or Connected Device Configu-ration (CDC) can utilize this API. This covers a large rangeof mobile devices, including Personal Digital Assistants(PDAs), sensors in wireless sensor networks, and embed-ded systems in vehicles.

JSR293 is currently in the public review stage with thefinal release expected Q2 2008. While the core functionalityof this API is expected to remain the same, there is still apossibility for changes in details until the final release date.As a result, it should be noted that this article is illustrativein purpose, and JSR293 is subject to change. To view thespecification as it currently exists, or to submit commentsto be considered by the expert group, please visit the JCP

1102 S.J. Barbeau et al. / Computer Communications 31 (2008) 1091–1103

Page 14: Author's personal copy...Java 2 Micro Edition (J2ME)[4]. J2ME emulates the cross-platform nature of its desktop (Java 2 Standard Edition) and server (Java 2 Enterprise Edition) counterparts

Author's personal copy

webpage for ‘‘JSR293: Location API 2.0” at http://jcp.org/en/jsr/detail?id=293. Comments and suggestions arestrongly encouraged, as the API can be strengthened byinput from anyone working in the area of location-awareinformation systems.

The next generation of mobile applications will likely allbe ‘‘location-aware” in some manner to protect mobiledevice users from information overload. Mobile applica-tion developers are beginning to understand that locationin itself is not a killer application, but a killer attribute.Location, when used appropriately, can be a significantindicator as to what information is currently relevant tothe user. As a result, complex LBS systems and applica-tions are beginning to emerge that provide traditional ser-vices such as multimedia messaging with the addedattribute of location. JSR293 will help push this trend for-ward and allow mobile application developers to quicklyand easily integrate advanced location-aware features intofuture applications. The end products will be location-aware applications that deliver information to you basedon who you are, what you want, when you want it and,finally and perhaps most importantly for mobile applica-tions, where you are.

References

[1] K. Ridley, Global Mobile Phone Use To Hit Record 3.25 Billion,Reuters, June 27, 2007. � Reuters 2007. Available online at http://www.reuters.com/article/email/idUSL2712199720070627.

[2] ABI Research, GPS-enabled Location-Based Services (LBS) Sub-scribers Will Total 315 Million in Five Years, New York, September27, 2006. � 2007 ABI Research. http://www.abiresearch.com/abiprdisplay.jsp?pressid=731.

[3] ABI Research, Personal Locator Services to Reach More than 20Million North American Consumers by 2011, New York, November28th, 2006. � 2007 ABI Research. http://www.abiresearch.com/abiprdisplay.jsp?pressid=766.

[4] Sun Microsystems, Inc., The Java ME Platform – the MostUbiquitous Application Platform for Mobile Devices, http://java.-sun.com/javame/, � 1994-2007 Sun Microsystems, Inc.

[5] Sun Microsystems, Inc., Java Technology: The Power of the JavaBrand, http://java.com/brand. � 2007 Sun Microsystems, Inc.

[6] Open Geospatial Consortium, Inc., OpenGIS� Specifications (Stan-dards), http://www.opengeospatial.org/standards. � 1994-2007 OpenGeoSpatial Consortium, Inc.

[7] Open Geospatial Consortium, Inc., Geography Markup Language,http://www.opengeospatial.org/standards/gml. � 1994-2007 OpenGeoSpatial Consortium, Inc.

[8] Open Geospatial Consortium, Inc., Location Service (OpenLS): CoreServices, http://www.opengeospatial.org/standards/olscore � 1994-2007 Open GeoSpatial Consortium, Inc.

[9] European Telecommunications Standards Institute, http://www.et-si.org/. � ETSI 2004.

[10] Open Mobile Alliance (OMA) Location Working Group, TS 101 –Mobile Location Protocol Specification – Version 3.0.0, http://www.openmobilealliance.org/tech/affiliates/lif/lifindex.html � 2007Open Mobile Alliance Ltd.

[11] The Parlay Group, Parlay/OSA Specifications, http://www.par-lay.org/en/specifications/. � Parlay 2007.

[12] National Marine Electronics Association, NMEA 0183 InterfaceStandard, http://www.nmea.org/pub/0183/ � NMEA 2003.

[13] Sun Microsystems, Inc., Java Specification Request (JSR) 179:Location API for J2METM, http://jcp.org/en/jsr/detail?id = 179. �Sun Microsystems, Inc. 2007.

[14] Motorola, iDEN J2METM Developer’s Guide 2005, Version 1.98, �Motorola, Inc. 2005, pp. 487–498.

[15] Qualcomm, Qualcomm Java Application Extensions, http://www.cdmatech.com/products/qvm_qjae.jsp. � Qualcomm 2007.

[16] Google, Android – An Open Handset Alliance Project, http://code.google.com/android/documentation.html. � Google 2007.

[17] Sun Microsystems, Inc., Java Specification Request (JSR) 271:Mobile Information Device Profile 3, http://jcp.org/en/jsr/detai-l?id = 271. � Sun Microsystems, Inc. 2007.

[18] Sun Microsystems, Inc., Java Specification Request (JSR) 232:Mobile Operational Management, http://jcp.org/en/jsr/detai-l?id = 232. � Sun Microsystems, Inc. 2007.

[19] Sun Microsystems, Inc., Java Specification Request (JSR) 293:Location API 2.0, http://jcp.org/en/jsr/detail?id = 293. � Sun Micro-systems, Inc 2007.

S.J. Barbeau et al. / Computer Communications 31 (2008) 1091–1103 1103