Code Distribution: An Old Problem
Back in the late 1990s, when C++ was in the ascendancy, the humble dynamic-link library (DLL) was the accepted unit of Windows software distribution. DLLs represented shared libraries of code, and this model persists to the present day. However, the nomenclature has changednowadays, on the .NET platform, the term assembly is used instead of DLL. Assemblies offer a range of facilities designed to make life easier for software producers targeting the .NET platform. One such facility is language independencecode in an assembly can be used by any of the .NET languages. In this context, language independence helps to unify multi-language solutions.
However, unity between Java and the .NET languages currently remains an aspiration. This is most likely due to commercial considerations; neither side wants to add value to the other by bridging the two languages. I guess that's the price of having private companies driving the main global technologies! (Now that Java is an open source platform, we might see some progress in the future.)
Anyway, assemblies offer all the old advantages of DLLs as well as a number of new ones; for example, versioning, XML description, digital signing, location independence, and so on. We'll see some of these features later on in this article.
Now let's take a look at the big picture of the application.