
A Language Is More Than a Language - guiambros
https://docs.google.com/presentation/d/1_aAFyzVtwk5yVw2M57EkFeA1vyo_OujwUB3kb35Zm3Y/edit#slide=id.p3
======
nabla9
"And you're right: we were not out to win over the Lisp programmers; we were
after the C++ programmers. We managed to drag a lot of them about halfway to
Lisp. Aren't you happy?"

\-- Guy Steele - Sun Microsystems Labs (about Java)

source: [http://www.ai.mit.edu/~gregs/ll1-discuss-archive-
html/msg040...](http://www.ai.mit.edu/~gregs/ll1-discuss-archive-
html/msg04045.html)

~~~
pjmlp
Back then I was disappointed with the state of C++ compilers across vendors
and OSes (the standard was still being defined).

Meanwhile, I also had discovered that it was possible to use a GC enabled
systems programming language for writing OS (Oberon and Modula-3). And was
exposed to Prolog, Caml Light, Smalltalk and Eiffel.

So Java seemed a nice compromise for industry adoption. Our university adopted
it right away for its distributed computing and compiler development classes.

However I never liked the religiosity about a JIT, preferring the .NET way of
having a choice between JIT and AOT.

So I still like C++ a lot, but unless I am shaving off ms or bytes from a
specific algorithm or writing portable code for mobile devices, I tend to use
other languages.

~~~
munificent
> However I never liked the religiosity about a JIT, preferring the .NET way
> of having a choice between JIT and AOT.

I wonder how much of this comes down to the fact that Java methods are virtual
by default and in C# they are not. The former makes devirtualization more
important and is harder to do ahead of time.

