JaCa-Android: An Agent-based Platform for Building Smart Mobile Applications Andrea Santi Marco Guidi Alessandro Ricci University of Bologna University of Bologna DEIS, University of Bologna Cesena, Italy Cesena, Italy Cesena, Italy Email: a.santi@unibo.it Email: marco.guidi7@studio.unibo.it Email: a.ricci@unibo.it Abstract—Agent-Oriented Programming (AOP) provides an by mainstream programming languages such as the object- effective level of abstraction for tackling the programming oriented ones. of mainstream software applications, in particular those that So, in this paper we discuss the application of an agent- involve complexities related to concurrency, asynchronous events management and context-sensitive behaviour. In this paper we oriented programming platform called JaCa for the develop- support this claim in practice by discussing the application of ment of smart mobile applications. Actually JaCa is not a AOP technologies – Jason and CArtAgO in particular – for the new platform, but simply the integration of two existing agent development of smart mobile applications based on the Google programming technologies: Jason [5] agent programming Android platform. language and platform, and CArtAgO [17] framework, for programming and running the environments where agents I. I NTRODUCTION work. JaCa is meant to be a general-purpose programming platform, so useful for developing software applications in The value of Agent-Oriented Programming (AOP) [20] – in- general. In order to apply JaCa to mobile computing, we cluding Multi-Agent Programming (MAP) – is often remarked developed a porting of the platform on top of Google Android, and evaluated in the context of Artificial Intelligence (AI) which we refer as JaCa-Android. Google Android is an open- and Distributed AI problems. This is evident, for instance, source software stack for mobile devices provided by Google by considering existing agent programming languages (see that includes an operating system (Linux-based), middleware, [4], [6] for comprehensive surveys) – whose features are SDK and key applications. typically demonstrated by considering toy problems such as Other works in literature discuss the use of agent-based block worlds and alike. technology on mobile devices—examples include AgentFac- Besides this view, we argue that the level of abstraction in- tory [13], 3APL [10], JADE [3]. Differently from these works, troduced by AOP is effective for organizing and programming here we do not consider the issue of porting agent technologies software applications in general, starting from those programs on limited capability devices, but we focus on the advantages that involve aspects related to reactivity, asynchronous inter- brought by the adoption of agent-oriented programming level actions, concurrency, up to those involving different degrees of abstraction for the development of complex mobile appli- of autonomy and intelligence. Following this view, one of cations. our current research lines investigates the adoption and the The remainder of the paper is organised as follows: in evaluation of existing agent-based programming languages and Section II we provide a brief overview of the JaCa platform technologies for the development of applications in some of – which we consider part of the background of this paper; the most modern and relevant application domains. In this then, in Section III we introduce and discuss the application context, a relevant one is represented by next generation of JaCa for the development of smart mobile applications on mobile applications. Applications of this kind are getting a top of Android, and in Section IV we describe two practical strong momentum given the diffusion of mobile devices which application samples useful to evaluate the approach. Finally, are more and more powerful, in terms of computing power, in Section V we briefly discuss some open issues related memory, connectivity, sensors and so on. Main examples are to JaCa-Android and, more generally, to the use of current smart-phones such as the iPhone and Android-based devices. agent-oriented programming technologies for developing ap- On the one side, smart mobile applications share more and plications and related future works. more features with desktop applications, and eventually ex- tending such features with capabilities related to context- II. AGENT-O RIENTED P ROGRAMMING FOR M AINSTREAM awareness, reactivity, usability, and so on, all aspects that are A PPLICATION D EVELOPMENT – T HE J AC A A PPROACH important in the context of Internet of Things and Ubiquitous An application in JaCa is designed and programmed as Computing scenarios. All this increases – on the other side a set of agents which work and cooperate inside a com- – the complexity required for their design and programming, mon environment. Programming the application means then introducing aspects that – we argue – are not suitably tackled programming the agents on the one side, encapsulating the 48 logic of control of the tasks that must be executed, and the use of artifact-based environments by Jason agents seamless. environment on the other side, as a first-class abstraction To this purpose, first, the overall set of external actions that a providing the actions and functionalities exploited by the Jason agent can perform is determined by the overall set of agents to do their tasks. It is worth remarking that this is an artifacts that are actually available in the workspaces where endogenous notion of environment, i.e. the environment here the agent is working. So, the action repertoire is dynamic and is part of the software system to be developed [18]. can be changed by agents themselves by creating, disposing More specifically, in JaCa Jason [5] is adopted as pro- artifacts. Then, the overall set of percepts that a Jason gramming language to implement and execute the agents and agent can observe is given by the observable properties and CArtAgO [17] as the framework to program and execute the observable events of the artifacts available in the workspace environments. at runtime. Actually an agent can explicitly select which Being a concrete implementation of an extended version artifacts to observe, by means of a specific action called of AgentSpeak(L) [15], Jason adopts a BDI (Belief-Desire- focus. By observing an artifact, artifacts’ observable properties Intention)-based computational model and architecture to de- are directly mapped into beliefs in the belief-base, updated fine the structure and behaviour of individual agents. In that, automatically each time the observable properties change their agents are implemented as reactive planning systems: they run value. So a Jason agent can specify plans reacting to changes continuously, reacting to events (e.g., perceived changes in the to beliefs that concern observable properties or can select plans environment) by executing plans given by the programmer. according to the value of beliefs which refer to observable Plans are courses of actions that agents commit to execute properties. Artifacts’ signals instead are not mapped into the so as to achieve their goals. The pro-active behaviour of belief-base, but processed as non persistent percepts possibly agents is possible through the notion of goals (desired states triggering plans—like in the case of message receipt events. of the world) that are also part of the language in which plans Finally, the Jason data-model – essentially based on Prolog are written. Besides interacting with the environment, Jason terms – is extended to manage also (Java) objects, so as agents can communicate by means of speech acts. to work with data exchanged by performing actions and On the environment side, CArtAgO – following the A&A processing percepts. meta-model [14], [19] – adopts the notion of artifact as first- A full description of Jason language/platform and class abstraction to define the structure and behaviour of CArtAgO framework – and their integration – is out of the environments and the notion of workspace as a logical con- scope of this paper: the interested reader can find details in tainer of agents and artifacts. Artifacts explicitly represent the literature [17], [16] and on Jason and CArtAgO open-source environment resources and tools that agents may dynamically web sites12 . instantiate, share and use, encapsulating functionalities de- signed by the environment programmer. In order to be used by III. P ROGRAMMING S MART M OBILE A PPLICATIONS WITH the agents, each artifact provides a usage interface composed J AC A by a set of operations and observable properties. Operations In this section we describe how JaCa’s features can be correspond to the actions that the artifact makes it available effectively exploited to program smart mobile applications, to agents to interact with such a piece of the environment; providing benefits over existing non-agent approaches. First, observable properties define the observable state of the artifact, we briefly sketch some of the complexities related to the which is represented by a set of information items whose value design and programming of such a kind of applications; then, (and value change) can be perceived by agents as percepts. we describe how these are addressed in JaCa-Android— Besides observable properties, the execution of operations which is the porting of JaCa on Android, extended with a can generate signals perceivable by agents as percepts, too. predefined set of artifacts specifically designed for exploiting As a principle of composability, artifacts can be assembled Android functionalities. together by a link mechanism, which allows for an artifact to A. Programming Mobile Applications: Complexities execute operations over another artifact. CArtAgO provides a Java-based API to program the types of artifacts that can be Mobile systems and mobile applications have gained a lot instantiated and used by agents at runtime, and then an object- of importance and magnitude both in research and industry oriented data-model for defining the data structures used in over the last years. This is mainly due to the introduction actions, observable properties and events. of mobile devices such as the iPhone3 and the most modern The notion of workspace is used to define the topology Android4 -based devices that changed radically the concept of complex environments, that can be organised as multiple of smart-phone thanks to: (i) hardware specifications that sub-environments, possibly distributed over the network. By allow to compare these devices to miniaturised computers, default, each workspace contains a predefined set of artifacts situated – thanks to the use of practically every kind of known created at boot time, providing basic actions to manage the connectivity (GPS, WiFi, bluetooth, etc.) – in a computational overall set of artifacts (for instance, to create, lookup, link to- 1 http://jason.sourceforge.net gether artifacts), to join multiple workspaces, to print messages 2 http://cartago.sourceforge.net on the console, and so on. 3 http://www.apple.com/it/iphone/ JaCa integrates Jason and CArtAgO so as to make the 4 http://www.android.com/ 49 network which is becoming more and more similar to the that particular Intent. The set of Intents manageable by a vision presented by both the Internet of Things and ubiquitous component are defined by specifying, for that component, a computing, and (ii) the evolution of both the smart-phone O.S. proper set of IntentFilters. (Apple iOS, Android, Meego5 ) and their related SDK. Generally speaking, these components and the Intent-based These innovations produce a twofold effect: on the one interaction model are useful – indeed – to organise and side, they open new perspectives, opportunities and application structure applications; however – being the framework fully scenarios for these new mobile devices; on the other side, based on an object-oriented virtual machine and language such they introduce new challenges related to the development as Java – they do not shield programmers from using callbacks, of the mobile applications, that are continuously increasing threads, and low-level synchronisation mechanisms as soon as their complexity [1], [11]. These applications – due to the applications with complex reactive behaviour are considered. introduction of new usage scenarios – must be able to address For instance, in classic Android applications asynchronous issues such as concurrency, asynchronous interactions with dif- interactions with external resources are still managed using ferent kinds of services (Web sites/Services, social-networks, polling loops or some sort of mailbox; context-dependent messaging/mail clients, etc.) and must also expose a user- behaviour must be realised staining the source code with centric behaviour governed by specific context information a multitude of if statements; concurrency issues must be (geographical position of the device, presence/absence of addressed using Java low-level synchronisation mechanisms. different kinds of connectivity, events notification such as the So, more generally, we run into the problems that typically reception of an e-mail, etc.). arise in mainstream programming languages when integrating To cope with these new requirements, Google has developed one or multiple threads of control with the management of the Android SDK6 , which is an object-oriented Java-based asynchronous events, typically done by callbacks. framework meant to provide a set of useful abstractions for en- In the next section we discuss how agent-oriented program- gineering mobile applications on top of Android-enable mobile ming and, in particular, the JaCa programming model, are devices. Among the main coarse-grain components introduced effective to tackle these issues at a higher-level of abstraction, by the framework to ease the application development we making it possible to create more clear, terse and extensible mention here: programs. • Activities: an activity provides a GUI for one focused B. An Agent-oriented Approach based on JaCa endeavor the user can undertake. For example, an activity might present a list of menu items users can choose, list By adopting the JaCa programming model, a mobile An- of contacts to send messages to, etc. droid application can be realised as a workspace in which • Services: a service does not have a GUI and runs in the Jason agents are used to encapsulate the logic and the control background for an indefinite period of time. For example, of tasks involved by the mobile application, and artifacts are a service might play background music as the user attends used as tools for agents to seamlessly exploit available Android to other matters. device/platform components and services. • Broadcast Receiver: a broadcast receiver is a component From a conceptual viewpoint, this approach makes it pos- that does nothing but receive and react to broadcast sible to keep the same level of abstraction – based on agent- announcements. Many broadcasts originate in system oriented concepts – both when designing the application and code - for example, announcements that the timezone has when concretely implementing it using Jason and CArtAgO. changed, that the battery is low, etc. In this way we are able to provide developers a uniform • Content providers: a content provider makes a specific set guideline – without conceptual gaps between the abstractions of the application’s data available to other applications. used in the analysis and implementation phases – that drives The data can be stored in the file system, in an SQLite the whole engineering process of a mobile application. database, etc. From a programming point of view, the agent paradigm makes it possible to tackle quite straightforwardly some of In Android, interactions among components are managed the main challenges mentioned in previous sections, in partic- using a messaging facility based on the concepts of Intent ular: (i) task and activity oriented behaviours can be directly and IntentFilter. An application can request the execution of mapped onto agents, possibly choosing different kinds of a particular operation – that could be offered by another concurrent architectures according to the needs—either using application or component – simply providing to the O.S. an multiple agents to concurrently execute tasks, or using a single Intent properly characterised with the information related to agent to manage the interleaved execution of multiple tasks; that operation. So, for example, if an application needs to (ii) agents’ capability of adapting the behaviour on the basis of display a particular Web page, it expresses this need creating the current context information can be effectively exploited to a proper Intent instance, and then sending this instance to the realise context-sensitive and context-dependent applications; Android operating system. The O.S. will handle this request (iii) asynchronous interactions can be managed by properly locating a proper component – e.g. a browser – able to manage specifying the agents’ reactive behaviour in relation to the 5 http://meego.com reception of particular percepts (e.g. the reception of a new 6 http://developer.android.com/sdk/index.html e-mail). 50 JaCa-Android app JaCa-services shared workspace • CalendarArtifact, providing functionalities for man- ActivityGUI SMSManager MyArtifact aging the built-in Google calendar. These artifacts, being general purpose, are situated in a Calendar GPSArtifact workspace called jaca-services (see Fig. 1) which is shared by all the JaCa-Android applications—being stored and executed into a proper Android service installed with the JaCa-Android platform. More generally, any JaCa-Android JaCa JaCa Android artifacts workspace can be shared among different applications— (Jason+CArtAgO) promoting, then, the modularisation and the reuse of the Android Framework functionalities provided by JaCa-Android applications. (Dalvik Virtual Machine + Libraries) In next section we discuss more in detail the benefits of Linux kernel the JaCa programming model for implementing smart mobile applications by considering two application samples that have been developed on top of JaCa-Android. Fig. 1. Abstract representation of the JaCa-Android platform – with in evidence the different agent technologies on which the platform is based – IV. E VALUATION THROUGH P RACTICAL E XAMPLES and of generic applications running on top of it. The first example aims at showing how the approach al- lows for easily realising context-sensitive mobile applications. For this purpose, we consider a JaCa-Android application To see this in practice, we developed a porting of JaCa inspired to Locale8 , one of the most famous Android ap- on top of Android – referred as JaCa-Android – available as plications and also one of the winners of the first Android open-source project7 . Fig. 1 shows an abstract representation Developer Contest9 . This application (JaCa-Locale) can be of the levels characterising the JaCa-Android platform and considered as a sort of intelligent smart-phone manager re- of a generic applications running on top of it. alised using a simple Jason agent. The agent during its The platform includes a set of predefined types of artifacts execution uses some of the built-in JaCa-Android artifacts (BroadcastReceiverArtifact, ActivityArtifact, described in Section III and two application-specific artifacts: ContentProviderArtifact, ServiceArtifact) a PhoneSettingsManager artifact used for managing the specifically designed to build compliant Android components. device ringtone/vibration and the ContactManager used for So, standard Android components become fully-fledged managing the list of contacts stored into the smart-phone artifacts that agents and agent developers can exploit without (this list is an observable property of the artifact, so directly worrying and knowing about infrastructural issues related to mapped into agents beliefs). The agent manages the smart- the Android SDK. This makes it possible for developers to phone behaviour discriminating the execution of its plans on conceive and realise mobile applications that are seamlessly the basis of a comparison among its actual context information integrated with the Android SDK, possibly interacting/re- and a set of user preferences that are specified into the agent’s using every component and application developed using the plans contexts. TABLE I reports a snipped of the Jason standard SDK. This integration is fundamental in order to agent used in JaCa-Locale, in particular the plans shown in guarantee to developers the re-use of existing legacy – i.e. TABLE I are the ones responsible of the context-dependent the standard Android components and applications – and for management of the incoming phone calls. avoiding the development of the entire set of functionalities The behaviour of the agent, once completed the initialisation required by an application from scratch. phase (lines 00-07), is governed by a set of reactive plans. The Besides, the platform also provides a set of artifacts that first two plans (lines 9-15) are used for regulating the ringtone encapsulate some of the most common functionalities used level and the vibration for the incoming calls on the basis of in the context of smart mobile applications. In detail these the notifications provided by the CalandarArtifact about artifacts are: the start or the end of an event stored into the user calendar. • SMSManager/MailManager, managing sms/mail- Instead, the behaviour related to the handling of the incoming related functionalities (send and receive sms/mail, calls is managed by the two reactive plans incoming_call retrieve stored sms/mail, etc.). (lines 17-28). The first one (lines 17-19) is applicable when • GPSManager, managing gps-related functionalities (e.g. a new incoming call arrives and the phone owner is not geolocalisation of the device). busy, or when the incoming call is considered critical. In • CallManager, providing functionalities for handling – this case the agent normally handles the incoming call – the answer/reject – phone calls. ringtone/vibration settings have already been regulated by the • ConnectivityManager, managing the access to the plans at lines 9-15 – using the handle_call operation pro- different kinds of connectivity supported by the mobile vided by the CallManager artifact. The second plan instead device. 8 http://www.twofortyfouram.com/ 7 http://jaca-android.sourceforge.net 9 http://code.google.com/intl/it-IT/android/adc/ 51 00 !init. 01 02 +!init 03 <- focus("SMSManager"); focus("MailManager"); 04 focus("CallManager"); focus("ContactManager"); 05 focus("CalendarArtifact"); 06 focus("PhoneSettingsManager"); 07 focus("ConnectivityManager"). 08 09 +cal_event_start(EventInfo) : true 10 <- set_ringtone_volume(0); 11 set_vibration(on). 12 13 +cal_event_end(EventInfo) : true 14 <- set_ringtone_volume(100); 15 set_vibration(off). 16 17 +incoming_call(Contact, TimeStamp) 18 : not busy(TimeStamp) | is_call_critical(Contact) 19 <- handle_call. 20 21 +incoming_call(Contact, TimeStamp) 22 : busy(TimeStamp) & not is_call_critical(Contact) 23 <- get_event_description(TimeStamp,EventDescription); 24 drop_call; 25 .concat("Sorry, I’m busy due 26 to", EventDescription, "I will call you back 27 as soon as possible.", OutStr); 28 !handle_auto_reply(OutStr). 29 30 +!handle_auto_reply(Reason) : wifi_status(on) 31 <- send_mail("Auto-reply", Reason). 32 33 +!handle_auto_reply(Reason): wifi_status(off) 34 <- send_sms(Reason). TABLE I S OURCE CODE SNIPPET OF THE J AC A -L OCALE Jason AGENT (lines 21-28) is applicable when the user is busy and the call does not come from a relevant contact. In this case the phone call is automatically rejected using the drop_call operation Fig. 2. Screenshot of the SmartNavigator application that integrate in its of the CallManager artifact (line 24), and an auto-reply mes- GUI some of the Google Maps components for showing: (i) the user current sage containing the motivation of the user unavailability is sent position, (ii) the road directions, and (iii) the route to the designed destination. back to the contact that performed the call. This notification is can fully separate the code that defines the control logic of sent – using one of the handle_auto_reply plans (lines 30- the application (into agents) from the reusable functionalities 34) – via sms or via mail (using respectively the SMSManager (embedded into artifacts) that are need by the application, or the MailManager) depending on the current availability making agents’ source code more dry. of the WiFi connection on the mobile device (availability The second application sample – called SmartNavigator checked using the wifi_status observable property of the (see Fig. 2 for a screenshot) – aims at showing the effective- ConnectivityManager). It is worth remarking that busy ness of the approach in managing asynchronous interactions and is_call_critical refer to rules – not reported in the with external resources, such as – for example – Web Services. source code – used for checking respectively: (i) if the phone This application is a sort of smart navigator able to assist owner is busy – by checking the belief related to one of the the user during his trips in an intelligent way, taking into the CalendarArtifact observable properties (current_app) – account the current traffic conditions. or (ii) if the call is critical – by checking if the call comes from The application is realised using a single Jason agent one of the contact in the ContactManager list considered and four different artifacts: (i) the GPSManager used for the critical: e.g. the user boss/wife. smart-phone geolocalisation, (ii) the GoogleMapsArtifact, Generalising the example, context-sensitive applications can an artifact specifically developed for this application, used for be designed and programmed in terms of one or more agents encapsulating the functionalities provided by Google Maps with proper plans that are executed only when the specific (e.g. calculate a route, show points of interest on a map, context conditions hold. etc.), (iii) the SmartNavigatorGUI, an artifact developed on The example is useful also for highlighting the benefits the basis of the ActivityArtifact and some other Google introduced by artifact-based endogenous environments: (i) it Maps components, used for realizing the GUI of the appli- makes it possible to represent and exploit platform/device cation and (iv) an artifact, TrafficConditionsNotifier, functionalities at an agent level of abstractions – so in terms used for managing the interactions with a Web site10 that of actions and perceptions, modularised into artifacts; (ii) it provides a strong separation of concerns, in that developers 10 http://www.stradeanas.it/traffico/ 52 00 preferences([...]). provides real-time traffic information. 01 relevance_range(10). 02 TABLE II shows a snippet of the agent source code. 03 !assist_user_trips. The agent main goal assist_user_trips is managed by 04 05 +!assist_user_trips a set of reactive plans that are structured in a hierarchy 06 <- focus("GPSManager"); of sub-goals – handled by a set of proper sub-plans. The 07 focus("GoogleMapsArtifact"); 08 focus("SmartNavigatorGUI"); agent has a set of initial beliefs (lines 00-01) and an initial 09 focus("TrafficConditionsNotifier"). plan (lines 5-9) that manages the initialisation of the arti- 10 11 +route(StartLocation, EndLocation) facts that will be used by the agent during its execution. 12 <- !handle_navigation(StartLocation, EndLocation). The first plan, reported at lines 11-12, is executed after 13 14 +!handle_navigation(StartLocation, EndLocation) the reception of an event related to the modification of 15 <- ?relevance_range(Range); ?current_position(Pos); the SmartNavigatorGUI route observable property – a 16 -+leaving(StartLocation);-+arriving(EndLocation); 17 calculate_route(StartLocation, property that contains both the starting and arriving locations 18 EndLocation, OutputRoute); provided in input by the user. The handling of this event is 19 -+route(OutputRoute); 20 subscribe_for_traffic_condition(OutputRoute, managed by the handle_navigation plan that: (i) retrieves 21 Range); (line 15) and updates the appropriate agent beliefs (line 16 22 set_current_position(Pos); 23 update_map. and 19), (ii) computes the route using an operation provided 24 by the GoogleMapsArtifact (calculate_route lines 17- 25 +new_traffic_info(TrafficInfo) 26 <- ?preferences(Preferences); 18), (iii) makes the subscription – for the route of interest 27 ?leaving(StartLocation); ?arriving(EndLocation); – to the Web site that provides the traffic information using 28 !check_info_relevance(TraffincInfo,Preferences); 29 !update_route(StartLocation, EndLocation, the TrafficConditionsNotifier (lines 20-21), and finally 30 TrafficInfo, NewRoute); (iv) updates the map showed by the application (using the 31 !update_subscription(NewRoute); 32 update_map. SmartNavigatorGUI operations set_current_position 33 and update_map, lines 22-23) with both the current position 34 +current_position(Pos) 35 <- ?route(Route); of the mobile device (provided by the observable property 36 !check_position_consistency(Pos, Route); current_position of the GPSManager) and the new route. 37 set_current_position(Pos); 38 update_map. In the case that no meaningful changes occur in the traf- 39 fic conditions and the user strictly follows the indications 40 -!check_position_consistency(Pos, Route) 41 : arriving(EndLocation) provided by the SmartNavigator, the map displayed in 42 <- !handle_navigation(Pos, EndLocation). the application GUI will be updated, until arriving to the TABLE II designed destination, simply moving the current position of S OURCE CODE SNIPPET OF THE S MART N AVIGATOR J ASON AGENT the mobile device using the plan reported at lines 34-38. This plan, activated by a change of the observable property reactive behaviour of a JaCa-Android application – in this current_position, simply considers (using the sub-plan example the asynchronous reception of information from a check_position_consistency instantiated at line 36, not certain source – with its pro-active behaviour — assisting the reported for simplicity) if the new device position is consistent user during his trips. This integration allows to easily modify with the current route (retrieved from the agent beliefs at and adapt the pro-active behaviour of an application after the line 35) before updating the map with the new geolocation reception of new events that can be handled by proper reactive information (line 37-38). In the case in which the new position plans: in this example, the reception of the traffic updates can is not consistent – i.e. the user chose the wrong direction – the lead the SmartNavigator to consider a new route for the sub-plan check_position_consistency fails. This fail is trip on the basis of the new information. handled by a proper Jason failure handling plan (lines 40-42) V. O PEN I SSUES AND F UTURE W ORK that simply re-instantiate the handle_navigation plan for computing a new route able to bring the user to the desired Besides the advantages described in previous section, the destination from his current position (that was not considered application of current agent programming technologies to the in the previous route). development of concrete software systems such as mobile Finally, the new_traffic_info plan (lines 25-32) is worth applications have been useful to focus some main weaknesses of particular attention. This is the reactive plan that manages that these technologies currently have to this end. Here we the reception of the updates related to the traffic conditions. have identified three general issues that will be subject of If the new information are considered relevant with respect future work: to the user preferences (sub-plan check_info_relevance (i) Devising of a notion of type for agents and artifacts instantiated at line 28 and not shown) then, on the basis of — current agent programming languages and technologies this information, the current route (sub-plan update_route lack of a notion of type as the one found in mainstream instantiated at lines 29-30), the Web site subscription (sub-plan programming languages and this makes the development of update_subscription instantiated at line 31), and finally large system hard and error-prone. This would make it possible the map displayed on the GUI (line 32) are updated. to detect many errors at compile time, allowing for strongly So, this example shows how it is possible to integrate the reducing the development time and enhancing the safety of 53 the developed system. In JaCa we have a notion of type just R EFERENCES for artifacts: however it is based on the lower OO layer and [1] A. Battestini, C. Del Rosso, A. Flanagan, and M. Miettinen. Creating so not expressive enough to characterise at a proper level of next generation applications and services for mobile devices: Challenges abstraction the features of environment programming. and opportunities. In EEE 18th Int. Symposium on Personal, Indoor and Mobile Radio Communications (PIMRC), 2007, pages 1 –4, 3-7 2007. (ii) Improving modularity in agent definition — this is a [2] F. L. Bellifemine, G. Caire, and D. Greenwood. Developing Multi-Agent main issue already recognised in the literature [7], [8], [9], Systems with JADE. Wiley, 2007. where constructs such as capabilities have been proposed [3] M. Berger, S. Rusitschka, D. Toropov, M. Watzke, and M. Schlichte. Porting distributed agent-middleware to small mobile devices. In to this end. Jason still lacks of a construct to properly AAMAS Workshop on Ubiquitous Agents on Embedded, Wearable and modularise and structure the set of plans defining an agent’s Mobile Devices. behaviour —a recent proposal is described here [12]. [4] R. Bordini, M. Dastani, J. Dix, and A. E. F. Seghrouchni, editors. Multi- Agent Programming: Languages, Platforms and Applications (vol. 1). (iii) Improving the integration with the OO layer — To Springer, 2005. represent data structures, Jason – as well as the majority of [5] R. Bordini, J. Hübner, and M. Wooldridge. Programming Multi-Agent agent programming languages – adopts Prolog terms, which Systems in AgentSpeak Using Jason. John Wiley & Sons, Ltd, 2007. [6] R. H. Bordini, M. Dastani, J. Dix, and A. El Fallah Seghrouchni, editors. are very effective to support mechanisms such as unification, Multi-Agent Programming: Languages, Platforms and Applications (vol. but quite weak – from an abstraction and expressiveness 2). Springer Berlin / Heidelberg, 2009. point of view – to deal with complex data structures. Main [7] L. Braubach, A. Pokahr, and W. Lamersdorf. Extending the capability concept for flexible BDI agent modularization. In Programming Multi- agent frameworks (not languages) in Agent-Oriented Software Agent Systems, volume 3862 of LNAI, pages 139–155. Springer, 2005. Engineering contexts – such as Jade [2] or JACK11 – adopt [8] M. Dastani, C. Mol, and B. Steunebrink. Modularity in agent program- object-oriented data models, typically exploiting the one of ming languages: An illustration in extended 2APL. In Proceedings of the 11th Pacific Rim Int. Conference on Multi-Agent Systems (PRIMA existing OO languages (such as Java). By integrating Jason 2008), volume 5357 of LNCS, pages 139–152. Springer, 2008. with CArtAgO, we introduced a first support to work with an [9] K. Hindriks. Modules as policy-based intentions: Modular agent object-oriented data model, in particular to access and create programming in GOAL. In Programming Multi-Agent Systems, volume 5357 of LNCS, pages 156–171. Springer, 2008. objects that are exchanged as parameters in actions/percepts. [10] F. Koch, J.-J. C. Meyer, F. Dignum, and I. Rahwan. Programming However, it is just a first integration level and some important deliberative agents for mobile services: The 3apl-m platform. In aspects – such as the use of unification with object-oriented PROMAS, pages 222–235, 2005. [11] B. König-Ries. Challenges in mobile application development. it - data structures – are still not tackled. Information Technology, 51(2):69–71, 2009. Finally, concerning the specific mobile application context, [12] N. Madden and B. Logan. Modularity and compositionality in Jason. In Proceedings of Int. Workshop Programming Multi-Agent Systems JaCa-Android is just a prototype and indeed needs further (ProMAS 2009). 2009. development for stressing more in depth the benefits provided [13] C. Muldoon, G. M. P. O’Hare, R. W. Collier, and M. J. O’Grady. Agent by agent-oriented programming compared to mainstream non- factory micro edition: A framework for ambient applications. In Int. Conference on Computational Science (3), pages 727–734, 2006. agent platforms. Therefore, in future works we aim at improv- [14] A. Omicini, A. Ricci, and M. Viroli. Artifacts in the A&A meta-model ing JaCa-Android in order to tackle some other important fea- for multi-agent systems. Autonomous Agents and Multi-Agent Systems, tures of modern mobile applications such as the smart use of 17 (3), Dec. 2008. [15] A. S. Rao. Agentspeak(l): Bdi agents speak out in a logical computable the battery and the efficient management of the computational language. In MAAMAW ’96: Proceedings of the 7th European workshop workload of the device. on Modelling autonomous agents in a multi-agent world : agents breaking away, pages 42–55, Secaucus, NJ, USA, 1996. Springer-Verlag VI. C ONCLUSION New York, Inc. [16] A. Ricci, M. Piunti, L. D. Acay, R. Bordini, J. Hübner, and M. Das- To conclude, we believe that agent-oriented programming – tani. Integrating artifact-based environments with heterogeneous agent- programming platforms. In Proceedings of 7th International Conference including multi-agent programming – would provide a suitable on Agents and Multi Agents Systems (AAMAS08), 2008. level of abstraction for tackling the development of com- [17] A. Ricci, M. Piunti, M. Viroli, and A. Omicini. Environment pro- plex software applications, extending traditional programming gramming in CArtAgO. In R. H. Bordini, M. Dastani, J. Dix, and A. El Fallah-Seghrouchni, editors, Multi-Agent Programming: Lan- paradigms such as the Object-Oriented to deal with aspects guages, Platforms and Applications, Vol. 2, pages 259–288. Springer, such as concurrency, reactiveness, asynchronous interaction 2009. managements, dynamism and so on. In this paper, in particular, [18] A. Ricci, A. Santi, and M. Piunti. Action and perception in multi-agent programming languages: From exogenous to endogenous environments. we showed the advantages of applying such an approach to In Proceedings of the Int. Workshop on Programming Multi-Agent the development of smart mobile applications on the Google Systems (ProMAS’10), Toronto, Canada, 2010. Android platform, exploiting the JaCa integrated platform. [19] A. Ricci, M. Viroli, and A. Omicini. The A&A programming model & technology for developing agent environments in MAS. In M. Das- However, we argue that in order to stress and investigate tani, A. El Fallah Seghrouchni, A. Ricci, and M. Winikoff, editors, the full value of the agent-oriented approach to this end, Programming Multi-Agent Systems, volume 4908 of LNAI, pages 91– further work is need to extend current agent languages and 109. Springer Berlin / Heidelberg, 2007. [20] Y. Shoham. Agent-oriented programming. Artificial Intelligence, technologies – or to devise new ones – tackling main aspects 60(1):51–92, 1993. that have not been considered so far, being not related to AI but to the principles of software development. This is the core of our current and future work. 11 http://www.agent-software.com 54