Extreme Programming & Outsourcing

Who would have thought that they would see the word ‘extreme programming‘ in an article in Business Week? I know I didn’t, but it appears in a great commentary entitled ‘Now More Than Ever, Innovation Is The Answer‘. The commentary is about how innovation is taking away technology jobs in the US and how jobs will arise from the creation of new products, processes, and markets.

I know I will always think of Dilbert when I think of Extreme Programming.

Dilbert does XP

dilbert, XP, Extreme+Programming, pair+programming


J2EE Web Services

J2EE Web Services by Richard Monson-Haefel is the current de-facto standard bible for Web Services development on Java. I had pre-ordered this book on Amazon and have read through this book several times in the last few months and I absolutely love this book. Richard has created a great resource for the J2EE developer that’s looking to build interoperable Web Services.

J2EE Web Services

by Richard Monson-Haefel
Paperback: 960 pages
Publisher: Addison-Wesley Pub Co; 1st edition (October 17, 2003)
ISBN: 0321146182

Most EJB developers are already familiar with Richard Monson-Haefel’s work in his OReilly EJB’s book. He brings that expertise into the realm of J2EE and Web Services. In fact, this is the first book to talk about Web Services Interoperability Organization’s (WS-I) Basic Profile 1.0.

WS-I is an open, industry organization chartered to promote Web services interoperability across platforms, operating systems, and programming languages. WS-I Basic Profile 1.0 is set of recommendations on how to use web services specifications to maximize interoperability. This book delves into the details of J2EE 1.4 and how we as Java developer can build and consume Web Services in a standard way.

The book starts off with an introduction to XML, SOAP, WSDL and UDDI before jumping into the meat, Java API for XML-Based RPC (JAX-RPC). If you don’t have any experience with those technologies, the book offers a great tutorial on those items. I was particularly impressed with the treatment on XML Schemas in the 3rd chapter.

Once the basic groundwork is laid with a solid introduction to XML, SOAP, WSDL and UDDI, the book jumps right in the JAX-RPC platform. In fact, the middle half of the book is dedicated to JAX-RPC. JAX-RPC is a specification for making remote procedure calls via XML and SOAP over HTTP. JAX-RPC provides an easy to develop programming model for development of SOAP based Web services. You can use the RPC programming model to develop Web service clients and endpoints (server).

Once you get an overview of JAX-RPC, you jump right into building Web Services. The section on JAX-RPC is really detailed and offers a very in-depth tutorial on building Web Services. From JAX-RPC, you jump into Java API for XML Registries or JAXR. The Java API for XML Registries (JAXR) provides a uniform and standard Java API for accessing different kinds of XML Registries. An XML registry is an enabling infrastructure for building, deploying, and discovering Web services. I read through most of this section but I didn’t really spend as much time on it as I should have.

The final section of the book deals with deployment. J2EE deployment is a total pain in the ass and anyone that’s spent hours fighting classpath issues in ear files will agree with me. The section on deployment is very detailed and very well written. I found it extremely helpful in setting up JAX-RPC mapping files along with other deployment descriptor. I have to agree with Richard’s comment at the end of Chapter 24 – Deployment descriptors sucks and have gotten overly complicated. Items like Cedric’s ejbc and XDoclet have done a great job in simplified the creation of ejb and web deployment descriptors and J2EE 1.5 should really address this issue.

My only complaint about this book is the lack of downloadable source code. I did email Richard and he very graciously replied saying the book is really more of a reference than a tutorial. Hopefully he’ll change his mind and put together a source code distribution for this book.

If you are going to be building Web Services in Java, want to learn more about the alphabet soup of Web Services or just want to learn more about WS-I and BP1 and how to build interoperable Web Services, this is the book for you. I found this book to be very helpful and plan to use it for my Web Services class. This book is a must for any J2EE Web Services developer.

“No Fluff, Just Stuff” Java Symposium is back

The “No Fluff, Just Stuff” Java Symposium is back in Milwaukee on April 16-18th at the Sheraton Milwaukee Brookfield Hotel (can you say free Wi-Fi). I attended the symposium last year and had a blast – I had several friends at JavaOne and I think I got more out of the 3-day session than they did at JavaOne.

