James Gosling on Java - Historical Oddities & Persistent Itches

Поделиться
HTML-код
  • Опубликовано: 15 янв 2025

Комментарии • 118

  • @antonbozhinov
    @antonbozhinov 18 дней назад +128

    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 ❤

  • @CodeJava
    @CodeJava 16 дней назад +50

    it's very nice to see the Father of Java still in good shape. Best wishes for James.

    • @java
      @java  15 дней назад +5

      Thanks for the kind words!

  • @ktxed
    @ktxed 18 дней назад +83

    the final boss of java

  • @sjzara
    @sjzara 18 дней назад +49

    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
      @Heater-v1.0.0 18 дней назад +1

      Really? In what way is Java not just an another language? Can you tell just one feature that makes that so?

    • @pookiepats
      @pookiepats 17 дней назад +1

      You’re confused old timer, perhaps you meant the JVM. Java is just an interface, a crappy verbose interface.

    • @silentprotagonist3786
      @silentprotagonist3786 17 дней назад

      ​@@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.

    • @ahmedjaad4940
      @ahmedjaad4940 17 дней назад +8

      @@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

    • @varnanthirugnanasambandan559
      @varnanthirugnanasambandan559 12 дней назад

      Yess

  • @kaqqao
    @kaqqao 18 дней назад +16

    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.

  • @szaboaz
    @szaboaz 18 дней назад +28

    "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.)

  • @andrewdunbar828
    @andrewdunbar828 2 дня назад +2

    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" (-:

  • @aamudaa
    @aamudaa 18 дней назад +29

    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.

  • @mjduigou
    @mjduigou 18 дней назад +28

    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

    • @mjduigou
      @mjduigou 18 дней назад +9

      And another talk about the "Just Keep Running" approach James talks about ruclips.net/user/liveagXce0lSo60

    • @brenoepics
      @brenoepics 7 дней назад +2

      Wow, thank you so much, really very interesting and inspiring.

  • @vladimirkraus1438
    @vladimirkraus1438 18 дней назад +30

    I like the same hair style as Stroustrup, the father of C++ :)

    • @arbitrarysequence
      @arbitrarysequence 18 дней назад +3

      Ah, they're just doing their best to match the style and look of David Crosby.

    • @ECRandomBits
      @ECRandomBits 16 дней назад +3

      One can only rock that look after writing a rock-solid multi-decade-old language who powers everything, from satellites to servers.

  • @badhombre4942
    @badhombre4942 18 дней назад +15

    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.

    • @aadu_thoma4624
      @aadu_thoma4624 15 дней назад

      You recognized him by the t-shirt he is wearing?

  • @berndeckenfels
    @berndeckenfels 18 дней назад +7

    That “ask my wife” answer was gold

  • @I_AM_UCT
    @I_AM_UCT 18 дней назад +14

    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.

    • @delabassee
      @delabassee 18 дней назад +5

      That was Dr Deprecator! 😅

    • @mastermind1663
      @mastermind1663 17 дней назад

      we can always do super.finalize() even after overriding

    • @mobbs8229
      @mobbs8229 16 дней назад +3

      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 😅

  • @Kenbomp
    @Kenbomp 18 дней назад +12

    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

  • @122mlb
    @122mlb 18 дней назад +6

    Gosling should be hired to join the Java development team at Oracle

  • @PeterPilgrim
    @PeterPilgrim 7 дней назад

    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.

  • @ernestsakala417
    @ernestsakala417 18 дней назад +24

    My favourite Programming language ❤

    • @toby9999
      @toby9999 18 дней назад +2

      My most disliked programming language.

    • @ernestsakala417
      @ernestsakala417 18 дней назад +8

      @toby9999 i use it every day at my work . Disliked by novice programmers.

    • @srinivasreddyt9555
      @srinivasreddyt9555 16 дней назад

      I never wrote a line since 14 years. That's it. never looked back.

    • @itfitness5791
      @itfitness5791 16 дней назад

      Agreed 😂

    • @juancnuno
      @juancnuno 4 дня назад

      @ernestsakala417 It's my favorite as well

  • @jonsmith7718
    @jonsmith7718 18 дней назад +2

    Great knowledge 🎉

  • @ECRandomBits
    @ECRandomBits 16 дней назад +1

    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. 😆😆😆😆

  • @nandnitech160
    @nandnitech160 10 дней назад +1

    Java's father's great work 👍

  • @varnanthirugnanasambandan559
    @varnanthirugnanasambandan559 12 дней назад

    Great feeling... Father of Java

  • @larrycable984
    @larrycable984 16 дней назад +4

    love instanceof as a nullcheck and assign ... thanks Patterns!!!

  • @aelafdev
    @aelafdev 18 дней назад +4

    he is wearing Niels Bohr t-shirt, says
    "The question that divides us is whether it’s crazy.." can someone fill it up?

    • @delabassee
      @delabassee 17 дней назад +2

      "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."

  • @NanraSukedy
    @NanraSukedy 16 дней назад +1

    Hail to the King 🔥🔥🔥

  • @ifstatementifstatement2704
    @ifstatementifstatement2704 15 дней назад

    So many programming languages. Embrace the crazy.

  • @onebeartoe
    @onebeartoe 18 дней назад +3

    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.

  • @keipfar
    @keipfar 16 дней назад +1

    Bil Bailey also created Java? Man, this man is so talented!

  • @slr150
    @slr150 18 дней назад +5

    10:47 For some reason SonarQube doesn't like nested ternary statements.

  • @efstathiospapafotis523
    @efstathiospapafotis523 17 дней назад +1

    43:17 Greetings from Greece guys 😄

  • @LucidGeometry
    @LucidGeometry 18 дней назад +2

    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?

    • @hello-world1
      @hello-world1 17 дней назад

      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

    • @adiankunda204
      @adiankunda204 11 дней назад

      Too much color.

  • @maurigvs
    @maurigvs 18 дней назад +9

    Damn, I'm definitely going to use instanceOf more now.

  • @Andrewww...
    @Andrewww... 9 дней назад

    Have a great 2025, James🔥

  • @internet.hoje2023
    @internet.hoje2023 18 дней назад +3

    Muito bom!

  • @gsit80
    @gsit80 18 дней назад

    Mettiamola così!

  • @wesosdequeso8360
    @wesosdequeso8360 18 дней назад +1

    Santos bacalaos es el jefe!

  • @rsixel
    @rsixel 18 дней назад +2

    Cast could be like Object Pascal: Type(object)

  • @leonelsamayoa3260
    @leonelsamayoa3260 18 дней назад +4

    Main lesson, write code that feels more comfortable for you, even stars write very bad code :)

  • @guttormvik6335
    @guttormvik6335 17 дней назад +1

    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!

  • @lance_c1323
    @lance_c1323 16 дней назад +1

    This is exactly how I imagine the creator of Java would be 😂😂😂 The boss

  • @zombiefacesupreme
    @zombiefacesupreme 18 дней назад +3

    [9:45] lol, the bottom one still contains an implicit && return.

    • @bitti1975
      @bitti1975 18 дней назад +4

      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.

    • @olu9828
      @olu9828 17 дней назад

      @@bitti1975 when and or where?

    • @vinterskugge907
      @vinterskugge907 13 дней назад

      ​@@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.

  • @MarcoServetto
    @MarcoServetto 17 дней назад

    min 43:34: How can return = id * id; work?
    What is that = ? is that an alternative = unicode symbol? even if so, how that works?

    • @DrBreakalot
      @DrBreakalot 9 дней назад +1

      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.

  • @bitti1975
    @bitti1975 18 дней назад +3

    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.

    • @jcsahnwaldt
      @jcsahnwaldt 18 дней назад

      You don't need the parentheses around t instanceof Token T. You wasted two valuable characters!!1!!

    • @ZelenoJabko
      @ZelenoJabko 17 дней назад

      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

    • @bitti1975
      @bitti1975 17 дней назад +2

      @@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.

  • @BaniAlikhsan
    @BaniAlikhsan 8 дней назад

    I IN THIS YEAR 2025 STARTED LEARN JAVA

  • @julianjupiter5890
    @julianjupiter5890 17 дней назад

    Why does he have the same hairstyle as Bjarne Stroustrup, creator of C++?

    • @sqlexp
      @sqlexp 17 дней назад

      "Fake it until you make it!"👴

  • @johncarlson3968
    @johncarlson3968 10 дней назад +1

    Subtracting and adding shapes…gradient logic?

  • @attila5078
    @attila5078 8 дней назад

    Gosling baba büyüksün baba

  • @afterthesmash
    @afterthesmash 17 дней назад

    Oh, no! I would also be a diehard user of Gosling's proposed language named "?". Brace spreading is vastly worse than manspreading.

  • @qdeqdeqdeqde
    @qdeqdeqdeqde 18 дней назад +22

    set playback speed to 1.75x

    • @alcar32sharif
      @alcar32sharif 18 дней назад +8

      Or simply learn patience.

    • @radkawar
      @radkawar 18 дней назад +3

      @@alcar32sharif NEVER

    • @ales-rocks
      @ales-rocks 18 дней назад +1

      It's actually good recommendation

    • @parvuselephantus
      @parvuselephantus 18 дней назад +4

      Why slowing down? I always set 2x - I dream of having 3x or 4x on youtube.

    • @RobertBakic
      @RobertBakic 18 дней назад +10

      You should show more respect for this guy.

  • @dinofx35
    @dinofx35 14 дней назад

    You know your age has caught up with you when you think that ‘instanceof’ is the same as != null

  • @victorpinasarnault9135
    @victorpinasarnault9135 13 дней назад

  • @jackgenewtf
    @jackgenewtf 18 дней назад +3

    Saying instanceof is equivalent to Kotlin/Typescript/Swift's ?. seems like he's completely missing the point of null safety features.

    • @_SG_1
      @_SG_1 18 дней назад +3

      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()`

  • @orlovskyconsulting
    @orlovskyconsulting 17 дней назад

    Man is the legend! He still working and Bjarne Stroustroup not!

  • @carldea
    @carldea 17 дней назад

    public public public = 5;
    Gotta start making developers triggered 😂.
    JAG wrote cringy code?! No way! 😁

  • @juancarlospizarromendez3954
    @juancarlospizarromendez3954 18 дней назад

    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.

  • @dimashfa978
    @dimashfa978 14 дней назад

    Nenek moyang orang java

  • @RambabuBuri
    @RambabuBuri 18 дней назад +2

    Java is Father of all programming languages

    • @joseoncrack
      @joseoncrack 18 дней назад +5

      Absolutely not.

    • @Heater-v1.0.0
      @Heater-v1.0.0 18 дней назад +3

      What?! You are joking I hope. Java is way of in the weeds of the programming language family tree.

    • @toby9999
      @toby9999 18 дней назад +2

      Hope you're not serious? Java is a lousy language and far from being the father.

    • @joseoncrack
      @joseoncrack 17 дней назад +2

      @@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.

  • @MikkoRantalainen
    @MikkoRantalainen 17 дней назад +1

    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.

    • @generessler6282
      @generessler6282 17 дней назад +11

      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.

  • @afterthesmash
    @afterthesmash 17 дней назад

    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.

  • @hello-world1
    @hello-world1 17 дней назад

    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

    • @mickkay1889
      @mickkay1889 16 дней назад +2

      Unreusable? I don’t agree. Have you any idea how successful Java actually is?

    • @hello-world1
      @hello-world1 15 дней назад

      @@mickkay1889 it's an effing wonder how.

  • @jcsahnwaldt
    @jcsahnwaldt 18 дней назад +1

    10:09 "I like to see it more compressed"
    return t == this || t instanceof Token T && kind == T.kind && body.equals(T.body);

    • @neonmidnight6264
      @neonmidnight6264 18 дней назад

      The Java developers yearn for C#’s pattern matching

    • @ZelenoJabko
      @ZelenoJabko 17 дней назад

      Lowercase T, t.kind and t.body

    • @jcsahnwaldt
      @jcsahnwaldt 17 дней назад

      @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.