
On a New Road : James Gosling on Apple and Java - muon
http://nighthacks.com/roller/jag/entry/steve_jobs_comments_on_apple
======
bad_user
They just don't get it ... Java sucks so badly for desktop development, it's
not even funny.

    
    
         It also didn't help that the early ports that they did were heavily 
         customized - far more than they needed to be.
    

This also reminds me of what Gosling said about Eclipse ...

    
    
         [Talking about Netbeans] To us, Eclipse feels like something very "me 
         too" and derivative, backed up by a really strange marketing campaign
    

Also on Eclipse's SWT:

    
    
         The SWT thing was just...it pissed me off beyond words.
         ...
         It has all the AWT problems: it's way simple, it doesn't port very well.
    

Also on .NET's support for C++:

    
    
         [This] has left open a security hole large enough to drive many, many 
         large trucks through

~~~
kls
I would say that, now though Netbeans has surpassed Eclipse. In my personal
opinion as of 6.5 and on it has become the best Java IDE available. While SWT
was clearly superior at the time Eclipse was originally built, Swing has
caught up. I made the switch to Netbeans on the recommendation of someone I
respect a great deal, I used it a long time ago because it was the only IDE
Blackberry buit is dev tools on and it was one of the most painful development
experiences I have had to endure. I was hesitant when 6.5 came out and my
friend urged me to give it a second change. I am glad I did now, they really
got their act together. I hate that Oracle bought Sun as it seemed in the last
few years they where really getting their technical act together. Netbeans
became a superior IDE, Glassfish is a great simple to use app server, Their
identity server was a great product, Virtual Box was a great desktop
virtualization product. They where making strides but they just waited too
long to turn the ship.

~~~
tieTYT
I couldn't disagree more. I think netbeans is the worst Java IDE out there and
has a LONG way to go.

It depends on ant for everything. The build files are very difficult to read,
so it's like a black box. They are also cruel enough to name the root file
"build.xml" so it interferes with you trying to make a convenient IDE agnostic
build script. It depends on netbeans specific libraries for copying files
(WHY?!). It's very difficult to get it to build from the command line. If you
check out the hudson tutorial on how to get a netbeans project building in
their CI server, you have to run a headless version of netbeans on the box to
do it.

Not only that, the build scripts do some really crazy black magic. You can
edit parts of them and your changes get ignored. It's like netbeans generates
them every time you try to run. This allows you to do things like put echo
statements in the build scripts that don't get printed out even though the
target runs. It's really confusing.

It is not very organized. If you go into the "Options", it has 5 big buttons
at the top. Most things are in the "Miscellaneous" section.

The debugger and profiler are really slow. When I remote debug, I have to
click "step over" two times for one line of code. Expanding objects in the
variables tab takes an annoying amount of time. My app is apparently too big
to even start with the profiler. I've waited over 25 minutes before giving up.
In intellij, the jprofiler plugin lets me start the same project without any
noticeable slowdown.

Many many UI problems. You can't work with multiple "run" configurations like
you can in the other IDEs. EG: If you want to run a certain unit test, you
have to find it, go into it, and then run it. In the other IDEs, you could
save that unit test as something to run and run it while you're looking at
another file.

Speaking of unit tests, there's no way to run an individual unit test. The
finest granularity is the entire file.

It crashes all the time. You're going to have to accept my anecdotal evidence
here, but everyone else in the office complains about this, too.

The list goes on and on. I'm extremely skeptical of anyone that claims
netbeans is good. I suspect you're using it as a glorified text editor instead
of an IDE.

It's not 100% terrible though. One thing that netbeans is good at is
generating code. I haven't tried in Eclipse, but netbeans' webservice
generation support is better than intellij's. It also has a good Swing
WYSIWYG.

~~~
kls
_I suspect you're using it as a glorified text editor instead of an IDE_

Your suspicions are unfounded, I have never had an issue with Netbeans builds
or it rewriting my files. It is a pluggable build systems where the build.xml
is a templated file that pulls in the files that you are supposed to edit such
as build-imp.xml and project.properties. These files do not get overwritten. I
suspect you are using the build system wrong.

Further I like that Ant is used for the build because it gives me a head start
on something I would end up having to write anyways. The build file is
generated when you create a project, it saves a lot of time and is
standardized. As for the org-netbeans-modules-java-j2seproject-
copylibstask.jar it is a jar, I don't find it to be a big deal to install it
on the build machine given the amount of time saves having the default build
and deploy script generated for me.

