Updated 11 March 2008
Introduction
Penumbra is a Visualworks Smalltalk application that makes the Eclipse application accessible from within Smalltalk using the JavaConnect library. Penumbra and its applications were developed by Johan Brichau and Coen De Roover. It is released under the MIT Open Source license.
Download and Get Started!
Penumbra is written for Visualworks Smalltalk, and connects to the latest Eclipse (3.3). It has been tested on Mac (PPC and Intel) as well as Linux and Windows. Some cross-platform issues with file locations can still exist on the Linux and Windows platforms. Please report any if you find them.
-
Install JavaConnect. (do NOT start JavaConnect at this time, only install it)
-
Load the latest version of the Penumbra bundle that was blessed at least as a Development version from the DMP store. The DMP store is accessible from Visualworks Smalltalk using the following store profile:
environment: prog2.vub.ac.be:5432_dmpstore login: guest password: guest - During the load phase, you will be asked to enter the location of the eclipse installation. Enter the root directory of your eclipse installation. After loading, Penumbra will also try to install its plugin jar file in the Eclipse plugins directory. This jar file is packaged with Penumbra but if the generation fails for some reason, you can download it here, unzip it and install the jar file yourself in the Eclipse plugins directory.
-
Start Javaconnect and select the 'penumbra' VM configuration. See the JavaConnect website for information on how to startup.
- Click on the Penumbra icon in the VisualLauncher toolbar. The Penumbra console will pop up. You can select an Eclipse workspace and start Eclipse easily from here.
- After eclipse was started, you can use a Penumbra application that is available from the same store (see below) or program your own Penumbra application using the API (see further below)
Screenshots (click to enlarge)
The Penumbra console: each pane contains settings for a specific Penumbra application. The main pane, which is included in the Penumbra main bundle, allows to select an Eclipse workspace and start or stop Eclipse. Other panes are inserted as you install other Penumbra applications. |
|
An example workspace that uses the API of the Penumbra Eclipse plugin, which is available as the sole instance of the JavaWorld.org.dmp.penumbra.PenumbraApplication class. More information about the API can be found below. The code of the workspace prints the names of all Java compilation units (.java files) in all projects of the workspace on the Transcript. |
Penumbra Applications
Soul-Cava
![]() |
This Penumbra application allows the logic metaprogramming language SOUL to reason about Java code in an Eclipse project. Cava was written as an extension to LiCoR (Library for Code Reasoning) and, apart from a particular brand of wine, it's an abbreviation for 'Code reasoning for Java'. Soul-Cava is a bundle that can be obtained from the same DMP store as JavaConnect and Penumbra. All prerequisites (Soul, Penumbra, LiCoR and JavaConnect) are loaded automatically. |
Penumbra-Moose
![]() |
As an extension to the MOOSE reengineering environment, this Penumbra application allows to load Java code directly into a FAMIX model. The main advantage of this way of importing Java code into MOOSE is that the original parsetrees, and thus the complete codebase, is annotated on the FAMIX model. In particular, this has allowed us to interface MOOSE with the IntensiVE toolsuite. The Penumbra-Moose package is directly loadable from DMP store. Mind that it requires MOOSE to be loaded from the SCG store. |
Penumbra CDT
| coming soon | An extension to Penumbra allows to use the CDT instead of the JDT. This application thus allows to work with C and C++ projects instead of Java projects. |
Programmatic access to Eclipse
The Eclipse plugin is a Java instance that is available as the sole instance
of the JavaWorld.org.dmp.penumbra.PenumbraApplication class.
You can obtain that instance by evaluating:
JavaWorld.org.dmp.penumbra.PenumbraApplication current.
Here is the API of the org.dmp.penumbra.PenumbraApplication class:

