Programming Languages 2010-01-31, perfSONAR-PS Developers Meeting Aaron Brown, Maxim Grigoriev, Eric...

11
Programming Languages Programming Languages 2010-01-31, perfSONAR-PS Developers Meeting Aaron Brown, Maxim Grigoriev, Eric Pouyoul

Transcript of Programming Languages 2010-01-31, perfSONAR-PS Developers Meeting Aaron Brown, Maxim Grigoriev, Eric...

Page 1: Programming Languages 2010-01-31, perfSONAR-PS Developers Meeting Aaron Brown, Maxim Grigoriev, Eric Pouyoul.

Programming LanguagesProgramming Languages

2010-01-31, perfSONAR-PS Developers MeetingAaron Brown, Maxim Grigoriev, Eric Pouyoul

Page 2: Programming Languages 2010-01-31, perfSONAR-PS Developers Meeting Aaron Brown, Maxim Grigoriev, Eric Pouyoul.

• Goal– To survey programming languages to see which best meet our

needs given existing constraints• Constraints

– We already have a substantial codebase written in Perl, along with a developer-base that understands it

2 – 04/19/23, © 2009 Internet2

Programming Language Choice

Page 3: Programming Languages 2010-01-31, perfSONAR-PS Developers Meeting Aaron Brown, Maxim Grigoriev, Eric Pouyoul.

• Support For Web Services– Which web services? All WS-*? Other technology?

• Can/Should we use something else to implement the same functionality?

• Available Frameworks For Developing Our Services– Most languages have MVC support, but will that meet the needs

of all our services?• Packaging

– What package types should we support?– How do we handle dependencies?

3 – 04/19/23, © 2009 Internet2

Needs

Page 4: Programming Languages 2010-01-31, perfSONAR-PS Developers Meeting Aaron Brown, Maxim Grigoriev, Eric Pouyoul.

• Stability Of Language– Will the language be undergoing major changes in the near term?– How will those changes affect modules we may depend on, or any

code that we may write?• Performance

– How do we define expected performance?– Take advantage of multiple processors/multiple cores.

• Support For An XML Database– In the short and medium term, some services will depend on

XQuery which means an XML Database.

4 – 04/19/23, © 2009 Internet2

Needs

Page 5: Programming Languages 2010-01-31, perfSONAR-PS Developers Meeting Aaron Brown, Maxim Grigoriev, Eric Pouyoul.

• Which languages to look at?– Perl– Java– Python– Ruby– PHP

5 – 04/19/23, © 2009 Internet2

Languages

Page 6: Programming Languages 2010-01-31, perfSONAR-PS Developers Meeting Aaron Brown, Maxim Grigoriev, Eric Pouyoul.

• Support For Web Services• Available Frameworks For Developing Our Services

– There is Catalyst which provides an MVC framework. The ls registration, service maintenance threads, and scheduled tasks would need to be built using a different framework.

• Packaging– There are RPM repositories containing most dependencies we have. Longer term, I’m not sure

how much we can depend on them.• Stability Of Language

– Perl6 is slated for a future release. It is not backward compatible to perl5 but contains support for calling perl5 modules. There are ways to call perl6 code from the perl5 scripts. How slow uptake, and how long Perl5 is maintained is somewhat unknown.

• Performance– Perl seems to perform well enough for our needs now.– Perl6 supposed to perform even better.

• Support For An XML Database– There are bindings for Oracle Berkeley XML Database, but that database leaves some to be

desired. • Other benefits

– We already have about 30-40k lines of code in Perl and group of core developers• Other downsides

– Recruiting new perl developers might be hard

6 – 04/19/23, © 2009 Internet2

Perl

Page 7: Programming Languages 2010-01-31, perfSONAR-PS Developers Meeting Aaron Brown, Maxim Grigoriev, Eric Pouyoul.

• Cost Of Transition– Requires a complete re-design. May be able to reuse some of the MDM solution.