The build script gives you a starting point not and end solution for testing,
custom build instruction and other build related stuff you have to put in your
own files and plug them into the build not edit the build directly. I don't
find it that difficult and I think it is offset by what netbeans does for you.
Further, on the remote occasion that Netbeans wants to rebuild the build.xml
file it always prompts you before it does so, but even with that, you should
not be modifying the build.xml you should be creating your own build files and
importing them into the build system. Netbeans does this so when you add stuff
like web services, JAX-B generated classes, JPA change from Glassfish to
WebSphere it can auto generate all of the build and deployment instruction for
those items. For me having all of that boilerplate stuff generated is a huge
time saver for only having to make the trade off of keeping my custom Ant
instruction in a separate file and copying a jar to the build server.

As for Hudson I cannot comment, we use Cruise Control,

 _It is not very organized. If you go into the "Options", it has 5 big buttons
at the top. Most things are in the "Miscellaneous" section._

Not a show stopper for me, I spend all of 45 minutes in there when I do a
fresh install and then I never touch it again. It does not affect my day to
day work. This is also a preference thing not an issue with how Netbeans
performs as a development environment.

 _The debugger and profiler are really slow._

I have never had an issue with the debugger being slow on my machine. I will
give you that my Machine is top of the line so it may not be exemplary of the
standard, but still no issue. In fact Netbeans has a feature that I have not
seen in any other IDE, that is a must have for me now. And that is the fact
that I can trace and debug from the execution of the Javascript in the
browser, through the REST services, into the app logic and down into the DB.
For me being able to step through the code from the JavaScript in the browser
to the DB and back again is an amazing feature that I cannot live without now.
It was the reason I switched to Netbeans on my friend recommending it to me
based on that feature. Further the DTrace hooks are amazing, being able to see
what is going on at every level provides another level of insight that I have
not seen in other IDE's.

 _It crashes all the time._

We have never had this problem. We use Netbeans on OSX this may be a platform
thing. I work with 10 to 15 freelancer at a time. We all use Netbeans and
crashing has never been an issue.

------
gaius
_It also didn't help that the early ports that they did were heavily
customized - far more than they needed to be_

I respectfully submit that the man who thought AWT was an acceptable GUI
toolkit doesn't have a leg to stand on here.

~~~
whatajoke
> I respectfully submit that the man who thought AWT was an acceptable GUI
> toolkit doesn't have a leg to stand on here.

Where did Gosling say that? I remember reading that AWT was a botched job
because they had very little time to ship out a UI toolkit. They replaced it
with Swing later.

And if you think Swing also sucks, then try developing swing apps in groovy.
Java language sucks even in SWT UIs.

~~~
gaius
Right, but if even he was unsatisfied with AWT how can he criticize Apple for
doing the work for a native look & feel?

~~~
sgift
From "far more than they needed to be" I read that he thinks they changed "far
more than they needed" to change in order for the native look & feel. So, he
doesn't criticize their work, he criticizes the way they did the work.

------
boris
Sun to developers: "With Java you can write once and run anywhere!"

Sun to OS vendors: "Hey, we just promised developers they can run Java on your
platforms. Now you go make it happen!"

Apple to Sun: "... you!"

~~~
pohl
NeXT to developers: With OpenStep you can write once and run anywhere!

Sun to NeXT: yeah, let's do this!

Sun to developers: "With Java you can write once and run anywhere!"

Sun to Lighthouse Design: Come to daddy!

Sun to NeXT: buh-BYE!

Sun to OS vendors: "Hey, we just promised developers they can run Java on your
platforms. Now you go make it happen!"

Apple to NeXT: come to daddy!

NeXT to Apple: Avast ye swabbies - prepare to be boarded, arrrr!

(...time passes...)

Oracle to Sun: Come to daddy!

Apple to Snoracle: "... you!"

~~~
stcredzero
Someone should do a Flash corporate history timeline, with one of those
Animation programs and animate your comments as the timeline plays.

------
funkdobiest
I think he is saying that Oracle caused a lot of headaches for Apple in the
past so Apple is returning the favor by trying to force them to support Java
on their platform.Who knows how this will play out, but it will be interesting
since many Java developers use Macs.

~~~
jimwise
Yeah. Another way to look at this is that traditionally Java ports fell into
two categories:

