Friday Jun 07, 2013

What's New in CDI 1.1?

Introduced in Java EE 6, CDI is clearly a key API to standardize dependency injection in enterprise Java. A lot of the work related to CDI in Java EE now involves treating CDI as an effective mechanism for unifying the Java EE component model and aligning others specs around it to make for a more cohesive platform. Examples of this on-going effort in Java EE 7 includes aligning the JSF component model/scoping to CDI, decoupling declarative transactions from the EJB component model through the JTA 1.2 @Transactional CDI interceptor, modernizing the JMS 2 API utilizing CDI, better support for CDI in Bean Validation 1.1 and many others.

CDI 1.1 itself is a point release that has a relatively long list of smaller but nonetheless important fixes and enhancements. In a recent blog post, CDI 1.1 specification lead Pete Muir does a good job of listing out the changes. The post is especially valuable for the referenced links that you can dig into to see if any of the changes are immediately useful to you if you have adopted CDI already.

Friday May 31, 2013

Java EE@JeeConf 2013

JeeConf 2013 was held in historic Kiev on May 24-25. JeeConf is the most significant Java conference in the Ukraine. The conference attracted a bevy of local and international speakers including Venkat Subramaniam, Yakov Fain, Talip Ozturk, Jacek Laskowski, Mohamed Taman and Sander Mak. Topics included Java SE, NoSQL, cloud, HTML5/JavaScript, Arquillian and of course Java EE.

I delivered two very well attended talks - my talk on Java EE 7 (our flagship talk) and a talk on using NoSQL databases in Java EE. More details on the sessions and JeeConf, including the slide decks and code, posted on my personal blog.

Monday May 06, 2013

Integrating WebSockets and JMS with CDI Events in Java EE 7

One of the first things you will want to know about Java EE 7, is how you can integrate some of the new APIs like WebSockets, with existing ones like JMS. That's why I decided to write this article "Integrating WebSockets and JMS with CDI Events in Java EE 7". What I try to demonstrate here, is how two distinct APIs can be used together to deliver something that is not explicitely defined in the specifications, but with some cool integration using CDI Events, an async server-side data push can be implemented with no more than the standards at your hand.

The article will show you how to code your first WebSocket server endpoint, then how by using a Stateless SessionBean you can send messages to a JMS Queue, and finally, how to receive them again by using a MessageDriven Bean that fires CDI events with the payload back to the WebSocket. Simple, straightforward and small code, that takes you through several specifications and releases available starting from now, the Productivity++ Java EE 7.

Thursday Mar 07, 2013

Java EE@DevNexus 2013

DevNexus 2013 was held in Atlanta on February 18-19. For those unaware, Organized by the Atlanta JUG, DevNexus is the most significant Java conference in the South Eastern US. As usual, DevNexus attracted a bevy of world class speakers including Ben Evans, Neal Ford, David Geary and Venkat Subramaniam.

I delivered two full-house Java EE sessions - one on Java EE 7 (our flagship talk) as well as a session on using NoSQL in Java EE via JPA and CDI. More details on the sessions and DevNexus, including slide decks and code examples, posted on my blog.

Wednesday Jan 23, 2013

Is it really EJB vs CDI?

With the advent of CDI into Java EE 6 and subsequent greater alignment of Java EE and EJB with CDI in Java EE 7, an interesting set of questions keep coming up every now and then: when do I use CDI? When do I use EJB? Do you need EJBs any more? Are EJBs more heavyweight than CDI?

David Blevins (the powerhouse developer behind OpenEJB and TomEE) provided his insightful and eloquent thoughts on these questions. David really knows what he is talking about since in addition to OpenEJB, he is also a core committer on the Apache CDI implementation, OpenWebBeans. We would even go so far as to say it is required reading for anyone interested in Java EE, EJB or CDI. Enjoy!

Monday Nov 26, 2012

Pete Muir Interview on CDI 1.1

The 109th episode of the Java Spotlight podcast features an interview with CDI 1.1 spec lead Pete Muir of JBoss/Red Hat. Pete talks with Roger Brinkley about the backdrop to CDI, his work at JBoss, the features in CDI 1.1 and what to expect in the future.

What's going on behind the scenes and the possible contents for CDI 1.1+ are particularly insightful. You can listen to the full interview here.

Monday Nov 19, 2012

CDI 1.1 Public Review and Feedback

CDI 1.1 is humming along nicely and recently released it's public review draft. Although it's just a point release, CDI 1.1 actually has a lot in it. Some the changes include:

  • The CDI class, which provides programmatic access to CDI facilities from outside a managed bean
  • Ability to veto beans declaratively using @Vetoed
  • Conversations in Servlet requests
  • Application lifecycle events in Java EE
  • Injection of Bean metadata into bean instances
  • Programmatic access to a container provided Producer, InjectionTarget, AnnotatedType
  • Ability to override attributes of a Bean via BeanAttributes
  • Ability to process modules via ProcessModule
  • Ability to wrap the InjectionPoint
  • Honor WEB-INF/classes/META-INF/beans.xml to activate WEB-INF/classes in a bean archive
  • Global ordering and enablement of interceptors and decorators
  • Global selection of alternatives
  • @New deprecated
  • Clarify interceptors and decorators must be implemented using proxying
  • Allow multiple annotated types per Java class
  • Allow Extensions to specify the annotations that they are interested in

