The Blog of Warren Strange
Strange Brew
Archives
« August 2008
SunMonTueWedThuFriSat
     
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
      
Today
XML
Search

Links
 

Today's Page Hits: 65

« SEAM and Glassfish,... | Main | Jini Made Easier -... »
20061005 Thursday October 05, 2006
Summary Jim Waldo's keynote at the 10th Jini Community Meeting

Summary of Jim Waldo's Keynote at the 10th JCM


[Disclaimer: This is my summary of Jim's keynote from the last JCM. It is not a transcript; Any errors are probably mine! Thanks to Jerome Bernard for video taping Jim's presentation! The presentations and videos from the JCM can be found here]


Jim is thinking about things that cause a quantum jump in complexity. You are OK, and then something changes in a big way.


The basic jumps in complexity occur at these points (I add abbreviations here to refer to them later on)



All of the above cause discontinuities in the programming model. As you move through each stage, you lose something:




But you also gain some things as you move through the discontinuities (otherwise why would you do it?)


The Platform


The platform – allows us to do the work. The model the developer sees:



Most grids are an attempt to do batch on a large scale (scientific). Scheduling jobs. Use individual OS in any way you wish – not a platform, but a way of aggregating platforms. How do you give a programming abstraction. Jini is a good attempt – but only the beginning. What is outside the grid, vs inside. Outside – untrusted, inside is trusted – mutual trust


Two discontinuities – inside/outside – we are conflating them – trying to solve all the problems at once won't work. We need two solutions.


Jini 1.0 – built for the 1st discontinuities – MM but assumes full trust. Built on mobile code.

Ad-hoc organization – changes over time. When a service enters into the system, you could trust it.

Failure handled – but not a failure of trust.

Types – the way which you identity things


Jini 2.0 – Multiple Untrusted Machines. Adds security. This is hard to do with mobile code. Adds a lot of complexity (e.g. proxy verification). Perhaps too hard.

Configuration – deployment control. Deployment errors cause a lot of failures in distributed systems. A lot of the complexity is making services reliable for all possible deployments. Maybe we could communicate the reliability needs in the language. Needs to be part of the platform.


Program vs. deploy – we are trained to keep them separate – but this probably makes life harder. Famous disclaimers “We will put management in later” (just like “we will put security in later”).


Services – the things we assume are always there (but sometime they might not be!) Example: persistence. A file system may not always be there in all environments. What would a good persistence service look like?


Containers – is a function converting a type to another type. Must be able to import things, give bindings, yields another container, Containers are type functions.


Virtual machines. JVM is an example. VM is the important thing – not necessarily the JVM. Universal binary allows us to move code and data. Jini is Java VM thing. Other Vms might be interesting (e.g. ones that fix classloader problems?) The abstraction is the important thing.


Feeling of Deja Vu for Jim. Back when all kinds of different O/S existed there were lots of debates “Why mine is better than yours”. What arose was UNIX and the “other” (i.e. There was a lot of convergence about what an O/S looks like). Model of the platform happened after lots of experimentation and discussion. Are we at the same stage as 30 years ago with O/S – a breakthrough may be close.



posted by warren Oct 05 2006, 09:53:36 PM MDT Permalink

Comments:

Post a Comment:

Comments are closed for this entry.