Live data from Hacker News

Java at 30: Interview with James Gosling

thenewstack.io

301–310 of 437 posts

Re: Java at 30: Interview with James Gosling

#301
post #278

> Gosling primarily uses the NetBeans IDE for development, praising its open source, Apache-licensed nature and dedicated community. He expresses frustration with developers who cling to outdated tools: “The thing that drives me nuts the most are people who are madly grasping the ’80s or the ’70s — people who still want to use Vi, which was high-tech in the ’70s.” From one of the key developers in the Emacs history,…

He's living in the past, using an IDE that was high-tech in the 2000s.

Re: Java at 30: Interview with James Gosling

#302
Oh, this marks 16 years that I'm writing Java in that case.

My only complaint is the flop with JavaFX. It should have remained as part of the JDK to replace Swing and continued development there.

Without that, Java is thrown as the forever backend platform.

Anyways: good interview.

Re: Java at 30: Interview with James Gosling

#303

Earlier quoted context omitted.

Compared to Go where I always have to remember to print the stack trace in every goroutine’s panic handler or use a custom error type that includes the stack trace or I get nothing? And I have to do this very basic thing for every service I spin up? This might not matter for pet projects or CLI applications, but it matters a lot in large scale mission critical servers.

Tip of the Day: You can wrap errors using "fmt.Errorf" in Go - this gives you a nice chain of error messages which is a pseudo stack trace. Another tip is to define and leverage sentinel errors when wrapping errors so you can test using "errors.Is" higher up when doing error handling in the call-hierarchy - like when mapping to http errors or exit codes. Using "fmt.Errorf" is lean and painless compared to defining cu…

It’s still not stack traces for every error, which is the default in every other language with stack unwinding.

In practice you have to use a combination of error wrapping and custom stack trace errors for your production logs to be useful on failure. The stdlib errors really should have stack traces.

Re: Java at 30: Interview with James Gosling

#304
post #278

> Gosling primarily uses the NetBeans IDE for development, praising its open source, Apache-licensed nature and dedicated community. He expresses frustration with developers who cling to outdated tools: “The thing that drives me nuts the most are people who are madly grasping the ’80s or the ’70s — people who still want to use Vi, which was high-tech in the ’70s.” From one of the key developers in the Emacs history,…

He's living in the past, using an IDE that was high-tech in the 2000s.

Ah, that must be why we are getting TUI revivalism these days then.

Re: Java at 30: Interview with James Gosling

#305
post #174

Earlier quoted context omitted.

I don't see Java being any better in this regard. Microsoft has been historically much less aggressive with lawyers compared to Oracle.

That might be true for other Oracle products like the DB, but has that been true for Java and openjdk?

Sure. Here's just one example I was able to quickly find in the browser history:

https://www.theregister.com/2025/05/09/users_advised_to_revi...

You can easily just not use the Oracle JDK, though, unless you're running commercial software which requires running on the Oracle runtime to get technical support.

As others have said, the problem is not the runtime, but libraries: many major .NET libraries have been going fully commercial, you can't really trust the ecosystem anymore.

Re: Java at 30: Interview with James Gosling

#306
post #299

Earlier quoted context omitted.

Actors are implemented using locks.

Is it really so? I haven't checked all the implementations, but my take here would be to use a channel with atomics instead of a lock...

It's probably possible to do if you think about it carefully but generally enqueuing a message is going to take a lock, especially if you can send an arbitrary number of messages (which may require the queue to be reallocated).

Re: Java at 30: Interview with James Gosling

#307
post #289

Earlier quoted context omitted.

There is hardly anything modern about Go, a rebranded Limbo with with anti-intelectuals mentality. As for Rust, there is a reason the large majority is either on VSCode or RustRover.

I don’t care about opinions on Go the language, but the tooling around is excellent without being bound to an IDE. And no matter what you use: Goland, VSCode or dape in Emacs, your debugger will plug in the same delve. > the large majority is on VSCode Here, fixed it for ya. But since when is VSCode an IDE? It is just an extensible editor, not very far from Emacs or neovim. We’ll see how it plays out, but I assume th…