a.) The platform was important enough that Sun would lose credibility if there
wasn't a good JVM available (Windows, Linux), so Sun (now Oracle) did the
port.

b.) The platform was minor enough that the platform would lose credibility if
there wasn't a good JVM available (MacOS, AIX, HP-UX), so the platform vendor
did the port.

I see this as Apple indicating that with recent growth in market share and
cachet, they've now moved from category b.) to category a.).

~~~
vetinari
The a) category is not so clear-cut. Originally, it was up to OS vendors to
support Java port, period. So Sun did it for Solaris, MS did it for Windows
and nobody did it for Linux. Then MS tried to hijack Java and Blackdown did
the Linux port. The current status is result of what happened in the past, not
some master plan to support only tier A platforms.

~~~
jonhendry
I'm pretty sure Sun handled the Windows Java port, not Microsoft. Java was
available on Windows pretty early on, and I can't see Microsoft rushing to
make that happen.

~~~
acqq
> Java was available on Windows pretty early on, and I can't see Microsoft
> rushing to make that happen.

You're wrong. Microsoft did their own Java VM implementation, got sued by Sun
as early as in 1997 and had to stop distributing it:

<http://en.wikipedia.org/wiki/Microsoft_Java_Virtual_Machine>

~~~
jonhendry
Microsoft's wasn't first. I assure you. The Sun JDK VM was first. After
Microsoft licensed it, and had Sun's code, it wouldn't have taken terribly
long to make their changes and put out J++.

Wikipedia isn't good on this, because they don't have the relevant release
dates.

A Usenet post from December of 1995 says:

" I been using the JDK 1.0 Beta 1.0 with Netscape 2.03 on Windows 95 for about
3 weeks now. I just upgrade to the JDK 1.0 Beta 2 and guess what I can not run
any local applets. "

~~~
acqq
They weren't first to implement it, but they were the ones who made it a part
of their browser and their OS very, very fast ("support Java for the platform"
was the start of this thread). Sun's Java 1.0 was shipped on January 23, 1996,
and Microsoft was sued in October 1997. There was indeed "a rush" by
Microsoft. Note that I referred to your "I can't see Microsoft rushing to make
that happen" so I apologize if missed that you wanted to discuss only "the
initial implementation." Note that you replied to the parent which wrote "it
was up to OS vendors to support Java port, period. So Sun did it for Solaris,
MS did it for Windows and nobody did it for Linux." Note "support" not
"initial implementation." MS really did and wanted to do it for Windows and
rushed to it. Of course, it was not in the form that Sun liked.

~~~
jonhendry
Microsoft wouldn't have bothered if Sun hadn't done the Windows jdk and jvm in
the first place. If there were no Java on Windows, it wouldn't be perceived as
a threat that needed to be co-opted. Nor would there have been as much hype
about Java if it hadn't been on Windows.

Before Java 1.0 shipped in early 1996 (for Windows and Solaris), there were a
number of publicly available betas on Windows, which is how the hype was
generated.

Also, my recollection is that it was _never_ the case that Microsoft's was the
only JVM on Windows, or that Sun stopped work on their Windows JVM. The two
coexisted. There was no point at which Microsoft was the only source of a JVM
on Windows.

------
BonoboBoner
Until we know what Oracle is gonna do about this, all the talk is useless
right now.

The fact that they split the feature-set for JDK7 due to time restrictions
(aka plan b for jdk8) does not make me feel confident about them being able to
throw out another VM for a different platform so quickly.

------
davidw
It's "Gosling". Seems to have some sour grapes, but that doesn't make him
wrong.

~~~
YooLi
It doesn't make him right either.

------
mcella
Gruber, very interesting, point of view:

"Here’s my question, though: If Mac OS X 10.7 ships without a working Java
JVM, will you be able to write Android apps using a Mac?"

