Programming Languages 2010-01-31, perfSONAR-PS Developers Meeting Aaron Brown, Maxim Grigoriev, Eric...
-
Upload
vincent-jefferson -
Category
Documents
-
view
213 -
download
0
Transcript of Programming Languages 2010-01-31, perfSONAR-PS Developers Meeting Aaron Brown, Maxim Grigoriev, Eric...
Programming LanguagesProgramming Languages
2010-01-31, perfSONAR-PS Developers MeetingAaron 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
• 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
• 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
• Which languages to look at?– Perl– Java– Python– Ruby– PHP
5 – 04/19/23, © 2009 Internet2
Languages
• 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
• 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
• 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
• 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
• 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
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