Apache CXF is an open services framework. It is more than just a Web Services stack. Its simple, powerful, and promising. Today, the CXF project graduated from incubation as a top-level Apache project. It has made several stable releases since its incubation. I know projects which still prefer to use first generation Axis due to its simplicity. XFire is also popular like Axis, but made a significant difference in providing highly performing XML based web services. The power and simplicity of XFire and feature rich Celtix (branded as ESB) merged to form Apache CeltixXFire (CXF).
IMO, CXF wins over Axis2 programming model. CXF documentation is an area for improvement. It has a lot of powerful undocumented features. The primary source of getting these information is cxf-user mailing list. The people are amazingly helpful. It features most of its core developers offering their timely help to the user community.
I developed a simple loan processing application based on JPA and CXF using the NetBeans 6.1. This is a simple standalone Java application, but still demonstrates the power of persistence and integration technologies in combination with a powerful IDE which provides a platform for developing quality software. I specifically used NetBeans for this illustration because its very productive and intuitive for developer of any class. MySQL support in NetBeans 6.1 has improved phenomenally. You can manage the MySQL database from within NetBeans IDE. This is yet another useful integration for RAD apart from many of its other key offerings which I am not going to discuss in this post.
You can access this step-by-step tutorial in the NetBeans community website.
Rock with NetBeans 6.1 today and contribute to the community.
(4/30/08 Update): Changed the new Apache CXF project URL. Also, updated the tutorial to use Apache CXF 2.1 release and NetBeans 6.1 final release and used soapUI plugin for testing secure web services. Thanks to Vidhya for suggesting soapUI tool. Nice tooling around web services testing.
This week’s major acquisition announcements of Bea by Oracle and MySQL by Sun are considered significant milestone in consolidating J2EE application servers and open source database servers. The application server market is witnessing a strong convergence with 9 Java EE 5 compatible implementations vs 17 J2EE 1.4 vs 22 J2EE 1.3. The players are WebLogic Server (BEA), WebSphere Application Server (IBM), OC4J (Oracle), Sun Java System Application Server (Sun), NetWeaver (SAP>), GlassFish (Sun), Geronimo (ASF/IBM), JEUS (TmaxSoft), Apusic (Kingdee). There is a decent choice for customers who either opt for commercial products or use the open source versions. This number can be further reduced to just 5 popular offerings, as Sun extends GlassFish, IBM extends Geronimo and Bea and Oracle is going to be one or two depending on Oracle’s new strategy. For the sake of this discussion, I am not considering other popular open source and commercial J2EE implementations which has a huge deployment base.
Historically, such acquisitions were not so successful at least for app server vendors : HP acquiring Bluestone, Novell acquiring SilverStream, Adobe acquiring Macromedia (Allaire JRun), Borland (BORL) acquiring TogetherSoft, RedHat acquiring JBoss. It will be reasonable to compare RedHat vs JBoss with Sun vs MySQL acquisition, because they both acquired most popular open source products. While it is interesting to see JBoss lacking momentum after its RedHat acquisition, this may not be the case with MySQL’s future and still be a successful open source product in the hands of Sun. All we know for fact that Sun does not earn much of its penny from Java, JEE products and its recent efforts in open sourcing various products including the Java language has proven its commitment to the open source community. This is a strong message to the open source community. So, don’t be surprised by similar acquistions in the future. Did I say framework vendors?
Oracle’s acquisition may rewrite this history, as OC4J is not so popular than its competitors. So, Oracle may just provide drop-in-replacement using WebLogic in its Fusion middleware stack. But, there is whole lot of Bea products which complements Oracle’s offerings. For instance, Oracle will benefit by having its own JVM (JRockit), TP Monitor (Tuxedo), Integration Server (WLI), and its huge installation base. So, the compelling truth is that Oracle is aligning its forces to compete with IBM. Sun was never a tough competitor in any of these markets. Just to balance the equation with IBM, Oracle is missing its own OS platform.
My web site has reached its maximum bandwidth limit on Jan 16. Unfortunately, I was traveling on this day, so I could not fix this problem immediately. I have hosted Spring MVC tutorial using NetBeans on my website which would have been worsely hit as this is referenced from NetBeans.org. Any ways, I will be moving this content to NetBeans.org soon. Good news is that my site is getting hits and I upgraded to a higher bandwidth.
Effective Java Second Edition slips to ship in 2007, though Ted originally predicted in his 2006 Tech predictions. Finally, it is likely to be released around the time frame of Java One 2008 in May. I hope that Joshua does not change his original 2007 title “Effective Java: This Time It’s for Real” in JavaOne 2008. May be this time he carries a copy of this edition to the session hall:) His earlier two presentations shows only a glimpse of this book and he is busy debating closures controversy, which is a good thing for the future of the language.
Effective Java Reloaded in JavaOne 2008 : This Time It’s Not for Real
Effective Java Reloaded in JavaOne 2007 : This Time It’s Not for Real
I was recently using the 1.1 release of Craig MacKay’s Spring Module for NetBeans which supports the latest Spring Framework 2.5. Spring Framework tutorial hosted at NetBeans.org provides details on how to use this module in NetBeans IDE. Thomas Risberg’s Developing a Spring Framework MVC Application Step-by-Step tutorial is a good one which explains end-to-end web application development using Spring Framework 2.5. The sample in this tutorial was developed using Eclipse 3.3 and the application was deployed to Apache Tomcat 6.0.14. Spring supports JEE technologies, this sample application should run on any JEE compatible servers without much porting effort. I was able to run this tutorial using NetBeans IDE 6.0 and GlassFish V2 UR1 without any hassle. In fact, this combination worked out great for me with Craig MacKay’s plugin. A very useful plugin for Spring development on NetBeans IDE. I modified the original tutorial to use NetBeans and GlassFish infrastructure, and these tools should definitely help increase the productivity for Spring developers.
You can access the tutorial “Developing a Spring Framework MVC application step-by-step using NetBeans and GlassFish” here.
[Update: 11/09/09 – NetBeans wiki is missing the tutorial page since their recent migration to the new NetBeans.org infrastructure. I have removed the original redirect to the NB wiki, so you could access the tutorial directly from my website. The project can be downloaded from here].
I was driving from Des Moines to Chicago on Friday 12/21 to send off my parents from O’HARE the next day. The seasonal affair was in effect as usual in Iowa. We started driving at 8am and we were navigating through the dense fog through I-80 and I-88. It was a black hole experience. The visibility was less than a quarter mile. Though, it was not so adventurous, we managed to reach Chicago around 2pm. I knew this would become worser when I return back to Des Moines as they had predicted a snowstorm across central Iowa on 12/22. I was checking the weather every often to make sure I plan my return trip safely. I decided to return on the next day and I wanted to take a chance against the predicted snow storm across mid west, the only place on earth where one could experience all unusual weather phenomenons on the same day.
My return journey was a roller-coaster ride as expected. I started from O’HARE at 4pm and I sailed through I-88 and I could travel only upto Dekalb (60 miles west off Chicago), where I decided to fuel and rest for some time as the dense fog advisory was in effect until 6pm. But, I rested until 7pm when the fogs were slightly gone. I resumed my journey towards the snow storm. I experienced severe winds gusting at the speeds of 30-40mph and I managed to drive through them. The temperature was around 40 degrees Fahrenheit. When I was nearing the Moline across the Mississippi river valley, the temperature started falling drastically. I experienced heavy rains and the fog was gone for the most parts of the sky. The temperature dropped to 30 degrees in 50 miles and as I was nearing the borders of Iowa, where the rain turned into snow and the temperature nose dived to 25 degrees.
The worser started, I could not drive as my windshield fluid was not enough to clear the blowing snow and I had to take an immediate exit where I filled my windshield fluid. I waited for 30 minutes near the gas station and then I decided to leave from there. The snow fall was heavy and the highway was already active with snow mowers spraying salt and premature cleaning began. But, it became very difficult for me to drive as the snow was 2 inches on the highway and it was not cleared for most part of the highway. I saw many vehicles falling into the sides of the highway and I even saw many trucks collapse on the highway. This was so dangerous as my speed was not more than 15mph on a highway in these hazardous conditions. I decided to quit my travel on that night as I was nearing Iowa City. I took the exit-242 to Holiday Inn, but there were no rooms left. The hotel guy suggested that there are some hotels near exit-246 which has less occupancy. So, I had to go back to the scary highway and take the exit-246. The temperature dropped to almost 15 degrees. Finally, I took the exit-246 and managed to stay in Hampton Inn in Coralville. It was midnight when I checked in. I planned to leave early in the morning when the weather subsides as it was only 100 miles to my final destination.
I recalled my stupid decision to travel that night. But, I learned how to drive safely and be extra cautious during these bizarre conditions. Nevertheless, I had an opportunity to witness the aftermath of a snowstorm which badly hit the holiday travelers across this region. I started my journey next day at 8am and I reached home safely by 1030am. I saw many vehicles out of the highway and I feel sad for them and hope they are in time for their Christmas eve.
Today, Google released the Android platform SDK to the developer community. It comes with tools and APIs to develop applications on the open mobile platform using the Java programming language. It comes with an emulator and Eclipse plugin for development. The SDK is already available on Windows, Mac OS X (intel), and Linux (i386) platforms.
As part of today’s announcement, Google unveiled $10 million android developer challenge for developing applications on the Android platform. Android runtime is based on Dalvik VM. Each android application has its own VM which runs in its own process. The stack is built on top of Linux kernel version 2.6. The VM relies on the underlying kernel for threading and low-level memory management.
Today, Google announced the most awaited mobile strategy backed by the industry’s big wees. The momentum turned into Open Handset Alliance with more than 30 technology and mobile companies which developed the first complete, open and free mobile platform. Developers will have access to the Android SDK on November 12. Google unlocks the opportunity to bring innovation in mobile application development space and forms an open ecosystem for building vendor independent applications traditionally dominated by proprietary mobile OS vendors like Symbian and Microsoft.
View Google’s press release which lists its founding members. This alliance would transform the way revenues are generated from mobile based services and operator hosted services typically implemented as Service Delivery Platforms offered by many technology companies such as HP, IBM, Microsoft, Oracle and Bea. This would also impact the revenue sharing model prevailing in most of the Mobile Network Operator provided services such as content, multimedia, and gaming.
Finally, I had a chance to touch and feel the iPhone in an Apple retail store in West Des Moines. [singlepic=10,320,240,,] I was blown away by the technology Apple has brought to its consumers. Watching YouTube videos in a mobile device is just amazing. Facebook on iPhone connects you to people around you. Bringing social networking to mobile devices is a smarter idea. iPhone does it right. Support for myspace, flickr may soon become a reality. You can build web apps for iPhone using WebKit used by Safari browser today. Checkout Apple’s iPhone Dev Center for more information. iPhone owners must be proud of their expensive choice:). So far, Apple has only opened up Safari based web content and web application development on iPhone. Bad news for Java.
Recently, I was reading a 2-part article series by Eoin Woods on software architecture woos and worries, though he terms as mistakes. Part 1 addresses top-5 and Part 2 addresses the rest. He mostly shares his own experience as a software architect for years.
Buckle up, never do these mistakes – It’s The Law in the Enterprise Architecture world.
(1) Scoping Woes
(2) Not Casting Your Net Widely
(3) Just Focusing on Functions
(4) Box and Line Descriptions
(5) Forgetting That It Needs to be Built
(6) Lack of Platform Precision
(7) Making Performance and Scalability Assumptions
(8) DIY Security
(9) No Disaster Recovery
(10) No Backout Plan
There are many more amendments to this law. It comes by practice, not just by experience. This reminds me of Ted’s post on the great expectations of a software architect. The relevance in architecture is severely dictated by a team of influenced personnel who has the authority to approve or decline recommendations by architects or technologists. Architects need to understand the business relevance and technical relevance. Not all projects have the luxury of having an architect who understand all these. I have seen technical leads performing this role many a times. A project may not really require an architect if it has well defined functional and non-functional requirements, skilled developers who understand the requirements, and to some extent domain knowledge. This is not a perfect world where you get all these concrete before you start a project. Exceptions are there, but not the majority. Remember, having an architect, its no silver bullet. I need to stop here as my thoughts are deviating from the original intent of this post. But, I would like to revisit this topic in near future.