Version 1.0.4 of the CQ Blueprints Maven Archetype Available

Posted in: Enterprise Java, Software Development Best Practices

I’m happy to announce the release of version 1.0.4 of the CQ Blueprints Maven Archetype.

The CQ Blueprints Maven Archetype can be used to bootstrap a fully Apache Maven enabled, multi-module, Adobe CQ project. By using the generated Apache Maven project you no longer need to use tools such as CRXDE and can instead develop and work in a tool like Eclipse and simply build and deploy to a running CQ Server using common Apache Maven commands.

This new release fixes several reported bugs, and adds complete examples of best practices for writing JSPs and custom tag libraries and integrating these with OSGI services.

Visit the CQ Blueprints site for further information about the CQ Blueprints Maven Archetype.

Remember, if you need assistance with your current or future Adobe CQ project, don’t hesitate to contact myself directly or alternatively contact Ruben Reusser and the team at Headwire who generously provide the CQ Blueprints project.

Free Webinar – Amazon Web Services for Java Developers

Posted in: Cloud Computing, Enterprise Java, Software Development Best Practices, System Administration

I will be giving a free 1-hour Webinar this coming Thursday (June 7th) to introduce a brand new course that I will be teaching at the University of California in the Summer quarter. The new course is entitled Amazon Web Services for Java Developers and is a 10 week, 100% online course that will cover all of the critical topics that a Java Architect and/or Developer needs to know to make the most of Amazon Web Services in their applications.

To register for the Webinar please visit the University of California website.

Further details on the class and information on how to enroll can be found here.

Writing A JSP Custom Tag Library for Adobe Communique

Posted in: Enterprise Java, Software Development Best Practices

I just wrote another article for CQ Blueprints.

Within CQ, Components (including Page Templates) can utilize JSPs for rendering not only HTML, but also other output formats such as JSON.

Unfortunately, many JSPs are written poorly and mix presentation logic with business logic (in the form of scriptlets) making them difficult to test, debug and maintain. One of the best ways to write better JSPs is to never use scriptlets and instead use a combination of EL expressions and Custom Tag Libraries (including the JSTL). This Blueprint details how Custom Tag Libraries should be developed and deployed to a CQ environment.

For more, see:
http://www.cqblueprints.com/xwiki/bin/view/Blue+Prints/Writing+A+JSP+Custom+Tag+Library

Deploying 3rd Party Libraries to Adobe Communique

Posted in: Enterprise Java, Software Development Best Practices

I just published a new Blueprint over on cqblueprints.com that details how to easily deploy 3rd party libraries into your CQ environment, even when those libraries do not contain the necessary OSGi entries in the Manifest file.

CQ is built on top of Apache Sling, and Apache Sling is built on top of an OSGi container (Apache Felix specifically).

OSGi containers behave slightly differently (in terms of how classes are loaded and made available on the classpath) than most Java developers are used to.

To be able to make classes available within the OSGi container, Jar files need to be packaged in a specific way, including adding extra meta-data to the standard MANIFEST.MF file. The problem this can create is that libraries created by other developers that have not been built with OSGi in mind are missing this extra information and so their Jar files cannot be deployed in CQ.

This Blueprint details how to easily and reliably expose non-OSGi enabled libraries in CQ.

See Deploying 3rd Party Libraries

What’s Next in Continuous Integration?

Posted in: Enterprise Java, Software Development Best Practices

Kohsuke Kawaguchi discusses the future of Continuous Integration and Jenkins as they will be influenced by virtualization, cloud computing, DVCS and analysis software.

via InfoQ: What’s Next in Continuous Integration?.

Online Java Web Services Training Class

Posted in: Software Development Best Practices

I will be teaching my Java Web Services class starting the week of July 4th, this time around through the University of California Irvine Extension program.

Topics covered include:

  • Java API for XML Processing (JAXP) – SAX, StAX, DOM, XSLT
  • Service Oriented Architectures (SOA)
  • Java API for XML Web Services (JAX-WS)
  • SOAP
  • Web Services Description Language (WSDL)
  • RESTful Architectures
  • Java API for RESTful Services (JAX-RS)
  • JAXR / UDDI
  • Web Service Standards (WS-*)
  • JSON Web Services
  • Developing AJAX/JavaScript web service clients
  • Web Service Design Patterns
  • Web Service Best Practices

This class is 100% online based, with pre-recorded lecture materials available each week. In addition to lecture materials there will be weekly activities varying between forum discussions, quizzes, background reading, and of course coding.

Enrollment is open to everyone and is available right now.

http://unex.uci.edu/courses/sectiondetail.aspx?year=2011&term=SUMMER&sid=00152

The University of California Irvine Extension program provides an Orientation Week before each class to allow students to become familiar with the virtual classroom environment before formal instruction begins. For this class, the Orientation Week starts on June 27th (i.e. this coming Monday), however you are able to enroll up until the beginning of the formal instruction in the week of July 4th.

If you are interested but have questions about the course content, please comment below and I will answer as quickly as I can. For any questions about the University of California Irvine Extension program, please call Student Services on +1 949 824-5414.

Why Automated Testing is Important – Part 2

Posted in: Software Development Best Practices

In Part 1 of this series I described the characteristics that make up a good Automated Test. Here in Part 2 of this series I will explore all of the benefits you will enjoy by creating those good tests and why the time spent on making good tests is a no-brainer investment.
Continue reading »

Why Automated Testing is Important – Part 1

Posted in: Software Development Best Practices

The adoption of Automated Testing strategies and tools, both in Agile and traditional teams, has been patchy – some teams and communities have embraced it, but many organizations still perceive it as a burden that just slows down development. Those that see the writing and execution of tests as an additional, costly and separate task from development have missed seeing some of the main benefits of an expertly manicured test suite.
Continue reading »

Bad Code, Craftsmanship, Engineering, and Certification

Posted in: Software Development Best Practices, Software Development Team Leadership

Robert C. Martin, during his keynote at QCon London 2010, tried to figure out why there is so much bad code written. He offers advice on writing good code talking about a bad code example, Boy Scout rule, functions, arguments, craftsmanship, TDD, continuous integration, pairing, small cycles, patterns, engineering, certification, and other elements contributing to qualitative code.

http://www.infoq.com/presentations/Robert-C.-Martin-Bad-Code

Ward Cunningham on Technical Debt

Posted in: Software Development Best Practices

In this video Ward reflects on the origins of the term Technical Debt and how it has been misused and misunderstood over the years.