Gary Kumfert with Bill Bosl, Tammy Dahlgren, Tom Epperly, Scott Kohn, & Steve Smith Achieving Language Interoperability with.

Slides:



Advertisements
Similar presentations
Institute of Computer Science AGH Towards Multilanguage and Multiprotocol Interoperability: Experiments with Babel and RMIX Maciej Malawski, Daniel Harężlak,
Advertisements

Configuration management
MIT Lincoln Laboratory A Service-Oriented Approach to Application Development Robert Darneille & Gary Schorer WPI MQP Presentations ICS Group 10 October.
What is RMI? Remote Method Invocation –A true distributed computing application interface for Java, written to provide easy access to objects existing.
German Cancio – WP4 developments Partner Logo WP4-install plans WP6 meeting, Paris project conference
Snejina Lazarova Senior QA Engineer, Team Lead CRMTeam Dimo Mitev Senior QA Engineer, Team Lead SystemIntegrationTeam Telerik QA Academy SOAP-based Web.
CCA Common Component Architecture CCA Forum Tutorial Working Group Language Interoperable.
Sergio Ferreira MoreData I16 Thursday, October 12, :30 a.m. – 11:30 a.m. Platform: Informix How to call Informix 4gl code from J2EE.
CORBA Architecture Nitin Prabhu. Outline CORBA Object Model CORBA Architecture Static Invocation Dynamic Invocation CORBA Communication Model.
Tammy Dahlgren, Tom Epperly, Scott Kohn, and Gary Kumfert Center for Applied Scientific Computing Common Component Architecture Working Group October 3,
G O B E Y O N D C O N V E N T I O N WORF: Developing DB2 UDB based Web Services on a Websphere Application Server Kris Van Thillo, ABIS Training & Consulting.
Divorcing Language Dependencies from a Scientific Software Library Gary Kumfert, with Scott Kohn, Jeff Painter, & Cal Ribbens LLNLVaTech.
Scott Kohn with Tom Epperly and Gary Kumfert Center for Applied Scientific Computing Lawrence Livermore National Laboratory October 3, 2000 Component Technology.
CORBA Case Study By Jeffrey Oliver March March 17, 2003CORBA Case Study by J. T. Oliver2 History The CORBA (Common Object Request Broker Architecture)
Kashif Jalal CA-240 (072) Web Development Using ASP.NET CA – 240 Kashif Jalal Welcome to week – 2 of…
TerascaleSimulation Tools and Technologies Tutorial: Presenter Institution.
M. Taimoor Khan * Java Server Pages (JSP) is a server-side programming technology that enables the creation of dynamic,
Architecture Of ASP.NET. What is ASP?  Server-side scripting technology.  Files containing HTML and scripting code.  Access via HTTP requests.  Scripting.
A Scalable Application Architecture for composing News Portals on the Internet Serpil TOK, Zeki BAYRAM. Eastern MediterraneanUniversity Famagusta Famagusta.
Advanced Java New York University School of Continuing and Professional Studies.
Center for Component Technology for Terascale Simulation Software 122 June 2002Workshop on Performance Optimization via High Level Languages and Libraries.
GKK 1 CASC Recommended Viewing: Since this is a pictorial presentation, I’ve gone through the effort to type up what I normally say in the “notes” section.
Lesley Bross, August 29, 2010 ArcGIS 10 add-in glossary.
CCA Port, Component & Application Build Skeleton Templates “A new script toolkit for generating CCA build skeletons” Torsten Wilde and James Kohl Oak Ridge.
CIS 375—Web App Dev II Microsoft’s.NET. 2 Introduction to.NET Steve Ballmer (January 2000): Steve Ballmer "Delivering an Internet-based platform of Next.
Understanding the CORBA Model. What is CORBA?  The Common Object Request Broker Architecture (CORBA) allows distributed applications to interoperate.
CCA Common Component Architecture CCA Forum Tutorial Working Group Language Interoperable.
H Research Issues in CORBA Peter de Jong Hewlett-Packard Usenix 8/12/97 Research Issues in CORBA What keeps CORBA people awake at Night! Peter de Jong.
NeSC Grid Apps Workshop Exposing Legacy Applications as OGSI Components using pyGlobus Keith R. Jackson Distributed Systems Department Lawrence Berkeley.
© 2007 by «Author»; made available under the EPL v1.0 | Date | Other Information, if necessary Eclipse SOA Tools Platform Project Eric Newcomer IONA Technologies.
PHP TUTORIAL. HISTORY OF PHP  PHP as it's known today is actually the successor to a product named PHP/FI.  Created in 1994 by Rasmus Lerdorf, the very.
Tamara Dahlgren, Tom Epperly, Scott Kohn, & Gary Kumfert Center for Applied Scientific Computing.
CASC This work was performed under the auspices of the U.S. Department of Energy by University of California Lawrence Livermore National Laboratory under.
1 HKU CSIS DB Seminar: HKU CSIS DB Seminar: Web Services Oriented Data Processing and Integration Speaker: Eric Lo.
Extensible Plug-ins for Aspect-Oriented Programming Macneil Shonle*Ankit Shah.
Configuration Management (CM)
Component Basics CS6961 – Lecture 6 Nathan Dykman.
CCA Common Component Architecture CCA Forum Tutorial Working Group Contributors: Language Interoperability Using Gary.
Tammy Dahlgren with Tom Epperly, Scott Kohn, and Gary Kumfert Center for Applied Scientific Computing Common Component Architecture Working Group October.
Ch 1. A Python Q&A Session Spring Why do people use Python? Software quality Developer productivity Program portability Support libraries Component.
Grid Computing Research Lab SUNY Binghamton 1 XCAT-C++: A High Performance Distributed CCA Framework Madhu Govindaraju.
1 Cisco Unified Application Environment Developers Conference 2008© 2008 Cisco Systems, Inc. All rights reserved.Cisco Public Introduction to Etch Scott.
SCIRun and SPA integration status Steven G. Parker Ayla Khan Oscar Barney.
Shannon Hastings Multiscale Computing Laboratory Department of Biomedical Informatics.
Distributed Programming CSCI 201L Jeffrey Miller, Ph.D. HTTP :// WWW - SCF. USC. EDU /~ CSCI 201 USC CSCI 201L.
Presented by An Overview of the Common Component Architecture (CCA) The CCA Forum and the Center for Technology for Advanced Scientific Component Software.
Active Server Pages (ASP), also known as Classic ASP or ASP Classic, was Microsoft's first server-side script engine for dynamically generated web pages.
Tammy Dahlgren, Tom Epperly, Scott Kohn, & Gary Kumfert.
Scott Kohn with Tammy Dahlgren, Tom Epperly, and Gary Kumfert Center for Applied Scientific Computing Lawrence Livermore National Laboratory October 2,
Update on CORBA Support for Babel RMI Nanbor Wang and Roopa Pundaleeka Tech-X Corporation Boulder, CO Funded by DOE OASCR SBIR.
 Common Object Request Broker Architecture  An industry standard developed by OMG to help in distributed programming.
