A deep dive into the platform resource model
7
·
8
·
9
·
10
·
11
·
12
·
13
·
14
·
15
·
16
·
17
·
18
John Arthorne
We all know the platform resource model, with its familiar concepts of workspaces, projects, markers, builders, and natures. Have you ever wondered how it is all implemented? The answer may surprise you, as its implementation is far more complex than its simple API suggests. In this tutorial you will learn:
- How resource and builder deltas are efficiently created and manipulated
- How local history is stored
- How resources with overlapping locations are managed
- How synchronization is maintained between the model and the underlying file system
- How the workspace supports multiple concurrent reader threads during modifications
- How the model was retrofitted to allow for concurrent writes
If we have time to spare, we'll delve into some of the performance tricks that have been employed over the years to make the implementation faster and smaller.
The tutorial format will allow for a highly interactive session, so bring along your toughest questions about the resource model and we'll wander off the beaten track to explore whatever dusty corners strike your fancy. Warning: this is advanced material. We will be looking at code, we will be talking about algorithms, data structures, and other programming concepts. This tutorial is for programmers who are either interested in working on the Eclipse platform, want to learn how to build similar systems, or just have an insatiable curiosity for how complex software works.
John has worked on the
Eclipse project for the past decade in many different areas, and more recently on the
Equinox project. In recent years he has focused on the workspace model, concurrency infrastructure, provisioning (Equinox p2), and overall platform API quality. John is a member of the Eclipse Architecture Council, and has authored numerous
articles and a
book on Eclipse. He has spoken frequently at EclipseCon and EclipseWorld on subjects ranging from Eclipse API design, to RCP application authoring and concurrent programming in Eclipse.