|
|
|
|
|
Posted by: riccardo_solmi -
on Monday, September 17, 2007 - 09:59 AM |
| |
|
A new milestone release of the Whole Platform is available.
See the download page for details.
The Whole Platform is a technology for engineering the production of software.
We think that programming is an activity concerning the development of domain languages; so, we provide an Eclipse based Language Workbench for developing new languages, manipulating them using rich domain notations and transforming them using a generative model driven approach.
Two major themes have directed our efforts for this milestone release:
1) To make our query and transformation languages effective enough to begin using them instead of the underlying visitors and iterators frameworks.
2) To automate integration with existing Java libraries.
To evaluate fast if the Whole Platform meets the requirements of your generative tasks get a look to our new tutorial.
It describes a generator taking an Abstract Factory written in Java and producing a concrete factory implementation together with all abstract and concrete products interfaces and implementations.
The more relevant changes in this release are:
General
- [Eclipse] Better integration of the Whole IDE with Eclipse. We added support for launch configurations, "source" and "refactor" context menus, two new Import wizards for importing a Java class into a Java Model and a Java library into a Pojo Model.
- [Deployment] Minor reorganization of the Whole Platform source projects to isolate languages and tools used less and/or dependent on external libraries. We called respectively Whole Platform Extras and Whole Platform Enabling Features the two categories of the update site including them.
Frameworks
- [Datatype framework] Introduced a Datatype framework to factor out of Data Entities the responsibility for parsing/unparsing datatypes. The framework supports two profiles: persistence and presentation, and provides default generic implementations for both. Each language can optionally customize and extend the behavior for its datatypes.
- [Pattern Matching and Substitution] Major improvements to constructs and semantics for representing variables in patterns and templates. We added support for quantifiers and a new kind of variable: InlineVariable. Each variable is quantified with one of these values: optional, mandatory, zero or more, one or more.
An InlineVariable considers values bound to it as composite fragments to be inlined in the composite context of the variable itself.
Languages
- [Scripts] Added support for Java 6 Scripting API. Use the Scripts language to write full programs or just program fragments mixed with other Whole Languages. The Whole Platform enables the interpretation of a script if a compatible Scripting Engine is available.
- [Java] Added a Java interpreter delegating computation to the optional Bean Shell library.
- [Java] Added the ability to search the classpath by name to obtain the java model of a java source or class (in streaming).
- [Pojo] Improvements to the Pojo language to better support the use case of integrating a Java library.
The facility consists of a tool for reverse engineering a Java library (or simply a set of related classes) into a Pojo model. The tool includes a translator from a Pojo model to the corresponding Models model and a bidirectional translator between structures of objects instantiated from the Library and models of entities instantiated from the corresponding Whole language.
- [Queries] Improvements of the select construct to perform demand driven model transformations.
All kinds of path expressions including selects can now be nested on the select clause and on the where clause of a select.
Notations.
- [UI] Added support for animation into editors written in Whole.
- [UI] More pervasive use of direct caret editing in all languages notations.
- [UI] New icons for actions and editors.
- [Commons] Minor improvements to the figure of fragments to show the relative change of stage.
- [Commons] Replaced the figure of Variables with a round rectangle showing a collapsable type, the name and the quantifier symbol. A dashed line border is used for differentiating inline variables.
- [XSD] Added an XSD specific outline notation.
- [XSI] Added an XSI specific outline notation with content assist.
The Release Plan is available at:
the Whole Platform Plan page
|
|
|
| |
|