You mean tooling as it was already kind of available on Turbo Pascal for MS-DOS?

When people discuss Go tooling feels like Renaissance folks resdicovering Roman city enginnering.

VSCode is certainly an Integrated Development Editor, and it is such a dead concept that one of the key Visual Age and Eclipse linage of IDEs is the one behind it, Erich Gamma.

Biggest difference is that one hardly needs to code extensions, or manually configure them most of the time, a simple install button press is only that is needed to get any extension going, many of which graphical, taking all advantage of the Web platform.

Re: Java at 30: Interview with James Gosling

#308

Earlier quoted context omitted.

Compared to Go where I always have to remember to print the stack trace in every goroutine’s panic handler or use a custom error type that includes the stack trace or I get nothing? And I have to do this very basic thing for every service I spin up? This might not matter for pet projects or CLI applications, but it matters a lot in large scale mission critical servers.

Tip of the Day: You can wrap errors using "fmt.Errorf" in Go - this gives you a nice chain of error messages which is a pseudo stack trace. Another tip is to define and leverage sentinel errors when wrapping errors so you can test using "errors.Is" higher up when doing error handling in the call-hierarchy - like when mapping to http errors or exit codes. Using "fmt.Errorf" is lean and painless compared to defining cu…

And be very careful in constructing your error messages so that grepping the error string does not return you 50 matches. It's not the same as getting the error message + file name + line number.

This is the whole story of Go, they pick something established and reimplement a heavily cut down version of it for "reasons", then slowly catch up to competition over the next decade or so.

Re: Java at 30: Interview with James Gosling

#309
post #115
post #49

Earlier quoted context omitted.

I can run basically any Perl code back to Perl 4 (March 1991) on Perl 5.40.2 which is current. I can run the same code on DOS, BeOS, Amiga, Atari ST, any of the BSDs, Linux distros, macOS, OS X, Windows, HP/UX, SunOS, Solaris, IRIX, OSF/1, Tru64, z/OS, Android, classic Mac, and more. This takes nothing away from Java and the Java ecosystem though. The JVM allows around the same number of target systems to run not one…

Interesting about that long list of languages. There's also Groovy. I wonder what other languages run on the JVM. What about Perl, Icon, SNOBOL, Prolog, Forth, Rexx, Nim, MUMPS, Haskell, OCaml, Ada, Rust, BASIC, Rebol, Haxe, Red, etc.? Partly facetious question, because I think there are some limitations in some cases that prevent it (not sure, but a language being too closely tied to Unix or hardware could be why),…

> Haskell

https://github.com/Frege/frege

https://github.com/typelead/eta

Of the others you mentioned, I bet there's a couple JVM Prologs out there, but haven't encountered any myself.

Re: Java at 30: Interview with James Gosling

#310
post #7

Java performance isn't the fastest, that's ok, a close 3rd place behind C/CPP ain't bad. And you're still ahead of Go, and 10x or more ahead of Python and Ruby. Java syntax isn't perfect, but it is consistent, and predictable. And hey, if you're using an Idea or Eclipse (and not notepad, atom, etc), it's just pressing control-space all day and you're fine. Java memory management seems weird from a Unix Philosophy POV…

> Java performance isn't the fastest, that's ok, a close 3rd place behind C/CPP ain't bad. When Java got popular, around 1999-2001, it was not a close third behind C (or C++). At that time, on those machines, the gap between programs written in C and programs written in Java was about the same as the gap right now between programs written in Java and programs written in pure Python.

And yet many of us embraced Java, it became the chosen language to teach distributed systems in many Portuguese universities around 1998, because of the pain to write portable C or C++ code across UNIX clones.

A mix of K&R C, C89, C++ARM compilers catching up with WG21 work, POSIX flavours, and lovely autoconf scripts.

Post reply on HN