Thinking Inside a Bigger Box
Welcome to Johannes Brodwall's blog. I use this space to work on articles mostly about software development, with a focus on Java, SOA, and Agile software development. Many of the articles you will find here are not much more than drafts, and I certainly appreciate input on how to make them better.
If you wonder about the title of this blog, Thinking Outside the Box may answer your questions.
I work as the lead software architect of BBS, the company that handles interbank services in Norway. In my copious free time, I develop software and consult companies in development practices and architecture. For more about the services I can offer, please see my resume.
Submitted by Johannes Brodwal on Mon, 08/18/2008 - 20:17.
Many people enjoy splitting testing up in a myriad of test types: Acceptance Tests, Functional Tests, Integration Tests, Performance Test, Technical Tests, Unit Tests. I have myself been guilty of such terminology as “embedded integration tests” and “requirement tests”. However, what unites the tests are more important than what divides them. The divisions are fuzzy, and they should be.
Read more ...
Submitted by Johannes Brodwal on Mon, 08/18/2008 - 20:17.
Java.net’s latest poll asks: should checked exceptions be removed from the Java language. Sadly, the poll is not going the way it should right now. Many people feel checked exceptions are key to reliable programming. They are wrong. Please: Read this post, and help improve the Java programming language by voting “Yes” to remove checked exceptions.
Read more ...
Submitted by Johannes Brodwal on Mon, 08/18/2008 - 20:17.
Anders Nordås shows how to throw a checked exception without declaring a throws clause. The method uses some inherently evil mechanisms (the name of the class “sun.misc.Unsafe” should be a tip of), and like Anders says, this should probably never be used in production.
Read more ...
Submitted by Johannes Brodwal on Mon, 08/18/2008 - 20:17.
The code I write in Ruby is higher quality than the code I write in Java. Why? Because the language supports better abstractions. It lets me express a problem once, and reuse it many places. The strength of an environment comes from the quality of the libraries, and the qualities of the libraries comes from the features of the language. In this post, I will review a proposal to make Java a better language: First-Class Methods. See how much better the code looks with it.
Read more ...
Submitted by Johannes Brodwal on Mon, 08/18/2008 - 20:17.
On my project, we use Maven to build our software and FitNesse to write functional specifications. However, it was obvious that FitNesse wasn’t designed by Maven-fans. When I use Maven, I already have control over my classpath, and specifying it in every FitNesse test gets to be old really fast. Why can’t I just inherit the project class path, and start FitNesse using maven-antrun-plugin or just from my IDE?
I found a neat way to implement this by overriding FitNesse. Using the same technique, I’m also able to debug FitNesse tests.
Read more ...
Submitted by Johannes Brodwal on Mon, 08/18/2008 - 20:17.
Last night, I worked until after midnight trying to get our application up and running after some seemingly inconsequential changes in Spring-XML configuration. Our application consists of a total of 32 modules (including 6 wars and one “server” module that packages them, and 11 modules that are shared with other projects). Most of these modules have Spring-XML fragments that are included in a few different ways, with the result that a nobody on the team actually understands how it fits together.
Read more ...
Submitted by Johannes Brodwal on Mon, 08/18/2008 - 20:17.
My talk at JavaZone went surprisingly well. The fact that the projector went dead and that I was planning on opening with a demo raised my pulse, but I felt I managed to get my message across and that people were happy.
The talk was about how we use Jetty to manage the full deployment life cycle of our application. I explained how we had implemented this and what problems we had solved. Here’s a quick summary of our life cycle process:
Read more ...
Submitted by Johannes Brodwal on Mon, 08/18/2008 - 20:17.
Stand up and be counted. Which one do you think is best of the following?
Package by layer:
- com.app.controllers
- com.app.model
- com.app.repositories
- com.app.exception
Or package by feature:
Read more ...
Submitted by Johannes Brodwal on Mon, 08/18/2008 - 20:17.
In Let your examples flow, Dan North describes how “Don’t Repeat Yourself” (DRY) isn’t necessarily the most important guideline for tests. While I agree with his conclusions, I think the DRY principle is still extremely important for tests.
Read more ...