We’re hiring again at Versature, take a look:
It’s a software developer position that gets you working directly with me. Make sure to spread the word!
We’re hiring again at Versature, take a look:
It’s a software developer position that gets you working directly with me. Make sure to spread the word!
How to tell Maven to download all Javadoc for your project’s dependencies:
mvn dependency:resolve -Dclassifier=javadoc
In this post on DrunkenBlog, Jonathan Rentzsch gives a terrific interview. Notably, he discusses Apple’s enterprise software development gem, WebObjects, which I’ve always wanted to know more about.
Anyone know if there is a downloadable developer’s version somewhere?
Update: Yes, you can download a 1 month evaluation copy from http://connect.apple.com/.
Now I really don’t get this project. At first glance, JAM seems to provide some of the Maven functionality in a nice, structured, way using Ant. The part I don’t grok is that JAM depends on Maven. Huh?
Since I am sure to be missing something and am very interested in build tools, please comment if anyone can do a good job of explaining where JAM fits.
I should now say something witty about Kool-Aid here…
I’m in the process of reading the Trails tutorial by this guy (Trails’ creator) and I am very enthused about the idea: I’ve always felt that code-generation is being overly used in J2EE development. I believe, as do others, that if you can generate it, you should be able to handle it at runtime. (There are exceptions to this rule, of course.) Java has an exceptional reflection API, we should use it. Also, Spring allows much of the work to be done via AOP. But I’m rambling a little here.
The major exception to my dislike of code generation has always been page templates. These are just dumb pieces of text, so you either need to build them by hand or generate them. I’ve never really understood what Tapestry was about until I started reading about Trails and realized that it was allowing us to push object oriented design all the way into the template layer of our applications.
They features of Trails, like allowing us to override the presentation of a specific field without building a template for the entire form and lack of code generation, are really exciting and will provide some great ideas for my current side project.
Those familiar with Plone development will see some similarities here.
A.
I try hard not to link blog, but this post on Cameron Purdy’s blog, /dev/null, is great. I’ll save you the anxiety:
And a drum roll, please ..
1 – At the 2005 TSS Symposium, Rod Johnson will not be able to resist saying the word “Spring.” Yup, it’s like trying not to think of pink elephants — impossible once you get that in your head. Spring, spring, spring, spring. La tee dah, spring spring spring. Take that, Linda. Spring-diddy-spring spring. Spring.
grin
Some time ago, I posted a short entry on Maven vs Ant. Since then, I have continued to use Ant while periodically taking yet another look at Maven.
This week, I came across this post on Otaku talking about keeping your Ant builds maintainable using <import> and <macrodef>. Greater maintainability seems to be one of the reasons Maven was created: allowing you to avoid creating build target spaghetti by describing the project and applying standard goals. These new Ant features can provide this maintainability, while keeping all the flexibility we’ve grown accustomed to.
Cedric’s post then led me to this comment thread on techno.blog(“Dion”) where a good discussion is taking place.
Finally, I can no longer remember how I got there, but dependancy management tools for Ant came up. TSS has an Inversoft‘s Verge project and a post on Mallim Ink pointed me to Jayasoft’s Ivy project. Both projects look very interesting; I think I will try out Ivy shortly.
Martian Software was talking about NailGun way back in January of 2003 when I emailed them asking about it. I received a message today from Marty Lamb:
If you are receiving this, you have expressed an interest at some point
in a notification when NailGun is available.
Well, it's available.
If it's been so long that you don't remember what it is, NailGun is a
client, server, and protocol for running Java programs within a
persistent JVM, eliminating the JVM startup time. I appreciate your
patience with the project as I have been swamped with other priorities
for some time now.
Although there are no known issues, there is still some work to be
done. Most importantly, I need to compile Windows and OSX binaries for
the client. If you can provide any assistance with this I'd be most
grateful.
More information, a quick start manual, javadocs, and downloads are
available from http://www.martiansoftware.com/nailgun. There's also
information for joining the NailGun mailing list. The fact that you are
receiving this message does NOT mean you have been added to the list.
This is a one-time mailing. If it's unwelcome, you have my sincere
apologies.
- Marty
--
Marty Lamb
Martian Software, Inc.
mlamb at martiansoftware dot com
I’m quite excited about NailGun for use in writing trivial command-line Unix scripts in Java. Going to download it and build a Mac OS X binary while I’m at it too.
Update: Runs nicely on my system, now to explore a bit.
I attended this past week’s OJUG meeting in Ottawa, which was very useful. Patrick Linskey, CTO of SolarMetric (developers of Kodo JDO) and co-author of Bitter EJB. He discussed JDO 2.0 JSR 243.
I am very interested in the next version of JDO as I’ve used Hibernate with great success and am looking for something similar, but standards based.
Some implementations of JDO 1.0 and 2.0 are listed at JDO Central. Kodo JDO 3.2 Beta has many of the JDO 2.0 features.
Some of my notes from the presentation:
We all went over to the Mayflower II for beer and conversation after the meeting. A good time was had by all.
Cheers,
A.
We are looking for two Java developers for a project starting shortly. Please do not bother to apply if you do not meet the following criteria:
Portfolio of code; or
Demonstratable involvement in an Open Source Java project; and
Experience with tools such as Ant Subversion and XDoclet; and
Experience with UNIX integration and development;
Update: This is for a consulting firm that is waiting to hear whether they have been selected for a medium sized project. They want to have potential team members selected in advance.
Update: This project has not been given funding.
Thanks.
A.
Updated: Since I’ve noticed quite a few Google hits on this entry, I thought I’d post some more information.
I’ve finally figured out what Maven is all about. (No one seems to say it outright.) This enlightenment comes after writing a previous post
The basic difference is fundamental: where Ant allows you to build your own targets to do anything you wish, Maven takes your description of your project (directory structure, etc) and uses standard, pre-written, tasks (goals in Maven-speak) to achieve the usual build needs.
Maven has a bunch of built-in plugins and goals. You can write your own using Jelly.
I’ll be updating this post with some more info shortly. (Ok, so I guess it took a while. My conclusion seems to be staying with Ant, particularly with the addition of new extensions.)
Some relatively clean information is available here
JJAR promises to be a tool/service that the Java community sorely needs. We are all too familiar with Jar hell.
From the site:
A distributed repository consisting of jars from various projects (which we call packages) as well as version and dependency information about those packages. This logical repository consists of a central main repository, and any number of sub-repositories, each responsible for a given project (or projects.)
A toolset to allow the navigation and fetching from this repository, as well as direct access to repository information, such as project dependencies.
The general idea is that you setup a repository for your jars, including full dependancy information, which then allows you to use the Ant task as noted here
However, I see very little activity on this project. CVS has nothing interesting in over 2 years. Anyone know its status?
I do intend to test it this week, even though it seems inactive. (Probably because of Maven
Hot off the heels of confirming that it would open source Solaris, Sun has now semi-officially spoken about the Java platform:
Working with the XML specifications for Java has always been a pleasure for me. Yes, some criticise them fiercely, however I feel they are mostly adequate for t he task.
I recently encountered a problem with JAXB; the specification requires two behaviours which I find to cause integration hassles:
Both issues crop up when using JAXB with a container such as PicoContainer, Spring or anything else that expects to be able to instantiate empty beans without special knowledge.
The second issue becomes a difficulty when using JAXB beans with “dot notation”. For example, you cannot simply create an empty bean and then try and set a property like car.engine.timing since the reference to engine is null until you create an Engine object and assign it. Would it be more appropriate to recursively populate the bean?
George Datuashvili mentioned on the JAXB mailing list:
“In future JAX-RPC 2.0 will be based on JAXB 2.0, and since JAX-RPC already requires EJB bindings, your issue will have to be resolved by JAXB or JAX-RPC working groups.”
That thread also talks about using java.lang.Proxy, which I find very interesting.
While attempting to deploy an EJB jar on a fresh installation of JBoss 3.2.2 I received the following error: (Sorry about the long lines.)
java.lang.NoSuchMethodError: org.apache.bcel.generic.InstructionFactory.createNewArray(Lorg/apache/bcel/generic/Type;S)Lorg/apache/bcel/generic/Instruction;
Looked like a version mismatch to me, which would be wierd because JBoss should be using the version of Apache BCEL that shipped with it, no? But what if we have a traitor among us?
I quickly remembered all the cruft that the Java Web Services Developer Pack wanted me to install in the JRE’s endorsed directory, might something there be the culprit?
Indeed, it seems that xsltc.jar contains a version of BCEL. (A rant for another day: even if it makes people do more deployement work, please do not include dependancies in your jars.) I believe that some versions of the Xalan jar also include BCEL, so beware.
Solution: I hope this doesn’t have any side-effects, but you can solve the immediate problem by copying the version of BCEL that ships with JBoss 3.2.2 into your endorsed directory. The BCEL jar is probably located at $JAVA_HOME/server/default/lib/bcel.jar and you want to put it in $JAVA_HOME/jre/lib/endorsed.
How little things can become time-sinks.
Keeping track of the tld files for a framework or API is an error-prone process, very much so when using a framework like Struts or JSTL that has multiple tag libraries .
A better solution is to package the TLD files along with the rest of the library’s classes and other resources. This is actually mandated by the JSP specification, but who reads specs anyway. IBM developerWorks has a great series on JSP best practices, or which one of the articles explains this technique:
http://www.ibm.com/developerworks/java/library/j-jsp09023/
The short explanation is to put the TLD files in the META-INF directory of the jar file and reference them in your deployement descriptor like so:
<taglib> <taglib-uri>http://www.newInstance.com/taglibs/site-utils</taglib-uri> <taglib-location>/WEB-INF/lib/newInstance-taglib_1-1.jar</taglib-location> </taglib>
Some of the other articles in the series are worthwhile as well.
In addition to this simple use of advanced jar packaging, there is a multitude of other abilities that are completely ignored, I will post some more on this subject this week.
Since I do not believe that Struts is the be all and end all of application frameworks, I’ve been looking around at the competition. There are quite a few. Since I believe that this IoC (Inversion of Control) thing is a Good Thing, I’ve restricted my search to those frameworks that manage not only the “actions” of an application but also it’s components.
Currently, there is the following:
I’ve been hearing some Bad Things about WebWork lately, nothing substantiated though.Another possibility is too do something homegrown on top of PicoContainer.
In then end, I realise that it is a very difficult topic. But I have a plan: I want to put together an evaluation sheet for frameworks. Please email me your thoughts and I will condense them into another posting.