Your SlideShare is downloading. ×
0
Jcc
Jcc
Jcc
Jcc
Jcc
Jcc
Jcc
Jcc
Jcc
Jcc
Jcc
Jcc
Jcc
Jcc
Jcc
Jcc
Jcc
Jcc
Jcc
Jcc
Jcc
Jcc
Jcc
Jcc
Jcc
Jcc
Jcc
Jcc
Jcc
Jcc
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Jcc

212

Published on

& concept explained easily

& concept explained easily

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
212
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. jcc:TimedDefault cc Programming in JAVA Vijay Saraswat, IBM Research Radha Jagadeesan, DePaul University Vineet Gupta, Google
  • 2. Concurrent programming in Java  Threads, shared heap, separate stack  Synchronization based on locking mutable objects in shared heap  Rules to govern information flow between thread-specific data structures (heap cache, stack) and shared store.
  • 3. Concurrent programming in Java  `` Unfortunately the current specification has been found to be hard to understand and has subtle, often unintended, implications….. Several important issues [….] simply aren't discussed in the existing specification.''
  • 4. Concurrent programming in Java  Concurrent execution in Java is the default.  Every line of Java code could be executed in parallel by multiple threads on the same object.
  • 5. The Jcc model jcc= JAVA −Threads +Vats +Promises +Agents
  • 6. Jcc Design Goals • Interoperability with Java: source code, JVM, and type system • API for the programmer to add new constraint systems • Support for reflective meta-programming • The implementation should be usable for medium-sized programs.
  • 7. Rest of the talk  An example Bank application  The design elements of Jcc.
  • 8. The bank application Withdrawal Deposit
  • 9. The Bank application: Withdrawals  Withdrawals succeed if balance is large enough. If not, repeat withdrawal after each of the next n deposits. If balance still not large enough, it is rejected.
  • 10. The bank application Ravi Withdrawal Account1 (zero) Account2 Deposit(100) suspend suspend
  • 11. The bank application Ravi Withdrawal Account1 (25) Account2 Deposit(100) Deposits 25 suspend suspend
  • 12. The bank application Ravi Withdrawal Account1 (100) Account2 Deposit(100) Deposits 25 each
  • 13. Rest of the talk  An example Bank application  The design elements of Jcc.
  • 14. Vats and ports Stack Heap Ports Local stack/heap Single threaded JVM = Multiple vats + Shared heap of immutable objects
  • 15. Communication: Ports  Each port is located at a vat and is “read” only by code at that vat  Each port can have multiple writers/tellers at other vats  Objects written into ports are deep-copied from source to target vat
  • 16. Vats and ports in the bank application Ravi Withdrawal Account1 (zero) Account2 Deposit(100) suspend suspend
  • 17. Execution in a Vat Process 1 message at a time to completion before getting another message: create new local heap objects invoke methods on objects in heap send objects to ports in another vat All these operations do not block! Bounded response guarantees?
  • 18. Logical time A logical time-step: receive input compute response Correspondence to physical time if bounded response can be guaranteed cf. Esterel.
  • 19. Logical time in the bank application Withdrawal Account1 (zero) Time steps: 0. Withdrawal(100) 1. Deposit(25) 2. Deposit(25) 3. Deposit(25) 4. Deposit(25)
  • 20. Time based control constructs 1) next {S}. S is stored and executed in the next time instant. 2) always {S}: Run S at EVERY time instant Oops! Many programs can be executing at the same time instant
  • 21. Mutiple programs in the Account1 vat of the bank application Withdrawal Account1 (zero) Time steps: 0. Withdrawal(100): “withdrawal code” 1. Deposit(25): “withdrawal, deposit code” 2. Deposit(25): “withdrawal, deposit code” 3. Deposit(25): as above 4. Deposit(25): as above
  • 22. Constraints for Intra-Vat communication How to achieve determinate concurrency? Concurrent constraint programming! Store
  • 23. Constraint stores in Jcc  Each vat has its own store  All items in a store are dropped at the end of a time instant: programmer carries items into following time instant explicitly using next.  Constraints via promises (= typed logical variables) in Jcc.
  • 24. Promises Promise in Jcc = java.lang.Object in Java 1. Unrealized and unwatched. [new variables] 2. Realized [new constants] 3. Bound [o.equate(p) ] 4. Unrealized and watched
  • 25. Watchers for promises  When (p) do S If p is realized, run S. Otherwise, suspend S on p. S is a watcher for p Effect of p.equate(q)??
  • 26. Watchers for promises  every (p) do S run S in every time instant in which p is realized
  • 27. Code for Account public BankAccount() { every (balanceUpdate) { // check if pending withdrawals // can be satisfied }
  • 28. Code for Account public Confirmation deposit(Integer amount){ Confirmation result = new Confirmation(); when (amount) { // update balance result.equate(“Success”); } return result; }
  • 29. Code for Account public Confirmation withdraw(Integer amount){ Confirmation result = new Confirmation(); when (amount) { // check balance // if balance sufficient result.equate(“Success”); //if balance not sufficient, add to pending list } return result; }
  • 30. Conclusions jcc= JAVA −Threads +Vats +Promises +Agents Full power of Timed Default cc in Java.

×