New Java Version 22 - The 3 Best New Features You'll ACTUALLY Use

Поділитися
Вставка
  • Опубліковано 31 тра 2024
  • 💻 Check out JetBrains IDEs here: jb.gg/JetBrains-IDEs
    Java version 22 is out now! Here are 3 new features that you can absolutely make use of as a beginner or advanced Java programmer.
    ☕ Java Course: codingwithjohn.thinkific.com/...
    Java 22 was release just a few weeks ago. Is it worth the upgrade? We'll talk about 3 new features in Java 22 that you can actually put into action in your programs TODAY.
    Learn or improve your Java by watching it being coded live!
    Hi, I'm John! I'm a Lead Java Software Engineer and I've been in the programming industry for more than a decade. I love sharing what I've learned over the years in a way that's understandable for all levels of Java learners.
    Let me know what else you'd like to see!
    Links to any stuff in this description are affiliate links, so if you buy a product through those links I may earn a small commission.
    📕 THE best book to learn Java, Effective Java by Joshua Bloch
    amzn.to/36AfdUu
    📕 One of my favorite programming books, Clean Code by Robert Martin
    amzn.to/3GTPVhf
    🎧 Or get the audio version of Clean Code for FREE here with an Audible free trial
    www.audibletrial.com/johnclean...
    📹Camera I use for recording:
    amzn.to/3wlXcmR
    🎙️Microphone I use (classy, I know):
    amzn.to/3AYGdbz
    Donate with PayPal (Thank you so much!)
    www.paypal.com/donate/?hosted...
    ☕Complete Java course:
    codingwithjohn.thinkific.com/...
    codingwithjohn.com

