An Architect's View

CFML, Clojure, Software Design, Frameworks and more...

An Architect's View

When Java was young!

January 4, 2013 ·

I just happened across this quote about Java:

We've also seen a new light in the OO world. A language that promises portability and simplicity, a faster way to build tomorrow's application: the distributed application. Of course, I'm talking about Java. Is it all hype? Is it the new saviour? Hopefully, you'll all be convinced that it is neither. It is, however, an extremely important development and provides us with yet another tool with which to solve the problems around us.

Although early days yet, Java too will need standardisation in order to "facilitate commerce" as they say in the standards' world. That effort is expected to begin shortly but we do not know yet how it will progress.

Can you guess when that was written? Or who wrote it?








The quote comes from an editorial penned in October 1996 for "Overload", the journal of the C++ Special Interest Group of the Association of C & C++ Users. It was written in the context of C++ getting close to an International Standard (and ANSI Standard).

It was written by me. For three years I was Managing Editor of "Overload", from issue 5 in 1994 to issue 17/18 in 1997. I was also an active, voting member of J16, the ANSI C++ Standards Committee, and a member of the BSI (British Standards Institute) panel on C++, often representing Britain's views on the ISO C++ Committee. C++ had come out of AT&T in the mid-80's and grown into one of the most widely used programming languages within a decade. Standardization was a long, slow and sometimes painful process. It continues today, evolving C++ every five to ten years, with some of the same folks involved on the committee. I left the committee in 1999, after being J16 secretary for three years, and gradually embraced Java (starting in 1997) and eventually leaving C++ behind.

Java never did get a standard. At least, not in the ISO / ANSI / ECMA sense of things. I don't think any of us back then could have predicted what a juggernaut Java would become and, in particular, that it's portable virtual machine would provide the basis for so many new and interesting languages - and a great target for old and established ones!

You can read the whole of Issue 16 of Overload as a PDF. Many other issues of Overload are available in part or in full in the ACCU archives of "Overload". A lot of the OO writing in the early issues is particularly interesting from a modern point of view, if you consider that when the classic "Gang of Four" Design Patterns book appeared, the journal had already been running for a year!

Tags: j2ee · programming

7 responses

  • 1 Kirill // Jan 5, 2013 at 4:55 AM

    You are a prophet! So, tell us, is there a programming language (of our days) for which you can predict such a bright future as you did for Java?
  • 2 Franklin Chen // Jan 5, 2013 at 7:18 AM

    It's always fascinating looking back in time. I remember hearing about Java first in around 1995, but I'll have to dig up old email archives to find out what I was saying about it to friends. I also remember being a heavy user of C++ back then, and leaving it for all practical purposes by around 1998. And now, 2013 is the year when I no longer want to write new Java code, but am transitioning to Scala.
  • 3 Sean Corfield // Jan 5, 2013 at 10:27 PM

    Back in those early days Java was initially only available on Windows (and required 32-bit systems which not everyone had) and Solaris. I was all Mac, even back then, so it was a while before I could even play with it!

    Given the wealth of other languages available on the JVM, I certainly don't want to write Java these days. Far too verbose and annoying! I did Scala for a couple of years but found it kind of restrictive after doing so much work with dynamic languages. Slow compiler, lots of binary compatibility problems (in the 2.7 to 2.8 transition), and a fairly weak tool chain (back then). That's why I switched to Clojure.

    Also given the wealth of languages in general, I don't think we're going to see the sort of single language dominance that we've seen in the past. We're seeing a lot more polyglot programming, with projects choosing a mixture of languages and using "the right tool for the right job" in each part of the project.
  • 4 Franklin Chen // Jan 6, 2013 at 7:36 AM

    I had looked at Scala earlier, and from what I could tell, that world was totally immature and unusable for years. But as of 2.9, it seemed that things were changing, and now with 2.10 out, I have finally been sold on the usability of Scala. Since I strongly prefer statically typed languages, I'm pretty excited.

    As for the polyglot world, I hear you. It's here.
  • 5 Sean Corfield // Jan 6, 2013 at 11:21 AM

    @Franklin, yes, things have come a long way in Scala since 2011 and if I found myself faced with using it today, I wouldn't be unhappy :)

    Still, for what we do at World Singles, Clojure makes more sense for our workflows - and you can't beat having a live REPL into your application for debugging and, potentially, live updates.
  • 6 Kirill // Jan 6, 2013 at 6:40 PM

    I've been using Scala for a couple of months by now (after I completed that course on Coursera) to build a module that I am planning to plug-in into existing CF10 app. I've done some tests to see if code compiled from Scala can be used in CF apps and for, at least very simple examples, it works (but I still have to test it with various Scala data types). There are some issues though, for example CF's isInstanceOf function does not seem to work on Scala classes. Although, for example it was very easy to write a CF function that would loop through Scala's immutable list.

    Regarding the language itself, I am not very experienced with statically typed ones, but so far I find Scala ve-e-ery easy and pleasant to use (pure FP style). There is good IDE support (I use IDEA now and I switched from Eclipse) with very good intelli-sense and a good build tool (SBT).

    The reason why I decided to use Scala to build a module for CF app is, well one of them is that Sean always tells us to try out new things, so I did. Another one is that the module I need does a lot of http requests to external APIs, and it would benefit greatly if it could be done in parallel. I do know that CF can be parallel but all these threatening sorties about concurrent programming with mutable state stopped me from trying. But Scala (especially 2.10) offers a lot of tools for concurrency.

    Let's see what it will turn out to be. If everything goes smoothly maybe I will switch all my model layer components to Scala because honestly I could use some performance improvements in calculations.
  • 7 Sean Corfield // Jan 6, 2013 at 6:51 PM

    @Kirill, yup, that's a perfectly good approach and some people simply prefer Scala to Clojure (or whatever).

    Using Scala for its concurrency and FP features is going to get you more "bang for your buck" than just using it as a "better Java".

    At World Singles, we found Clojure a better "fit" for our workflow than Scala - and we're well on the way to switching all our model layer components to Clojure.

    I still like Scala, and I'll probably continue to dabble in it (and may well take the Odersky course next time it is run, just as a refresher). But I like Clojure more :)