My ramblings on Java EE, Java SE and the crazy World of technology in general.
EJB 3 in Action: A Personal Journey
A journey of a thousand miles begins
with a single step.
I am very proud to say the second edition of EJB 3 in Action
is now published. In addition to covering EJB 3.2, we've also covered JPA 2.1, CDI 1.1, JAX-RS, WebSocket and so on. The goal is to try to cover as much of the Java EE 7 "backend" technologies as possible. As with the first edition, we've tried hard to make the book as approachable as possible and the idea is that an absolute Java EE beginner should be able to readily use the book. You can buy the book directly from Manning
. If you are not too worried about Amazon becoming the electronic version of Wal-Mart, you can also buy the book there
When I decided to take on writing the first edition of the book
so many moons ago, I
don't think any of the authors were certain what the success of
the book was going to be or where it might take us personally.
Today I have the luxury of hindsight in saying the book has been a
resounding success and that writing the book was a first step to a
whirlwind journey the past few years that I could have never
foreseen. Though there are always some nasty bumps on the road, I must confess I continue to enjoy the journey, arduous as it may be.
Since finishing the first edition, I've been increasingly more
engaged with the Java community, I found myself contributing to
various Java EE expert groups including the EJB expert group, I
got the once-in-a-lifetime opportunity to write an open source EJB
container almost from scratch and I now find myself at the
forefront of the Java EE evangelism team at SunOracle.
One casualty of all of this has been my own personal bandwidth,
which had been fairly abundant when I wrote the first edition.
This is a large part of why we had to skip a Java EE 6 and EJB 3.1
edition of this book. I do think it's all for the best since Java
EE 7 is an even stronger and more compelling platform as this
edition will demonstrate. I am extremely grateful to Michael and
Ryan for taking ownership of the book and being instrumental in
producing a worthy second edition. I am also grateful to the many
folks like you in the Java EE community I have had the privilege
to try my best to serve and work with. Lastly, I am ever thankful to my
wife Nicole and daughter Zehra for allowing me to pursue my
passion without reservation.
And so the journey continues...
This entry and the book was written entirely on my own personal time. All views voiced here are my own, not necessarily Oracle's.
Oracle, GlassFish and the Nature of Open Source
One of the not so small things I've come to appreciate about Oracle as an employee is it's stability. Unlike many other companies I've seen in my fairly non-trivial career, pretty much no one is worried about their next paycheck. This is no accident. It is a direct result of Oracle leadership's focus on maintaining a strong, profitable, resilient business. This fact is probably the clearest in the minds of my colleagues that lived through the mess that was Sun.
While a large part of the reason I joined Oracle was GlassFish (and Java EE), I realize GlassFish is subject to that same focus that helps pay my bills and put food on the table. Open Source or not, GlassFish commercial was discontinued in favor of WebLogic for good, sound reasons by rational, informed people. Get over it (and maybe your self-entitled self).
It's also been made amply clear GlassFish open source is still critical to Oracle also for good, sound reasons. Open Source is the best way of producing a high quality reference implementation that makes Java EE real for most developers as quickly as possible. Open Source is also the best way to encourage rapid innovation through community contribution and collaboration - some of which is hopefully good enough to make it into the standard and WebLogic. I also know that I personally would have been less than enthused as an independent to spend my own time writing or talking about something that is directly tied to the commercial success of any company. I would feel much more comfortable with a vendor agnostic standard and a piece of software who's primary goal is to teach and advance such a standard.
To those that don't care about any of the above - here's what's in it for you: you now have the opportunity to prove Oracle wrong if you really think you have what it takes. Nothing is stopping you from building a business around the GlassFish open source code base - you can even take advantage of the work Oracle employees are still going to put into it. That's what open source today is really about, not charity.
No one at Oracle prompted me to write this and it's written on my own personal time. I am writing it because I believe it needed to be written and I see it as the truth.
All views voiced are my own, not necessarily Oracle's.
JBoss AS Now WildFly
Since it first started as a small grassroots open source project in the late nineties, JBoss AS has come a long way. It is now one of the foremost open source Java EE application servers, if not one of the leading application servers outright. JBoss AS has always been vital to fulfilling the Java EE promise of choice, vendor neutrality and portability alongside the likes of Java steward Oracle's own GlassFish and WebLogic. Throughout the years, the JBoss community has had strong contributions to Java EE itself, including to the EJB 3, JPA, CDI, Bean Validation, JAX-RS and JSF specifications.
Now JBoss AS is being renamed to WildFly. The renaming is essentially an effort to distinguish the open source, community version of JBoss AS from JBoss EAP (JBoss Enterprise Application Platform/JBoss Enterprise Middleware), the commercial offering from Red Hat.
The renamed application server already has its' own launch page
. The project retains the JBoss AS focus on Java EE (WildFly 8 is aimed at Java EE 7), lightweight development, innovation and community. We can all wish WildFly all the best and hope it continues to be a driving force behind the Java EE community.
All views voiced are my own, not necessarily Oracle's.
Reflections on the Boston Bombings
I feel profoundly sad for the victims of the Boston bombings. As always, I really wonder what people like the bombers had hoped to accomplish. If there was indeed a legitimate cause that motivated them, they have simply managed to undermine it by tarnishing it with the blood of the innocent - perhaps forever.
On their path of senseless destruction they also deeply embarrass and endanger billions of people that have nothing to do with this if it was done in the name of Islam - perhaps even someone like me who is a Secular Humanist with an Islamic heritage...
I urge everyone that I can not to revert to their baser instincts and return hate with hate. The difficult road to lasting peace starts with the sublime human capacity to empathize and to see the world through eyes not necessarily your own. I also urge anyone with an Islamic heritage to speak up against this horror, whatever your religious stripes. It is our obligation as a civilized people to try to make right what has gone terribly wrong, whatever our grievances.
JavaOne 2012/Joining Oracle
I had two sessions at JavaOne this year. One was a solo talk on the CDI ecosystem. It was well-attended and I got excellent feedback on it. The other was a joint talk with my fellow co-author Ryan Cuprak on Java EE tooling support. The talk went very well as well considering we had stiff competition from other very good Java EE talks.
JavaOne this year was different for me in a very significant way -- I did not present as an indepenent this year but as an Oracle employee! In fact, the first day of JavaOne was my first day as an Oracle employee. I was invited to join Oracle as Java EE/GlassFish evangelist alongside the likes of Arun Gupta (Arun introduced me to the community at the Sunday GlassFish community event).
The decision to join was by no means an easy one as I've always seen myself as an engineer and a consultant. And the truth is that some of the connotations of the evangelist title has always made me cringe a little even with shining examples like Apple's Steve Jobs/Guy Kawasaki, Googles' Vint Cerf and Microsoft's Vinod Kumar who bear little resemblance to either religious zealots or mercenary salesmen. I also cannot honestly say I have no reservations about Oracle as a company.
I took on the opportunity because I believe I can really make a difference for the community in this role and help advance Java as an insider in the truest sense. As Oracle seems to understand, as the new stewards of Java, Oracle needs more people from the community like me working inside their walls. As a very nice side effect, this also helps me reclaim some of my personal time by essentially turning what I had been doing for some years on my own time into my actual job...
In the spirit of merging ones hobby/adopted cause/personal time with one's profession, I likely won't be maintaining this blog going forward much. Instead, I'll be reaching out to the community via my official Oracle blog here as well as the the Aquarium blog.
All views voiced are my own, not necessarily Oracle's.
Arquillian Talk at the Atlanta JUG
On August 19th I spoke at the Atlanta JUG -- one of the biggest JUGs in the east coast and the sponsors of the popular DevNexus conference. I gave my Arquillian/Java EE 6 testing talk. The attendance was great as was the participation. I am hoping I'll get to come back to Altanta again for DevNexus. I've been to Atlanta before, but it always amazes me what a sprawling metropolis Atlanta is!
Arquillian Talk at Twin Cities JUG
I did a talk on Arquillian/Java EE 6 testing at the Twin Cities JUG on May 14th. The attendance was moderate but I had some pretty good discussions afterwards. This was my first JUG talk in the mid-West so it was interesting. While I was there, I got to check out the iconic Mall of America.
JCP Talk at Marylad JUG
On January 18th, I went back to speak at the Maryland JUG once again -- this time talking about the JCP. Even despite the fact that this wasn't a technical talk per se, the atttenance was great as was the participation. I really enjoy speaking at this JUG and the JUG leaders are doing a great job growing this JUG.
CDI Talk at Dallas JUG
On January 11, I spoke at the Dallas JUG -- I gave my CDI demo/tour. This was my first talk so far down South so it was exciting. The talk went great and the crowd was fantastic.
I got a chance to look around Dallas a bit. I never realized exactly how metropolitan this part of Texas has become! I look forward to speaking at the JUG again some time...
Seam 3 Talk at Maryland JUG
I did my CDI/Seam 3 talk at the Maryland JUG on 17th August, 2011. The JUG was great and it had excellent active participation. I hope to speak there again soon.
JavaOne 2011 Round-Up
JavaOne 2011 was very busy this year for me but also very fruitful. Although this year I did not get a chance to attend a single session other than my own (I spoke seven times in four days so it was very hard), I think the conference overall went well. It is still unfortunate that Oracle continues to ignore the obvious fact that JavaOne needs a much bigger venue and it needs to take place on a time separate from OracleWorld...
On Monday, I started with the panel on the JCP titled "JCP and the Developer Community". Considering that this was pretty much a non-technical topic, it was good to see that the attendance/participation was decent, although I had expected the discussion to be a bit more lively. Regardless, it seems that Oracle is taking JCP reforms very seriously and giving real funds to the JCP organization (which Sun did not or could not). In the afternoon, I attended the technical session that Marina Vatkina of Oracle was giving on the progress of EJB 3.2. Not surprisingly, it looked to be a very short talk because of the worrisome lack of progress in the EJB 3.2 EG. Somewhat disappointingly, the audience participation was not that good -- it seemed most of the attendees either did not have an opinion or did not voice them. I and JMS 2 spec lead Nigel Deakin of Oracle tried to liven things up a little but trying to directly engage the audience, with some success. That evening, we repeated some of the same discussions in the BOF titled "Meet the Experts: EJB 3.2 Expert Group". Given the lackluster technical talk, it was not entirely surprising that the BOF attendance was sparse. After the BOF I had a long conversation with David Blevins of Apache and Andrew Rubinger of JBoss/Red Hat about my concerns around EJB 3.2.
Tuesday morning I and Ryan worked together to put the finishing touches/rehearse our CDI talk. The speaker resources were paltry so we wound up going to the lounge of a nearby hotel to work. In the afternoon, Nigel, I and Clebert did the JMS 2 BOF titled "JSR 343: What's Coming in Java Message Service 2.0". Although this was technically a BOF, it was really more like a full conference session and we actually had a slide deck. They gave us a very big room and it was almost a full house. We didn't have much time left for Q & A, but we had a number of interesting follow-up discussions with attendees in the hallway after the talk. Tuesday evening I went to the JBoss party to talk about CDI 1.1, EJB 3.2 and Java EE 7 with Pete Muir, Dan Allen, Andrew Rubinger, et al. The discussion went well and it seems we are all on the same page.
Wednesday morning Nigel, Pete and I brainstormed about the dependency injection based changes in JMS 2. I did not expect to have all the outstanding issues resolved but I think we made good progress. At noon, I did the panel on Java EE 7 titled "The Road to Java EE 7: Is It All About the Cloud?". The panel was very well attended and the discussion was very good. I briefly chatted with Linda DeMicheal and Mike Keith of Oracle about Java EE 7 afterwards. In the afternoon, Ryan and I did the CDI talk titled "Patterns and Best Practices for CDI". Considering the fact that Ryan and I have never co-presented together before, the talk went very well. We had a full house and had a very good Q & A session. In the evening, Rohit Kelapure of IBM and I worked on our Spring/Java EE comparison talk. Since this talk was so last minute, we had to scramble to get the slide deck ready and wound up pulling an all-nighter. Rohit and I briefly showed up at the JCP hosted party (always rightfully rumored to be the "most lavish party at JavaOne").
On Thursday noon, I barely made it to the CDI panel titled "CDI Today and Tomorrow". The panel was very well attended and the discussion was very good. In the afternoon, Rohit and I had our talk titled "Java EE and Spring/MVC Shoot-out" (it was the last session of the conference). Despite the ordeal, doing the talk wound up being well worth it. It was an enthusiastic, overflow crowd. JMS 2 spec lead Ed Burns showed up as an attendee. The Q & A was great and a lot of people seemed to really appreciate the talk. It felt like one of the best talks I've done at JavaOne to date and a solid finish to an eventful week at JavaOne 2011.
A number of folks asked for the slides for the two tech talks, so the materials for the talks is posted here
Speaking at JavaOne 2011!
It's always exciting to get JavaOne notifications - after all it is still the premier global Java conference! I have five talks this year.
One is a technical session titled "Patterns and Best Practices for CDI" that I'm co-presenting with Ryan Cuprak. It's a brand new talk so I am very excited that it got accepted. Another is a panel I co-submitted with Arun Gupta titled "CDI Today and Tomorrow". Arun will be moderating the panel. I, Pete Muir, David Blevins and Sivakumar Thyagarajan will be panelists. I'll be doing a JMS 2 BOF with spec lead Nigel Deakin and fellow EG member Clebert Suconic. I am a panelist on a talk on the JCP titled "JCP and the Developer Community". The other folks on the panel are Martijn Verburg from the London Java Community and Heather VanCura from the JCP program. I'll also be part of a larger panel titled "Java EE 7 - is it all about the cloud?". My CDI landscape talk from TSSJS 2011 was accepted as an alternative :-(. I also might be part the EJB 3.2 and Java EE 7 BOFs.
I can't but feel a little bummed that my other "uber cool" talks like the Domain Driven Design with Java EE 6 (brand new), Java EE 6 Portability (brand new), Java EE 6 caching across enterprise application tiers (TSSJS 2011) talks did not get accepted. I was also keeping my fingers crossed hoping that my CanDI talk would be accepted (I did have a Resin 4 talk last year though). All in all, I guess I have little to complain about. I could always do those at another conference or good JUG...
If you are attending JavaOne 2011, please do consider attending one of my sessions. I would love to chat with you in person!
CDI Talks at Research Triangle Park and DC/Nova Java User Groups
On June 27th I came back from a trip to the Raleigh, NC area to record a JavaLobby Tech Chat on Resin 4. The Tech Chat went great. Mitch Pronschinske, the Editor-in-Chief of JavaLobby/DZone drove the Chat. We talked about Resin 4, the Java EE 6 Web Profile, the Caucho team, the CDISource Spring/CDI bridge
, Java EE 7/Java EE 8
, WebSocket, cloud computing and the like. The Tech Chat should be out there on JavaLobby soon.
I chose to drive to NC to avoid the hassle of flying and because NC is quite drivable from my home office in Philly. On the way back, I did CDI demos at both the Research Triangle JUG
and the NoVA/Washington, D.C. JUG
. Both talks were very well attended. The interest/participation levels were fantastic. The DZone folks gave me a few nice printed copies of the CDI RefCard
. Every single copy was taken and people were asking for more! They also asked me for the slide deck and code examples. I’ll send them to the JUG leads to post on the JUG websites. You can also take a look at the slide deck
and code examples
if you want and send me any follow-up questions. I also wanted to talk at the Maryland and Richmond JUGs but things didn’t quite work out schedule-wise this time around. Both JUGs are working on scheduling me to speak in the Fall instead.
TSSJS 2011 Round-Up
I spoke at TSSJS 2011 March 16-18 in Vegas. TSSJS 2011 went extremely well and so did my talks. I think the TSSJS 2011 agenda, quality of content/speakers and buzz was the best in years. The new TSS editor Cameron McKenzie did an admirable job at putting everything together. Some of the notable speakers included James Gosling, Steve Harris (SVP Oracle), Adam Messinger (VP Oracle), Patrick Curran (JCP chair), Rod Johnson, Bill Burke, Adam Bien and Kirk Pepperdine.
I started the conference with a 5-minute lightning round presentation on Resin 4, the Java EE 6 Web Profile, Caucho vision, history, thought leadership, values, global footprint and growing customer base. The presentation seemed to go over well with a number of existing customers and developers reaching out to us afterwards. The first session on the first day of the conference I did was my enterprise caching talk titled “Effective Caching Across Enterprise Application Tiers”. The talk covers the different flavors of caching in the web (HTTP), presentation, application, domain, infrastructure (persistence) and resource (database) tiers using mechanisms like proxy caching (especially as supported by Resin), JSF/CDI @ApplicationScoped, @SessionScoped, @ConversationScoped, @ViewScoped, @RequestScoped scopes, passivation, EJB pooling, EJB thread-safe singletons, extended persistence contexts, JPA first (transactional) and second (shared) level caching, database connection pools, prepared statement caching, JCache as well as distributed caching APIs like Coherence, Terracotta, GigaSpaces, Infinispan, EHCache, JCS, SwarmCache and OSCache. The talk was very well attended, the Q&A was good and I got great feedback afterwards. In the evening, I participated in the “Meet the Authors” event. TSSJS gave away two copies of EJB 3 in Action (I am currently working on the second edition) and I signed both copies for the winners. I had a few engaging conversations on topics like EJB/Spring, authoring and the JCP during the course of the evening.
I started the second and busiest day of the conference with a panel titled “The Java Community Process: What’s Broken and How to Fix It”. This was a panel with Patrick Curran, James Gosling and me, moderated by Cameron McKenzie. We discussed the need for reforming the JCP, greater transparency, the Apache Harmony licensing issues, more non-Oracle spec leadership and more participation from non-vendor affiliated independents. We all agreed that many ills in the JCP can be cured through greater interest and participation from the developer community. The panel generated a great deal of interest, attendance, participation and feedback. After lunch, I gave my “A Quick Tour of the CDI Landscape” talk. The talk is a broad overview of the vibrant CDI landscape composed of implementations, supported runtimes, portable extensions and tools. I discussed Weld, CanDI, OpenWebBeans, GlassFish, JBoss AS, Resin, Geronimo, WebLogic, WebSphere, Tomcat, OpenEJB, TomEE, JOnAS, Seam 3, Apache MyFaces CODI, the ZK Framework, Arquillian, Forge, JBoss Tools, Eclipse, NetBeans and IntelliJ. The audience was great and I had some lively discussions afterwards. Later in the afternoon, I did my Java EE testing talk titled “Testing Java EE 6 Applications: Tools and Techniques”. The talk covers end-to-end testing along the entire Java EE stack including Servlet 3, JSF 2, EJB 3.1, JPA 2, JAX-WS and JAX-RS using existing and emerging tools like JUnit, HttpUnit, HtmlUnit, Cactus, Selenium, JSFUnit, embedded containers, embedded databases, Arquillian/ShrinkWrap, Resin JUnit integration support and soapUI. The talk was well attended and I got excellent feedback for the talk. It was only somewhat surprising that folks don’t realize how robust Java EE testing is with the latest release and tools like Arquillian. In the evening, I participated in the “Ask the Experts” session which also went very well.
A number of folks asked for the slides and demo code, so the materials for the talks is posted here
Speaking at DevIgnition 2010
On December 3rd, I spoke at DevIgnition 2010
in Washington, DC. This is basically a brand new local conference organized by Gray Herter of the DC/Nova JUG
. Since I've spoken at the DC/Nova JUG quite a few times now, Gray invited me to come speak at the conference. I gave a talk on Spring 3/Java EE 6 integration titled "Java EE 6 Support in Spring 3". I talked about the support for Java EE 6 APIs like EJB 3.1, JSF 2, JPA 2, JAX-RS, JAX-WS and bean validation built into Spring 3. The talk went very well and the crowd was very enthusiastic. Fellow speakers Arun Gupta and Ryan Cuprak spoke at the conference as well.
I certainly look forward to speaking at DevIgnition next year.
Speaking at Oredev 2010
On November 8-12, I spoke at Oredev 2010
. Oredev is a Scandinavian regional technology conference especially focusing on the Malmo, Sweden and Copenhagen, Denmark metropolitan areas. Aiming to be the "best developer conference on the planet" Oredev 2010 had an intriguing mix of Java, .NET, agile, dynamic languages, mobile and even a non-technical track covering an eclectic set of topics ranging from music, photography, sports/fitness as well as culinary arts.
I spoke on Java EE 6 as well as CDI/Weld/Seam 3. Both of my talks had decent attendance with good follow-up Q & A. There were other recognizable folks from the Java community speaking at Oredev as well including Arun Gupta, Ted Neward and Neal Ford. Overall, speaking at Oredev was a pleasant experience.
Speaking at Java2days 2010
I spoke at Java2Days 2010
on October 8-9. The conference was hosted again in Sofia, Bulgaria and targeted the greater Balkan region. This year’s conference went very well as it drew a larger and more enthusiastic crowd than in the previous year. The exuberant crowd was in stark contrast to the comparatively lackluster Java conferences in the United States and Western Europe.
All three of my sessions were well attended with excellent feedback from each of them. The session on CanDI titled “A Quick Tour of Contexts and Dependency Injection for Java EE” was especially well received with a full house and lively Q & A along with requests for the CanDI demo code. The audience for the Java EE 6 testing talk titled “Testing Java EE 6 Applications: Tools and Techniques” was also very good. People were extremely surprised to see how easy and powerful testing has become with Java EE 6. The closing session for the conference was my talk on the JCP titled “A Look Inside the Java Community Process”. Towards the end of this session, Werner Keil from the JCP Executive Committee, joined in to present an update on Java SE 7 and 8. To conclude, all the JCP members present at the conference came on stage for the Q & A. The audience really enjoyed the JCP session and I received a lot of positive feedback on it.
I hope and look forward to presenting at the Java2Days conference again next year in beautiful, spirited, youthful Sofia, Bulgaria. It was also great to see my friends and fellow speakers Eugene Ciurana, John Willis, Arun Gupta, Vladimir Pavlov, Talip Ozturk, Andrew Lombardi, Alexis Moussine-Pouchkine, Werner Keil, Sasa Slavnic and many others.