[http://daringfireball.net/linked/2010/10/22/gosling-java-
mac...](http://daringfireball.net/linked/2010/10/22/gosling-java-mac-os-x)

~~~
acqq
I don't see why not? Java is GPL-ed, and also see:

<http://news.ycombinator.com/item?id=1820418>

------
rev087
Please forgive my ignorance, but wasn't Google sued by Oracle over issues
regarding Google's implementation of the Java VM? It just sounds natural that
other companies would be less motivated to maintain their implementations...

~~~
jbarham
No, Google is being sued because it _doesn't implement the JVM_. Instead
Google created a completely independent VM for Android called Dalvik, and,
crucially, a JVM to Dalvik bytecode compiler. Thus Google can leverage all the
standard Java programming tools, but at the final stage of deployment they
convert it to Dalvik which they claim is "not Java".

Very clever and very sneaky, which is why Oracle/Sun is annoyed.

~~~
caf
Isn't that similar to GCJ (<http://gcc.gnu.org/java/>) which can compile Java
bytecode down to native machine code?

------
tamersalama
Not sure I get the point.

------
cmiles74
J. Gosling's point isn't entirely clear to me, either. I came away with the
impression that Oracle is a difficult company to deal with. Perhaps he's
trying to draw a line between Oracle being difficult and Apple deciding they
no longer want to do their own port. I supposes that's possible.

Still, it seems more likely that Apple decided that the cost of maintaining
the Java port on OS X simply wasn't worth it. In the same manner that they
decided that nobody wanted to use Flash on their smart-phones, they've decided
that nobody wants to use Java on their laptops or workstations.

~~~
jonhendry
I think they've decided that, at this point, Java is within a few years of
being a floppy disk drive in the iMac era.

Okay, that's a little harsh. But apart from Android, Java doesn't seem to have
much buzz these days. And Android gets into the whole lawsuit mess.

Also, there seems to be a lot of disruption in the Java space due to the
Oracle acquisition. IBM ditching Harmony for OpenJDK, the Oracle/Google
lawsuit, etc.

This seems like an opportune time to step away. Since the whole Java ecosystem
is stirred up and reconfiguring, it makes sense for Apple to pull back before
a new configuration has solidified. While things are fluid, let the Java
organizations figure out what they want to do with OS X.

~~~
babblefrog
Java the language may not have much buzz, but other languages running on the
JVM sure do. And they will be equally effected, whatever happens.

------
recurser
I haven't used WebObjects for years, but I'm curious how this whole Java
kerfuffle is going to affect that. Do people still use it?

~~~
cosmicray
In theory, it should have minor (if any) effect.

The existing version of Java 6 will still run (and Apple has said it will have
support for the normal cycle, whatever that means).

Potentially other versions could appear.

WebObjects use of java is primarily server side, and as such has less
(possibly little) GUI usage.

It may even be possible to run WebObjects on other platforms. That becomes an
interesting situation if the license stipulates Apple hardware, but Apple no
longer provides the proper runtime environment to use it.

~~~
stonemetal
_Apple has said it will have support for the normal cycle_

It means deprecated for one rev and dropped the next. Just like they handled
PowerPC supported in 10.4 deprecated in 10.5 gone in 10.6. So Java will be
gone in 10.8.

~~~
cosmicray
> So Java will be gone in 10.8.

Apple's implementation of the JVM _may_ be gone in 10.8. That's not the same
thing as saying there will be no JVM (and conversely no java of any kind). I
suspect someone will step up to the plate, either openJDK or Sun/Oracle.

------
matwood
It does sound like from reading Gosling that Apple did this as a way to poke
Oracle in the eye. The Mac has potentially become a large enough platform now
that it seems Apple thinks they can leverage it against others. There is such
a thing as overplaying a hand which I think Apple is dangerously close to
doing (i.e. read their new mac app store rules).

What did strike me about the announcement though was how nonchalantly it was
made. I have to think this was on purpose given how masterful Apple normally
is with their marketing. So that leads to the question of why? Was Apple in
talks with Oracle that broke down so they simply called Oracles bluff?

By the way, all of the knee jerk reactions have been very amusing. Reading
comments and stories about it yesterday made me think Apple came down and
removed Java from every Mac in existence :)

~~~
wyclif
_Reading comments and stories about it yesterday made me think Apple came down
and removed Java from every Mac in existence_

Right. Don't those people know that even if you're running Linux, you still
have to download and install a JVM?

~~~
mgkimsal
True, but there is a JVM for them to download and install. At some point, when
there are new Java/JVM updates, there won't be an Apple to get them from, and
there likely won't be anyone else to get them from either, unless Oracle steps
up and starts providing it.

I've said it before - Sun was stupid for focusing so publicly on "JAVA"
(ticker symbol, etc) yet leaving the implementations up to other vendors. But
now there's not even a Sun to complain to, so... :/

