I am leading the CDI 1.1 specification, and work on JBoss Developer Framework, a set of tutorials and examples for all JBoss users. Previously, I've worked on Infinispan and I led the Seam and Weld projects, and am a founder of the Arquillian project. I've worked on a number of specifications including JSF 2.0, AtInject and Java EE 7. I am a regular speaker at JUGs and conferences such as JavaOne, Devoxx, JAX, JavaBlend, JSFDays, JBoss World, Red Hat Developer Day and JUDCon. I am currently employed by Red Hat Inc. working on JBoss open source projects. Before working for Red Hat, I used and contributed to Seam whilst working at a UK based staffing agency as IT Development Manager.
I realize that a Seam 3 status update is overdue, so without further ado let me fill you in on where we are. From my previous blog, we are aiming to include these modules in Seam 3.0:
|Module||Target Version||Code Quality||Blockers|
|Drools 5 integration||3.0||Alpha||Weld Extensions Alpha 3|
|Additional JSF 2 support||3.0||Beta||Seam Persistence Alpha 1|
|Internationalization support||3.0||Alpha||JBoss Logging 3|
|Seam Security||3.0||Alpha||Seam Persistence Alpha 1 and Seam XML Beta 1|
|XML Configuration||3.0||Beta||Weld Extensions Alpha 3|
|jBPM 3 support||3.0||Alpha|
|Additional support for RESTEasy||3.0||Alpha|
|Additional support for Servlet||3.0||Beta|
|Seam Persistence||3.0||Alpha||Seam XML Beta1|
|JMS events bridge||3.0||Alpha|
|Support for GWT||3.0||RC|
|Support for Wicket||3.0||RC|
|Reporting (Excel and PDF support)||3.0 or 3.1||Alpha|
|Seam Mail||3.0 or 3.1||Alpha|
|Exception Handling||3.0 or 3.1||Alpha|
|Scheduling support, including asynchronous events||3.0 or 3.1||Alpha|
|Seam 2 Backwards Compatibility||3.1|
|Support for JBoss ESB||3.1|
|Provisionally, support for jBPM 5||3.1|
As you can see, all modules have been started, with many in or approaching Beta (feature complete). The primary blockers are getting Weld Extensions and XML Configuration API complete - you can expect these, and the waterfall of other module releases over the next few weeks.
Once we have have alpha or beta releases of all required modules for Seam 3.0 we will put out a beta of the whole distribution - again, expect this in the next few weeks.
We purposefully do not give even estimates of an overall release date - I can only say it will be ready when it is ready!Update: if you want to track development of Seam 3, then checkout the wiki page which has an overview of the modules and will be kept up to date
Calling all Seam module contributors!
We're running a small competition for all Seam contributors - so if you've been thinking about pitching in, now would be a good time ;-)
We have a number of categories:
- Best module example
- Best module documentation (Javadoc and reference guide
- Most innovative feature
- Best API design
- Most active module promoter (e.g. blogging, tweeting)
Once Seam 3 is final, we will run a poll so that the community can select the winner for each category. And of course, we have prizes! The winning module for each category will receive a gift voucher for the Seam store - it'll be up to the module lead to distribute this as they see fit!
Happy coding :-)
Portability is one of greatest advantages of the Java platform. It represents the concept that from one application to another, from one application-server vendor to another, and from one job to another, knowledge is freely transferable; the same skills, technologies, and designs can be used with assurance that there are always multiple choices for business solutions.
Often times, in the world of open-source standards, we find ourselves solving similar problems in many places, sometimes leading to innovation, but frequently leading to frustration; this is where the world of portability takes on new meaning - with portable extensions to Contexts and Dependency Injection for Java EE (CDI).
Portable Extensions are usable on any Servlet container, application-server, or Java runtime; learn once, run anywhere - the same promise that Java guarantees.
Seam 3 represents our pick of the best CDI extensions including like custom web-application security, web-flow engines, internationalization and localization, simplified web-page development, and even mail templating or document generation - business needs that nearly every application developer must provide, but that nobody should need to re-invent.
But sometimes, you'll want something different, and that is why we have created the CDI Extensions Directory - where anybody can link their extension. These extensions might be a jar you can drop into your application through to an example someone threw together for a blog.
We encourage anyone who has written an extension to add a link in the directory, so that everyone can take advantage of it!
Many of us today need to develop a lot of data entry forms for our applications – either for collecting data or displaying it. And most of us do this using either visual tools (like Matisse) or UI languages (like Facelets). But both these approaches are very fiddly: you have to drag-and-drop, or write declarations for, every single widget and label. And that's very error prone because each of those widgets and labels has to exactly match some definition in your back-end: either the names and types in your POJOs, the field lengths in your database schema, or some other place your UI maps back to. Another common approach to developing forms is using a code generator. But these tend to produce very generic-looking UIs (usually CRUD UIs), or work only for a specific set of technologies that the generator targets.
Finally, of course, those back-end business objects evolve over time - new fields get added, field types change, etc – so we're left constantly reworking our UI screens to keep up!
Metawidget is a UI technology focused on enabling you to use your existing back-end technologies (including combinations of technologies) and your existing front-end frameworks (including different UI frameworks and mixing third-party widget libraries) to automate UI generation. It only tries to generate the forms, not your entire UI, so you still use your preferred UI toolkit to get the exact look and feel your users require. And it generates everything at runtime, not statically, so your screens automatically evolve in sync with your business objects.
Come join us for a Campground session to see Metawidget in action, and whether it can ease your UI development pain!Thanks to Richard Kennard for help putting together this session and blog entry!
I had the opportunity to present Seam and Arquillian to an enthusiastic audience in São Paulo on Saturday - I also saw a really nice presentation from Mauricio Salatino and Alexandre Porcelli explaining very clearly why you should use Drools - hopefully they will post a screencast If you were at the event, and wanted a copy of the slides (or if you are just interested), here they are:
I also just received news that the Red Hat have published a whitepaper on Seam - it's been written by Jacob Orshalick, who co-authored the Seam Framework book and is a seam contributor. Good work Jacob!
We've been starting to think about what we want to include in Weld 1.1. Of course, you can expect the usual bug fixes, as well as a few new features -- I'll outline those for you here.
A number of refinements are planned to the existing requirements -- the biggest change will be exposing our reflection abstraction API to the container. The Weld Reflection API extends the Annotated interface hierarchy from the CDI SPI, adding in additional methods to support discovery of meta-annotated classes, methods, fields, constructors and parameters, as well as some methods to complete the reflection API. You can find the API in SVN (you can glean the intention from the API, but be aware we do intend to clean it up before exposing it to the world!).
This will allow the container to replace our built in implementation (based on JDK Reflection) allowing extensive optimisations. For example, the container must scan classes for annotations for multiple components (such as JPA, EJB 3, JAX-RS, CDI, JSF, Servlet 3) - each implementation performing its own scan is clearly both a waste of time and memory (if the implementation caches this information). Further, a container might choose to use Javassist rather than JDK Reflection to provide faster scanning.
A CDI maintenance release is planned, and if finalised in time, we plan to include this update in Weld 1.1.
You can expect this release around September. If the CDI MR is not final, we will provide the latest revision of the changes in our non-portable API, allowing you to experiment with them in advance!
Anything else you think should be included? If so, get in touch!
At the last Seam meeting we ran over the the time line for Seam 3.0 release. We are aiming to have development finished by mid June, spend a month polishing up the documentation and examples, and have a release candidate ready for you to try out in mid July.
Seam 3.0 will contain:
- Drools 5 integration
- Additional JSF 2 support
- Internationalization support
- Seam Security
- XML Bean Config
- The Seam Application Framework
- jBPM 3 support
- Additional support for JAX-RS
- Additional support for Servlet
- Seam managed transactions and seam persistence contexts
- Support for transactions in Servlet Containers
and, if available in time:
Looking ahead, we're aiming to release Seam 3.1 around Christmas, which will likely add support for:
- Seam 2 Backwards Compatibility
- Spring Integration
- Reporting (Excel and PDF support)
- Support for JBoss ESB
- Provisionally, support for jBPM 5
Some of these modules have releases already (and you can expect to see more very soon), and we'll continue in this vein - so you may well find that there is some support before the Seam release is complete!
We'd also like to hear what you think - do you think we should delay the 3.0 release to get more in? What would you include in the 3.0 release if you had the choice?
It looks like I'll be doing a series of presentations in Brazil next month - the rough schedule is:
- May 8th - JBossInBossa conference in Sao Paulo
- May 12th - JUG in Brasilia (tentative)
- May 13th - JUG in Rio de Janeiro (tentative)
Currently only the Sao Paulo event is confirmed, so if you can make that, I would strongly recommend you attend!
We would like to know what you want to hear about:
- Seam 3 Overview and Roadmap
- An overview of Java EE 6
- CDI Technical Deep dive
- Test Driven Development with Java EE 6
- JSF 2 overview, highlighting a few features
The schedules for JBoss World and JUDCon have now been finalised. I'll be talking about how the Java EE 6 programming model at JUDCon; I'll present the model and also look at directions the platform is likely to take. At JBoss World Dan and I will lay out the roadmap for Seam 3 and show you how it harnesses the innovations of Java EE 6 to provide a loosely coupled collection of portable extensions for Servlet containers and Java SE as well as Java EE 6. We also have a BOF covering Seam and RichFaces (hosted by Dan, Jay and myself, with as many guests as we coerce into coming!) - so start thinking up those tough questions :-D
JBoss World is in Boston this year, and runs for four days between 22 and 25th June. It's co-located with Red Hat Summit again this year, and there are about 50 sessions on JBoss technologies. There are a host of other sessions from fellow in.relation.to bloggers, including Dan, Jay, Jason, Emmanuel and Max.
JUDCon is a new conference aiming to connect JBoss Users and Developers, with highly technical presentations. The first JUDCon is happening in the same venue as JBoss World in Boston, and runs the day before JBoss World starts - admission is free (but register now as attendance is limited)! It's up to all of us (Red Hat engineers assigned to JBoss projects, community contributors and users) to make this conference a run-away success, so I encourage you to attend, or, better yet, to submit a presentation on your favourite piece of JBoss technology.
Look forward to seeing you there!
Following on from the success of the RichFaces Design Meetings held weekly on IRC, we're going to do the same for Seam 3. We'll be holding a regular 45 minute meeting every Thursday at 13:45 in #seam-dev on irc.freenode.net. At this meeting we will cover a mix of technical architecture and project planning - if you are interested in working on a Seam module, or just want to know more about the progress of Seam 3, this is a good opportunity to drop by!
I'm also back recently from an extended holiday to Nepal, which is a good enough excuse for me to include a photo of the high point of the trip (and at 5500m of my life!).