transparent references and garbage collection for …...transparent references and garbage...

72
Transparent References and Garbage Collection for Project Darkstar making it easier to write applications on Project Darkstar Server Esko Luontola Programmer, UI Designer www.orfjackal.net

Upload: others

Post on 12-Jun-2020

18 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Transparent Referencesand Garbage Collectionfor Project Darkstar– making it easier to write applications on Project Darkstar Server

Esko LuontolaProgrammer, UI Designerwww.orfjackal.net

Page 2: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Agenda• How Darkstar's persistence model is

currently?• How transparent references and garbage

collection change the persistence model?• Future directions

Page 3: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Agenda• How Darkstar's persistence model is

currently?• How transparent references and garbage

collection change the persistence model?• Future directions

Page 4: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Darkstar requires special handling for ManagedObjects

Page 5: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

What happens under the hood when the following is executed?

Page 6: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Page 7: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

BEGIN TRANSACTION

Page 8: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Person donald = new Person("Donald Duck");

Page 9: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

address

donald.setAddress(new Address("Duckburg", "Duck Street 313"));

Page 10: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

address

Personname = “Mickey Mouse”

Person mickey = new Person("Mickey Mouse");

Page 11: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

address

Personname = “Mickey Mouse”

addr

ess

mickey.setAddress(donald.getAddress());

Page 12: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

address

Personname = “Mickey Mouse”

addr

essManagedReference

id = 1

id = 1

id = 1

mickey.setRoommate(donald);mickey.roommate = AppContext.getDataManager().createReference(donald);

roommate

Page 13: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

address

Personname = “Mickey Mouse”

addr

essManagedReference

id = 1

ManagedReferenceid = 2

roomm

ate

id = 2

id = 1

id = 1id = 2

donald.setRoommate(mickey);donald.roommate = AppContext.getDataManager().createReference(mickey);

roommate

Page 14: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

address

Personname = “Mickey Mouse”

addr

essManagedReference

id = 1

ManagedReferenceid = 2

roomm

ate

id = 2

id = 1

id = 1id = 2

“donald” = 1

AppContext.getDataManager().setBinding("donald", donald);

roommate

Page 15: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

address

Personname = “Mickey Mouse”

addr

essManagedReference

id = 1

ManagedReferenceid = 2

roomm

ate

id = 2

id = 1

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”ManagedReference

id = 2

id = 1

Write

id = 2

“donald” = 1

COMMIT TRANSACTION

roommate

Page 16: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

address

Personname = “Mickey Mouse”

addr

essManagedReference

id = 1

ManagedReferenceid = 2

roomm

ate

id = 2

id = 1

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”ManagedReference

id = 2

id = 1Person

name = “Mickey Mouse”Address

city = “Duckburg”street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

Write

“donald” = 1

COMMIT TRANSACTION

roommate

Page 17: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

address

Personname = “Mickey Mouse”

addr

essManagedReference

id = 1

ManagedReferenceid = 2

roomm

ate

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”ManagedReference

id = 2

id = 1Person

name = “Mickey Mouse”Address

city = “Duckburg”street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1

roommate

Page 18: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”ManagedReference

id = 2

id = 1Person

name = “Mickey Mouse”Address

city = “Duckburg”street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1

Page 19: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”ManagedReference

id = 2

id = 1Person

name = “Mickey Mouse”Address

city = “Duckburg”street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1

Page 20: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

What happens under the hood when the following is executed?

Page 21: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”ManagedReference

id = 2

id = 1Person

name = “Mickey Mouse”Address

city = “Duckburg”street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1

Page 22: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”ManagedReference

id = 2

id = 1Person

name = “Mickey Mouse”Address

city = “Duckburg”street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1

Transaction

BEGIN TRANSACTION

Page 23: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”ManagedReference

id = 2

id = 1Person

name = “Mickey Mouse”Address

city = “Duckburg”street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1

Transaction

Person donald = (Person) AppContext.getDataManager().getBinding("donald");

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”address

ManagedReferenceid = 2

roomm

ate

id = 1

Load

Page 24: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”ManagedReference

id = 2

id = 1Person

name = “Mickey Mouse”Address

city = “Duckburg”street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1

Transaction

Person mickey = donald.getRoommate();Person mickey = donald.roommate.get();

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”address

ManagedReferenceid = 2

roomm

ate

id = 1

Addresscity = “Duckburg”

street = “Duck Street 313”

Personname = “Mickey Mouse”

addr

ess

ManagedReferenceid = 1

roommateid = 2

Load

Page 25: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”ManagedReference

id = 2

id = 1Person

name = “Mickey Mouse”Address

city = “Duckburg”street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1

Transaction

System.out.println(mickey.getName() + " lives in " + mickey.getAddress().getCity());

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”address

ManagedReferenceid = 2

roomm

ate

id = 1

Addresscity = “Duckburg”

street = “Duck Street 313”

Personname = “Mickey Mouse”

addr

ess

ManagedReferenceid = 1

roommateid = 2

