you should code all transformations in Java ?
I would not want to that. I'd use the most appropriate technology for the data I am transforming. I'd look for a technology that lets me configure the transformations and not code anything unless really needed.
In my opinion the data to be transformed will determine what transformation engine should be used, if any.
It's say general transformations on Strings (fixed length, csv, ...) and on XML. At this time, no Java objects.
We will be adding out of the box alternatives to Smooks e.g. for using XSL and FreeMarker (and maybe more) directly.
If your requirement is to perform simple structral transformations on XML, then I think XSLT or FreeMarker would be the way to go i.e. probably don't use Smooks. If you're doing more complex stuff or need to transform other data formats, then Smooks might be a good choice in terms of transformation. The Smooks offers other capabilites too, such as splitting, transformation and routing of message fragments and more.
As Daniel says, it really depends on what you're trying to do. Having a hard and fast rule about this stuff (must use Smooks... or must code it all in Java) just doesn't make sense to me.