~~~
pjmlp
Might be. Most other OOP languages back then (mid-90's) used static by
default.

------
stevoski
I think what Bruce Eckel is arguing here is that the creators of Java and the
Java API would have done a much better job if they had applied the lessons in
advance that they learnt from years of Java being actively used. Which is, in
my opinion, a somewhat unfair and unrealistic point of view.

But yes, a real Java 2 or Java++ or next generation Java would indeed be a
good thing.

~~~
jrochkind1
You don't have the benefit of retrospection in advance, it's true.

But you can take more time before releasing major components/features, and try
to get them right. Eckel thinks they could have done better if they hadn't
been in such a hurry, and focusing on marketting over quality, and maybe had
some more skilled people involved. Especially in a platform so committed to
backwards compat, if you release something designed poorly, you're stuck with
it.

I guess the 'marketting' rejoinder would be if they had taken more time before
releasing an attempted solution, it might have prevented Java's success in the
'market'.

I don't know. But I think it's general consensus at this point that eg J2EE
API's and design was/is pretty awful -- and I don't think it actually takes
retrospection to see that, it was awful right away and was seen so by many
right away too.

~~~
twic
Was J2EE obviously awful at the time? I'm honestly not sure.

I had a summer job working on EJBs at a company that had built everything on
CORBA. It was basically a research project; they knew they had to switch to
EJB, because it was going to be the standard (ha), and they wanted to know
how. This was in the EJB 1.x era, so somewhere between 1998 and 2001 - i don't
remember exactly when!

I remember thinking that it was all rather complicated, especially around
persistence. And i remember being appalled that beans didn't actually
implement their interfaces. We came up with some rather complicated pattern to
work around that - i think there was a master interface where all the methods
threw RemoteException, then the bean interface trivially extended that, and
there was a local interface that extended it but overrode all the methods to
not throw RemoteException, then the bean implemented that. And i spent most of
my time there wrestling with the fact that the performance characteristics of
local and remote calls are very different, and how that impacted design; we
ended up with DTOs mirroring every entity bean to save network round-trips.

But the thing is, there was nothing else around at the time that did anything
similar. Remote object invocation, with declarative transactions, and
container-managed object lifecycles, including pulling objects out of a
database on demand. That seemed like saucer tech! So it seemed, glaring design
flaws aside, fair enough that it was complicated. Hey, i might have to write
an XML document, but at least it wasn't ten thousand lines of C++.

~~~
jrochkind1
If, right off the bat, you had to come up with some complicated patterns to
work around EJB's.... to me that says, yes, it was obvious at the time that
J2EE/EJB was awful.

There might have been nothing at the time _in mainstream languages/platforms_
(important distinction) that did something similar, but that doesn't mean they
coudln't have done better if they had spent more time on it. I mean, even if
there's nothing better to use as a model (debatable), is it acceptable to
release something that requires complicated workarounds? (I guess that's
debatable too; but we know what side Eckel comes down on!).

(Does anyone still want remote object invocation these days? I ask for real, I
don't know. In my circles, it seems generally to have been found to be a
mistaken thing to try. Based on experiences like yours in fact. So the other
question is whether 'something similar' is even what was needed -- again, I
think, a design question that takes time. Figuring out the right features of
the right solution to actual problems is design.).

~~~
pjmlp
> here might have been nothing at the time _in mainstream languages/platforms_
> (important distinction)

Going off mainstream, I read somewhere that Objective-C WebObjects framework
was the inspiration to J2EE, given the Objective-C work going at Sun back
then.

Then there was also Taligent, but it was short lived as well.

> Does anyone still want remote object invocation these days?

Apparently yes, now they call it REST and microservices.

~~~
gaius
But noone tries to fake them being the same as local calls

~~~
pjmlp
Except almost everyone is providing SDKs that do exactly that. Should I
provide links?

~~~
gaius
Really? Every 10 years the same mistakes roll around again, I guess.

~~~
pjmlp
For example, PayPal SDK

[https://developer.paypal.com/docs/classic/lifecycle/sdks/](https://developer.paypal.com/docs/classic/lifecycle/sdks/)

~~~
gaius
I don't know whether to laugh or cry.

------
ExpiredLink
I have no doubt that you cannot win the 'war' on the language front. All those
bloggers, internet and conference luminaries that never write real-world
production code miss the point. It's about the platform, the whole programming
ecosystem not about 'beautiful' syntax. That's why Java - the platform (Java
EE, Android, ...), not the language - won and is still going strong. New
languages (D, Rust, ...) have not the ghost of a chance unless they are able
to create a platform.

~~~
Apanatshka
I agree. But don't forget that it took years of hard work to build up enough
of "Java the platform". Things that help there is having traditional man-
power, which costs money, and having a strong community, which takes
lobbying/evangelising/advertising. In a way, all those "luminaries" you
mention may or may not miss the point individually, but the buzz it creates is
necessary to build the community that makes the platform, and that in turn
makes the language succeed. _Developers, developers, developers, developers,
developers..._

------
vmateixeira
Can someone please clarify me... Not defending Sun/Oracle decisions in here
but isn't Bruce Eckel confusing Java as a language with some Java libraries,
of which some happen to be provided via JDK? This was what I felt while
reading this presentation.

Thanks

------
reilly3000
Sounds like a good argument for Clojure.

~~~
candeira
And the Oracle legal shenanigans seems like a good argument for Clojure on the
CLR. I don't know how mature the CLR ecosystem is on Linux, but the licensing
at least seems ok.

~~~
pron
> And the Oracle legal shenanigans

You mean the Google legal shenanigans that tried to find loopholes around two
Java licenses (one of them completely open-source, and the other would have
cost them $25M) that would hopefully hold up in a court case (which they were
sure would follow, because they went straight after Sun's business), failed,
and in the process forked the ecosystem?

Oracle did exactly what Google dared them to do (after a reprieve while Sun
was dying). Only, to get what they wanted -- payment for the use of Java _not_
under its open-source license -- they used whatever legal argument they could
come up with, in the hope that one would stick. One did (well, at least
partially), and now Oracle is at fault? This entire court case -- except the
decision -- was orchestrated by Google. They could have avoided the whole
thing by either abiding by the open-source license (which, BTW, is exactly the
same as Linux's) or by paying Sun $25M. Oracle, OTOH, had no choice because
Google went after them with their own weapon.

Oracle didn't just go after someone who'd forked Java. They went after someone
who'd forked Java with the intent to harm on of their main income sources from
Java (at least at the time), _while_ forking the ecosystem and breaking
compatibility -- the ecosystem's prime directive -- and all that while Java
was available under an open-source license, which Google rejected. They don't
care about the principles of copyright. They just happened to use that in
their arsenal of legal tools to go after a company that they believed had
harmed them.

Then, Google's PR tried to terrify the world with the possible repercussions
of the one argument that did stick by blowing it out of proportion and
neglecting to mention that it hardly applies to _any_ software these days.

Neither of these companies is a saint in this story. They are just two
corporations playing their parts. But Google was the one who could have
stopped all this, and blaming the whole thing on Oracle is just ridiculous.

~~~
icebraining
Frankly, one doesn't need to know anything about the case to find the idea
that Google would balk at the request for a single payment of $25M to ensure
that Android was free from claims of infringement is clearly nonsense. They
spend more than that per year in food for their employees.

Of course, that's not true, and you know it's not true, since you replied
earlier this year to someone who explained that the _alleged_ offer was $20M +
10% of Android's revenue (capped at $25M) for a _three year license_ \- and
this was in 2006, years before Android had even launched. FSM knows what
Oracle would have demanded after Android was a proven success and Google had
caved earlier.

Of course, one may still think Google should have paid whatever Sun/Oracle
asked for, but let's not spread misinformation.

~~~
pjmlp
" Just because Sun didn't have patent suits in our genetic code doesn't mean
we didn't feel wronged. While I have differences with Oracle, in this case
they are in the right. Google totally slimed Sun. We were all really
disturbed, even Jonathan: he just decided to put on a happy face and tried to
turn lemons into lemonade, which annoyed a lot of folks at Sun. "

\-- James Gosling,
[http://nighthacks.com/roller/jag/entry/my_attitude_on_oracle...](http://nighthacks.com/roller/jag/entry/my_attitude_on_oracle_v)

~~~
yongjik
Err, if he really felt that way, why did he join Google?

~~~
pjmlp
No idea, but he didn't stay there long.

If you check his blog he has another posts about the whole issue.

------
YeGoblynQueenne
Don't like Java? Try COBOL.

Then you will like Java.

------
rasengan0
tl;dr: try elm

~~~
Apanatshka
For those who don't want to google it: [http://elm-lang.org/](http://elm-
lang.org/)

------
carapace
A conference in Crested Butte, Colorado in February is kind of a bad idea. I
lived up there one winter and it is very very cold and covered in snow and
ice. It's the kind of place/season where you pretty much need special clothes
to walk a block.

Full disclosure: I grew up in SF and didn't really believe in seasons until
that year I spent in CO, so take this comment with a grain of salt or better
yet a big bag of that road salt they use to melt the ice on the roads, and a
four-wheel drive vehicle with working heater, and winter underwear and a warm
preferably-goose-down jacket and boots and "smart wool" socks, and hat and
mittens. Seriously though, unless you like to ski or you're just really into
ice and being cold and you can't get to Antarctica going to Crested Butte in
winter is nuts. Nice town. Freezing cold.