~~~
acqq
> At some point, when there are new Java/JVM updates, there won't be an Apple
> to get them from, and there likely won't be anyone else to get them from
> either

I don't know what you mean under "new Java/JVM updates" but anything that's
GPL of Sun's Java can be used by everybody:

<http://www.fsf.org/news/fsf-welcomes-gpl-java.html>

as long as they also respect GPL, of course.

~~~
kd0amg
How much tweaking (of the source code and the build process) does it take to
get it to work on OS X?

~~~
archgrove
Not a lot. To assuage my fears, I just built OpenJDK's BSD port and ran
Eclipse 3.6.1 on it without X11 (This from Snow Leopard 10.6.4). It wasn't
hard, and could easily be packaged for general consumption.

The maintainer of the OpenJDK binary packages for OS X, SoyLatte, recently
tweeted that "A community supported Java implementation for Mac OS X
(including native AWT/Swing) is a totally tractable problem."
(<http://twitter.com/landonfuller>). Even if Oracle doesn't step up, it seems
the OS X Java community will probably handle it. Moreover, since Java has been
languishing at Cupertino for years now (the length of time till Java 5
shipped, Java 6 32 bit), it's likely the community will handle it in a better
way, with more frequent updates, than Apple ever did.

~~~
mgkimsal
Until it's something that's a DMG file that anyone can grab and is indicated
to work on 10.6, it won't be a real solution for most people.

The soy latte stuff makes you type in a 'iam not a crook' license code to
download, and only mentioned 10.4 and 10.5. It gives every indication of being
a garage-hack-only thing for bleeding edge BSD grey beards, not something that
is a drop-in replacement for current OSX users.

I want to use it - I tried soylatte last year - didn't work well enough for my
purposes on 10.5.

~~~
archgrove
I agree - it's not, at the moment, an ideal end user situation. Even though
the build process was reasonably easy, a fair few GUI programs won't run
(though mostly every command line app seems to work fine). Most importantly
for my test, Eclipse was OK.

The main point of the test was to see how close the system was to being even
usable. Considering Apple have maintained the OS X Java for a decade, I
expected there to be no alternative that was even vaguely close to running
"Hello World", let alone running something as complex as Eclipse. Instead, it
worked pretty damn well, and (modulo licensing), I suspect even I could
package up the results into a DMG that 95% of people could use to, i.e., build
Android apps. More than that, consider the worst case scenario for OS X
Java...

1) Apple don't ship anything with 10.7; 2) Oracle don't ship anything, nor do
IBM; 3) Getting old versions of Apple Java running is impossible

Then, the real community experts have a nearly whole year of lead time (until
Summer 2011, the earliest Lion ships) to convert what already limps along
quite well into a decent Java SE SDK and runtime experience. This seems well
within the grasp of them. Of course, if the community doesn't step up because
it's not interested, then that rather makes the point that Java on OS X just
isn't relevant any more.

------
antareus
The time is certainly ripe for a better language to step in and make cross-
platform desktop application development easier. Seems like most anything you
use (barring C++) necessitates shipping 20mb of dependencies.

I miss the pay for what you use model.

~~~
jbarham
Longer term JavaScript + HTML5 will get you most of the way there.

~~~
antareus
What if I want to burn a CD? Or make something like Cover Flow?

~~~
jbarham
WebGL w/ HTML5 canvas will let you build Cover Flow.

As to burning CD's, I did say that it would only get you "most of the way"
there!

------
julian37
"[...] Microsoft violated their contract and made Java code written on Windows
unable to run on other systems."

More precisely, Microsoft violated their contract when they added classes and
methods in the "java" top-level package (namespace) and failed to implemented
some mandatory parts of the specification (mandatory as per the contract),
such as RMI.

Source:
[http://www.javaworld.com/javaworld/jw-10-1997/jw-10-lawsuit....](http://www.javaworld.com/javaworld/jw-10-1997/jw-10-lawsuit.html)

------
cgos
sad to see that all these years I've been bragging around, and happy to do so,
with my macbook doing java dev. Finally I had a nice machine, cute os to work.
Sad that some day a big corp will tell me that now it's windows or nothing.
Sad to feel like apple is letting us down.

~~~
acqq
> it's windows or nothing

Far from it. First, Apple's version will stay for a while. For further future,
Java is GPL-ed, and also see:

<http://news.ycombinator.com/item?id=1820418>

