User Tools

Site Tools


ischeme:ischeme

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
ischeme:ischeme [2010/07/29 17:01]
ebainomu
ischeme:ischeme [2011/03/23 00:19] (current)
ebainomu
Line 1: Line 1:
 ====== iScheme ======  ====== iScheme ====== 
 [[http://soft.vub.ac.be/~ebainomu|Engineer Bainomugisha]]\\ [[http://soft.vub.ac.be/~ebainomu|Engineer Bainomugisha]]\\
-\\ 
 \\ \\
  
-{{:ischeme:ischemelogo.png?40  |:ischeme:ischemelogo.png}}iScheme is a prototype implementation of [[http://soft.vub.ac.be/amop/|ambient-oriented programming]] concepts that runs on iPhone devices. It provides developers with a convenient Scheme environment for constructing iPhone applications that exploit mobile platform capabilities such as sensors (accelerometer, and GPS), and Wi-Fi connectivity.  +{{:ischeme:ischemelogo2.png?60  |:ischeme:ischemelogo2.png}}iScheme is a prototype implementation of [[http://soft.vub.ac.be/amop/|ambient-oriented programming]] concepts that runs on iPhone devices. It provides developers with a convenient Scheme environment for constructing iPhone applications that exploit mobile platform capabilities such as sensors (accelerometer, and GPS), and Wi-Fi connectivity.  
  
 iScheme is built on top of an R5RS [[http://soft.vub.ac.be/soft/skem|Scheme]] implementation that is developed at our lab. It supports Scheme and Objective-C interaction, thus enabling access to iPhone APIs (e.g., GPS, SMS, phone) from Scheme while bringing Scheme's well-known benefits (higher-order functions, structural macros, automatic garbage collection, etc.) to the iPhone development. iScheme provides a distribution layer that employs an event-driven style for peer-to-peer service discovery, asynchronous remote messaging, and timeout-based failure handling.  iScheme is built on top of an R5RS [[http://soft.vub.ac.be/soft/skem|Scheme]] implementation that is developed at our lab. It supports Scheme and Objective-C interaction, thus enabling access to iPhone APIs (e.g., GPS, SMS, phone) from Scheme while bringing Scheme's well-known benefits (higher-order functions, structural macros, automatic garbage collection, etc.) to the iPhone development. iScheme provides a distribution layer that employs an event-driven style for peer-to-peer service discovery, asynchronous remote messaging, and timeout-based failure handling. 
Line 74: Line 73:
    (lambda (article)    (lambda (article)
      (remote-send! publisher-ref receive-article article))      (remote-send! publisher-ref receive-article article))
-        list-of-articles))+   list-of-articles))
 </code> </code>
 The ''remote-send!'' function takes as argument a remote reference, a function name, and optional variable number of arguments. In this example, the ''submit-news'' function iterates over a list containing news articles to be published, and invokes the ''receive-article'' function on the ''publish-ref'' reference corresponding to the newly discovered news publisher.  The ''remote-send!'' function takes as argument a remote reference, a function name, and optional variable number of arguments. In this example, the ''submit-news'' function iterates over a list containing news articles to be published, and invokes the ''receive-article'' function on the ''publish-ref'' reference corresponding to the newly discovered news publisher. 
Line 91: Line 90:
 </code> </code>
 The ''remote-send'' function works similar to the ''remote-send!'' function but it returns a //future// instead. The ''when-resolved'' function registers an event-handler which is executed when the future is resolved. The ''remote-send'' function works similar to the ''remote-send!'' function but it returns a //future// instead. The ''when-resolved'' function registers an event-handler which is executed when the future is resolved.
 +
 +
  
  
Line 97: Line 98:
 ===== Example Applications ===== ===== Example Applications =====
 iScheme has been used to develop a couple of non-trivial iPhone applications.  iScheme has been used to develop a couple of non-trivial iPhone applications. 
-  * [[example_applications|AmbiScrabble: A distributed peer-to-peer scrabble-like game]]+  * [[example_applications#AmbiScrabble_Game_for_the_iPhone|AmbiScrabble: A distributed peer-to-peer scrabble-like game]]
  
 +
 +  * [[example_applications#PolyGlot_Chat_Application|PolyGlot chat: A distributed peer-to-peer polyglot chat]]
 +
 +===== Publications =====
 +
 +  * Engineer Bainomugisha, Jorge Vallejos, Elisa Gonzalez Boix, Pascal Costanza, Theo D'Hondt, Wolfgang De Meuter. **Bringing Scheme Programming to the iPhone --- Experience**. Journal of Software: Practice and Experience, 2011.
  
 ===== What about Apple's License Issues? ===== ===== What about Apple's License Issues? =====
-iPhone apps developed in iScheme do not require any modifications to the iPhone OS, therefore, they can be deployed to the iPhone like any other third party apps. So far we have used Apple's iPhone Development Certificate to deploy applications to real devices. Even more good news is that, as of June 7th, 2010 the Apple iPhone Developer Program License Agreement stipulates that applications may embed interpreters, which means that iPhone applications developed in iScheme can be submitted to the App Store.   
  
 +<note>
 +iPhone apps developed in iScheme do not require any modifications to the iPhone OS, therefore, they can be deployed to the iPhone like any other third party apps. So far we have used Apple's iPhone Development Certificate to deploy applications to real devices. Even more good news is that, as of June 7th, 2010 the Apple iPhone Developer Program License Agreement stipulates that applications may embed interpreters, which means that iPhone applications developed in iScheme can be submitted to the App Store.  </note>
 +
 +<note>
 +[[http://itunes.apple.com/us/app/ischeme-for-the-ipad/id422628070?mt=8|iScheme for iPad]] is now available for download on the App Store. 
 +</note>
ischeme/ischeme.1280415674.txt.gz ยท Last modified: 2010/07/29 17:01 (external edit)