Saturday, October 28, 2006

CruiseControl verses Ant verses Maven2

This week, I took at look at what CruiseControl and Maven2. I have used ant and customized versions of ant in for J2EE builds for many modules source tree as well as projects with one giant nested ant file.

Here is an overview of what the separate items are:

  • Ant – Build script written in XML that is used to compile and run java projects. Ant build files are simple at first, but easily become more complex.
  • Maven 2 – Build system that forces your source code to live in a directory layout. Maven supports all development lifecycle steps such as development, testing, deployment, versioning, and also remote libraries. This is definitely very complex.
  • CruiseControl – Continuous integration tool. It will check out all your source files whenever it detects a change and kickoff another build and test. Pretty simple once you have it running.

This is my recommendation.

  • Use CruiseControl for build automation and setting up the nightly builds.
  • Don’t use CruiseControl if you do not needed automated builds.
  • Use Maven2, if you want to follow the best practices for J2EE development.
  • Don’t use Maven2 if your builds are too customized, or the work required to convert to maven2 would be too involved for your organization.
  • Use Ant if your build is highly customized.
  • Don’t use ant if Maven or Cruisecontrol can take care of the functionality that you need
I know that ant, and cruse control definitely have a place in the build environment at my current work. We’ll see if maven2 has a place.

Sunday, October 22, 2006

Webservices Best Pratices

I have used webservices in a variety of ecommerce, enterprise, and mobile development enviroments. I thought of these quick pointers for Webservices Best Pratices.
  • Make sure you version the your web services.
Webservices are often used for integration. Changing any deployed or used webservices will have significant impact on your clients. It would be disastrous for the method signature or data returned by a web services to no longer match.
  • Use asynchronous model for web services communications.
Often webservices will perform some sort of business operation, which may take a significant amount of time to process. This time taken for processing introduces delays for users of your service. To prevent applications from use either a publish and subscribe method or a callback.
  • Use caching for heavily accessed web services.
On certain web services, I have developed would be called millions of times per day. Even the WSDL on the apache axis 2.0 is generated dynamically. You might want to cache the data being returned or retrieved to improve the performance of your application.

Tuesday, October 17, 2006

Shortage of Engineers in India

Skills Gap Hurts Technology Boom in India - New York Times: "A study commissioned by a trade group, the National Association of Software and Service Companies, or Nasscom, found only one in four engineering graduates to be employable. The rest were deficient in the required technical skills, fluency in English or ability to work in a team or deliver basic oral presentations."

This is just like the united states. No one can work in teams or speak in english.

Friday, October 13, 2006

Damnit Juliet!

Why do you always win at tetris… My secret practicing with Steve has not helped at all.