КОМЕНТАРІ • 307

  • @MelHaynesJr
    @MelHaynesJr Місяць тому +206

    Java is older than many people using it, and it's amazing we are just now getting this String feature.

    • @adiveler
      @adiveler Місяць тому +23

      Yeah!
      C#, Python, and JS had this for ages!

    • @JorgetePanete
      @JorgetePanete Місяць тому +12

      Not yet, they'll be iterating on it and is now removed.

    • @boss50726
      @boss50726 Місяць тому +7

      I think java is now realizing that it will loose it's charm for new gen

    • @allwoundup3574
      @allwoundup3574 24 дні тому

      Because java is trash and was developed by a kiddie diddler

    • @noJobProgrammer
      @noJobProgrammer 22 дні тому

      @@adiveler C# is just a copy of Java, there is nothing special in it

  • @terrificfrogg8377
    @terrificfrogg8377 Місяць тому +153

    The string template is amazing but having to begin with STR to make it work is just so Java

    • @CodingWithJohn
      @CodingWithJohn  Місяць тому +54

      I think it's technically needed for backward compatibility, since without it if some string literal happens to contain \{something}, it would break when they upgrade the Java version.

    • @PimPumSObaka
      @PimPumSObaka Місяць тому +13

      +++ This whole feature literally screams JAVA lol

    • @sstrenn
      @sstrenn Місяць тому +6

      Do you know why they couldn’t just put an f in front of the string, like python, to indicate a formatted string to the compiler?

    • @DinMamma002
      @DinMamma002 Місяць тому +7

      @@CodingWithJohn How is it needed for backward compatibility? "\{" is not allowed by the compiler afaik.

    • @havlli7544
      @havlli7544 29 днів тому +15

      @@CodingWithJohn It is a design decision as well, from what I could understand from their latest talks about these new features the reason is to give developers the ability to create their custom template processors that can have additional logic, they gave the example of creating a custom SQL template processor that would have sanitizing included in the template processor logic itself so you could just call SQL."query with parameters" in the database layer and not to worry about sanitizing because that will be centralized in the template processor itself. You could use it to adhere to formatting standards for the queries and greatly reduce boilerplate code. There are more use cases for sure but I cant come up with any from the top of my head :D

  • @sanin3213
    @sanin3213 Місяць тому +159

    Return of the GOAT

  • @MrXperx
    @MrXperx Місяць тому +24

    I came from a JS background to a Java project and the lack of string templating drove me nuts. I started to use String.format which isn't that bad.

    • @YouHaveTrouble
      @YouHaveTrouble Місяць тому +7

      in java 17 and up you can do "Some random string with %s format".formatted("special"); which is more convenient imo

    • @MrXperx
      @MrXperx Місяць тому

      @@YouHaveTrouble thanks. I'll try it.

  • @Kiyuja
    @Kiyuja Місяць тому +17

    String templates sounds good but it needs a little work I feel. This is the same concept as string interpolation in C# and its a little more friendly, you just add a $ in front of a string and then use the same braces as with the preview here like: $"part1 {insert} part2". Its quick and easy to use. The "_" is also a thing called disposables I believe and it can be really useful. I am happy to see Java catching up a little and hopefully they work on asynchronous execution in the future.

    • @nakarukatoshi
      @nakarukatoshi 7 днів тому

      The thing is that they decide to go with processors because programmers can create their custom ones, like custom HTML, YAML, JSON, SQL, ... processors that will sanitaze the variables
      I think some frameworks like Hibernate will implement different SQL sanitizer processors, and Jackson will do JSON and YAML processors for example

  • @Okmeis
    @Okmeis Місяць тому +4

    Thank you for keeping us up to date.

  • @Sunnnix
    @Sunnnix Місяць тому +25

    For the third feature, I always used String.format because it's easier to read

  • @Mig440
    @Mig440 Місяць тому +34

    Unfortunately, the string templates feature has been removed for now from std. Lib since they want iterate on the design at bit further before releasing it to the public. Just good to be aware of.

    • @terrycrews1584
      @terrycrews1584 Місяць тому +3

      Dang, thought we will finally get rid of that pain in the ass of concatenation! 😂

    • @davidc_ac9377
      @davidc_ac9377 23 дні тому +1

      It has always been experimental in v21 and v22. It was not removed, because it was never standard.

    • @Mig440
      @Mig440 23 дні тому

      @@davidc_ac9377 true, but people might still think they can experiment with it on their own in jdk 23 and that will currently be impossible 😊

  • @nayankumar9113
    @nayankumar9113 Місяць тому +2

    welcome back champion. thank for such a great tutorials.

  • @MrAikien
    @MrAikien 29 днів тому

    Thanks for the update 🙏. Really appreciate it 👌👍

  • @rakshanch2126
    @rakshanch2126 Місяць тому +47

    best java youtuber

    • @MusabYK
      @MusabYK Місяць тому +3

      Agreed

  • @paulthomas1052
    @paulthomas1052 Місяць тому +4

    Thanks for the great intro to Java 22. Look forward to more !

  • @ilyriadjaajdairyli6352
    @ilyriadjaajdairyli6352 Місяць тому +1

    Thank you its very clear explained

  • @boss50726
    @boss50726 Місяць тому +32

    Please make more videos John

  • @user-io1uc3wy7d
    @user-io1uc3wy7d Місяць тому +3

    Amazing i am learning dsa using Java and love to work on it further as well.

  • @paulmanuilenko7894
    @paulmanuilenko7894 28 днів тому

    Thanks a lot for the overview!

  • @VuLinhAssassin
    @VuLinhAssassin Місяць тому +3

    Hi Jon, your video was amazing.
    Btw, is there any remote position in your company?

  • @imohanthony
    @imohanthony 23 дні тому

    This video presentation was so cool am considering picking up java again.

  • @antonyrichard369
    @antonyrichard369 Місяць тому +7

    Not to compare as I love Java too .. but the string template feature is something .Net has implemented a few years back and Unix operating system has it way way long back ..
    I feel like Java is more moving towards like a scripting language like python or Java script and more of functional programming ofcourse

  • @i_say_uhh
    @i_say_uhh Місяць тому +2

    String template looks so niceee

  • @nithinvijay19
    @nithinvijay19 12 днів тому

    Worthful content from you as always!

  • @mayurlaniya5049
    @mayurlaniya5049 10 днів тому

    Awesome presentation!

  • @leogcavalli
    @leogcavalli Місяць тому +1

    Great content, as always

  • @danhoelzel5339
    @danhoelzel5339 25 днів тому

    string templates was something I was wondering if Java had about 8 months ago when I started working on an android app using java. Glad it is finally a feature.

  • @nambipugal3329
    @nambipugal3329 Місяць тому +1

    Hi John, Eagerly waiting for more videos especially on Spring Security 🙃

  • @theroyaltygamer8436
    @theroyaltygamer8436 Місяць тому +1

    Hey john love your content please make more videos

  • @raymondorenda7385
    @raymondorenda7385 Місяць тому +5

    Good tutorial there though I rather they ought to have used $ sign instead of \ for that String variable combination. A convention in number of languages. Besides, adding \ in xml with its cousin / already in abundance will bring more confusion.

  • @vibingowsic2338
    @vibingowsic2338 Місяць тому +5

    Miss your tutorial John ❤❤

  • @simulbista8846
    @simulbista8846 Місяць тому

    Great to have you back.

  • @dirkniblickable
    @dirkniblickable 27 днів тому +1

    In lieu of chapter markers:
    * 1:43 - Unnamed variables
    * 7:03 - Compile and execute multi-file Java programs from command line
    * 9:14 - String templating (preview only)

  • @VANTYCSolutions
    @VANTYCSolutions Місяць тому

    Awesome video thank you.

  • @baay81
    @baay81 Місяць тому +1

    thanks for sharing!

  • @rubens_cube
    @rubens_cube Місяць тому +5

    Hey John, another great video, thank you! I was wondering if you know something about Java Serialization? It is a topic I would love to see in a video, because it is very useful, but it feels like magic to me. I would love to see a good explanation of it so I know how to use it properly!

    • @alexandersagen3753
      @alexandersagen3753 2 дні тому

      Just a heads up, most do not recommend java serialization (Serializable and so on) as it has had so many extremely bad security vulnerabilities forever. The recommended solution is to serialize the objects to json or whatever format you prefer and use that. Many great extremely fast libraries for most if not all formats you could think of

  • @avalagum7957
    @avalagum7957 Місяць тому +1

    If you could talk about structured concurrency and stream gatherer, that's really great.

  • @younesdamous
    @younesdamous Місяць тому

    I watched a lot of your videos and I benefited a lot from you in Java... I am from Algeria... Thank you and I hope we meet one day

  • @xtunasil0
    @xtunasil0 11 днів тому

    Java is finally catching up on basics features it was missing. About time!

  • @noodleslee4871
    @noodleslee4871 15 днів тому

    String template is lit!

  • @amilasilva7
    @amilasilva7 Місяць тому

    Hay love your videos on youtube. Supper easy to understand.

  • @pablocaiza.
    @pablocaiza. Місяць тому

    string template is awesome, is similar to template stirng in javscript :D

  • @dembro27
    @dembro27 26 днів тому

    They implemented my unreasonably favorite JavaScript feature, template literals, into Java. Finally!!!
    String.format is pretty good, though.

  • @ricardoid
    @ricardoid Місяць тому +1

    Great video! every Java improvement Scala has it many yeas before 😮

    • @lionelsimon7613
      @lionelsimon7613 10 годин тому

      Yes, they just are following that path after so many years. Poor java . However, Scala devolpers are taking now new languages, such as rust, Haskell.

  • @flaviuvanca9289
    @flaviuvanca9289 Місяць тому

    Great video John. The new String concatenation is a game changer. The blank _ is a bit silly, but I welcome it, might be useful occasionally.

    • @alandoe6622
      @alandoe6622 Місяць тому +3

      If you come from python, you know it's useful.

    • @flaviuvanca9289
      @flaviuvanca9289 Місяць тому

      ​@alandoe6622, I'm planning to learn Python in the future so it's great to gain that extra knowledge.

  • @theminingpro
    @theminingpro 29 днів тому

    That in string variable thing is a game changer for sure

  • @ukaszkiepas57
    @ukaszkiepas57 29 днів тому

    Thanks John! :)

  • @user-xe5pk5pn2u
    @user-xe5pk5pn2u Місяць тому

    Keep uploading these awesome videos. I NEED IT.

  • @FahadAyaz
    @FahadAyaz Місяць тому +13

    It's nice that Java devs are able to use these now. I feel blessed that we've not had to put up with these (and have a lot more loveliness) in Kotlin for years now. Going back to Java definitely feels like a step backwards

  • @PimPumSObaka
    @PimPumSObaka Місяць тому +2

    Those features are amazing, but... the '_' underscore variable discarding was in C# since 7.0 and they should definitely add more like from there :) The syntax sugar in C# makes it much much much better to use, so when java introduces something like this it interests me again in making things in Java

    • @sqlexp
      @sqlexp Місяць тому +2

      He missed the points of it, though. First, it is used to silence any "unused variable" warning (if Java has such a thing). Second, it saves the programmer from the need to come up with different distinct names for multiple unreferenced variables in the same scope.

  • @David-rz4vc
    @David-rz4vc 28 днів тому

    C# has the underscore. it's useful in a try catch when u don't want to do anything with the exception

  • @omitobisam
    @omitobisam Місяць тому

    Unnamed variable seem to be idea of matching a pattern. If it does not match any pattern, then you can use an underscore. Example in F#.

  • @mohamedsameh3678
    @mohamedsameh3678 Місяць тому

    I'm impressed by your knowledge of Java versions! Since Java 9 there have been many new features. Would it be possible to create a concise overview of the key features introduced in Java 9 through 22? This would be a valuable resource for developers, and I believe your ability to explain complex topics makes you well-suited for this task.

  • @tanujabhatnagar
    @tanujabhatnagar 10 днів тому

    Could you please create a video explaining double locks, volatile and synchronized keyword? It would be really helpful 🙏🏻

  • @CGDW2
    @CGDW2 Місяць тому +1

    Unnamed variables I will use occasionally, but String templates are really nice.
    I do sometimes use String.format() or printf() rather than concatenation, but they still feel kinda clunky in their syntax.

    • @CodingWithJohn
      @CodingWithJohn  Місяць тому +3

      Looks like it's unfortunately being removed even as a preview feature in Java 23, but hopefully to return in an even better format in a future release.

  • @SweetDemon11
    @SweetDemon11 13 днів тому

    John could you talk about Java Modules please, i appreciate your content

  • @paramdholakiya8857
    @paramdholakiya8857 Місяць тому +4

    Using STR. String templates for Servlets. That's it. Thank you ORACLE gods. Writing Html in Java Servlet file has now became more easier

  • @fizzcochito
    @fizzcochito Місяць тому +1

    Looking forward to using this once we upgrade from Java 8 in 23 years

  • @lootster
    @lootster 27 днів тому +1

    00:01 Java 22 introduces new features for developers
    01:46 Java 22 introduces unnamed variables
    03:25 Using unnamed variables in Java
    05:00 Java 22 introduces unnamed variables for unused exceptions and Lambda functions.
    06:46 Java 22 makes running multiple file Java programs from the command line easier.
    08:20 Java 22 brings multitfile program running and string templating as key features.
    10:05 Java 22 allows string templating for cleaner concatenation
    11:51 String templates simplify multi-line string manipulation

  • @iparadoxg
    @iparadoxg Місяць тому

    Welcome Back John! ❤

  • @amilasilva7
    @amilasilva7 Місяць тому +1

    Can you make a video about : How quickly adapt to new Java features from java 8 to 11/17/21/22. (what new features we can use over legacy features.)

  • @kalvakolusubhash8832
    @kalvakolusubhash8832 8 днів тому

    Please make a video on how to load all the project classes during runtime.

  • @adamrigely3607
    @adamrigely3607 27 днів тому

    Wait, you create these awesome videos AND play TBOI? Now I appreciate you even more!

  • @74LS_NE555
    @74LS_NE555 Місяць тому

    how did you get that vanity url for the video ?

  • @wannacry6586
    @wannacry6586 8 днів тому

    Anyone know what setting enables this type of auto completion 2:03

  • @withgrowinginsanity198
    @withgrowinginsanity198 Місяць тому

    11:49 what about the existing feature "my name is %s".formatted(name);
    no STR and very confusing looking (especially inside HTML) "\" needed ...

  • @harshitkrvishwakarma3602
    @harshitkrvishwakarma3602 29 днів тому +1

    Java is becoming javascript but with types. I love it.

  • @tanujabhatnagar
    @tanujabhatnagar 10 днів тому

    Could you please explain different types of design patterns used in java as well? and when to use which one?

  • @johnmckown1267
    @johnmckown1267 Місяць тому

    The _ and string interpolation (f strings) are in Python too.

  • @karenlim7841
    @karenlim7841 27 днів тому

    Yay, you’re back!

  • @vanlepthien6768
    @vanlepthien6768 24 дні тому

    Wow - actually useful new features!

  • @sadiulhakim7814
    @sadiulhakim7814 25 днів тому

    I saw one issue in StringBuilder today. I had to build string inside a while loop. Inside that loop i was creating a StringBuilder instance and creating the string. Later i wanted to make the StringBuilder outside the loop. But i was appending something in the string builder inside the loop. After appending and generating string i had to clean up the string builder for next iteration. I could not clean the string builder. I tried setLength(0), delete method. But the bytes inside value array still exists.

  • @Morzelius
    @Morzelius Місяць тому +15

    I'm pretty sure they wanted to find the most uncomfortable syntax possible to do string templating. Maybe they checked how the popular languages doing that and wanted to create something that worse.

    • @manoelcamposdev
      @manoelcamposdev 27 днів тому

      If it wasn’t due to the possibility to create any custom string processor you want, I would agree. But Oracle looked at other languages and included an awesome feature. For instance, you can create a JSON string processor or a SQL processor that avoids SQL injection. It’s just amazing and sometimes a simple lambda.

  • @deepakyadav-ny2cj
    @deepakyadav-ny2cj 27 днів тому +1

    Please increase the frequency of you appearing with new video, we really wait eagerly.

  • @reyhanau50
    @reyhanau50 Місяць тому +1

    Hi John, will you start to teach us about Spring Boot material someday?

  • @NadChel1
    @NadChel1 27 днів тому

    String templating is awesome. I was hoping for something like this for a long time. Though I wonder why they didn't go with backticks like JS with its string interpolation. STR is less appealing to my eye

  • @FonPacific
    @FonPacific 10 днів тому

    While PHP moves towards Java, Java implements features PHP has been having since long time ago. I find it funny yet interesting!

  • @zachariahtatman7381
    @zachariahtatman7381 28 днів тому +1

    wow java finally coming out with basic features that have existed in other langiuages for years. i might actuially enjoy java in 5 years.

  • @denver3703
    @denver3703 17 днів тому

    Hello John, can you cover RegEx in java

  • @fernandosantiagovillegas6556
    @fernandosantiagovillegas6556 27 днів тому

    The first feature is the same or similar as python, so i think knowing how underscore works in java would help for understanding how it works un java. The string template also seems similar as the fstrings in python,

  • @SebBrosig
    @SebBrosig 9 днів тому

    Wow: all that convenience, almost like Perl!

  • @amitn10
    @amitn10 18 днів тому

    Please make a video about radix sort🙏🙏

  • @lakrinmex8132
    @lakrinmex8132 4 дні тому

    I didn't know about triple quote making it multiline string. I just tried and it worked in the java version I currently use.
    Unrealted: Why doesn't my intellij(community edition) suggest whole lines like yours does?
    like when you typed Cat myCat it showed "= new MyCat(); tab to continue"

  • @Toni2Go
    @Toni2Go Місяць тому

    Please do a vid about Structured Concurrency

  • @tigerstyping
    @tigerstyping 28 днів тому

    Great video, but I'd make sure to caution against using template strings for HTML! If you're processing user input, you should always sanitize the values before putting them in your HTML, preferably using a trusted library.

  • @delsix1222
    @delsix1222 29 днів тому

    what's the reason for using String.format() now that string template exists?

  • @ZachariBarnes
    @ZachariBarnes Місяць тому +11

    Grats on the sponsor!

  • @beepbeeblebrox3972
    @beepbeeblebrox3972 Місяць тому

    youre back!

  • @ChemicalVapors
    @ChemicalVapors 7 годин тому

    The quick fix called it "STR Processor". Are there other processors? What can we do with them?

  • @fifofuko1864
    @fifofuko1864 Місяць тому

    Maybe you might want to use unnamed references for constructor functions? Idk if this has any use.

  • @oladipupoibrahim2128
    @oladipupoibrahim2128 Місяць тому

    Wow I love this 😅

  • @imakhlaqXD
    @imakhlaqXD 25 днів тому +1

    Java seriously need to work on its syntax make it someting like Kotline. And remove those legacy stuff and old stuff. We really need a java version with breaking changes and whole rework.

  • @max96169
    @max96169 24 дні тому

    Cool, just like in dart!

  • @akumayin3350
    @akumayin3350 27 днів тому

    most unecessary feature : unnamed variables, most useful and cool feature : String template

  • @DekelGilboa-pv2je
    @DekelGilboa-pv2je Місяць тому

    The string template option is already existed in 21 preview

  • @LucaCattaneo-xz5mu
    @LucaCattaneo-xz5mu Місяць тому

    hey John! i know this might be a strange request but i was wondering, could you please do a tutorial on RMI java server and RMI java client? i know, it's an outdated function but i went throw many tutorial and forum to find good explained code, but none of them was accurate, expetially when your code create thousand of error even in the compiling phase. if you decide to do it, could you please also cover all the commn errors and mistakes that could generate? thank you.

  • @frederik_hd
    @frederik_hd Місяць тому

    unnamed variables as well as multi file compiling + executing (although I've never needed something like that and never will) i like a lot. but I don't like string templating with STR. at the beginning of the strings maybe I would like it if you can leave out the STR.

    • @adiveler
      @adiveler Місяць тому +1

      It still better than:
      "My name is " + name + "and my age is " + age;
      And than:
      "My name is %s and my age is %d", name, age;
      Also, other languages do something similar too, in C# you need to put $ before the quotes, and in Python, f.

    • @CodingWithJohn
      @CodingWithJohn  Місяць тому +1

      I assume the reasoning behind needing STR is backwards compatibility. If some existing string happens to use \{} in the string literal it would break with this change.

  • @user-zj6xe6ov8z
    @user-zj6xe6ov8z Місяць тому

    It took Java 22 major versions to implement Python3.6 f-string style format. Wow, that's so cool 😏

  • @guilhermesoares7857
    @guilhermesoares7857 23 дні тому +1

    Not to kill the hype but the string template is on second preview and it is now unplanned for jdk 23.

  • @erfanakhavanrad6597
    @erfanakhavanrad6597 25 днів тому

    I'm really really happy that you are not done with UA-cam! Keep going John.❤

  • @codingaintfun9736
    @codingaintfun9736 Місяць тому +1

    Your videos are the best! They are the only videos that help me fully understand object oriented programming! Please make more of the videos with those simple examples! Age: 14 😃😃😃

  • @balogunoluwatobijohn154
    @balogunoluwatobijohn154 25 днів тому

    Please can you do us the favour of doing a tutorial on random access file. Thank you

  • @imluctor5997
    @imluctor5997 28 днів тому

    FINNELY STR IS HERE NICE