Live data from Hacker News

Java at 30: Interview with James Gosling

thenewstack.io

321–330 of 437 posts

Re: Java at 30: Interview with James Gosling

#321
post #319

Earlier quoted context omitted.

> You mean tooling as it was already kind of available on Turbo Pascal for MS-DOS? Spare me your stories of the TurboPascal, I am not a youngster, not easily impressed by name-dropping $some_old_thing and do not care about old men yelling at clouds. You may program in TurboPascal, if you like it. > When people discuss Go tooling feels like Renaissance folks resdicovering Roman city enginnering. People talk about Go t…

Apparently many people need the stories, given how much they boost Go about things that are prior art. Emacs could be an IDE, if it came with the whole Lisp Machine for the ride, sadly it is only a subset of the whole experience. VSCode has zero lines of Atom code into it, it started from Azure as Monaco project. Does neovim distribution handle graphical development plugins, without spawing external windows? Yeah, ri…

> Apparently many people need the stories, given how much they boost Go about things that are prior art.

No one but you here cares about prior art. And not even you, most likely, otherwise you would write your in some kind of lisp which was first on most of the things.

> Emacs could be an IDE, if it came with the whole Lisp Machine for the ride, sadly it is only a subset of the whole experience.

Lisp is just an implementation detail in (GNU) Emacs, even though it is what makes it a delight to configure. The rest is done, as everywhere, with plugins and built-in package management.

> VSCode has zero lines of Atom code into it, it started from Azure as Monaco project.

VSCode has everything from Atom in it, since it is basically a rewrite of Atom, using Electron, which was written for Atom.

> Does neovim distribution handle graphical development plugins, without spawing external windows?

What should it be, UML-plugins? Coroner has called, he wants his dead things back. But most stuff is handled with overlays these days with Telescope.

Re: Java at 30: Interview with James Gosling

#322

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.

[dead]

Re: Java at 30: Interview with James Gosling

#323

Earlier quoted context omitted.

I think it's incredible with hindsight how Java countered many of the mid 90s C++ problems, especially by avoiding multiple inheritance. It remains a shame that it didn't launch with generics though, and I still think operator overloading would have been good. Had it done so I think a lot more people would have stuck around for when the performance improved with HotSpot.

> I think it's incredible with hindsight how Java countered many of the mid 90s C++ problems, especially by avoiding multiple inheritance. This is because Java is based on an older language called Objective-C that doesn't have multiple inheritance :) It's not based on C++, that's just the other OO language from the era people usually think of.

> This is because Java is based on an older language called Objective-C that doesn't have multiple inheritance :)

No it's not, certainly not any more than it's "based" on Smalltalk.

Re: Java at 30: Interview with James Gosling

#324

Earlier quoted context omitted.

The only replacement for locks/mutexes is a lock free data structure. Locks are not what make concurrency possible, they are what makes it data-safe. You can use platform threads, user-space threads, language-provided "green" threads, goroutines, continuations or whatever you wish for concurrency management, but that's almost orthogonal to data safety.

I'm not sure what you mean here, as far as I'm aware data safety isn't standard terminology.

I think they’re using it in the context of what you’ll get without some degree of locking, which is data corruption and/or other issues.

It’s not that you need locking to use threads. You need locking to stop threads from ruining any shared resource/data they are both trying to touch at the same time.

Re: Java at 30: Interview with James Gosling

#325
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,…

Modern stacks (as in go and rust) are largely editor agnostic - it is Gosling who lives in the past, thinking that an IDE is still required(and a very weak one, in case of abandoned Netbeans). One of the reasons, btw, why I would take Go over Java in a heartbeat.

You don’t need an IDE for Java either. You can use vscode or neovim, the language server will work just fine. I’ve done both, but eventually moved back to idea (with ideavim).

Re: Java at 30: Interview with James Gosling

#326

Java, especially modern Java, is a fine language. The JVM is an awesome runtime. I'm tired of pretending it isn't.

The vast majority of Java developers will never touch modern Java and have zero idea of its features or capabilities. I'm in the process of migrating literally thousands of servers and tens of thousands of apps to the cloud and there isn't anything close to modern Java. The absolute majority at this client seems to be Java 8 and there isn't a single Java 17 or newer. So it's one thing to have great modern features. B…

