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/04/06 13:11] – jdedecker | at:tutorial:symbiosis [2007/06/19 10:32] – jdedecker | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Symbiosis with Java ====== | ||
- | |||
< | < | ||
+ | |||
+ | ====== Symbiosis with Java ====== | ||
AmbientTalk is fully implemented in Java and runs on top of the JVM. Java provides an extensive class library that can be accessed from within AmbientTalk. | AmbientTalk is fully implemented in Java and runs on top of the JVM. Java provides an extensive class library that can be accessed from within AmbientTalk. | ||
Line 7: | Line 7: | ||
The reverse, namely that AmbientTalk objects can accessed from within Java is also possible. | The reverse, namely that AmbientTalk objects can accessed from within Java is also possible. | ||
- | This chapter explains how both sides of this symbiotic relationship between Java and AmbientTalk can be leveraged. The goal of this symbiotic relationship is to exploit | + | This chapter explains how both sides of this symbiotic relationship between Java and AmbientTalk can be leveraged. The goal of this symbiotic relationship is to complement |
+ | |||
+ | ===== 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). Figure \ref{fig: | ||
+ | |||
+ | {{: | ||
===== Accessing Java classes ===== | ===== Accessing Java classes ===== | ||
+ | The complete set of classes that are available in the class path of a running JVM are accessible from AmbientTalk through the jlobby object. | ||
+ | |||
+ | < | ||
+ | >def Vector := jlobby.java.util.Vector | ||
+ | >>< | ||
+ | </ | ||
===== Creating Java objects ===== | ===== Creating Java objects ===== | ||
+ | Java classes can be instantiated in AmbientTalk similar to how AmbientTalk objects are instantiated, | ||
+ | the Java constructor. For example, in the snippet code below **new** method is invoked on the class **Vector**. | ||
+ | |||
+ | < | ||
+ | >def aVector := Vector.new() | ||
+ | >>< | ||
+ | </ | ||
+ | |||
+ | All constructors defined in the corresponding Java class can be accessed too. For example, | ||
+ | |||
+ | < | ||
+ | >aVector := Vector.new(30) | ||
+ | >>< | ||
+ | </ | ||
+ | |||
+ | ===== Invoking methods on Java objects ===== | ||
+ | Java objects appear as AmbientTalk objects whose field and method slots correspond to public instance-level fields and methods in the Java object. These are accessed or invoked as if they were plain AmbientTalk slots. | ||
+ | |||
+ | < | ||
+ | >1.to: 10 do: { |i| aVector.add(i) } | ||
+ | >>nil | ||
+ | >aVector | ||
+ | >>< | ||
+ | </ | ||
- | ===== Using Java wrappers ===== | ||
===== Overloading ===== | ===== Overloading ===== | ||
+ | |||
+ | ===== Concurrency ===== | ||
+ | |||
+ | ===== Distribution ===== | ||
+ | |||
+ | ===== Using Java wrappers ===== | ||
===== Symbionts ===== | ===== Symbionts ===== |
at/tutorial/symbiosis.txt · Last modified: 2013/05/17 20:25 by tvcutsem