blob: faf3584d55289d2e7af2d897e27d87976d8e993e [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Language" content="en-us" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="default_style.css" />
<title>Equinox Aspects 1.0 M1 News</title>
</head>
<body>
<h1>Equinox Aspects 1.0 M1 - New and Noteworthy</h1>
<p>
The Equinox Aspects incubator project is now aligning itself with the general development
process of the other Eclipse projects and is moving towards graduation. Therefore we are
starting this effort by producing a number of milestone builds over the next weeks and months
and share them with you - including a new and noteworthy announcement.
</p>
<ul>
<li>
<a href="#General">General</a>
</li>
<li>
<a href="#Weaving">Weaving</a>
</li>
<li>
<a href="#Caching">Caching</a>
</li>
<li>
<a href="#Documentation">Documentation</a>
</li>
</ul>
<table border="0" cellpadding="10" cellspacing="0" width="80%">
<tr>
<td colspan="2">
<hr/>
<h2><a name="General" id="General"></a>General</h2>
<hr/>
</td>
</tr>
<tr>
<td width="30%" valign="top" align="left">
<b>Bundle renaming</b>
</td>
<td width="70%" valign="top">
To be a better citizan of the Eclipse community the Equinox Aspects bundles were renamed
to fit into the naming conventions of the Equinox project.
<ul>
<li>org.aspectj.osgi -> org.eclipse.equinox.weaving.hook</li>
<li>org.aspectj.osgi.service.weaving -> org.eclipse.equinox.weaving.aspectj</li>
<li>org.aspectj.osgi.service.caching -> org.eclipse.equinox.weaving.caching</li>
<li>org.aspectj.osgi.service.caching.j9 -> org.eclipse.equinox.weaving.caching.j9</li>
</ul>
If you have used Equinox Aspects before this bundle renaming you just need to
update your config.ini or launch configuration. Define org.eclipse.equinox.weaving.hook as
your framework extension and start the new weaving and caching serivces instead of the old
ones.
</td>
</tr>
<tr>
<td colspan="2">
<hr/>
</td>
</tr>
<tr>
<td align="left" valign="top" width="30%">
<b>New wiki-based planning</b>
</td>
<td width="70%" valign="top">
Equinox Aspects now has a transparent project planning via the <a href="http://wiki.eclipse.org/Equinox_Aspects_Plan">
Equinox Aspects Wiki Plan</a>. You can see what we have planed for the next milestones and what the state
of the current development work is.
</td>
</tr>
<tr>
<td colspan="2">
<hr/>
<h2><a name="Weaving" id="Weaving"></a>Weaving</h2>
<hr/>
</td>
</tr>
<tr>
<td width="30%" valign="top" align="left">
<b>OSGi dynamics for aspect bundles</b>
</td>
<td width="70%" valign="top">
OSGi allows you to install, update or uninstall bundles at runtime. The same is now
possible for bundles that provide aspects to be woven into the system and for
bundles that need to be woven or that are already woven by aspects from other bundles.</br>
The effect of installing an aspect bundle at runtime is:
<ol>
<li>Read the supplement-headers from the aspect bundle</li>
<li>Update existing bundles that would be supplemented by the new aspect bundle</li>
<li>As a result of the bundle update those bundles are supplemented and woven from now on</li>
</ol>
A similar mechanism deals with bundle updates and uninstalls. In the end this means that
you have no limitations with regards to dynamics. You get somewhat a feeling of runtime
weaving.<p>
The only prerequisite is that all other bundles need to be dynamic-aware and dynamic-enabled
so that bundle updates are handling correctly by those bundles.
</td>
</tr>
<tr>
<td colspan="2">
<hr/>
</td>
</tr>
<tr>
<td width="30%" valign="top" align="left">
<b>OSGi dynamics for weaving services</b>
</td>
<td width="70%" valign="top">
We spend some time to improve the dynamics of the weaving service itself. This means that
you are now able to start and stop the weaving service itself at runtime.<p>
As a result of stopping the weaving service all woven bundles are updated to remove
the aspects being woven from those bundles. If you start the weaving service, the updating
and therefore re-weaving of already existing bundles takes place as well.
</td>
</tr>
<tr>
<td colspan="2">
<hr/>
</td>
</tr>
<tr>
<td align="left" valign="top" width="30%">
<b>Easier aop.xml lookup</b>
</td>
<td width="70%" valign="top">
In the past the lookup of the aop.xml definition files was similar to the
load-time weaving aop.xml lookup that AspectJ uses. Equinox Aspects moved away
from this kind of configuration (via org.aspectj.weaver.loadtime.configuration).
Instead you can now just put the aop.xml file into the META-INF directory and
Equinox Aspects finds it automatically without any configuration.</br>
If you would like to put the aop.xml file into a different directory you have
to define this location in the MANIFEST.MF via a special header:<p>
<b>Eclipse-AspectContext: META-INF/aspects/aop.xml</b><p>
You can do this on a per-bundle base.
</td>
</tr>
<tr>
<td colspan="2">
<hr/>
<h2><a name="Caching" id="Caching"></a>Caching</h2>
<hr/>
</td>
</tr>
<tr>
<td width="30%" valign="top" align="left">
<b>Caching now aware of versions</b>
</td>
<td width="70%" valign="top">
The caches for woven bytecodes are now aware of bundle versions. The version
information is used to identify woven bundles as well as aspect bundles.<p>
Therefore the cache is invalidated if the version of a bundle that provides
an aspect has changed. The cache is invalidated for the aspect bundle as
well as all bundles where this aspect was woven into. If a non-aspect bundle
changes its version, the cache is invalidated for this bundle only.<p>
In fact the cache is not flushed but changed to a different partition. This
means that the cache works fine if you switch, for example, between different
bundle sets.
</td>
</tr>
<tr>
<td colspan="2">
<hr/>
</td>
</tr>
<tr>
<td align="left" valign="top" width="30%">
<b>Standard caching performance improvements</b>
</td>
<td width="70%" valign="top">
We worked a lot on the performance of the standard caching service. It now
works a lot faster. The improvements include:
<ul>
<li>Caching works for bundles which are not woven without writing unchanged
bytecode to the cache. The cache controls that unwoven bundles are not
passed to the weaver anymore</li>
<li>The lookup performance for cached bytecodes improved drastically</li>
</ul>
Starting the system from cache is now at a similar speed as starting the
system without equinox aspects.
</td>
</tr>
<tr>
<td colspan="2">
<hr/>
<h2><a name="Documentation" id="Documentation"></a>Documentation</h2>
<hr/>
</td>
</tr>
<tr>
<td align="left" valign="top" width="30%">
<b>New "Hello world!" demo</b>
</td>
<td width="70%" valign="top">
The <a href="http://www.eclipse.org/equinox/incubator/aspects/downloads/demo/equinox-aspects-demo-hello.zip">"Hello world!" demo</a>
has been updated to the latest Equinox Aspects target.
In particular the new bundle naming is considered.
</td>
</tr>
<!--
<tr>
<td colspan="2">
<hr/>
</td>
</tr>
<tr>
<td width="30%" valign="top" align="left">
<b>Quick-start screencast</b>
</td>
<td width="70%" valign="top">
Whatever
</td>
</tr>
-->
<tr>
<td colspan="2">
<hr/>
</td>
</tr>
</table>
</body>
</html>