In the JBoss world we have a base aspect oriented framework, but what the real power of JBoss 4 is the actual aspects we're writing. Some of the aspects we're writing are transactional objects, transactional cache. You can write a plain Java class, create an instance of that at run-time and insert it into our transactional cache and the state of that object will become transactional. What that means is that if you change any fields of that object at runtime, within a transaction, and you roll back, the original state will be applied to that object. So we have transactional, ACID objects.
Building upon that we have a distributed cache as well. So you can take, again, a plain Java object, insert it into our distributed cache, and the object will be automatically replicated across the entire cluster.
Those are some of the dynamic aspects we have. We also have the declarative meta-tag aspects.
Actually, some of the other things we're doing is we're taking J2EE and chopping it up and giving it all to you à la carte. For instance, we have transaction demarcation, for a plain Java object. You can say, "for this method I want it to start a new transaction." Same thing you have in J2EE with EJBs, you can apply that to a plain Java object in our framework.
We also have declarative role based security. Role based security, we have that as well, that you can apply to a plain Java class, per method. So besides the dynamic caching stuff and the J2EE à la carte, we also have the ability to remote plain Java objects. So what this means is that instead of using RMIC and doing compilations to create stubs, all you have to do is create an object at run-time. Tell the JBoss run-time that you want this object to be remote, and any protocol can talk to that object, so plain sockets, RMI. We're also writing a Corba implementation as well. So those are some of the aspects we're running.