Seam 3 Interview
Java Magazin author Michael Schütz speaks to Seam project lead Pete Muir, and finds out which parts of Seam 3 developers can already get their hands on……
Java Magazin author Michael Schütz met up with Seam project lead
Pete Muir at JUDCon 2010 in Berlin, to ask him about the upcoming
Seam 3 release, as well as finding out whether we can expect Seam
in the Cloud anyime soon……
Michael Schütz: Hi Pete, thanks for your time.
Could you please briefly tell us about yourself and your current
jobs and responsibilities?
Pete Muir: Hi Michael. I’m currently the
project lead for Seam, Weld, and the CDI TCK. I’m also a co-founder
of the Arquillian project, and work with the JBoss AS team. I’ve
worked for Red Hat on JBoss projects for the last 3 years, and
before that was involved in the Seam community for a year or
Michael Schütz: Are you having a good time here
Pete Muir: I’m having a really good time,
thanks. It’s been a while since I visited, it’s a great city! I’m
in town for the 2nd JUDCon (the JBoss Users and Developers
Conference), which is focused on technical presentations of JBoss
projects, giving attendees a great chance to discuss their
favourite projects, and to influence the direction of them. I’m a
great believer that what makes a good framework developer is really
understanding the problems the framework solves – this is obviously
at odds with working on the framework full time, so I really value
the chance to talk to people in depth about how they are using the
projects I work on and listen to their pains.
Michael Schütz: That makes a lot of sense. OK,
let’s talk about Seam 3. What most people probably might be
interested in most is when will Seam 3 be GA- ready? Which parts of
Seam 3 can I use just now?
Pete Muir: Seam 3 is a superset of CDI. Think
of CDI as the core of Seam 3 – it’s the basic programming model for
your application components, and for the built-in components that
make up the Seam framework. Weld is our implementation of this
programming model. Based on this programming model, Seam provides a
full framework for application development, including integration
with various non-standard open source technologies. JSR-299 defines
a very powerful framework for portable extensions. Seam 3 is
implemented as a set of portable extensions, or modules, for
JSR-299, that run in any environment which supports JSR-299
(including any Java EE 6 environment).
The following diagram illustrates the relationship between Seam
2, Seam 3 and Weld/JSR-299:
Seam is the vehicle which delivers BPM integration, Seam
Security, Drools integration, RESTeasy integration, PDF and email
templates, Excel generation, etc. You can think of Seam as the
goodies. Seam will also contain patches for Java EE, like JSF fixes
(yes, still) and Seam-managed persistence.
We are aiming to deliver the full 3.0.0 release of Seam this
year, however some of the many components are already available.
These include the CDI core contextual DI engine, and integrations
with the Java EE platform, including JSF, Servlet, JAX-RS, EJB and
WS. These are all stable. There is also a beta of Weld Extensions,
which is the base on which we build Seam + common beans such as
logging and resource loading. Also in beta, are GWT integration,
Seam Remoting and Seam XML. There are alphas currently available
for Seam Faces, Seam Persistence, Seam Drools and Seam
You can find out more about these modules at the Seam framework
Michael Schütz: What are the issues delaying
the shipping of Seam 3? Are the independent modules slowing down
Pete Muir: A number of things have delayed the
release beyond original estimates.
These include a decision to concentrate resources onto
Arquillian (a framework for testing your applications in the
container, find out more at the Arquillian
website), and onto Seam Forge (the successor to seam-gen, this
tool aims to provide an excellent environment in which to scaffold
new projects, not just for Seam, but for any project). We believe
that both of these projects are very important for the Java
enterprise community, and, from chatting to the community, I can
tell you that they appreciate the time and effort we have put into
creating Arquillian (and I think Seam Forge will meet with a
I don’t think the independent modules have extensively slowed
down the shipment, however I think it has slowed down some of the
alpha/beta releases of certain modules, which are waiting on
functionality provided by other modules (we have, however, used
this delay to make sure that other features of the modules are
complete). Weld Extensions, mentioned above, has been the principle
bottleneck, as it forms the base of pretty much every module;
however I’m pleased to say I just released a beta of this, which is
aimed to be API stable and should allow the other modules to steam
forward. A lot of modules have hit beta during October.
Michael Schütz: Looking at the variety of Seam
3 modules and their unfinished state, it looks like the project
added too many features into the first release. Would it make more
sense to scale down the first release?
Pete Muir: This is a question with which I have
grappled on numerous occasions. We already decided to cut quite a
few features from Seam 2 from the Seam 3 release (the prominent one
being the Seam 2 bridge), and I do strongly believe that cutting
any more would have not been possible. It’s also worth noting that
Seam 3 has many passionate contributors from the community, and
many of the modules included in Seam 3 are developed by these
contributors and hence are not taking time away from developing the
Michael Schütz: How about adding new modules?
Is there a CDI plugin center? Who would manage this?
Pete Muir: We encourage contributions from
anyone in the community (just get in contact!) who wants to develop
a new module for Seam. If we feel it fits well into the Seam stack
and it meets our guidelines for code quality, documentation and
examples then we will include it in a release of Seam.
We also moderate a social bookmarking group where anyone can
link to a CDI extension. This is open to anyone, and we encourage
anyone with an extension, or blog with ideas to link to it from the
Michael Schütz: Seam 3 requires a Java EE
6-compliant Application Server. How important is the release of
JBoss AS 6 for Seam 3?
Pete Muir: Much of Seam 3 will run in any CDI
container (for example as I mentioned above, the Seam persistence
module has a goal of allowing you to use JPA easily outside of a
Java EE environment). Current targeted environments include Java EE
6 servers, Servlet containers such as Tomcat, Jetty and Google App
Engine as well as Java SE (of course some modules, such as JMS
support make most sense in Java EE).
However, at JBoss, we strongly believe that a Java EE 6 server
is the best way to run a Seam application, and of course we think
JBoss AS 6 is the best application server to use. We also do most
testing on JBoss AS, and, of course, Red Hat’s commercial support
for Seam 3 will be available for apps running on JBoss AS.
Michael Schütz: You are Seam and Weld project
lead and involved in a couple of other projects. How do you
coordinate all the projects? Do you still have time for coding?
Pete Muir: I’m lucky that I have a great team
who are very independent, and can take an idea that we discuss and
run with it! In fact, this is pretty much a pre-requisite for being
on the team. Trust is a critical component of the way we work –
trust on my part that people will deliver what they promised, and
trust on the team’s part that they can ask questions or for advice
at any time.
I tend to work mainly through blogs, email and IRC, which I find
are great mediums for communication, and allow a great degree of
openness in the way we work. I’m not a huge user of more modern
communication mechanisms like Twitter (I’m not sure why, I just
never really got on with them), but luckily others on the team seem
to be able to cover this area. I’m also lucky that I have good
memory (especially for structural information).
I still code a lot, probably about 50% of the time (I’m lumping
all development in there actually, including fixing build systems,
debugging examples etc.). Development is why I’m here.
Michael Schütz: A lot of things are going on in
the area of infrastructure: Maven, Git, Arquillian etc. What’s the
Pete Muir: Let’s take each of these one by
Git — we’ve started moving all Seam and Weld projects to Git,
as we believe to be a much better VCS tool than SVN, and one that
fits the open source project workflow very well. Additionally, we
encourage people to fork the project and make enhancements, and
contribute them back to us, something Git makes very simple. At the
moment Weld is fully migrated to Git, and Seam is moving over
(expect this very soon).
Maven — As we’ve been developing Seam 3, Maven 3 has also been
under development and is approaching release. Maven 3 appears to
fix most of the issues with Maven 2, critically supporting BOMs (or
stack POMs) which we think are critical for consumption of Seam 3
(they allow us to provide a developer with a stack of versions and
dependencies to import into their project). Seam 3 will require the
use of Maven 3 (or of course you can use a tool such as Ant or
Arquillian– Arquillian is a critical part of the Seam
infrastructure, both for end users (who want to test their
applications) and for the Seam project (we use it to test all of
our modules). We are aiming to release Arquillian 1.0.0 this
Seamframework.org — All of the projects are hosted on seamframework.org
which provides forums, wiki and project pages. Seamframework has
recently undergone a move (to a US datacenter with better peering
arrangements than the German datacenter it was previously hosted
at), and a software upgrade which removed the bottlenecks in the
forum software. It is running very well now.
Weld — perhaps a strange one to place under “infrastructure”,
but Seam 3 is built atop of CDI… We are aiming to include Weld
1.1.0 in both JBoss AS 6.0 and GlassFish 3.1. Weld 1.1.0 contains
performance and memory improvements, and under our internal testing
it is performing better than Seam 2 ever did.
Michael Schütz: Do I need IDE support for
CDI/Seam? What about Eclipse/IDEA/Netbeans?
Pete Muir: At JBoss, Eclipse is our primary
focus, and through the JBoss Tools project we deliver excellent
support for CDI. It provides the regular set of deployment options,
as well as extensive validations — we aim to cover the entire
spec, and currently are validating around 100 conditions (by my
reckoning that’s the 50% of the spec you are likely to run into!).
JBoss Tools also offers auto completion and refactoring support,
not to mention support for other related projects such as JSF 2,
Drools etc. We’re planning on adding specific Seam support to JBoss
I know that Netbeans and IDEA also have CDI support.
Michael Schütz: How many developers are working
fulltime on Seam 3, at the moment?
Pete Muir: The Red Hat funded Seam team is 6
strong — myself (working on Weld, the CDI TCK, Seam 3, Arquillian
etc.) Shane Bryzak (focused on Seam 3), Marek Novotny (focused on
Seam 2 in our commercially supported JBoss EAP and on JBoss AS 6
compatibility for Seam 2), Dan Allen (working on Arquillian and
delivering the all important content explaining how to use Seam),
Aslak Knutsen (working on Arquillian) and Lincoln Baxter (working
on Seam Forge with a bit of Seam 3). We’re backed by a 3 strong QA
Some of our key developers are community contributors (for
example David Allen who is focusing on performance and scalability
for Weld or Stuart Douglas who is co-lead on Weld Extensions, as
well as writing Seam XML and Seam Persistence). Our community
contributors play a critical role in the project. Thanks guys!
We also get a lot of support from other Red Hat guys (e.g.
Marius Bogoevici who works on JBoss AS integration for Weld and
Weld core and Heiko Braun who is working on CDI integration for GWT
and Google App Engine support).
Michael Schütz: Which piece of technology
currently attracts you the most?
Pete Muir: I’ve always been pretty interested
in some of the more fundamental concerns of programming, and have
been following the future of Java with a lot of interest, along
with the proliferation of other languages such as Scala and Groovy.
I’m intrigued to see where that goes. The most impressive piece of
technology I’ve started using recently is definitely Git.
Outside of work I tend to eschew technology for the outdoors and
books — I’m not a gadgets man beyond my trusty MacBook and my Hifi
(and I don’t think these have counted as exciting new gadgets for
at least a couple of decades!).
Michael Schütz: Everyone is talking “Cloud” at
the moment. Are there plans within the Seam Framework to provide
Cloud support in any way?
Pete Muir: Yes. We’re starting by providing
integration for JClouds and Infinispan (to give you access to Data
Grids and blobs stored in the cloud) — expect an alpha any day.
We’re also developing demos that show off running Seam on JBoss AS
in EC2 (Google App Engine support is also planned). We’re using Red
Hat developed tools such as Deltacloud, JBoss Tools and SteamCannon
to run the JBoss AS instances and deploy the application.
Michael Schütz: A couple of weeks ago I read in
a posting by Gavin King about a “super secret” new project he is
working on. Is he still involved in the development process of Seam
Pete Muir: Gavin still takes a keen interest in
Seam, and I’ve sat with him one afternoon and run through all the
modules we are working on to get his feedback (which I’m pleased to
say was positive!). I’m also looking forward to Gavin’s super
secret project becoming less secret :-)
Michael Schütz: Do you have a concluding
message for our readers?
Pete Muir: Coming up, we’ll start to see GWT
really take its place as a first-class option for writing your view
layer. The GWT integration for Seam 3 will focus heavily on
integration with Errai, which provides the necessary plumbing to
export the CDI programming model directly into browser client code.
Specifically, support for CDI eventing as well as first-class
support for using Errai’s messaging framework will allow developers
to built rich, asynchronous web-based clients for their software
that break free of the traditional constraints associated with most
Errai provides first-class support for object serialization,
push messaging, straight-forward conversation management, as well
as providing an in-browser IOC/DI framework that implements the
JSR-330 spec and portions of the JSR-299 specification for the CDI
integration. The result is client code that is Java-based,
type-safe, and truly shares common APIs across server and client
Michael Schütz: Pete, thanks a lot for your