If you’ve never heard about “No Fluff, Just Stuff” Java Symposium, this is a must-attend event. The symposium is very technically focused, without any marketing fluff and the attendance is capped at 200. You get the meet some of the thought leaders and book authors in the Java/J2EE/development space and really engage in meaningful conversation. At last year’s event, I had the pleasure of meeting people like Dave Thomas, Robert Martin, Stuart Halloway, Mike Clark, Ted Neward, Jason Hunter, James Duncan Davidson, Glenn Vanderburg and many others. The sessions typically start on Friday and go through Sunday and so you are not really missing much work. This is really smart as companies can send their entire development team down for the symposium. In fact, I met tons of people at the symposium last year that were there with their whole development team.

The sessions are very technical and interactive and I really got a lot out of the sessions. I would recommend this symposium to anyone and I plan on attending this year’s sessions as well. In addition to the other speakers, you can also check out local Java geeks like Cobbie Behrend who is presenting on Struts. Sign up if the “No Fluff, Just Stuff” Java Symposium comes to your town. Jay Zimmerman and crew did a great job organizing the event and I’m sure this year will be better than the last.

My Dream application finally arrives

It will be here soon and I can’t wait. For the longest time, I’ve looked for this one killer application that did the 3 simple things I wanted it to do – email, news (usenet) and RSS aggregation. I use MS Outlook and Mailblocks.com for email, Mozilla for reading UseNet news and FeedDemon for my RSS feeds. I also have a Wiki that I run locally to store all of the tutorials, documents, articles, tips & tricks, snippets of code, etc that I have collected over the years.

And now the fine folks at IntelliJ are working on an application called OmniaMea that is supposed to do all of that and more, in one standalone application. Well, life can’t get any better than that. Maybe I can run IDEA from inside OmniaMea and I would be in heaven. I know IntelliJ was working on something like this as I’ve followed the development of Eugene Belyaev’s Beggregator. In October, Eugene alluded to the fact that they were working on a PIM type application.

I’ve been reading Dmitry’s blog and I really like what I see so far. It’s interesting to note that they decided to use C# instead of Java for this application. Dmitry is the project lead for OmniaMea. I can’t wait for the beta period to start. I know CleverCactus is another similar product that’s been in development for a while. I’ve tried out the early betas and things look promising there as well and the advantage of CleverCactus is that is runs on OS X and Linux along with Windows as it is written in Java.

The new and improved MS-Frontpage :)

A friend just passed this along and I had to chuckle. MS FrontPage, the HTML editor from Microsoft had been notorious about mucking up content and coming up with non-standard HTML. Well, they have a new ad saying they’ve improved things, but apparently they haven’t really fixed all their bugs.

Check out the ad and see if you can spot the extra </p> in the wrong place

New Java books from O’Reilly

My Amazon habit strikes again. My wife thinks I’m addicted to amazon.com as we usually get 2-3 packages delivered from Amazon every week. Usually, I don’t even know what’s shipping as I preorder books, music and DVD’s. This week, my UPS guy will be bringing me new books from O’Reilly.

Java Examples in a Nutshell, 3rd Edition

by David Flanagan
Paperback: 720 pages
Publisher: O’Reilly & Associates; 3rd edition (January 1, 2004)
ISBN: 0596006209

In this new edition, author David Flanagan has updated the book with coverage of Java 1.4. New items covered in this book include assertions, logging, preferences, SSL, regular expressions and extensive coverage of the new Java GUI features.

The third edition contains 193 complete, practical examples–more than 21,900 lines of Java code covering 20 distinct client-side and server-side APIs. It includes all-new coverage of the New I/O and Java Sound APIs and completely rewritten chapters on XML and servlets to incorporate the latest versions of the specifications and to demonstrate best practices for Java 1.4.

New and updated working examples with succinct and accessible explanations covering Core APIs, including I/O, New I/O, threads, networking, security, serialization, and reflection -Desktop APIs, highlighting Swing GUIs, Java 2D graphics, preferences, printing, drag-and-drop, JavaBeans, applets, and sound -Enterprise APIs, including JDBC, JAXP (XML parsing and transformation), Servlets 2.4, JSP 2.0, and RMI.

Java Servlet & JSP Cookbook

by Bruce W. Perry
Paperback: 704 pages
Publisher: O’Reilly & Associates; 1st Edition edition (December 1, 2003)
ISBN: 0596005725