The CDI 1.1 expert group has a number of open issues that they would like immediate feedback on. These include critical issues like bean visibility, startup events and restricting CDI scans. Read the details here and let your voice be heard!

Tuesday Apr 24, 2012

Server Side Events with HTML 5 and GlassFish

While this is not the first post on Server Side Events,  Bhakti and Jitu continue the discussion of using Server-Side Events (SSE) as HTML 5, Java EE 7, and GlassFish Server move full steam ahead.

The blog posts include example source code that can be deployed to recent (trunk) builds of GlassFish Server.  Bhakti uses SSE and CDI to build an application that tracks a twitter search, while Jitu discusses how GlassFish adds a bit more abstraction for the developer and references a video player sample application available in the GlassFish trunk.

Friday Mar 23, 2012

Tab Sweep - Upgrade to Java EE 6, Groovy NetBeans, JSR310, JCache interview, OEPE, and more

Recent Tips and News on Java, Java EE 6, GlassFish & more :

Radio Receiver

Implementing JSR 310 (New Date/Time API) in Java 8 Is Very Strongly Favored by Developers (java.net)
Upgrading To The Java EE 6 Web Profile (Roger)
NetBeans for Groovy (blogs.oracle.com)
Client Side MOXy JSON Binding Explained (Blaise)
Control CDI Containers in SE and EE (Strub)
Java EE on Google App Engine: CDI to the Rescue - Aleš Justin (jaxenter)
The Java EE 6 Example - Testing Galleria - Part 4 (Markus)
Why is OpenWebBeans so fast? (Strub)
Welcome to the new Oracle Enterprise Pack for Eclipse Blog (blogs.oracle.com)
Java Spotlight Episode 75: Greg Luck on JSR 107 Java Temporary Caching API (Spotlight Podcast)
Glassfish cluster installation and administration on top of SSH + public key (Paulo)
Jfokus 2012 on Parleys.com (Parleys)
Java Tuning in a Nutshell - Part 1 (Rupesh)
New Features in Fork/Join from Java Concurrency Master, Doug Lea (DZone)
A Java7 Grammar for VisualLangLab (Sanjay)
Glassfish version 3.1.2: Secure Admin must be enabled to access the DAS remotely (Charlee)
Oracle Announces the Certification of the Oracle Database on Oracle Linux 6 and Red Hat Enterprise Linux 6

Monday Jan 23, 2012

Java EE 7 progress - CDI 1.1 EDR and Weld 2.0 Alpha

Having the Early Draft Review of JSR 346 (CDI 1.1) available for review and studying is good but having an early implementation to go along is even better.

That's what JBoss' Jozef Hartinger has recently announced on his blog - an alpha release of the future Weld 2.0 reference implementation.

Weld Logo

According to Jozef, the main purpose of this release is in fact to provide a feature-complete implementation of this draft CDI specification and features such as CDI.current(), application life-cycle qualifiers, beans.xml manipulation using ProcessModule, and many others.

As a reminder CDI 1.1 is scheduled to be integrated in the upcoming Java EE 7 platform later this year.

Monday Nov 28, 2011

NetBeans 7.1 Release Candidate (RC) 1 is here

NetBeans 7.1 RC 1 is here. Grab it from the usual place!

As previously discussed, NetBeans 7.1 has full JavaFX 2.0 support but also a lot in store for Java EE and Web developers (CDI in particular is very neat).

ALT_DESCR

One of my personal favorite feature is that Deploy on Save is now set by default on Maven projects. Maybe one important part that didn't get proper coverage so far is CSS 3 support, an important feature which can be used from both Java EE and PHP but also from JavaFX.

Java Downloads of NetBeans 7.1 start at 69 MB and a 166 MB download will get you everything you need to start coding right away with Java EE - a great tool and a fully integrated runtime (GlassFish 3.1.1).

You really need to be not using Maven, not be interested in recent standards (Java EE 6, Java SE 7, Java FX 2.0, ...) and like to hand-craft assemble your IDE to afford ignoring NetBeans nowadays.

Thursday Oct 20, 2011

CDI 1.1 progress - yet another Early Draft

On the last day of JavaOne 2011, JBoss' Pete Muir announced that CDI 1.1 (JSR 346) had reached the early draft stage.

While a hot topic it seems, XML configuration for CDI has not yet made it into the current specification.

ALT_DESCR

Other yet-to-be-addressed features as well as other Java EE 7 areas worth tracking are listed on Pete's blog entry.

Java EE 7 is really under heavy development and bleeding edge connoisseurs are probably getting excited.