LC Software Workshop, 28-29 May 2009, CERN P. Mato /CERN.

Slides:



Advertisements
Similar presentations
Reflex Dictionary Generator Antti Hahto
Advertisements

Automated creation of verification models for C-programs Yury Yusupov Saint-Petersburg State Polytechnic University The Second Spring Young Researchers.
Introduction to Model-View-Controller (MVC) Web Programming with TurboGears Leif Oppermann,
J2ME Web Services Specification.  With the promise to ease interoperability and allow for large scale software collaboration over the Internet by offering.
SaxStore: a n aspect oriented persistence library for Java based on SAX events Riccardo Solmi University of Bologna May 2001.
FCC Software Status Report from a User’s Perspective Colin Bernet (IPNL), Benedikt Hegner (CERN) 14 January
Session-02. Objective In this session you will learn : What is Class Loader ? What is Byte Code Verifier? JIT & JAVA API Features of Java Java Environment.
Using Microsoft SharePoint to Develop Workflow and Business Process Automation Ted Perrotte National Practice Manager, Quilogy, Microsoft Office SharePoint.
GSI Operating Software – Migration OpenVMS to Linux Ralf Huhmann PCaPAC 2008 October 20, 2008.
FCC Software Status Report from a User’s Perspective Colin Bernet (IPNL) 18 March 2015 Code Contributors: Michele De Gruttola, Benedikt Hegner, Clément.
SEAL V1 Status 12 February 2003 P. Mato / CERN Shared Environment for Applications at LHC.
Component-Based Software Engineering Introduction to Java Beans Paul Krause and Sotiris Moschoyiannis.
LCIO A persistency framework for LC detector simulation studies Frank Gaede, DESY, IT 4 th ECFA/DESY LC Workshop Amsterdam April 1 st -4 th 2003.
TILC09, April 2009, Tsukuba P. Mato /CERN.  Former LHCb core software coordination ◦ Architect of the GAUDI framework  Applications Area manager.
The Metadata System1. 2 Introduction Metadata is data that describes data. Traditionally, metadata has been found in language- specific files (e.g. C/C++
® IBM Software Group © 2004 IBM Corporation Using Rational Software Architect to Drive Application Integration Message Definition from Information Models.
M.Frank CERN/LHCb - Persistency Workshop, Dec.2004 Agenda: 2 separate talks! Don’t mangle together what does not belong together 1.Schema Evolution Tests.
Using ROOT classes from Python ROOT Workshop October 2002 P. Mato / CERN.
1 XML as a preservation strategy Experiences with the DiVA document format Eva Müller, Uwe Klosa Electronic Publishing Centre Uppsala University Library,
LC Software Workshop, May 2009, CERN P. Mato /CERN.
Introduction and Features of Java. What is java? Developed by Sun Microsystems (James Gosling) A general-purpose object-oriented language Based on C/C++
SEAL: Core Libraries and Services Project CERN/IT After-C5 Meeting 6 June 2003 P. Mato / CERN.
CHEP 2003 March 22-28, 2003 POOL Data Storage, Cache and Conversion Mechanism Motivation Data access Generic model Experience & Conclusions D.Düllmann,
W. Pokorski - CERN Simulation Project1 Python binding for Geant4 toolkit using Reflex/PyROOT tool Witek Pokorski EuroPython 2006, CERN, Geneva
ALICE, ATLAS, CMS & LHCb joint workshop on
Object Oriented Software Development
ROOT Future1 Some views on the ROOT future ROOT Workshop 2001 June 13 FNAL Ren é Brun CERN.
SEAL: Common Core Libraries and Services for LHC Applications CHEP’03, March 24-28, 2003 La Jolla, California J. Generowicz/CERN, M. Marino/LBNL, P. Mato/CERN,
SEAL Core Libraries and Services CLHEP Workshop 28 January 2003 P. Mato / CERN Shared Environment for Applications at LHC.
SEAL Project Core Libraries and Services 18 December 2002 P. Mato / CERN Shared Environment for Applications at LHC.
JACO JACO - Java Access to C++ Objects Mark Dönszelmann and Tony Johnson 25 May 2000.
Report on CHEP ‘06 David Lawrence. Conference had many participants, but was clearly dominated by LHC LHC has 4 major experiments: ALICE, ATLAS, CMS,
Apr. 8, 2002Calibration Database Browser Workshop1 Database Access Using D0OM H. Greenlee Calibration Database Browser Workshop Apr. 8, 2002.
Java Beans. Definitions A reusable software component that can be manipulated visually in a ‘builder tool’. (from JavaBean Specification) The JavaBeans.
Visualization of Geant4 Data: Exploiting Component Architecture through AIDA, HepRep, JAS and WIRED Geant4 Workshop, CERN - 2 October 2002 Joseph Perl.
Dictionary based interchanges for iSURF -An Interoperability Service Utility for Collaborative Supply Chain Planning across Multiple Domains David Webber.
Slide Advanced Programming 2004, based on LY Stefanus's slides Native Methods.
LCG Applications Area Meeting - 5 Feb 2003 ATLAS Strategy for the Data Dictionary & Persistency David R. Quarrie Lawrence Berkeley National Laboratory.
Software Engineering Overview DTI International Technology Service-Global Watch Mission “Mission to CERN in Distributed IT Applications” June 2004.
C# and.NET. .NET Architecture  Compiling and running code that targets.NET  Advantages of Microsoft Intermediate Language (MSIL)  Value and Reference.
SEAL Project Overview LCG-AA Internal Review October 2003 P. Mato / CERN.
23/2/2000Status of GAUDI 1 P. Mato / CERN Computing meeting, LHCb Week 23 February 2000.
Implementation Basics in C# code Minimal C++ code Application logic in Java code.
Copyright © 2009 – Curt Hill Standard Template Library An Introduction.
PROGRAMMING PRE- AND POSTCONDITIONS, INVARIANTS AND METHOD CONTRACTS B MODULE 2: SOFTWARE SYSTEMS 13 NOVEMBER 2013.
Classes, Interfaces and Packages
JAS and JACO – Status Report Atlas Graphics Group August 2000 Tony Johnson.
SEAL Project Status SC2 Meeting 16th April 2003 P. Mato / CERN.
ROOT Based CMS Framework Bill Tanenbaum US-CMS/Fermilab 14/October/2002.
Reference Types CSE301 University of Sunderland Harry R Erwin, PhD.
Java to C++: What would be needed ? Norman Graf (SLAC) ILC-CLIC Software, CERN May 28, 2009.
1/18/2000STScI Software Workshop Object-oriented Design Elements of the OPUS Application Programming Interface Data Processing Team.
Project Work Plan SEAL: Core Libraries and Services 7 January 2003 P. Mato / CERN Shared Environment for Applications at LHC.
Java State Explorer by: Richard Sherman Stephanie Taylor.
SuperB Computing R&D Workshop 9-12 March 2010, IUSS, Ferrara, Italy P. Mato /CERN.
Muon Collider Physics Workshop November 2009, Fermilab P. Mato /CERN.
Pyragen A PYTHON WRAPPER GENERATOR TO APPLICATION CORE LIBRARIES Fernando PEREIRA, Christian THEIS - HSE/RP EDMS tech note:
ROOT / Reflex ‘07+ Stefan Roiser Missed last team meeting b/c.
SEAL: Common Core Libraries and Services for LHC Applications
GEANT4 for Future Linear Colliders
Java Programming Language
Geant4 Geometry Objects Persistency using ROOT
Dirk Düllmann CERN Openlab storage workshop 17th March 2003
Object-Orientated Programming
Project Status and Plan
Functional interface.
Simulation Framework Subproject cern
Winter 2019 CMPE212 5/25/2019 CMPE212 – Reminders
Planning next release of GAUDI
M S COLLEGE ART’S, COMM., SCI. & BMS
Presentation transcript:

LC Software Workshop, May 2009, CERN P. Mato /CERN

 What could be done depends strongly on what are the real needs and use cases (previous discussion by Norman Graf) and what we are ready to invest  Basic assumptions ◦ Existing Java code needs to be preserved ◦ Development of Java applications will continue  Interoperability ◦ Until now the interoperability has been achieved by throw persistent ‘data’ (LCIO, xml files, etc.) ◦ True interoperability implies collaboration of Java and C++ classes in the same running program 28/5/09LC Software Workshop -- P. Mato/CERN2

 Most of the flow from is from Java to C++ ◦ ‘The main program is Java program’ ◦ Using existing C++ libraries from Java  Leverage from existing code (e.g. Geant4) ◦ Producing C++ data structures that can be then used by C++  HepMC, Geant4 Geom, LCIO event, ROOT trees and histograms, etc.  Little reverse flow should also be possible ◦ C++ callbacks written in Java ◦ Implementation of C++ interfaces in Java (framework interfaces) 28/5/09LC Software Workshop -- P. Mato/CERN3

 Developed PyROOT to enable the usage of any C++ class from Python  Making use of dictionaries (non intrusive!) ◦ generated by rootcint or gccxml  Dynamic ◦ Python classes are created when needed  Mapping of the C++ constructs to Python equivalent ◦ Found an adequate solution for each situation ◦ Additional useful ‘pythonizations’ 28/5/09LC Software Workshop -- P. Mato/CERN4

 Julius Hrivnac provided me with very useful information and pointers  The most promising is a solution based on JNI (Java Native Interface) ◦ E.g. JavaRoot from Subir Sarkar ◦ Automatically generating Java classes from the C++ definitions (header files) at ‘build-time’ ◦ Java objects are ‘proxies’ to C++ objects 28/5/09LC Software Workshop -- P. Mato/CERN5 Java JNI (generated) C++ Callback

 Positive experience with GCCXML ◦ Using it to generate Reflex dictionaries (any C++ can be ‘digested’ by GCCXML)  Some reasonable mappings of C++ to Java have already be found ◦ E.g. namespaces, operator overloading, default method arguments, abstract classes, etc.  Some of the C++ constructs need to be further studied ◦ True multiple-inheritance, templated classes/methods, function pointers, void*, etc.  For the object ‘ownership’ the same strategy as PyROOT can be applied ◦ Objects ‘constructed’ by the Java side are ‘owned’ by Java (garbage collected). Fine tuning is always possible. 28/5/09LC Software Workshop -- P. Mato/CERN6

 Extending what exists of JavaRoot (based on JNI) to any C++ class seems feasible ◦ This would enable Java applications to use C++ libraries and/or produce C++ objects  runtime interoperability ◦ Automated code generation using well known tools  It would require some sizable effort ◦ A toy-prototype could be done rather quickly (weeks) ◦ A proper and complete implementation would require 1-2 FTE years effort  Is this worth? 28/5/09LC Software Workshop -- P. Mato/CERN7