• Support For Web Services– Extensive. OSCARS uses CXF.

• Available Frameworks For Developing Our Services– Numerous. OSCARS uses CXF/Spring.

• Packaging– Needed libraries can be included with the software.

• Stability Of Language– Moving from 1.5 to 1.6 has some configuration file changes, but the code is backwards

compatible. Future iterations are likely to remain compatible.– 1.5 is out of the life, CE7 is coming

• Performance– Adequate for our needs, multithreading supported

• Support For An XML Database– eXist support and since Sun and Oracle merged one can expect support for XMLDB

• Other benefits– Can work more closely with the MDM developers and the OSCARS-IDC developers.

• Other downsides– Increase size of codebase

7 – 04/19/23, © 2009 Internet2

Java

Page 8: Programming Languages 2010-01-31, perfSONAR-PS Developers Meeting Aaron Brown, Maxim Grigoriev, Eric Pouyoul.

• Cost Of Transition– We would need to rewrite our services from scratch. There are some basic modules for

providing perfSONAR services already written in Python.• Support For Web Services

– Python has a variety of web service libraries• Available Frameworks For Developing Our Services

– Django• Packaging

– There aren’t RPMs available for many of the python modules which can make packaging dependencies more difficult.

• Stability Of Language– Python 3000 has been released, and is not backwards compatible with the Python 2 series.

This includes both the language syntax and the modules. It’s unknown how this might split the community.

• Performance– Similar to Perl

• Support For An XML Database– Sleepycat XML DB library– Sedna library

• Other benefits– We have a number of developers proficient in python

• Other downsides

8 – 04/19/23, © 2009 Internet2

Python

Page 9: Programming Languages 2010-01-31, perfSONAR-PS Developers Meeting Aaron Brown, Maxim Grigoriev, Eric Pouyoul.

• Cost Of Transition– We would need to rewrite our services from scratch.

• Support For Web Services– There’s a strong Ruby framework (WSO2) for developing web services

• Available Frameworks For Developing Our Services– Ruby on Rails, and WSO2

• Packaging– There aren’t RPMs available for many of the Ruby modules which can

make packaging dependencies more difficult.• Stability Of Language

– Ruby 2 is slated for a future release, and isn’t going to be 100% backwards compatible.

• Performance– Worse than python/perl, but has been improving

• Support For An XML Database– Sedna library

• Other benefits– Considered to be a next Web’s “cool thing”

• Other downsides– We have no developers proficient in Ruby

9 – 04/19/23, © 2009 Internet2

Ruby

Page 10: Programming Languages 2010-01-31, perfSONAR-PS Developers Meeting Aaron Brown, Maxim Grigoriev, Eric Pouyoul.

• Cost Of Transition– We would need to rewrite our services from scratch. Syntax resembles perl

somewhat.• Support For Web Services

– WSF for PHP• Available Frameworks For Developing Our Services

– There are a number of MVC frameworks. However, things like LS registration and service maintenance would need to be done outside the framework

• Packaging– There aren’t RPMs available for many of the Ruby modules which can make

packaging dependencies more difficult.• Stability Of Language

– PHP6 is still a “future” release. Looks to be mostly backward compatible.• Performance

– Similar to perl/python• Support For An XML Database

– Sedna library– Wrapper for eXist DB– Oracle XML DB

• Other benefits– Large web development community. Huge variety of APIs.

• Other downsides– Although some of us have/had some exposure to PHP we don’t have very

proficient developers in PHP

10 – 04/19/23, © 2009 Internet2

PHP

Page 11: Programming Languages 2010-01-31, perfSONAR-PS Developers Meeting Aaron Brown, Maxim Grigoriev, Eric Pouyoul.

Programming LanguagesProgramming Languages2010-01-31, perfSONAR-PS Developers MeetingAaron Brown, Maxim Grigoriev, Eric Pouyoul

For more information, visit www.internet2.edu

11 – 04/19/23, © 2009 Internet2