This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
at:tutorial:symbiosis [2007/06/19 10:22] jdedecker |
at:tutorial:symbiosis [2013/05/17 20:25] tvcutsem updated |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | < | ||
- | ====== 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. | ||
- | |||
- | 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 complement the advantages of both languages and to alleviate their disadvantages. | ||
- | |||
- | ===== 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 ===== | ||
- | 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 ===== | ||
- | In a similar fashion to calling constructors on Java classes we can also call other methods defined in the Java class. | ||
- | |||
- | < | ||
- | >1.to: 10 do: { |i| aVector.add(i) } | ||
- | >>nil | ||
- | >aVector | ||
- | >>< | ||
- | </ | ||
- | |||
- | |||
- | ===== Overloading ===== | ||
- | |||
- | ===== Concurrency ===== | ||
- | |||
- | ===== Distribution ===== | ||
- | |||
- | ===== Using Java wrappers ===== | ||
- | |||
- | ===== Symbionts ===== | ||
- | |||
- | ===== Conversions ===== | ||
- | |||
- | ===== Thread-Actor Symbiosis ===== |