The Java Servlet & JSP Cookbook is a new book from O’Reilly that provides practical solutions to real-world problems faced by web developers. The initial recipes are basic and will instruct new Java web developers in the mechanics of servlets and JSPs including packaging servlets and JSPs, writing the deployment descriptor, deploying servlets and JSPs, using Apache Ant, and precompiling JSPs. The book includes coverage for Tomcat and WebLogic and solutions for working with sessions, filters, custom tags, the JavaServer Pages Standard Tag Library (JSTL), authentication, database, cookies, file upload and many other items.

Exploiting Software: How to Break Code

Addison-Wesley has just released a new book entitled ‘Exploiting Software: How to Break Code’. This book is going to be released on Feb 20th and looks like a really very interesting book. Here’s more info on the book from the Addison-Wesley release I got.

Exploiting Software: How to Break Code

Greg Hoglund, Gary McGraw
Paperback: 512 pages
Publisher: Pearson Higher Education; (February 20, 2004)
ISBN: 0201786958

How does software break? How do attackers make software break on purpose? Why are firewalls, intrusion detection systems, and antivirus software not keeping out the bad guys? What tools can be used to break software? This book provides the answers.

Programs have a preponderance of guts, where the real fun happens. These guts can be very complex. Exploiting software usually requires some level of understanding of software guts. DOWNLOAD a PDF of chapter 3, “Reverse Engineering and Program Understanding”, to find out about the tools, concepts and assumptions behind reverse engineering, including how to write your own cracking tools.

This must-have book may shock you–and it will certainly educate you.Getting beyond the script kiddie treatment found in many hacking books, you will learn about

  • Why software exploit will continue to be a serious problem
  • When network security mechanisms do not work
  • Attack patterns
  • Reverse engineering
  • Classic attacks against server software
  • Surprising attacks against client software
  • Techniques for crafting malicious input
  • The technical details of buffer overflows
  • Rootkits

Check out the Book page for sample chapter at Addison-Wesley

IDEA 4.0 and WebLogic

I’m one of the many people downloading every EAP release of IDEA 4.0 to check out what new features, refactorings, etc. they put in the upcoming release. One of the ones that I’ve been playing with a lot is the new WebLogic integration. IDEA 4.0, when it ships will support complete integration with WebLogic.

Some of the features of the WebLogic integration include support for creation and management of Weblogic specific deployment descriptors, connect to running WebLogic server instances, start/stop the server and deploy war, ejbs and ear files directly from IDEA. Neat features, but I’ve been doing that with WebLogic and IDEA for years — Not sure what’s really new here. Yeah, the deployment descriptor editor is nice and the built-in support for start/stopping server is nice but I am still trying to figure out why someone should upgrade if this is the only new thing they want to try out. Don’t get me wrong – I am a total IDEA bigot and will continue to pay my maintanance fee to get the 4.0 upgrade. I guess I need to continue playing with the latest EAP builds to discover and document new features that make the upgrade worth the cost and hassle.

Before JPDA (Java Platform Debugger Architecture), I had a simple Java class that would load WebLogic from inside the IDE. It’s not really rocket science – Here’s the simple class:

public class WebLogicDebugger { 

public static void main(String[] args) {

System.getProperties().put("bea.home", "c:/bea");
"weblogic.Domain", "vinny");
"weblogic.Name", "myserver");

try {
"finished weblogic.Server.main");
catch (Throwable t) {
new java.util.Date() + "####**** ERROR ***###");


Once WebLogic server is up and running inside IDEA or your IDE of choice, you can use the Ant integration to build and deploy the end result (war, ejb jar or ear) to the deploy directory of the running instance of WebLogic.

The integration offered by IDEA is pretty neat and I must give kudos to the developers. Here’s a simple walkthrough of setting up WebLogic Integration inside IDEA. The first setup allows you to start the WebLogic integration configuration:

Once the WebLogic Server Integration option is selected, IDEA will automatically sniff out the version of WebLogic installed and find the bea.home directory. You can then setup one of more WebLogic servers by setting the Admin user/password and the domain path. Any additional program parameters (-D parameters) or VM attributes can be specified here.

Once the server is configured, you provide the location of the web.xml and weblogic.xml files.

Once the web.xml is setup, specify the Web resource directory , which typically holds your jsps, tag libs, etc.

And voila!! You’re all set – IDEA is now ready to start WebLogic and you can start deploying applications.

Once the server is up and running, you can deploy/re-deploy applications. I am still having issue with build 1120 and can’t seem to get the deployment piece working correctly. I can use my Ant task to deploy, but cannot seem to use the built-in deployer. Need to follow up with the EAP forums.