at:tutorial:symbiosis
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
at:tutorial:symbiosis [2007/06/20 10:51] – jdedecker | at:tutorial:symbiosis [2007/07/04 22:35] – jdedecker | ||
---|---|---|---|
Line 10: | Line 10: | ||
===== Symbiosis Architecture ===== | ===== Symbiosis Architecture ===== | ||
- | AmbientTalk has been implemented in Java. Because of this, Java plays two roles: it is both a symbiont language and the implementation language of AmbientTalk (and hence of the linguistic symbiosis itself). | + | AmbientTalk has been implemented in Java. Because of this, Java plays two roles: it is both a symbiont language and the implementation language of AmbientTalk (and hence of the linguistic symbiosis itself). |
{{: | {{: | ||
Line 60: | Line 60: | ||
Add code that shows how to disambiguate between overloaded methods | Add code that shows how to disambiguate between overloaded methods | ||
</ | </ | ||
- | |||
- | ==== Concurrency ==== | ||
===== Accessing AmbientTalk from within Java ===== | ===== Accessing AmbientTalk from within Java ===== | ||
==== Invoking AmbientTalk methods in Java ==== | ==== Invoking AmbientTalk methods in Java ==== | ||
- | When an AmbientTalk | + | Besides calling Java methods from within |
- | If Java invokes a method declared in an interface with an overloaded method signature, all overloaded invocations are transformed into the same method invocation on the AmbientTalk object. In other words, the AmbientTalk object does not take the types into consideration. However, if the Java method is overloaded based on arity, the AmbientTalk programmer can take this into account in the parameter list of the corresponding AmbientTalk method, by means of a variable-argument list or optional parameters. Otherwise, the Java invocation may fail because of an arity mismatch. | + | < |
+ | def SymbiosisDemo := jlobby.at.tutorial.SymbiosisDemo; | ||
- | ==== Conversions ==== | + | def showSymbiosis() { |
- | ==== Thread-Actor Symbiosis ==== | + | def javaDemo := SymbiosisDemo.new(); |
+ | |||
+ | def atObject := object: { | ||
+ | def ping() { | ||
+ | system.println(" | ||
+ | javaDemo.run2(self); | ||
+ | }; | ||
+ | def pong() { | ||
+ | system.println(" | ||
+ | 42 | ||
+ | } | ||
+ | }; | ||
+ | |||
+ | javaDemo.run(atObject); | ||
+ | }; | ||
+ | |||
+ | self | ||
+ | </ | ||
+ | |||
+ | When an AmbientTalk object is passed as an argument to a Java method expecting an object of an interface type, the AmbientTalk object will appear to Java objects as a regular Java object implementing that interface. | ||
+ | |||
+ | < | ||
+ | package at.tutorial; | ||
+ | |||
+ | public class SymbiosisDemo { | ||
+ | public interface PingPong { | ||
+ | public int ping(); | ||
+ | public int pong(); | ||
+ | } | ||
+ | |||
+ | public int run(PingPong pp) { | ||
+ | return pp.ping(); | ||
+ | } | ||
+ | |||
+ | public int run2(PingPong pp) { | ||
+ | return pp.pong(); | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | |||
+ | If Java invokes a method declared in an interface with an overloaded method signature, all overloaded invocations are transformed into the same method invocation on the AmbientTalk object. In other words, the AmbientTalk object does not take the types into consideration. However, if the Java method is overloaded based on arity, the AmbientTalk programmer can take this into account in the parameter list of the corresponding AmbientTalk method, by means of a variable-argument list or optional parameters. Otherwise, the Java invocation may fail because of an arity mismatch. |
at/tutorial/symbiosis.txt · Last modified: 2013/05/17 20:25 by tvcutsem