Version Checker  Version Checker

go to home page Student Projects full screen, hide local find menu Google search web for more information on this topic jump to foot of page translate this page with Babelfish by Roedy Green ©1996-2008 Canadian Mind Products
This essay is about a suggested student project in Java programming. This essay gives a rough overview of how it might work. It does not describe an actual complete program. I have no source, object, specifications, file layouts or anything else useful to implementing this project. Everything I have to say to help you with this project is written below. I am not prepared to help you implement it; I have too many other projects of my own.

I do contract work for a living, which could include writing a program such as this. However, I don’t do people’s homework for them. That just robs them of an education.

You have my full permission to implement this project any way you please.

The Problem

Every program has a different way to find out that a new version has been released. Unfortunately there is no standard way to check. Further it is very common for updates to go unnoticed or to get lost. Further, many manufacturers will notify you of micro updates, but not of major ones, or of ones for which there is a charge.

The Plan

What we need is a uniform, quick, automated way of discovering if any of your software is out of date. It works like this. You maintain an SQL database on a webserver that contains the following information about each product. For each customer you maintain the following information: The customer then daily runs a little program that does a lookup by ID, and sends him a list of his products that are not current. If the customer does not check in for a few days, you send him an email with that information in human readable form. You could also provide a web interface where the customer must provide an ID and password.

This leaves the question, where does the information for the product versions come from. Here are some possibilities.

Commercial Considerations

The overhead on your server is almost nothing. This means you can service a very large number of clients with just a desktop computer. The customer does a single tiny record update and gets back a single tiny binary record. The process of propagating the knowledge of a new version to all customers that use it can happen in the background as a batch process.

You could finance the plan with Google Adsense ads, or with a small yearly fee.

Alternate Implementation

This is a much simpler approach to the same problem. You write a Java Web Start application. It has no central database. Every user is responsible for configuring his own apps. It displays a JTable with 6 columns:

Vercheck screenshot

  1. The first column is a status indicator using icons.
  2. The second column is the name of the application.
  3. the third column is the current version number.
  4. The fourth column is the URL of a webpage that can be used to test if the version has changed.
  5. The fifth marker column is a string that exists somewhere on a webpage if the version has not changed. It would usually be the version, but it could be date, or some text in a revision. This string can alternatively be a Java regex to search for on the page. It might be necessary to add other criteria such the header date on a file, or the existence of some file.
  6. The sixth column displays the date the version last changed.
Icons Used in VerCheck to Describe Applications
Icon Meaning
empty empty row
invalid invalid, e.g. bad date, bad/missing URL
unknown status not yet determined
checking In the process of contacting and checking this website
brokenlink Could not contact website, or possibly the page is missing. Could indicate a version change.
unchanged Unchanged, released over a year ago
unchanged Unchanged, released in last year
unchanged Unchanged, released in last month
unchanged Unchanged, released in last week
changed Version has recently changed. A new version is available. The marker is out of date.
Icons Used on VerCheck Command Buttons
Icon Meaning
plus add application at the spot selected
minus remove selected application
check Check all websites for new versions
This program is primarily an exercise in using JTables. The user can fill in the app name, url and marker, add, delete, revise, sort etc. Then the user hits a button labelled check for new versions. The program then uses an HTTP GET to fetch each page and search it for the string. The program must persist the data between runs, perhaps using the preferences tools or perhaps the new bundled Derby SQL database.

I have written a version of this simpler version I call VerCheck. I use it to maintain the utilities page.

HTTP
Java Web Start
JTable
preferences
regex
SQL
URL

CMP homejump to top
CMP logo
feedback Please email your feedback for publication, errors, omissions, broken/redirected link reports
and suggestions to improve this page to Roedy Green : feedback email
made with CSS
HTML Checked!
ICRA ratings logo
mindprod.com IP:[65.110.21.43]
Your face IP:[38.103.63.59] The information on this page is for non-military use only.
You are visitor number 11. Military use includes use by defence contractors.
You can get a fresh copy of this page from: or possibly from your local J: drive (Java virtual drive/mindprod.com website mirror)
http://mindprod.com/project/vercheck.html J:\mindprod\project\vercheck.html