1 Library emulation: combating library aging Fabio Corubolo London, December 3 rd 2009.

Slides:



Advertisements
Similar presentations
What is a Computer Program? For a computer to be able to do anything (multiply, play a song, run a word processor), it must be given the instructions.
Advertisements

COM vs. CORBA.
SOFTWARE MAINTENANCE 24 March 2013 William W. McMillan.
Design Patterns Introduction What is a Design Pattern? Why were they developed? Why should we use them? How important are they?
What is a Programming Language? The computer operates using binary numbers. The computer only knows about 1’s and 0’s. Humans can also use 1’s and 0’s,
1 Introducing Collaboration to Single User Applications A Survey and Analysis of Recent Work by Brian Cornell For Collaborative Systems Fall 2006.
1 Using Scalable and Secure Web Technologies to Design Global Format Registry Muluwork Geremew, Sangchul Song and Joseph JaJa Institute for Advanced Computer.
Data Structure and Algorithm 1 Yingcai Xiao. You Me The Course (
Presented by IBM developer Works ibm.com/developerworks/ 2006 January – April © 2006 IBM Corporation. Making the most of Creating Eclipse plug-ins.
Programming A Historic Perspective on Code Reuse Yingcai Xiao.
Java Introduction 劉登榮 Deng-Rung Liu 87/7/15. Outline 4 History 4 Why Java? 4 Java Concept 4 Java in Real World 4 Language Overview 4 Java Performance!?
JAVA v.s. C++ Programming Language Comparison By LI LU SAMMY CHU By LI LU SAMMY CHU.
Introduction to Systems Analysis and Design Trisha Cummings.
MVC pattern and implementation in java
High thoughts must have high language. Aristophanes
 2002 Prentice Hall. All rights reserved. 1 Introduction to Visual Basic.NET,.NET Framework and Visual Studio.NET Outline 1.7Introduction to Visual Basic.NET.
High level & Low level language High level programming languages are more structured, are closer to spoken language and are more intuitive than low level.
Programming. What is a Program ? Sets of instructions that get the computer to do something Instructions are translated, eventually, to machine language.
 To explain the importance of software configuration management (CM)  To describe key CM activities namely CM planning, change management, version management.
Introduction 1-1 Introduction to Virtual Machines From “Virtual Machines” Smith and Nair Chapter 1.
An Introduction to Linux Name: Haixin Wang ID :
Python – Part 1 Python Programming Language 1. What is Python? High-level language Interpreted – easy to test and use interactively Object-oriented Open-source.
2005 Epocrates, Inc. All rights reserved. Integrating XML with legacy relational data for publishing on handheld devices David A. Lee Senior member of.
Alastair Duncan STFC Pre Coffee talk STFC July 2014 The Trials and Tribulations and ultimate success of parallelisation using Hadoop within the SCAPE project.
AN ASPECT-ORIENTED ARCHITECTURE FOR HANDLING VARIATION ACROSS MOBILE PLATFORMS Proposed by: Chokchai Phatharamalai Advisor: Dr. Paul Janecek.
1 Text Reference: Warford. 2 Computer Architecture: The design of those aspects of a computer which are visible to the programmer. Architecture Organization.
More on MIPS programs n SPIM does not support everything supported by a general MIPS assembler. For example, –.end doesn’t work Use j $ra –.macro doesn’t.
Java Basics 1 Brief History of Java and Overview of Langauge.
Analysis of Programming Languages (2). 2 LANGUAGE DESIGN CONSTRAINTS  Computer architecture  Technical setting  Standards  Legacy systems.
By: Cheryl Mok & Sarah Tan. Java is partially interpreted. 1. Programmer writes a program in textual form 2. Runs the compiler, which converts the textual.
Java Programming: Advanced Topics1 Introduction to Advanced Java Programming Chapter 1.
1 Languages and Compilers (SProg og Oversættere) Bent Thomsen Department of Computer Science Aalborg University With acknowledgement to Norm Hutchinson.
1 Lecture 6: Assembly Programs Today’s topics:  Large constants  The compilation process  A full example  Intro to the MARS simulator.
Whole Test Suite Generation. Abstract Not all bugs lead to program crashes, and not always is there a formal specification to check the correctness of.
ITP 109 Week 2 Trina Gregory Introduction to Java.
CISC. What is it?  CISC - Complex Instruction Set Computer  CISC is a design philosophy that:  1) uses microcode instruction sets  2) uses larger.
Building Preservation Environments with Data Grid Technology Reagan W. Moore Presenter: Praveen Namburi.
Introduction of Wget. Wget Wget is a package for retrieving files using HTTP and FTP, the most widely-used Internet protocols. Wget is non-interactive,
Software Engineering Algorithms, Compilers, & Lifecycle.
Software, IEE Proceedings, Vol.152, Num.3, June 2005,Page(s): Prasanthi.S March, Java-based component framework for dynamic reconfiguration.
A strategic view of document and digital object management for the University of the Witwatersrand, Johannesburg Prof Derek W. Keats Deputy Vice Chancellor.
Long Term Preservation of Digital Data Raymond A. Lorie JCDL ‘01 June 24-28, 2001.
A Semi-Automated Digital Preservation System based on Semantic Web Services Jane Hunter Sharmin Choudhury DSTC PTY LTD, Brisbane, Australia Slides by Ananta.
CIS 234: Object-Oriented Programming with Java
Computer System Structures
Introduction to Visual Basic. NET,. NET Framework and Visual Studio
Lecture 1b- Introduction
14 Compilers, Interpreters and Debuggers
Overview of Compilers and Language Translation
Compiler, Interpreter, and Bootstrapping
Programming languages
SE goes software engineering; (practically) managing the Compose
Key Ideas from day 1 slides
Introduction to Advanced Java Programming
ICS103 Programming in C Lecture 1: Overview of Computers & Programming
Google Web Toolkit - Gufran Mohammed
Want to Write a Compiler?
Application Development Theory
Introduction to Systems Analysis and Design
(Course Introduction)
Software Metrics “How do we measure the software?”
CMP 131 Introduction to Computer Programming
Lecture 06:Software Maintenance
Java Programming Introduction
Java History, Editions, Version Features
Introduction to Virtual Machines
SE goes software engineering; (practically) managing the Compose
Introduction to Virtual Machines
ENERGY 211 / CME 211 Lecture 27 November 21, 2008.
Software Re-engineering and Reverse Engineering
Presentation transcript:

1 Library emulation: combating library aging Fabio Corubolo London, December 3 rd 2009

3/12/20092 File format obsolescence File formats eventually become obsolete This normally happens as software change and old format are eventually dropped Some solutions have been proposed to solve the issue

3/12/ Data format preservation: solutions How can we preserve access to documents and data formats?

3/12/20094 Multivalent approach for Digital Preservation MV is a framework for document parsing and display Aims to support any doc format Media parsers in pure Java, no native method to maintain architecture independence Direct access to the original formats with the JVM JVM is well specified, has multiple implementations Media parser source code can be good representation information

3/12/20095 Media parsers: limitations Writing media parsers is expensive It would be better to reuse existing code Java libraries are many, but don't cover all; C and other language libraries are some times essential Some libraries can be considered reference for decoding a type of data Hard to recreate the same decoding feature/bug by feature/bug

3/12/20096 Library emulation Why not use existing software to compile native (C, Pascal, Fortran) libraries directly to Java code? Two open source examples already exist:  NestedVM (Brian Alliet, Adam Megacz)  Cibyl (Simon Kågström) Based on the concept compiling to MIPS architecture, and mapping MIPS instructions to Java code or bytecode MIPS instructions map well to Java bytecode

3/12/20097 Library emulation Why not use existing software to compile native (C, Pascal, Fortran) libraries directly to Java code? Two open source examples already exist:  NestedVM (Brian Alliet, Adam Megacz)  Cibyl (Simon Kågström) Based on the concept compiling to MIPS1 architecture, and mapping MIPS instructions to Java code or bytecode MIPS instructions map well to Java bytecode

3/12/20098 Compiling libraries using NestedVm An adapted GCC toolchain Supports GCC C, C++, Pascal, Fortran Converted software is bug to bug compatible to the native A libc and a Unix runtimes implement most kernel and posix features, so many libraries can just be compiled with no modification (SYSCALLS)

3/12/20099 DEMO

3/12/ Results Added Jbig2 support to PDF in pure Java: speed comparable to an existing Java library Also: libtiff, libfreetype 2, libjpeg, zlib, libmspack Time required for getting the build to work is a small fraction of creating a new Java code library

3/12/ Pros Simple, low effort method to make sw and libraries live longer Cross platform Bug to bug compatible Easy to update as library evolves Results can be simply included in external workflows Easy to test correctness with the native libraries: same inputs and outputs

3/12/ Cons A performance hit of 2-10 X A complex build process can require tedious manual patching Works on a subset of the existing software libraries

3/12/ Conclusions Why not use this now? Simple solution: archive the Java compiled library for future access and use in other platforms Very interesting when supporting a variety of rare data formats Performance hit will be less significant when compared with data loss

14 Acknowledgements The Shaman project is partially supported by the European Union under the Information and Communication Technologies (ICT) theme of the 7th Framework Programme for R&D (FP7) This document does not represent the opinion of the European Community, and the European Community is not responsible for any use that might be made of its content.