This just anecdotal evidence of your one client. Every statistic I’ve seen shows that at least half is on a runtime > 8, with most in that half being on 17 or 21. My entire company runs on 21 and will be moving to 25 when it’s out.

Re: Java at 30: Interview with James Gosling

#327

Earlier quoted context omitted.

Oh yeah. I still don’t understand why we even moved away from the original JEE model, including the different roles (app dev, deployed, etc). The whole spec was great with the exception of entitybeans. It provided things that are still not available it anything else.. why do we store configuration/credentials in git (encrypted, but still). And the context were easy to configure/enter. Caucho’s resin, highly underrate…

I remember Resin. I grew to be a big fan of JBoss and was really disappointed when the Torquebox project stopped keeping up (Rubyized version of JBoss).

Yeah, JBoss put "it's slow" to bed right away. I was doing my own research at the time and tried some workloads on it. Huge difference.

Re: Java at 30: Interview with James Gosling

#328

Earlier quoted context omitted.

> Needless to say, you can also write GC-free code, if you need that. It's not really advertised, but it's feasible. It is not feasible under the JVM type system. Even once Valhalla gets released it will carry restrictions that will keep that highly impractical. It's much less needed with ZGC but even the poster child C# from the GC-based language family when it comes to writing allocation-free and zero-cost abstract…

Zero-allocation (obviously different from zero GC) frameworks made a bit of a splash a little while back, but I'm not seeing much about them anymore from a brief search. I would have sworn that quarkus was one of them, but it looks like that's definitely not the case anymore. The downside is that you sacrifice a lot of the benefits of guard rails of the language and tooling for what may not end up being much savings,…

> The downside is that you sacrifice a lot of the benefits of guard rails of the language and tooling for what may not end up being much savings, depending on your workload.

I think that's mostly done in organisation where there's time, budget and willingness to optimize as far as possible.

Sacrificing the guardrails doesn't make sense for the "general public" software but does tremendous sense in environment where latency is critical and the scale is massive. But then again, in those environments there are people handsomely paid to have a thorough understanding of the software and keep it working (making updates, implementing features etc).

I worked on a software that was written to be garbage-free whenever it could. Latency (server-side latency, i mean) in production (so real-world use case, not synthetic benchmark) was about 7-8 microseconds per request (p99.9) and STW garbage collection was at around 5msec (G1GC, p50, mostly young generation) or ~40 msec (p99.9, full gc) and was later lowered to ~800-900 microseconds with ZGC.

I know it might sound elitist but the real difference here are... Skill issues. Some people will just shun java down and yap about rewriting in rust or something like that, while some other people will benefit from the already existing Java ecosystem (and tooling) and optimize what they need to get the speed they're targeting.

I know I'll be downvoted by the rust evangelism task force, but meh.

Re: Java at 30: Interview with James Gosling

#329
post #41
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…

The language has/had some rough edges that have been improved over the years, but the developer experience of using a strongly-typed, object-oriented language within a sturdy IDE like Idea is just second to none. The debugging process is so very straightforward. Java became synonymous with enterprisey bloated systems for good reason, but there is no pile of mud Java system that can't be stepped through cleanly with a…

This. It set the stage for modern enterprise software that we all take for granted now.

Re: Java at 30: Interview with James Gosling

#330
post #288
post #271

Earlier quoted context omitted.

You eventually learn you leverage lifetimes. You just need to get over that point in the learning curve. I very rarely run into those types of issues, and it's very freeing knowing that I can write libraries that are so hard to misuse because you can leverage the type system. And macros are a part of that!

Why do I need to? Why can't I let the garbage collector deal with it? Rust's macros on the other hand are excellent, and more languages should have expressive macros like that.

> Why do I need to? Why can't I let the garbage collector deal with it?

Determinism.

With Rust lifetimes, you can statically prove when resources will be released. Garbage collectors provide no such guarantees. It has been shown that garbage-collected languages have a space-performance tradeoff: you need five times as much RAM to achieve the same performance, even with a "good" GC, as the same program with explicit memory management:

https://people.cs.umass.edu/~emery/pubs/gcvsmalloc.pdf

Post reply on HN