Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Code on demand
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{More citations needed|date=February 2022}} In [[distributed computing]], '''code on demand''' is any technology that sends executable software code from a server computer to a client computer upon request from the client's software. Some well-known examples of the code on demand paradigm on the web are [[Java applet]]s, Adobe's [[ActionScript]] language for the [[Adobe Flash Player|Flash Player]], and [[JavaScript]].<ref name="Is Code Still Moving Around">{{cite book|last= Carzaniga|first=Antonio|author2=Gian Pietro Picco |author3=Giovanni Vigna |title=29th International Conference on Software Engineering (ICSE'07 Companion) |chapter=Is Code Still Moving Around? Looking Back at a Decade of Code Mobility |year=2007|publisher=IEEE Computer Society|location=Washington, DC, US|pages=9–20|url=http://dl.acm.org/citation.cfm?id=1248922|doi=10.1109/ICSECOMPANION.2007.44|isbn=978-0-7695-2892-2|citeseerx=10.1.1.119.5295|s2cid=8728428 }}</ref> The program code lies inactive on a [[web server]] until a user (client) requests a web page that contains a link to the code using the client's [[web browser]]. Upon this request, the web page and the program are transported to the user's machine using [[HTTP]]. When the page is displayed, the code is started in the browser and executes locally, inside the user's computer until it is stopped (e.g., by the user leaving the web page). Code on demand is a specific use of [[mobile code]], within the field of [[code mobility]].<ref name="Understanding Code Mobility">{{cite journal|last=Fuggetta|first=Alfonso|author2=Gian Pietro Picco|author3=Giovanni Vigna|year=1998|title=Understanding Code Mobility|url=http://www2.computer.org/portal/web/csdl/abs/trans/ts/1998/05/e0342abs.htm|journal=IEEE Transactions on Software Engineering|volume=24|issue=5|pages=342–361|doi=10.1109/32.685258|issn=0098-5589|accessdate=29 July 2009|citeseerx=10.1.1.20.3442}}</ref> == Constraints == === Client-server === The first constraint is that the system must be made up of clients and servers. Servers have resources that clients want to use. For example, a server has a list of stock prices (i.e. a resource) and the client would like to display these prices in some nice graphs. There is a clear separation of concerns between the two. The server takes care of the back-end stuff (data storage, business rules, etc.) and the client handles the front-end stuff (user interfaces). === Stateless === To further simplify interactions between clients and servers, the second constraint is that the communication between them must be stateless. This means that all information about the client’s session is kept on the client, and the server is completely unaware. The consequence is that each request must contain all information necessary to perform the request (i.e. it cannot rely on any context information). === Cache === The last constraint on the client-server communication is that responses from servers must be marked as cacheable or non-cacheable. An effective cache can reduce the number of client-server interactions, which contributes positively to the performance of the system. At least, from a user’s point of view. === Code on demand === Code on demand (COD) is the only optional constraint in REST. It allows clients to improve their flexibility because it is the server which decides how certain things will be done. For instance, with code on demand, a client can download a Javascript, Java applet or even a Flash application in order to encrypt communication so servers are not aware of any encryption routines / keys used in this process.{{Clarify|date=June 2024}} However, using COD reduces visibility, hence the optionality. Also, not every API needs this kind of flexibility. ==See also== *[[Remote evaluation]] *[[Code mobility]] == References == <references/> {{Authority control}} {{Use dmy dates|date=June 2024}} {{DEFAULTSORT:Code On Demand}} [[Category:Internet Protocol based network software]] [[Category:Software distribution]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Authority control
(
edit
)
Template:Cite book
(
edit
)
Template:Cite journal
(
edit
)
Template:Clarify
(
edit
)
Template:More citations needed
(
edit
)
Template:Use dmy dates
(
edit
)