Joshua Fox's Professional Articles

This is a list of my writing in software and related topics.

See here for my writing about the Intelligence Explosion.

The White Paper for the product which I launched in IBM.

The article is aimed at senior Java developers, encouraging them to learn more about this exciting language. A dialect of Lisp, Clojure runs on the JVM with excellent integration with Java, and provides new, improved solutions for the biggest challenge to programming languages today: concurrency.

To expose siloed mainframe functionality now locked up in siloed systems, it is essential to understand its business value. Automated classification technologies help make this happen.

Architecture is as much about the organization as about technology. This article explains how to divide responsibilities in Service Oriented Integration to let each team do what they do best.

As a consultant for a leading provider of Java-.NET interoperability software, I wrote a white paper evangelizing the company's IBM WebSphere Portal product, showing how it functions as a user-facing on-ramp to SOA.

Exciting news has been coming out about JRuby: Sun hired the two lead developers a beta for Java 6 with built-in scripting API. Sun also announced plans to support dynamic languages on the JVM-level, and the JRuby team announced support for Rails.

The article explain Ruby on Rails to Java developers, comparing it to Java web frameworks. It presents an example based on JavaSpaces, which leverages Java from within the Rails application. Even those Java developers who do not adopt Rails will benefit from the design principles built into the framework, as well as the rapidly emerging concept of non-Java languages integrated with Java and the JVM.

Dynamic languages are rapidly gaining in popularity. Ruby in particular has attracted attention, with a big boost from the Ruby on Rails Web framework. In this article, I introduce Java programmers to Ruby, focusing on the similarities, differences, and connectivity between the two languages, and describing the value of JRuby on the Java-platform. The article got some buzz on the net, including from Frank Sommers at Artima.

A business-focused overview of the value that semantics bring to Service Oriented Architectures.

EAI gives O(n) complexity for connecting n applications on the network, but there remains an O(n2) complexity for integrating the message formats that the applications use as input and output. With an ontology-based approach, however, this too can be reduced to O(n).

Web Services lookup with UDDI requires client and server to agree on the exact syntax of the interaction. Using the principles of ontology, providers can publish and clients can discover Services based on the desired functionality rather than the syntactic details.

I've found that once new Jini developers learn about the exciting distributed architecture, they often get bogged down by the challenge of simply configuring their system for development. They encounter a yet greater challenge in moving from the development configuration to deployment. Even experienced developers can get confused by the variety of components involved.

In the article, I review a number of solutions and explain the advantages of various solutions such as ease of development,ease of migration from development to deployment, low memory and CPU burden, portability, compatibility with RMI Activation, security, and enterprise-class web-app features.  

I describe and review a toolkit for allowing distributed applications to share objects, and more generally discuss the challenges of managing distributed objects. The JSDT was an official product from Sun, although it never made it to the status of a Java extension. It implemented some interesting ideas for distributing objects. I had fun submitting suggestions on improvement and corresponding with the creator, and some of my suggestions (like one on failure detection), actually made it into the toolkit.

Jini and JavaSpaces, also from Sun, which offer with leasing, fully distributed architectures and an emphasis on a dynamic transfer of behavior (classloading) have taken the lead in providing this sort of functionality for distributed objects.