Java.net: sourceforge+articles for Java

Through the wonder of JavaBlogs, I have come across java.net – the Source for Java(tm) Technology Collaboration. My initial thought upon seeing it is that it appears to be like SourceForge combined with Slashdot, but run by a big company rather than a few very interested individuals.

The projects part of Java.net is actually CollabNet software. Sun will probably get no end of grief because the Wiki is TWiki (which is written in Perl 🙂

One good thing I’ll say for Java.net is that they seem to have built up a bit of stuff to look at already. As an example, JGoodies is releasing some of their stuff as open source! Good news for anyone working on Java GUI apps.

Danno Ferrin’s Java GUI Testing Tools Roundup

I’m about to do a little Swing work and I haven’t decided what kind of automated testing I want to do for this UI. But it was handy to see Danno Ferrin’s GUI test tool roundup. He and Glen Stampoultzis both came across a tool called Marathon which Danno describes thusly:

Marathon – not perfect but Good Enough. Record option, junit playback, was able to get it working with my detateched test harness. Dosen’t record random key strokes like I would like it to, but it referes to the JComponents principally by the setName(…) value you gave to it. It uses Jython to record the test and play back the test script.

Eclipse 3.0 M1 is out

As promised on the roadmap, Eclipse 3.0 Milestone 1 has been released. Though there is still a lot to come in Eclipse 3.0, Milestone 1 already offers a number of new features. Many things smooth over the interface, like “Smart Insert”:

The automatic insertion of closing braces in the Java editor has been improved. Rather than occurring as soon as the opening brace is inserted, it now happens when a new line is entered after opening brace.

Also, there are two new experimental typing actions: Smart Semicolon and Smart Opening Brace. Disabled by default, they can be turned on from the Java > Work in Progress preference page. These typing actions move the caret to the end of the line before inserting the semicolon or closing brace, respectively.

There doesn’t appear to be the same rush on this milestone as there was for the 2.1 release.

Shareware Amateurs vs. Shareware Professionals

Steve Pavlina has written an excellent article about why some shareware authors succeed where others fail. This article actually applies in a much broader sense than just shareware. Here’s a choice bit:

There are three good reasons why experienced professional shareware developers are often able to release more consistent hits than less experienced amateurs. First, the pros have already plugged many of the holes in their system that are shared by all products, such as optimizing their web sites to sell, refining the ordering process, implementing a money-back guarantee, crafting a solid marketing plan, gaining excellent search engine placement, etc. So when a new product is released, it inherits the benefits of prior system-wide optimization work. Secondly, the pros can apply the wisdom gained from refining each previous product to any new release, so when they release a new product, they’ve already eliminated all the obvious sale-killers that still plague amateur developers. And thirdly, the pros have already internalized the attitude that the first release is just the beginning; thus, they expect to continue to refine the product and immediately start listening to user feedback to help them locate new holes that need to be plugged.

Having a successful product involves a lot more than just the product itself. Having a market for that product, and a plan to market it is important. Many of these factors also apply to open source projects. Even though many people seem to be annoyed at Marc Fleury’s bluster, I bet JBoss wouldn’t be nearly as successful if it weren’t for the constant marketing and improvements that they do. New Jakarta projects have an advantage over other open source projects, because Jakarta automatically brings in a lot of attention. But, that’s because Jakarta has been turning out useful products for a long time.

JDJ Looks At JavaServer Faces (JSF)

Java Developer’s Journal has a new article about JavaServer Faces. In short:

In this article, we will survey the various Java Web development frameworks that are popular today and then take an in-depth look into the JavaServer Faces (JSF) technology.

The “survey of frameworks” didn’t say a whole lot and doesn’t draw comparisons between JSF and the open source frameworks. But the article was a good intro to JSF for the uninitiated, like myself.
When it comes to frameworks that we base applications on, I’m very wary if the source is not available. The source may be available for JSF as part of the Java Web Services Developer Pack, but I did notice that the license does not allow redistribution of the JSF package. So, don’t go trying to sell a JSF app!
It appears that you can (or will be able to) use Struts with JSF, if you like.

Joel on VCs

I always enjoy reading Joel Spolsky’s writing, and his latest (Fixing Venture Capital) is no exception.

The fundamental reason is that VCs do not have goals that are aligned with the goals of the company founders. This creates a built-in source of stress in the relationship. Specifically, founders would prefer reasonable success with high probability, while VCs are looking for fantastic hit-it-out-of-the-ballpark success with low probability.

I think Joel is right on the money (in a manner of speaking). Another issue that Joel doesn’t go into is exactly what the VCs are expecting for an “exit”. He quotes Joi Ito as saying that the VCs want to cash out in 6 years. That means either an IPO or a sale. During the dotcom boom, many companies went for IPOs before the business was really ready for it. A public company has tremendous reporting requirements on it, and public shareholders sometimes seem to have a very near-term mindset (just watch how wildly many stocks will swing around earnings announcement time!)

Scriptable Struts Actions

I came across IBM AlphaWorks’ Struts Action Scripting a few weeks ago. It sounded interesting, but it suffers from the same problem as everything AlphaWorks: ambiguous licensing. It’s not open source, and it’s not even concretely commercial (there’s no defined “price” and distribution terms under which you can use the software). So, I’m happy to read about this project: Scriptable Struts Actions Using BSF

This project allows Struts Actions to be written in the scripting language of one’s choice rather than as Java classes. It uses the Beans Scripting Framework to allow scripts to be written in any language BSF supports like Perl, Python, Ruby, JavaScript, BeanShell, and I believe even VBScript.

Actually, there is no license displayed anywhere for Struts BSF, but it does sound like the intention is for it to be open source.

Naked Objects

This is the first time I’ve come across the Naked Objects framework. A “naked object” is basically a fairly standard Java object that descends from a base class provided by the framework. The interesting bit is what the run time system provides:

  • A viewing mechanisms that creates, in real time, a user-manipulable representation of any naked object that the user needs to access. The viewing mechanism included with the framework generates the style of user interface shown throughout this site. Alternative viewing mechanisms could generate different styles of interface, and/or interfaces customised to the capabilities of different platforms, channels, or devices.
  • A persistence mechanism, which renders the naked objects persistent via a specific Persistor class. The framework comes with a very basic Persistor class that stores each naked object as a separate XML file. This is suitable for rapid prototyping, but does not scale up. More sophisticated Persistors have been written to utilise popular middleware such as Enterprise Java Beans, and we expect that alternative Persistors will become publicly available.

The Naked Objects site doesn’t talk about what license the package comes under (and I haven’t downloaded it yet to find out). This seems potentially useful for me, because the applications I’m working on are with a controlled user community that can be trained on how to use the system.
Update 4:24: just found a reference in the newsgroup that Naked Objects is LGPL.