Download presentation
Presentation is loading. Please wait.
1
“OSGi at the UK’s Biggest Science Lab.”
goo.gl/1f5HnD
2
DLS
3
Movie 1 Electron Journey
DLS
4
Movie 2 – experiment DLS
5
MX Robots Movie 3 – Robot Arm DLS
6
Software Generic Data Acquisition or GDA
Java Server -> 3 million lines -> static classpath Thick Java Client (written in RCP) Legacy System - inherited from a previous synchrotron ‘Run from Source’ Culture Software
7
The Creeping Cost of Support
Cost Support of Acquisition >> Proportion of Development << Different APIs that do similar things Overly Interconnected Projects and Classes Improper Encapsulation Poor Unit Tests Development Coordination = Hard Software
8
The Mapping Project nD scanning Move Sample – Not Machine
Scan Path Analysis – Run fast stuff New file format Multiple languages and layers Online Analysis Required Examples VMXi – Automated, versatile and crystal friendly Spectroscopy of 2D samples Software
9
VMXi – Early Prototype Work 2015/16
Movie 4 - VMXi
10
Mapping – Early Prototype
Movie 5 – Mapping
11
Software
12
OSGi OSGi
13
Real world problem #1: Integration
We made a single product! OSGi = Big Footprint, Small Running Memory Run from source hard! Investigated and deployed JRebel OSGi
14
Real world problem #2: Multiple configurations
Single Product : Multiple Configurations Wanted to keep Spring Spring makes objects after OSGi Services OSGi breaks up classloader - Spring No Like Solution? Eclipse Buddy which is an Equinox Feature OSGi
15
Real world problem #3: Migrating to bundles
Modularity! >> No more ‘core’ bundles which glue things Bundles which use things and those which provide things org.eclipse.scanning.server has TWO bundle dependencies Create API bundles with NO dependencies OSGi Services -> implement interfaces Gradual Migration Practical Solution -> Needs Developer Participation OSGi
16
Real world problem #4: The static, non-modular algorithm
GDA8 Scanning System Many ‘static’ parts Non-modular Unable to work with new NeXus API Slow in some cases Not Deprecated in 9 GDA9 / Solstice Scan Service based, Modular Instance !Singletons Annotations !Interfaces NeXus API++ Fast and Scalable Executor Based Less Features Malcolm OSGi
17
Real world problem #5: Cardinality
In OSGi you have the following options for a cardinality of a service: 0..1 (meaning zero or one service instances) 0..n (meaning zero to n) 1..1 (one and if it is not available, things start to fail) 1..n (one or more) 1..1 and static can block errors injecting services in funny ways OSGi
18
Real world problem #6: Declarative services
Do not ignore OSGi messages Some serious Some ignorable!! -Dequinox.ds.print=true 0..1 cardinality for a service not yet available - Not an error !ENTRY org.eclipse.equinox.ds :25: !MESSAGE Could not bind a reference of component Scanning Servlet Services. OSGi
19
Real world problem #7: The hidden cost of TDD
Modularity -> Easy and Complete Unit Testing Services easy parts to Mock out Unit Test Examples Scannable Service Runnable Device (Detectors!) Service End to end NeXus scans 1000’s new tests = BUILD PROBLEM Modular Product + Github + Travis CI = Sub-builds, No Waiting OSGi
20
Software Front-End Mapping
Movie 6 – Front End
21
Conclusions OSGi made Acquisition Server Modular
Service Oriented in Architecture Fast Startup Industry Standard Mature, Online Help Great Easy to do Opportunity to increase tests New Features Added! (Scanning + NeXus + UI)
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.