I find it oddly beautiful that we get to hear the people that shaped the world we live in today years later just sharing their thoughts… thank you for uploading this ❤
I don’t think enough people realise that Java isn’t just another language. It has resulted in a revolution in software development and gives away free some of the best engineering solutions to real world problems.
@@Heater-v1.0.0 Java is really what made it popular that newer programming languages should by default include a Garbage Collector. Also Java is what I believe the first language that decoupled a Language's Runtime from the Operating System. This is important cause C++ which was the major competitor to Java was extremely platform dependent, even somewhat to this day as:- 1) There's no "standard" toolchain/compiler for C++ as each platform tries to implement their own, Linux relying on GCC while Windows using MSVC, and these are strictly coupled to the OS. 2) Even when ports are made such as GCC ported to Windows through MinGW-W64, there are still pain points such as Dwarf-2 exception handling still needing to be re-written completely for Windows which in turn means it's not a fully compliant port. Jave removed all those points by providing it's own Language Runtime that runs on top of the Operating System, and became a gold standard for most other programming languages that came after it.
@@pookiepats JVM came into existence because of Java, it literally has "Java" in its name. Java was not just the language you're dismissing. Java was an idea and that idea has indeed revolutionised software development
It's so strange hearing the literal creator dislike the very thing I appreciate. Words-over-unpronounceable-glyphs has always been a beloved feature of Java in my world.
"We are all agreed that your theory is crazy. The question which divides us is whether it is crazy enough to have a chance of being correct." /Niels Bohr (The quote on the T-shirt.)
As somebody who's always disliked (but not hated) Java and now finds themselves using it, it's nice to know I'm using it more like James than like I'm "supposed to" (-:
James Gosling, the creator of Java worked with Sun, Google and eventually joined Amazon Web Services (AWS) before retiring. Guido van Rossum, the creator of Python, previously with Dropbox and currently with Microsoft. You can provide a solution to a problem and still be hired by the user of the solution. James Gosling's impact will endure for centuries.
Here's the talk "James Writes Java" that he mentions near the beginning. I gave this version at Voxxed Banff 2019; the JavaOne version doesn't appear to be online anymore. ruclips.net/video/yAaMHAW3SsY/видео.html
Full credit to the guy who asked about finalize(). Just last week couple of Genz kids overrode finalize() method and dumped important db txn cleanup code in it. We also bang our heads James :) Just that our problems are smaller.
Hotspot was originally created from smalltalk technology more specifically strong talk which was ported to java. Funny that it's still in use today. Guess $280 million spent on smalltalk based code was worth it spending
I am glad James Gosling is healthy, commanding and assured. I had the pleasure of meeting James Gosling at one of those Devoxx Speaker's Dinners, Antwerp, Belgium. I think it was 2009(!!!!). I asked him about the "Future of JavaFX". I believe Jim Weaver was also speaking to him just before me in person. Haha! So long ago. It seems like yesterday. James was very diplomatic with his answer. Sun Microsystems was the still in charge in 2009. After the Oracle aquisition of Sun in 2010 JavaFX Script was abandoned, butOracle shipped JavaFX 2.0. Of course, I met the Father of James very briefly at various JavaOne conferences, I shook hands and was off to the next technical session or somewhere in Moscone Center. In this video, I loved the line "Brian ... (Goetz) ... his skull is vibrating." (!) There is an explicit language at minute 6 so bewary around the young children.
I'm enjoying my well-deserved break from my daily Java job. Now I can comeback with my head straight up, knowing the creator of Java writes code in a style I would love to use, with techniques I would love to try. "James Gosling does like that" will be my main excuse when someone complains about my unubiquitous constructs. 😆😆😆😆
He said he counts Java as 34 years old. I saw one video where James Gosling showed a TV set top application with Duke icons. I wonder what apps he considers the first Java applications.
Great talk. I wanted to add some color to the code density example. Are the 2 versions truly the same functionality? Comparing .b (I assume same as .body in the density version) uses “==“ in the functional version and .equals in the boring one. I’m not a Java expert enough to answer this question, but here’s the thing. No amount of code density is worth the fact I’m having to spend cycles asking this question. I write code to be correct and readable. I hold provably-correct-by-inspection in high regard. The “?:” is not that to most people, I contend. In addition, we have very different definitions of functional. Most of the function adherents would not see the “?:” example as functional. Not at all. Functional means no mutable state and using functions that compose into successive units of computation. Streams in Java can be used for this, unless you think it’s a good idea to update state in a .map() or .filter(), and so on. True functional programming-even in an imperative language like Java-can be a boon for clarity. I always write my Java Streams that way. I make the code read like a sentence. This is truly where functional meets density meets clarity, not the example in your slide. IMHO. Thoughts?
the state was invented to mutate it in the first place, in the same way as methods were invented to abstract the state - to make life EASIER. people who pass the records with state around between functions and imagine themselves as somewhat superior because they don't mutate state are total morons
Great talk. Kinda fun to both agree and disagree with the guy that laid the foundation for my career. «Instanceof also checks for null» is slightly dangerous; I manually changed the type of a method parameter so that the instanceof test was no longer needed and removed it, but forgot to consider null -> NPE. I use «instanceof» quite a bit, but I find it kinda ugly. Wish it had been just «is» Not his fault, but since he mentioned records; I kinda dislike them. Not so much for what they are (though I dislike the «mutability is evil» that comes with it) but especially for making classes a second class (heh) citizen in its own language. Give classes the same syntactic sugar!
Yeah, that makes you wonder why the whole thing couldn't just be `return t == this || (t instanceof Token T) && kind == T.kind && body.equals(T.body);`. That would also be more readable than using ternaries. It seems people like to have explicit `false` and `true` values sprinkled here and there, even though it doesn't make the logic even a tad simpler.
@@bitti1975The 't == this' check should also be removed. It makes the equals method slower instead of faster in most cases, in addition to cluttering the code. This was covered in one of Paumard's videos.
That looks like a typo. There's also an unnecessary semicolon after the bracket. I'd guess he quickly wrote something for the slide and didn't actually copy it from the library.
I don't really understand 9:40. If he prefers more compact functional style, why is he abusing ternaries instead of just `return t == this || (t instanceof Token T) && kind == T.kind && body.equals(T.body);`? Ok, I get that his main point is that he likes ternaries since they are expressions (and not every expression returns a boolean), but then his example is not ideal.
I had exactly the same thought. His code is ugly (nested ternaries and redundant returns). Overall, during this talk he said many things that convinced me that he is a mediocre engineer, and they are just keeping him around and tolerating him because he invented the language
@@ZelenoJabko No, that wasn't my thought. I'm just mystified why he prefers ternaries to boolean expressions when his preference is functional and compact style. Just because he uses some idiosyncrasies doesn't mean he isn't a good software engineer.
Something like `null instanceof X x` returns false. It is null-safe here. You could write `a instanceof A aa ? aa.b() instanceof B bb ? bb.c() instanceof C cc ? cc : null : null : null;` as a gross verbose version of `a?.b()?.c()`
James, the OOP's Inheritance maybe a trouble: The Fragile Base Class Problem. Then it was invented the Composition of Instances of Classes that avoids the Inheritance, and it works as a lot of Mixins. And there is another problem in this movement, if the "IS A" relationships are disappeared due to the "HAS A" relationships, it will be difficult to draw UML diagrams or another schemes, by example, Design Patterns (of GoF) for Composition of Objects. Good bye.
@@toby9999 Yeah. I know it has a lot of proponents, and to be fair, it introduced a few interesting concepts at the time (nothing really new either, but stuff that wasn't in the widely used languages back then, C and C++), but it also shaped software development in a way that's IMO not nearly as positive as many make it to be. My opinion may not be popular here, but I'm even going as far as claiming that it has contributed to destroying the software industry.
I find it funny that performance is even part of discussion if you write something in Java. The fact that random GC pauses in single digit milliseconds is considered "good" is about finally admitting that Java has had a lot of major latency problems. It doesn't mean that single digit millisecond pauses are good thing. And the fact that you can avoid GC pauses with some weird Java code is a bug, not a feature. If you write Rust, the latency caused by compiler generated memory management has at least 3 magnitudes smaller worst case latency.
If you are a real time programmer (including frame rate critical graphics), sure. But there are no free lunches. Reference counting has its own problems. And it's easy to invent cases where copying garbage collection actually has better asymptotic performance. You can't use a stack for everything. I've worked on a Java applications with 10^8 users for ~5 years. We never tracked a usability issue to Java GC.
If the original Java hadn't been determined to standardize on one true floating point, I might have jumped on the bandwagon at the earliest opportunity. Gosling loves his quirky efficiencies, but apparently not when the hardware people get to do the same in silicon, to get the precision they need at the least cost, when they think they need it. Write-once-run-anywhere floating-point totalitarianism CAN NOT BE EFFICIENT to the same level as those silly string concatenation hacks. I took one look at that and said "I'm not signing up for floating-point totalitarianism" with a side order of "fool me once, shame on me" despite many other innovations in Java that I thought were wonderful and cool. Note that when machine learning came along, a proliferation of new floating-point formats was soon in the cards. If you want write-once-run-anywhere, you shouldn't be using floating point. That's not what floating point means to become when the Blue Fairy finally turns it into a real boy. Sabine has a new episode where a physicist argues that the real numbers are false physics, and that this unreasonable mathematical idealism is part of the problem with QM. Floating point in CS is the rationals idealized and then bastardized again, and there is _definitely_ not one true bastardization (though Sun wished to pretend otherwise). x86 delays rounding slightly longer than most other architectures with its extended-precision internal format. If this matters in the stability of your program, it's not your silicon that's the problem, nor is it your programming language's job to conceal this, it's your unstable algorithm that's to blame, and the visibility of this instability-over the landscape of "run anywhere"-is, in my books, most definitely a FEATURE, not a bug. I'm actually 95% progressive, but about 5% of woke triggers me as badly as this write-once-run-anywhere floating-point totalitarianism of Java's infancy, which pretty much consigns me to the alt.right, or so it seems. At least I come by it honestly, and practice what I preach across the board.
did he mention that his decision not to introduce multiple inheritance because "it brought him grief" has affected tens of millions of developers over the course of past 30 years and made java software pretty much unreusable? what a moron
@ZelenoJabko I don't like the uppercase T either, but "t instanceof Token t" doesn't work: "error: variable t is already defined" I'd tend to use "t instanceof Token that" and then use "this.kind == that.kind" because I like the symmetry, but of course that's less compact.
I find it oddly beautiful that we get to hear the people that shaped the world we live in today years later just sharing their thoughts… thank you for uploading this ❤
it's very nice to see the Father of Java still in good shape. Best wishes for James.
Thanks for the kind words!
the final boss of java
I don’t think enough people realise that Java isn’t just another language. It has resulted in a revolution in software development and gives away free some of the best engineering solutions to real world problems.
Really? In what way is Java not just an another language? Can you tell just one feature that makes that so?
You’re confused old timer, perhaps you meant the JVM. Java is just an interface, a crappy verbose interface.
@@Heater-v1.0.0 Java is really what made it popular that newer programming languages should by default include a Garbage Collector. Also Java is what I believe the first language that decoupled a Language's Runtime from the Operating System. This is important cause C++ which was the major competitor to Java was extremely platform dependent, even somewhat to this day as:-
1) There's no "standard" toolchain/compiler for C++ as each platform tries to implement their own, Linux relying on GCC while Windows using MSVC, and these are strictly coupled to the OS.
2) Even when ports are made such as GCC ported to Windows through MinGW-W64, there are still pain points such as Dwarf-2 exception handling still needing to be re-written completely for Windows which in turn means it's not a fully compliant port.
Jave removed all those points by providing it's own Language Runtime that runs on top of the Operating System, and became a gold standard for most other programming languages that came after it.
@@pookiepats JVM came into existence because of Java, it literally has "Java" in its name. Java was not just the language you're dismissing. Java was an idea and that idea has indeed revolutionised software development
Yess
It's so strange hearing the literal creator dislike the very thing I appreciate. Words-over-unpronounceable-glyphs has always been a beloved feature of Java in my world.
"We are all agreed that your theory is crazy. The question which divides us is whether it is crazy enough to have a chance of being correct." /Niels Bohr (The quote on the T-shirt.)
As somebody who's always disliked (but not hated) Java and now finds themselves using it, it's nice to know I'm using it more like James than like I'm "supposed to" (-:
James Gosling, the creator of Java worked with Sun, Google and eventually joined Amazon Web Services (AWS) before retiring.
Guido van Rossum, the creator of Python, previously with Dropbox and currently with Microsoft.
You can provide a solution to a problem and still be hired by the user of the solution.
James Gosling's impact will endure for centuries.
Here's the talk "James Writes Java" that he mentions near the beginning. I gave this version at Voxxed Banff 2019; the JavaOne version doesn't appear to be online anymore. ruclips.net/video/yAaMHAW3SsY/видео.html
And another talk about the "Just Keep Running" approach James talks about ruclips.net/user/liveagXce0lSo60
Wow, thank you so much, really very interesting and inspiring.
I like the same hair style as Stroustrup, the father of C++ :)
Ah, they're just doing their best to match the style and look of David Crosby.
One can only rock that look after writing a rock-solid multi-decade-old language who powers everything, from satellites to servers.
Several years back, when he was visiting his hometown, he ran across the street in front of my car. Luckily I spotted him and stopped.
You recognized him by the t-shirt he is wearing?
That “ask my wife” answer was gold
Full credit to the guy who asked about finalize().
Just last week couple of Genz kids overrode finalize() method and dumped important db txn cleanup code in it. We also bang our heads James :) Just that our problems are smaller.
That was Dr Deprecator! 😅
we can always do super.finalize() even after overriding
I never touched finalize() in my life, then Joshua Bloch basically said it's a no-no in Effective Java and I sighed a sigh of relief 😅
Hotspot was originally created from smalltalk technology more specifically strong talk which was ported to java. Funny that it's still in use today. Guess $280 million spent on smalltalk based code was worth it spending
Gosling should be hired to join the Java development team at Oracle
I am glad James Gosling is healthy, commanding and assured. I had the pleasure of meeting James Gosling at one of those Devoxx Speaker's Dinners, Antwerp, Belgium. I think it was 2009(!!!!). I asked him about the "Future of JavaFX". I believe Jim Weaver was also speaking to him just before me in person. Haha! So long ago. It seems like yesterday. James was very diplomatic with his answer. Sun Microsystems was the still in charge in 2009. After the Oracle aquisition of Sun in 2010 JavaFX Script was abandoned, butOracle shipped JavaFX 2.0. Of course, I met the Father of James very briefly at various JavaOne conferences, I shook hands and was off to the next technical session or somewhere in Moscone Center. In this video, I loved the line "Brian ... (Goetz) ... his skull is vibrating." (!) There is an explicit language at minute 6 so bewary around the young children.
My favourite Programming language ❤
My most disliked programming language.
@toby9999 i use it every day at my work . Disliked by novice programmers.
I never wrote a line since 14 years. That's it. never looked back.
Agreed 😂
@ernestsakala417 It's my favorite as well
Great knowledge 🎉
I'm enjoying my well-deserved break from my daily Java job. Now I can comeback with my head straight up, knowing the creator of Java writes code in a style I would love to use, with techniques I would love to try. "James Gosling does like that" will be my main excuse when someone complains about my unubiquitous constructs. 😆😆😆😆
Java's father's great work 👍
Great feeling... Father of Java
love instanceof as a nullcheck and assign ... thanks Patterns!!!
he is wearing Niels Bohr t-shirt, says
"The question that divides us is whether it’s crazy.." can someone fill it up?
"We are all agreed that your theory is crazy. The question which divides us is whether it is crazy enough to have a chance of being correct."
Hail to the King 🔥🔥🔥
So many programming languages. Embrace the crazy.
He said he counts Java as 34 years old. I saw one video where James Gosling showed a TV set top application with Duke icons. I wonder what apps he considers the first Java applications.
Bil Bailey also created Java? Man, this man is so talented!
10:47 For some reason SonarQube doesn't like nested ternary statements.
43:17 Greetings from Greece guys 😄
Great talk. I wanted to add some color to the code density example. Are the 2 versions truly the same functionality? Comparing .b (I assume same as .body in the density version) uses “==“ in the functional version and .equals in the boring one. I’m not a Java expert enough to answer this question, but here’s the thing. No amount of code density is worth the fact I’m having to spend cycles asking this question. I write code to be correct and readable. I hold provably-correct-by-inspection in high regard. The “?:” is not that to most people, I contend.
In addition, we have very different definitions of functional. Most of the function adherents would not see the “?:” example as functional. Not at all. Functional means no mutable state and using functions that compose into successive units of computation. Streams in Java can be used for this, unless you think it’s a good idea to update state in a .map() or .filter(), and so on. True functional programming-even in an imperative language like Java-can be a boon for clarity. I always write my Java Streams that way. I make the code read like a sentence. This is truly where functional meets density meets clarity, not the example in your slide. IMHO. Thoughts?
the state was invented to mutate it in the first place, in the same way as methods were invented to abstract the state - to make life EASIER. people who pass the records with state around between functions and imagine themselves as somewhat superior because they don't mutate state are total morons
Too much color.
Damn, I'm definitely going to use instanceOf more now.
Haha. It's all lowercase 😊
Have a great 2025, James🔥
Muito bom!
Mettiamola così!
Santos bacalaos es el jefe!
Cast could be like Object Pascal: Type(object)
Main lesson, write code that feels more comfortable for you, even stars write very bad code :)
Great talk. Kinda fun to both agree and disagree with the guy that laid the foundation for my career.
«Instanceof also checks for null» is slightly dangerous; I manually changed the type of a method parameter so that the instanceof test was no longer needed and removed it, but forgot to consider null -> NPE.
I use «instanceof» quite a bit, but I find it kinda ugly. Wish it had been just «is»
Not his fault, but since he mentioned records; I kinda dislike them. Not so much for what they are (though I dislike the «mutability is evil» that comes with it) but especially for making classes a second class (heh) citizen in its own language. Give classes the same syntactic sugar!
This is exactly how I imagine the creator of Java would be 😂😂😂 The boss
[9:45] lol, the bottom one still contains an implicit && return.
Yeah, that makes you wonder why the whole thing couldn't just be `return t == this || (t instanceof Token T) && kind == T.kind && body.equals(T.body);`. That would also be more readable than using ternaries. It seems people like to have explicit `false` and `true` values sprinkled here and there, even though it doesn't make the logic even a tad simpler.
@@bitti1975 when and or where?
@@bitti1975The 't == this' check should also be removed. It makes the equals method slower instead of faster in most cases, in addition to cluttering the code.
This was covered in one of Paumard's videos.
min 43:34: How can return = id * id; work?
What is that = ? is that an alternative = unicode symbol? even if so, how that works?
That looks like a typo. There's also an unnecessary semicolon after the bracket.
I'd guess he quickly wrote something for the slide and didn't actually copy it from the library.
I don't really understand 9:40. If he prefers more compact functional style, why is he abusing ternaries instead of just `return t == this || (t instanceof Token T) && kind == T.kind && body.equals(T.body);`? Ok, I get that his main point is that he likes ternaries since they are expressions (and not every expression returns a boolean), but then his example is not ideal.
You don't need the parentheses around t instanceof Token T. You wasted two valuable characters!!1!!
I had exactly the same thought. His code is ugly (nested ternaries and redundant returns). Overall, during this talk he said many things that convinced me that he is a mediocre engineer, and they are just keeping him around and tolerating him because he invented the language
@@ZelenoJabko No, that wasn't my thought. I'm just mystified why he prefers ternaries to boolean expressions when his preference is functional and compact style. Just because he uses some idiosyncrasies doesn't mean he isn't a good software engineer.
I IN THIS YEAR 2025 STARTED LEARN JAVA
Why does he have the same hairstyle as Bjarne Stroustrup, creator of C++?
"Fake it until you make it!"👴
Subtracting and adding shapes…gradient logic?
Gosling baba büyüksün baba
Oh, no! I would also be a diehard user of Gosling's proposed language named "?". Brace spreading is vastly worse than manspreading.
set playback speed to 1.75x
Or simply learn patience.
@@alcar32sharif NEVER
It's actually good recommendation
Why slowing down? I always set 2x - I dream of having 3x or 4x on youtube.
You should show more respect for this guy.
You know your age has caught up with you when you think that ‘instanceof’ is the same as != null
Saying instanceof is equivalent to Kotlin/Typescript/Swift's ?. seems like he's completely missing the point of null safety features.
Something like `null instanceof X x` returns false. It is null-safe here.
You could write `a instanceof A aa ? aa.b() instanceof B bb ? bb.c() instanceof C cc ? cc : null : null : null;` as a gross verbose version of `a?.b()?.c()`
Man is the legend! He still working and Bjarne Stroustroup not!
public public public = 5;
Gotta start making developers triggered 😂.
JAG wrote cringy code?! No way! 😁
James, the OOP's Inheritance maybe a trouble: The Fragile Base Class Problem. Then it was invented the Composition of Instances of Classes that avoids the Inheritance, and it works as a lot of Mixins. And there is another problem in this movement, if the "IS A" relationships are disappeared due to the "HAS A" relationships, it will be difficult to draw UML diagrams or another schemes, by example, Design Patterns (of GoF) for Composition of Objects. Good bye.
Nenek moyang orang java
Java is Father of all programming languages
Absolutely not.
What?! You are joking I hope. Java is way of in the weeds of the programming language family tree.
Hope you're not serious? Java is a lousy language and far from being the father.
@@toby9999 Yeah. I know it has a lot of proponents, and to be fair, it introduced a few interesting concepts at the time (nothing really new either, but stuff that wasn't in the widely used languages back then, C and C++), but it also shaped software development in a way that's IMO not nearly as positive as many make it to be. My opinion may not be popular here, but I'm even going as far as claiming that it has contributed to destroying the software industry.
I find it funny that performance is even part of discussion if you write something in Java. The fact that random GC pauses in single digit milliseconds is considered "good" is about finally admitting that Java has had a lot of major latency problems. It doesn't mean that single digit millisecond pauses are good thing.
And the fact that you can avoid GC pauses with some weird Java code is a bug, not a feature.
If you write Rust, the latency caused by compiler generated memory management has at least 3 magnitudes smaller worst case latency.
If you are a real time programmer (including frame rate critical graphics), sure. But there are no free lunches. Reference counting has its own problems. And it's easy to invent cases where copying garbage collection actually has better asymptotic performance. You can't use a stack for everything. I've worked on a Java applications with 10^8 users for ~5 years. We never tracked a usability issue to Java GC.
If the original Java hadn't been determined to standardize on one true floating point, I might have jumped on the bandwagon at the earliest opportunity. Gosling loves his quirky efficiencies, but apparently not when the hardware people get to do the same in silicon, to get the precision they need at the least cost, when they think they need it.
Write-once-run-anywhere floating-point totalitarianism CAN NOT BE EFFICIENT to the same level as those silly string concatenation hacks. I took one look at that and said "I'm not signing up for floating-point totalitarianism" with a side order of "fool me once, shame on me" despite many other innovations in Java that I thought were wonderful and cool.
Note that when machine learning came along, a proliferation of new floating-point formats was soon in the cards. If you want write-once-run-anywhere, you shouldn't be using floating point. That's not what floating point means to become when the Blue Fairy finally turns it into a real boy. Sabine has a new episode where a physicist argues that the real numbers are false physics, and that this unreasonable mathematical idealism is part of the problem with QM. Floating point in CS is the rationals idealized and then bastardized again, and there is _definitely_ not one true bastardization (though Sun wished to pretend otherwise).
x86 delays rounding slightly longer than most other architectures with its extended-precision internal format. If this matters in the stability of your program, it's not your silicon that's the problem, nor is it your programming language's job to conceal this, it's your unstable algorithm that's to blame, and the visibility of this instability-over the landscape of "run anywhere"-is, in my books, most definitely a FEATURE, not a bug.
I'm actually 95% progressive, but about 5% of woke triggers me as badly as this write-once-run-anywhere floating-point totalitarianism of Java's infancy, which pretty much consigns me to the alt.right, or so it seems. At least I come by it honestly, and practice what I preach across the board.
did he mention that his decision not to introduce multiple inheritance because "it brought him grief" has affected tens of millions of developers over the course of past 30 years and made java software pretty much unreusable? what a moron
Unreusable? I don’t agree. Have you any idea how successful Java actually is?
@@mickkay1889 it's an effing wonder how.
10:09 "I like to see it more compressed"
return t == this || t instanceof Token T && kind == T.kind && body.equals(T.body);
The Java developers yearn for C#’s pattern matching
Lowercase T, t.kind and t.body
@ZelenoJabko I don't like the uppercase T either, but "t instanceof Token t" doesn't work: "error: variable t is already defined"
I'd tend to use "t instanceof Token that" and then use "this.kind == that.kind" because I like the symmetry, but of course that's less compact.