Page 26: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”ManagedReference

id = 2

id = 1Person

name = “Mickey Mouse”Address

city = “Duckburg”street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1

Transaction

donald.setRoommate(null);

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”address

ManagedReferenceid = 2

id = 1

Addresscity = “Duckburg”

street = “Duck Street 313”

Personname = “Mickey Mouse”

addr

ess

ManagedReferenceid = 1

roommateid = 2

Page 27: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”ManagedReference

id = 2

id = 1Person

name = “Mickey Mouse”Address

city = “Duckburg”street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1

Transaction

AppContext.getDataManager().removeObject(mickey);

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”address

ManagedReferenceid = 2

id = 1

Addresscity = “Duckburg”

street = “Duck Street 313”

Personname = “Mickey Mouse”

addr

ess

ManagedReferenceid = 1

roommate

Page 28: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

id = 1Person

name = “Mickey Mouse”Address

city = “Duckburg”street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1

Transaction

COMMIT TRANSACTION

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”address

ManagedReferenceid = 2

id = 1

Addresscity = “Duckburg”

street = “Duck Street 313”

Personname = “Mickey Mouse”

addr

ess

ManagedReferenceid = 1

roommate

Write

Page 29: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

id = 1

“donald” = 1

Transaction

COMMIT TRANSACTION

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”address

ManagedReferenceid = 2

id = 1

Addresscity = “Duckburg”

street = “Duck Street 313”

Personname = “Mickey Mouse”

addr

ess

ManagedReferenceid = 1

roommate

Delete

Page 30: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

id = 1

“donald” = 1

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”address

ManagedReferenceid = 2

Addresscity = “Duckburg”

street = “Duck Street 313”

Personname = “Mickey Mouse”

addr

ess

ManagedReferenceid = 1

roommate

Page 31: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

id = 1

“donald” = 1

Page 32: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

id = 1

“donald” = 1

Page 33: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

What is the problem?

Page 34: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Too much work for the programmer!Mixed responsibilities! Leaking abstractions! Tight coupling!

. . .

Page 35: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Solution• Make Darkstar itself responsible for taking

care of the technical details of ManagedObjects referring to each other

• Code using an object should not know the implementation details of that object – whether it is a ManagedObject or not

• Refer to ManagedObjects through proxies> Allows lazy loading> Separates object graphs during serialization> And the code using the object will never know it!

Page 36: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Agenda• How Darkstar's persistence model is

currently?• How transparent references and garbage

collection change the persistence model?• Future directions

Page 37: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

ProxyType.CLASS- generated proxy extends target class- all fields must be private- all methods must be non-final- the class must be non-final(- an accessible default constructor is not needed, as the constructor will not be called)

ProxyType.INTERFACE- generated proxy implements the same interfaces as the target class- instances of the class must always be used through their interfaces

Page 38: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

What happens under the hood when the following is executed?

– with transparent references and garbage collection

Page 39: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Page 40: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

BEGIN TRANSACTION

Page 41: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Person donald = new Person("Donald Duck");

Page 42: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

address

donald.setAddress(new Address("Duckburg", "Duck Street 313"));

Page 43: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

address

Personname = “Mickey Mouse”

Person mickey = new Person("Mickey Mouse");

Page 44: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

address

Personname = “Mickey Mouse”

addr

ess

mickey.setAddress(donald.getAddress());

Page 45: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

address

Personname = “Mickey Mouse”

addr

ess

mickey.setRoommate(donald);

roommate

Page 46: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

address

Personname = “Mickey Mouse”

addr

ess

donald.setRoommate(mickey);

roommateroommate

Page 47: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

address

Personname = “Mickey Mouse”

addr

ess

id = 1

id = 1

“donald” = 1

AppContext.getDataManager().setBinding("donald", donald);

roommateroommate

Page 48: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

address

Personname = “Mickey Mouse”

addr

ess

id = 1

id = 1

“donald” = 1

COMMIT TRANSACTION

roommateroommate

!

Page 49: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

address

Personname = “Mickey Mouse”

addr

ess

ManagedReferenceid = 2

id = 2

id = 1

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 2

id = 1 id = 2

“donald” = 1

COMMIT TRANSACTION

roommatePerson Proxy

roomm

ate

Person Proxy

Write

Page 50: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

address

Personname = “Mickey Mouse”

addr

ess

ManagedReferenceid = 2

id = 2

id = 1

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 2

id = 1 id = 2

“donald” = 1

COMMIT TRANSACTION

roommatePerson Proxy

roomm

ate

Person Proxy

!

Page 51: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

address

Personname = “Mickey Mouse”

addr

ess

ManagedReferenceid = 1

ManagedReferenceid = 2

id = 2

id = 1

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 2

id = 1 Personname = “Mickey Mouse”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

Write

“donald” = 1

COMMIT TRANSACTION

Person Proxyroommate

Person Proxy

roomm

ate

Person ProxyPerson Proxy

Page 52: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

address

Personname = “Mickey Mouse”

addr

ess

