If It's Not Addin' Up
Integrating early and often
Constant integration one of those things you don't do until not doing it bites you in the butt. Typically, especially in a small company, you'll have teams working in parallel (it's faster!) and not worrying much about their points of contact for now (it's faster!), and assuming that everything will just work out in the end (it's faster!). This approach is great as long as you never seriously intend to integrate. When you finally have to, it's usually a mess of missed messages, class mismatches, props files overwriting each other, classpath fiascoes, and other misery. But hey, it was faster up to this point, right? And now you get to comb through thousands, if not millions, of lines of code to figure out how to get the pieces to work together.
Or you could, oh I don't know, get it right in the first place?
Continuous integration is the antidote to integration hell. It offers a powerful way to detect bugs and conflicts early, so that they can be fixed quickly and easily, and without too much bloodshed among team members. It basically involves automatically building and testing code at regular intervals. Team members commit their code to source configuration management very frequently (at least on a daily basis). A central server regularly checks out the latest version of the project source code, and runs a complete build, including compilation and tests. The build process automatically notifies team members of any build failures, and (hopefully) the team member responsible for committing faulty or conflicting code will immediately jump out of her chair (figuratively speaking) and rush off to fix the problem before anyone else notices!
In our Feature Article,
Continuous Integration with Continuum, John Ferguson Smart shows how to use the Apache Continuum tool to automate your integration testing, so that you can jump on problems when they happen and keep your project on track.
In Projects and
the Technoracle blog declares the Lego robot swarm and JVEX robotics to have been The Coolest Thing at JavaOne. It says "the result is that Java can easily be used with the VEX kit, which is a great prototyping environment. You can come up with an idea during morning coffee and make a prototype using Lego and talk to it via JVEX all before lunch."
A News.com meta-blog asks Is anyone still dreaming of Jini?, criticizing its marketing message as it has evolved from embracing internet toasters to web services to open-source. However, bloggers have rallied behind Jini and its proposed move to Apache, with DamnHandy noting "Jini is cool if you take the time to scour the web to find out what Jini actually does."
In today's Forums,
leouser explains the Swing philosophy in
Re: What is the threading model of Swing?:
"I think of Swing as a single-threaded library. Doing stuff outside of the EDT should be considered 'illegal'(not sure if you can go to jail for doing it, but it can certainly hang your application). With that said, there are some places where you can do multi-threaded swing stuff, but only do that if the javadoc clearly states 'multi-thread safe'."
Using the Compiler API (JSR 199):
"I am trying to use the Compiler API (JSR 199) but fail to get it working. According to the JavaDoc on java.lang.Compiler: When the Java Virtual Machine first starts, it determines if the system property java.compiler exists. ... If so, it is assumed to be the name of a library ... the loadLibrary method in class System is called to load that library I checked this and System.out.println(System.getProperty("java.compiler")) returns null. To which values should it be set?"
Jean-Francois Arcand processes JavaOne feedback in today's Weblogs.
In After JavaOne, let the Grizzly hibernate....., he writes:
"Slides and comments from Grizzly talks @ JavaOne this year. From the feedback I got, it seems many folks wants Grizzly available outside GlassFish, more examples on how to use the asynchronous request processing extension, and more blogs about tricks and tips with NIO. So before going to hibernate, I will try to push Grizzly binaries to a Maven repository. But more important, have you seen the Grizzly running on the Real Time VM during the Friday keynote?"
In a farewell note, Bruce Tate says
Thanks... "java.net has been good to me for all of these years, but it's time for a change. I'm moving my blog to blog.rapidred.com."
Sahoo has a short tutorial on
Using Kodo as Java Persistence API provider in GlassFish:
"Pluggability of third party Java Persistence API providers into a Java EE container offers Java EE users exciting combinations to use. Earlier we had shown how to use Hibernate in GlassFish. Now it's time for Kodo, which is another high performance & popular O/R mapping solution. Recently Kodo 4.0GA was released and it supports Java Persistence API. So, I thought I shall give a try using it in GlassFish."
In Also in
sample code in your documentation is critically important to developers who use your software, since many of them will copy the code and paste it directly into their own code. But these examples are often poorly maintained and either don't work, or fail to evolve with your project. In Source Citing: Making Examples Work, Peter Arrenbrecht argues "it should be obvious by now. What automated testing (and unit testing in particular) did for code quality, it will also have to do for documentation quality. Only in this way can we keep the blessings of short iterations, constant refactoring and frequent releases whithout sacrificing the quality of our documentation."
In the tradition of Spring, JBoss offers Seam, which uses a declarative state model, extensive use of annotations, and two-way dependency injection to make automation of huge portions of your complex Java EE apps not just possible, but downright sensible. In a DevX article, Mark Smith shows you how to Discover Seam and Sew Up Your Java Projects Faster than Ever.
In today's java.net
News Headlines :
OODB 2 RC1
- BuildDesk 1.0 - IDE for Build Engineers
- Eclipse 3.2
- yEd 2.4.1
Registered users can submit news items for the
href="http://today.java.net/today/news/">java.net News Page using our
form. All submissions go through an editorial review before being
posted to the site. You can also subscribe to the href="http://today.java.net/pub/q/news_rss?x-ver=1.0">java.net News RSS
Current and upcoming Java
- June 2-4, 2006 - Central Florida Software Symposium
- June 5-6, 2006 - Enterprise Open Source Conference
- June 9-11, 2006 - Research Triangle Software Symposium
- June 15, 2006 - NL-JUG: J-Spring
- June 16-17, 2006 - Salt Lake Software Symposium
- June 20-23, 2006 - Enterprise Java Architecture Workshop Seattle
- July 6, 2006 - Java Forum Stuttgart (JFS)
- July 7, 2006 - Experten Forum Stuttgart
- July 7-9, 2006 - Lone Star Software Symposium 2006: Austin Edition
- July 21-23, 2006 - Central Iowa Software Symposium 2006
- July 24-28, 2006 - O'Reilly Open Source Convention 2006
- July 28-30, 2006 - Desert Southwest Software Symposium 2006
Registered users can submit event listings for the
href="http://www.java.net/events">java.net Events Page using our
href="http://today.java.net/cs/user/create/e">events submission form.
All submissions go through an editorial review before being posted to the
Archives and Subscriptions: This blog is delivered weekdays as
Today RSS feed. Also, once this page is no longer featured as the
front page of java.net it will be
archived along with other past issues in the href="http://today.java.net/today/archive/">java.net Archive.
Integrating early and often