His takeaway is exactly that, if you aren't budget bound, think of what the future would be 15 years from day and start implementing that.
His takeaway is exactly that, if you aren't budget bound, think of what the future would be 15 years from day and start implementing that.
Tech is fad driven - look at all the big data projects by companies that don't need them.
Java was released in 1995. Compared to the state of the art back then, I believe it was a significant advancement. There was plain C with all its shortcomings, C++, but in a much worse state than today, and then the dynamic bunch (Python, Tcl/Tk?).
There's no doubt Java had major issues, many of which were only ameliorated with Java 2 and later, and some remain today. But on the other hand it was memory safe, statically typed, with much simpler semantics, machine independence, Unicode support etc. pp. I believe Java overall meant progress.
I'm not sure the advertising budget perspective is that salient. The main competitor for Sun at the time was Microsoft (with C++ and their Windows platform), who had a very well working marketing / developer relations / etc operation going as well.
Performance was avoidably bad in some parts of the libraries.
I recall a major rewrite of some product being started then killed because performance sucked (surely much better now, but things took far too long to change).
Memory behaviour was not fixed until java 5:
"The original Java memory model, developed in 1995, was widely perceived as broken, preventing many runtime optimizations and not providing strong enough guarantees for code safety"
(https://en.wikipedia.org/wiki/Java_memory_model)
I'd also like to add Brinch Hansen's heartfelt lament
"If programmers no longer see the need for interference control [in java's threading] then I have apparently wasted my most creative years developing rigorous concepts which have now been compromised or abandoned by programmers"
Per Brinch Hansen, Java's Insecure Parallelism - SIGPLAN Notices, April 1999
> statically typed
with type holes for arrays
> with much simpler semantics
yep, too simple. IMO it relied too much on the programmer. Generics took too long to appear also.
> Unicode support
Broken cos they didn't read the spec properly. It has problem with the BOM on UTF8 which has bitten me (can't remember the details, think it was this https://stackoverflow.com/questions/1835430/byte-order-mark-...)
The advertising budget was what drove things, not common sense. Java could have been good but it was designed badly and badly oversold.
I'm not so sure, you're comparing it only to C,C++ or Tcl/Tk but what about Ada? Smalltalk? Lisp? Objective-C?
Plus Java's standard library was full of bugs for a looonnng time: they focused on new features instead of fixing it.. I've experienced "Java can't print" myself while Java's hype was going full force..
Ada compilers were bloody expensive.
Modula-2, Delphi, VB, Oberon, Modula-3,..., were great, but they were either only available commercially, or OS specific.
Java was given away as free beer, with a batteries included standard library and with less hurdles than trying to write portable C or pre-C++98 across all platforms that existed in the 90's.
That alone made us try it out,
On my university, the computing department changed all the compiler design and distributed computing classes to Java, without Sun paying anything to a tiny Portuguese university.
But a well written java server-side application (so something that doesn't need to be started very often but generally just idles until it's contacted by clients) is as fast or faster than anything you were likely to be using for a couple decades after its introduction.
"were"? I don't know.
Smalltalk was neat, but never caught on, possibly due to the lack of free implementations and the difficulty of integrating with anything else. (The original prototype of the OS/2 3.0/Warp UI was done in Digi-something Smalltalk. (Waves feebly from IBM.))
Lisp, in particular Common Lisp, was very popular in certain areas, but again died out. Possibly another combination of lack of free implementations, integration difficulty, and sheer difference from the alternatives. (Scheme. Sigh. The cleanest language design ever. But no single OO design when that hype train was at full speed. Plus, parentheses, which well Common Lisp had already poisoned.)
Guy Steele said that Java dragged the industry halfway to Lisp, if that means anything.
(forked from Eiffel in 1990, unlike Eiffel it was free and open-source)
Authors claimed it was as fast as C++.
I learned about it on a Dr. Dobbs article and that was about it.
As for performance, Eiffel was already quite fast, because while it used a VM for development (MELT), AOT compilation was done via system compilers, with support for generics and value types from the beginning.
It was also one of the first OOP languages to support non-nullable references.
EDIT: This was the Sather article I referred to. https://www.drdobbs.com/tools/the-sather-programming-languag...
I don't remember any particular tooling, and the language was crap (Meyer was better at hype than language/compiler design).
IIRC sather was eiffel with the subtyping holes fixed. Bertrand Meyer allowed holes in eiffel subtyping (which sather disallowed) which he (meyer) was sure he could deal with, but eventually they proved intractable IIRC.
My boss eventually abandoned eiffel, and let the eiffel company know why. It was not an enjoyable experience for either me nor him.