ManagedReferenceid = 1

ManagedReferenceid = 2

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 2

id = 1 Personname = “Mickey Mouse”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1

Person Proxyroommate

Person Proxy

roomm

ate

Person ProxyPerson Proxy

Page 53: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 2

id = 1 Personname = “Mickey Mouse”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1 Person ProxyPerson Proxy

Page 54: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 2

id = 1 Personname = “Mickey Mouse”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1 Person ProxyPerson Proxy

Page 55: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

What happens under the hood when the following is executed?

– with transparent references and garbage collection

Page 56: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 2

id = 1 Personname = “Mickey Mouse”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1 Person ProxyPerson Proxy

Page 57: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 2

id = 1 Personname = “Mickey Mouse”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1

BEGIN TRANSACTION

Person ProxyPerson Proxy

Page 58: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”address

ManagedReferenceid = 2

id = 1

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 2

id = 1 Personname = “Mickey Mouse”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1

Person donald = (Person) AppContext.getDataManager().getBinding("donald");

Person Proxy

roomm

ate

Person ProxyPerson Proxy

Load

Page 59: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”address

ManagedReferenceid = 2

id = 1

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 2

id = 1 Personname = “Mickey Mouse”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1

Person mickey = donald.getRoommate();

Person Proxy

roomm

ate

Person ProxyPerson Proxy

Page 60: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”address

Personname = “Mickey Mouse”

addr

ess

ManagedReferenceid = 1

ManagedReferenceid = 2

id = 2

id = 1

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 2

id = 1 Personname = “Mickey Mouse”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1

System.out.println(mickey.getName() + " lives in " + mickey.getAddress().getCity());

Person Proxyroommate

Person Proxy

roomm

ate

Person ProxyPerson Proxy

Load

Addresscity = “Duckburg”

street = “Duck Street 313”

Page 61: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”address

Personname = “Mickey Mouse”

addr

ess

ManagedReferenceid = 1

ManagedReferenceid = 2

id = 2

id = 1

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 2

id = 1 Personname = “Mickey Mouse”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1

donald.setRoommate(null);

Person Proxyroommate

Person Proxy

Person ProxyPerson Proxy

Addresscity = “Duckburg”

street = “Duck Street 313”

Page 62: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”address

Personname = “Mickey Mouse”

addr

ess

ManagedReferenceid = 1

ManagedReferenceid = 2

id = 2

id = 1

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

id = 1 Personname = “Mickey Mouse”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1

COMMIT TRANSACTION

Person Proxyroommate

Person Proxy

Person Proxy

Addresscity = “Duckburg”

street = “Duck Street 313”

Write

Page 63: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Transaction

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”address

Personname = “Mickey Mouse”

addr

ess

ManagedReferenceid = 1

ManagedReferenceid = 2

id = 2

id = 1

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

id = 1 Personname = “Mickey Mouse”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1

COMMIT TRANSACTION

Person Proxyroommate

Person Proxy

Person Proxy

Addresscity = “Duckburg”

street = “Duck Street 313”

Not Modified

Page 64: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”address

Personname = “Mickey Mouse”

addr

ess

ManagedReferenceid = 1

ManagedReferenceid = 2

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

id = 1 Personname = “Mickey Mouse”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1

Person Proxyroommate

Person Proxy

Person Proxy

Addresscity = “Duckburg”

street = “Duck Street 313”

Page 65: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

id = 1 Personname = “Mickey Mouse”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1 Person Proxy

Page 66: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

id = 1 Personname = “Mickey Mouse”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1 Person Proxy

Page 67: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

id = 1 Personname = “Mickey Mouse”

Addresscity = “Duckburg”

street = “Duck Street 313”

ManagedReferenceid = 1

id = 2

“donald” = 1 Person Proxy

Page 68: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

id = 1

“donald” = 1

Page 69: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Database

Memory

Personname = “Donald Duck”

Addresscity = “Duckburg”

street = “Duck Street 313”

id = 1

“donald” = 1

Page 70: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Agenda• How Darkstar's persistence model is

currently?• How transparent references and garbage

collection change the persistence model?• Future directions

Page 71: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Future directions• Include transparent references in the official

Project Darkstar Server distribution• Areas which need more work

> Scalability of the multi-node version> Improved garbage collector, multi-node support,

alternative algorithms, reference counting vs. tracing collectors

> Refactoring serialized data, rolling upgrades> Indexing and querying the database> ...

• It's all open source!

Page 72: Transparent References and Garbage Collection for …...Transparent References and Garbage Collection for Project Darkstar – making it easier to write applications on Project Darkstar

Questions?Project Darkstar Community– official web site, discussion forumshttp://www.projectdarkstar.com/

Darkstar EXP– unofficial distribution of Darkstar Server with experimental features, includes transparent references and garbage collectorhttp://code.google.com/p/darkstar-exp/

Dimdwarf Application Server– same transparent reference implementation, alternative server implementation, primarily designed for embedded standalone modehttp://dimdwarf.sourceforge.net/