1 Engineering Web Based Legacy Systems By Kanchana Eramudugoda Distributed Computing – CS843.
CCA Common Component Architecture CCA Forum Tutorial Working Group CCA Status and Plans.
Getting Started with SIDL using the ANL SIDL Environment (ASE) ANL SIDL Team MCS Division, ANL April 2003 The ANL SIDL compilers are based on the Scientific.
Tammy Dahlgren, Tom Epperly, Scott Kohn, & Gary Kumfert.
Gary Kumfert & Scott Kohn Tammy Dahlgren, Tom Epperly, Steve Smith, and Bill Bosl Introducing...
CCA Distributed Framework Interoperability. Goals Assume you have two (or more) framework instances. –Assume it contains a network of component instances.
Interface definition language
1/30/2003 Los Alamos National Laboratory1 A Migration Framework for Legacy Scientific Applications  Current tendency: monolithic architectures large,
A Presentation Presentation On JSP On JSP & Online Shopping Cart Online Shopping Cart.
“Port Monitor”: progress & open questions Torsten Wilde and James Kohl Oak Ridge National Laboratory CCA Forum Quarterly Meeting Santa Fe, NM ~ October.
.NET Omid Darroudi.
CST 1101 Problem Solving Using Computers
CORBA Alegria Baquero.
Web Development Using ASP .NET
Ada – 1983 History’s largest design effort
CORBA Alegria Baquero.
JavaServer Faces: The Fundamentals
Serpil TOK, Zeki BAYRAM. Eastern MediterraneanUniversity Famagusta
Presentation transcript:

Gary Kumfert with Bill Bosl, Tammy Dahlgren, Tom Epperly, Scott Kohn, & Steve Smith Achieving Language Interoperability with

GKK 2 CASC Babel’s Scope & CCA l Babel provides language interoperability, not components. l We collaborate with CCA to add parallel distributed support l We also provide tools (Quorum & Alexandria) to facilitate component development and deployment Compilers & Linkers Operating System CCA Compliant Frameworks Component Semantics

