Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 4.0

Student: Guilherme Moraes Armigliatto

Student e-mail: FirstName LastName AT gmail DOT com

Student Major: Computer Science

Student Degree: Master

Student Graduation: October 2009

Organization: Apache Software Foundation

Assigned Mentor: Will be determined by the community

Abstract: 

The goal of the project is to create a new kind of implementation (e.g., <implementation.scala>) that takes advantage of the language features thus providing better support for more advanced usage of the language.

Detailed Description:

Scala is a multi-paradigm programming language designed to integrate features of object-oriented programming and functional programming.

Scala's operational characteristics are the same as Java's. The Scala compiler generates byte code that is nearly identical to that generated by the Java compiler. In fact, Scala code can be decompiled to readable Java code, with the exception of certain constructor operations. To the JVM, Scala code and Java code are indistinguishable. Based on this feature, at this moment, Tuscany supports components written in Scala which are compiled into JVM bytecode and ran with the java interpreter.

However, in order to take advantage of all the language features an explicit new implementation type would be necessary. In this manner, features like support for defining anonymous functions, support to higher-order and nested functions, lazy variable initialization and currying of functions would be addressed using the new implementation type.

The initial idea is to developing an implementation type similar to the Groovy one. A component can use a Groovy script through the implementation.script:

<component name="Component1">

<tuscany:implementation.script script="GroovyScript.groovy"/>

</component>

In a similar way, a Scala implementation type could be defined as:

<component name="Component1">

<tuscany:implementation.scala script="ScalaSource.scala"/>

</component>

The “ScalaSource.scala” provides the implementation for the business component logic using the Scala programming language.

Since Tuscany’s runtime environment has a modular and pluggable architecture, a new implementation type can be added with low (even zero) impact in the Tuscany´s core. Thus, the development and integration of this feature will not have impact in the other blocks.

Example Scenario:

The building of an example scenario would be useful to help whatever person who would like to understand, in practice, the behavior of the new feature that will be developed, as well as guide the development steps.

An existing example, like the store (sca-src/samples/store), would be extended/modified (or even rewritten) to support components written in Scala language through the implementation.scala.

Development Schedule:

April 25 - May 23

  • Getting more familiar with Tuscany extension model and Scala programming language

May 23 - July 14

  • First Phase of the development: define and implement the implementation.scala type.

July 15 - 2011

  • Mid-term evaluation

July 15 - August 15

  • Second Phase of development: Creating the scenario example

August 16 - August 25

  • Update the Tuscany Wiki with some documentation that explain how to use the new feature

August 26 - 2011

  • Final Evaluation
About Me:

I am Master degree student in Computer Science at the University of Campinas (UNICAMP), Brazil. My thesis, titled “Automatic Image Annotation using Descriptors of Images, Visual Dictionaries, Genetic Programming and Association Rules”, gave me the opportunity to learn and get fluent in the following programming languages: Python, Java, C, Shell Script (Bash).

References:

http://en.wikipedia.org/wiki/Scala_%28programming_language%29

http://tuscany.apache.org/