GKK 3 CASC Release Announcement l C, C++, F77, Python(client)

GKK 4 CASC babel tar.gz l Babel code generator u written in Java l Babel runtime library u written in ANSI C l Docs (minimal) u papers, talks, javadoc html u babel101 tutorial

GKK 5 CASC Hand Coded Language Interoperability JNI Native SWIG Platform Dependent C C++ f77 f90 Python Java

GKK 6 CASC Babel Enabled Language Interoperability l Truly Object Oriented l Reference Counting l Exception Handling l RMI (future) C C++ f77 f90 Python Java

GKK 7 CASC What’s In This Release: Babel Enabled Language Interoperability C C++ f77 f90 Python Java

GKK 8 CASC Babel Has Two Types of Customers l Have a code l Want to increase their user base l Will learn SIDL l Want Babel general and powerful l Have a problem l Want to solve their problem l May never see SIDL l Want software that’s easy & trustworthy DevelopersUsers

GKK 9 CASC Babel’s Design Priorities l Performance l Developer/User dichotomy l What’s natural for each language? u Could expose C array structs in C++ u C++ style would be SIDL::array template <> array : public array_mixin { } template <> array : public array_mixin { }

GKK 10 CASC SIDL (Scientific Interface Definition Language) l Builds on Industry IDL technology u CORBA u COM l Designed for Scientific Apps u complex types u dynamic multidimensional arrays version Hello 1.0; package Hello { class World { string getMsg(); }

GKK 11 CASC version MySolverLib 0.1.0; import ESI; package MySolverLib { interface MatrixGenerator {... } class OptionDatabase { void getOption( in string name, out string val); } class Vector implements-all ESI.Vector { void setOptions( in OptionDatabase db ); } class Bizarre implements MatrixGenerator {... void setData( in array a ); }

GKK 12 CASC Many forms of language interoperable interfaces SIDL Scientific Interface Definition Language IOR Internal Object Representation XML eXtensible Markup Language Human Compatible Web Compatible Compiler Compatible

GKK 13 CASC XML enables......automated creation via higher-level tools...Type Descriptions on Shared Repositories...Browsing for Types...automated search & discovery by advanced builders

GKK 14 CASC Language Interoperability: How Babel Makes it Work Application Impls l Application: user’s LOP (Language Of Preference) l Implementation: developers LOP (Can be wrappers to legacy code) SIDL If developer used Babel, they also have a SIDL file. Stubs Skels IORs

GKK 15 CASC Language Interoperability: How Babel Makes it Work Application Stubs Skels IORs Impls l Application: user’s LOP (Language Of Preference) l Implementation: developers LOP (Can be wrappers to legacy code) l Client Side Stubs: user’s LOP to C l Internal Object Representation (IOR): Always in C l Server Side Skeletons: translates IOR (in C) to developer’s LOP

GKK 16 CASC l Basic Types u bool u char u int u long u float u double u fcomplex u dcomplex u string u opaque l Basic Types u bool u char u int u long u float u double u fcomplex u dcomplex u string u opaque l Extended Types u Objects u enumerations u arrays of basic types u arrays of objects u (arrays are multidimensional, no arrays of arrays) l Extended Types u Objects u enumerations u arrays of basic types u arrays of objects u (arrays are multidimensional, no arrays of arrays) l Modes u in u out u inout u return value l Modes u in u out u inout u return value l OO Method Dispatch u regular u final u static u interfaces u classes l OO Method Dispatch u regular u final u static u interfaces u classes l Exception Handling l For All Combinations of Languages u CC u C++C++ u F77F77 u Python l For All Combinations of Languages u CC u C++C++ u F77F77 u Python How Much Language Interoperability Have We Achieved? l 1431 test cases (and counting)

GKK 17 CASC Test History sparc-sun-solaris2.7-gcc # Test Cases Date babel 0.5.x babel 0.4.x C++ start Parser start ANSI C start Python start F77 start IOR Rewrite

GKK 18 CASC What we foresee, based on experience with our tests... Language Interoperability Developer Concerns: Configuration, Packaging, & Deployment User Concerns: Installation Trust

GKK 19 CASC These aren’t new problems... But they are on a larger scale Developer Concerns: Configuration, Packaging, & Deployment User Concerns: Installation Trust

GKK 20 CASC For Example... l Consider the following statements... u Java is more portable than C u C is more portable than C++ u C++ is more portable than F77 l “portable” in a different sense u Java doesn’t need to be recompiled (like C) u C is mature, isn’t as hard to parse (as C++) u C++ can bind to C or Java easier than F77 l BUT F77 is also more portable than C because of header/library issues Babel’s regression tests have the worst of all worlds!!!

GKK 21 CASC For Example... l To support Python and Java u All libraries must be shared (*.so) not statically linked (*.a) l C++ shared libraries are problematic u Exception support is platform/compiler dependent u Linking issues when interoperating with other languages l Can create valid shared library with uncatchable exceptions

GKK 22 CASC Babel’s Configuration/Build l GNU Make l Autoconf configuration l Automake build Makefiles l Libtool shared libraries l CUTE custom testing l python’s own build system l java’s built-in (broken) make l helper scripts l fixes to autoconf, automake & libtool l lots of hacks

GKK 23 CASC Test History sparc-sun-solaris2.7-gcc # Test Cases Date babel 0.5.x babel 0.4.x IOR Rewrite Configure/Build/Repository faults, not software failures!!!

GKK 24 CASC Problems affect the User too... l How does a user get and install “language interoperable” software? u Binary: if supplied by developer u Source:  Assume “configure; make install”? l How to link into application? u If any C++ code, must use C++ linker u Which C++ to use? C++ has no std binary interface

GKK 25 CASC Crux of the problem l We’re building 21st century technology... l... using 30 year old tools. Make Bourne shell Autoconf (M4) Automake (perl) libtool (perl/sh) JavaPythonF77C++ C Autoheader aclocal

GKK 26 CASC Solution l Integrated config, build, package, test and management system. u no make inside!  can have action create many files  understands directories u uses real database u program all aspects in one language u MUST BE OPEN SOURCE

GKK 27 CASC In the mean time... l Babel works on other platforms, just not automated config/testing u Java code generator (precompiled) u ANSI C runtime library (no problem) l Babel’s tests are (necessarily) pathological worst-case examples l We didn’t create these problems, we just exercise them aggressively

GKK 28 CASC Future Babel: Will Provide More Build Help l “babel.make” u currently lists code generated u may add additional flags, macros, etc. l configure u currently used for regression tests u may generate artifacts useful for developers  helper scripts  warnings

GKK 29 CASC Internet Farther Future Babel: Will Do Distributed Computing Application Marshaler Line Protocol Unmarshaler Stubs IORs Skels IORs Impls

GKK 30 CASC Closing Remarks l Babel Beta 0.5 is released l Babel enables language interoperability u connect C, C++, F77, and Python u provide a uniform object-model, even in non-OO languages. l Deploying & Installing Language Interoperable Code in General u is still very hard u has broken every tool we use

GKK 31 CASC The End Bill Bosl, Tammy Dahlgren, Tom Epperly, Scott Kohn, Gary Kumfert, & Steve Smith

GKK 32 CASC A.3.Can HPC and Component Technology REALISTICALLY be integrated? l Yes. l But HPC Components have huge (and unique) hurdles: u Diverse Architectures u Diverse OS’s u Integration of SPMD and Dist. Comp. u Archaic Pkg/Devel/Config/Build tools u Non-CS trained (or interested) users

GKK 33 CASC B.3.Can the HPC community really afford yet another compiler such as Babel? l Is language interoperability important? l How important?

GKK 34 CASC B.3.How is the Java subset of C++ inadequate as an HPC IDL? l What is a “Java subset of C++” ? l How does one u use it to bind to other languages? u get a common inheritance model? u get a common exception model?

GKK 35 CASC B.5.What is the role of traditional (parallel) tools in component technology? l Hopefully, they’re replaced by modern parallel tools.

GKK 36 CASC B.9.What will be the configuration issues for components...to be portable and high-performance? l Lots. l Lack of Configuration, Packaging, & Deployment tools u is the #1 Achilles heel for components u is the #1 day-to-day pain in Babel development u #1 cause for failure in regression tests

GKK 37 CASC C.1.Will anyone actually make the effort to componentize their applications software? l Yes. u But it will be messy. l Efforts to Babelize at LLNL: u hypre - want OOP in ANSI C & automatic F77 bindings u ALPS - want scripting interface for laser plasma physics u SAMRAI - framework used in ALPS

GKK 38 CASC D.4.Should components be viewed as mostly a library/runtime developer technology? l No. l I used components in this PowerPoint Presentation l Users can use components without knowing they’re using them. u This is harder to achieve in UNIX than other platforms

GKK 39 CASC Work performed under the auspices of the U. S. Department of Energy by the University of California, Lawrence Livermore National Laboratory under Contract W-7405-Eng-48 UCRL-PRES Jul 2001