WEBVTT

00:00.050 --> 00:00.620
Hi everyone.

00:00.620 --> 00:01.340
Welcome back.

00:01.340 --> 00:06.980
In this lecture I'm going to give you all an introduction to modern Java, which includes an overview

00:06.980 --> 00:10.940
of all the new features in Java and the release cycle, and more.

00:10.970 --> 00:14.420
A quick call out here is that this is going to be a theory lecture.

00:14.420 --> 00:20.450
So if you already know about modern Java and the latest release model, then you are welcome to skip

00:20.450 --> 00:22.610
this lecture and move on to the next lecture.

00:22.610 --> 00:27.020
First and foremost, I would like to talk about what does Java primarily mean?

00:27.020 --> 00:33.590
Any time someone refers to Java, they are referring to Java as a programming language or Java as a

00:33.590 --> 00:40.310
platform, which is the JDK, which includes the gray and the virtual machine, which primarily executes

00:40.310 --> 00:41.510
the bytecode for us.

00:41.540 --> 00:47.510
The term modern Java is coined from the fact that it continues to evolve and incorporate a lot of new

00:47.510 --> 00:53.210
features in the recent years, I would like to highlight some of the major shifts that happened with

00:53.210 --> 00:54.410
Java in this slide.

00:54.410 --> 01:00.500
Some of the notable features are the introduction of functional programming in Java eight, which includes

01:00.500 --> 01:07.270
lambdas, streams compatible features, and many other features that are close to functional programming.

01:07.270 --> 01:13.030
The next one is the release of the Java modules, which is Java nine, which is also called the Java

01:13.030 --> 01:14.560
Platform Module System.

01:14.560 --> 01:20.440
In this release, the Java runtime libraries that is part of Java nine are modularized into separate

01:20.440 --> 01:21.070
modules.

01:21.070 --> 01:27.310
Prior to this, until Java nine, it used to be just the RT dot jar file, which is a runtime dot jar

01:27.310 --> 01:33.490
file, which is kind of a monolith which holds everything in a single Jar file, which is basically

01:33.490 --> 01:35.440
a big platform change.

01:35.470 --> 01:40.000
Number three is the six month release cycle from Java ten onwards.

01:40.000 --> 01:45.070
This means new features in Java are released every six months.

01:45.070 --> 01:52.390
Java as a language is constantly evolving and bringing in new features to continuously excite the developers.

01:52.390 --> 01:57.250
So in this slide, I would like to highlight and call out some of the features that we will be exploring

01:57.250 --> 01:58.060
in this course.

01:58.060 --> 02:03.520
The first part of the course, we will look at all the Java eight features in action, which includes

02:03.550 --> 02:08.680
lambdas, streams, optionals, new DateTime APIs, and more.

02:08.710 --> 02:13.300
And in the second part of the course, we will look at the features that got introduced from Java nine

02:13.300 --> 02:13.900
and beyond.

02:13.930 --> 02:16.660
Number one is the Java Platform module system.

02:16.660 --> 02:24.010
And then we have local variable type inference record types, enhanced switch text blocks, seal classes,

02:24.010 --> 02:25.120
pattern matching.

02:25.120 --> 02:29.530
And there is a feature that got introduced called virtual threads, which is a big change when it comes

02:29.530 --> 02:30.550
to multithreading.

02:30.580 --> 02:36.370
So starting from Java nine and beyond, it was not like a major release as like Java eight, but they

02:36.370 --> 02:40.450
continuously released features in each and every new Java release.

02:40.450 --> 02:46.060
But if you add them up and look at it now, there are a lot of new features that are released to improve

02:46.060 --> 02:48.610
the overall developer experience.

02:48.640 --> 02:52.990
One thing I would like to call out before we move on, visual threads is a vast topic, and I won't

02:52.990 --> 02:54.790
be covering virtual threads in this course.

02:54.790 --> 02:59.800
I have a course released on this topic if you'd like to explore and learn about virtual threads.

02:59.830 --> 03:01.270
Please do check my profile.

03:01.870 --> 03:07.500
So the goal of this course is to provide you all a pragmatic experience on using these features in your

03:07.500 --> 03:08.490
day to day coding?

03:08.490 --> 03:13.260
So if you are a Java developer who would like to learn about all these features and the new features

03:13.260 --> 03:16.920
that is going to be released in the future, then this is the right course for you.

03:16.920 --> 03:21.060
I would like to talk a little bit on the release model before I wrap up this lecture.

03:21.090 --> 03:26.280
Java is an open source language and it's managed under the open JDK project.

03:26.310 --> 03:31.110
Java seven was the first version that was released under the Open source license.

03:31.140 --> 03:35.520
Open JDK is maintained by Oracle, Red hat and the community.

03:35.550 --> 03:37.890
There are different open JDK providers.

03:37.890 --> 03:41.940
It might be confusing on which open JDK provider you need to choose from.

03:41.940 --> 03:44.850
Some of the examples that I'm going to show you is Oracle.

03:44.850 --> 03:47.430
We have Eclipse or Optimum called tamarin.

03:47.430 --> 03:49.590
Amazon has its own thing.

03:49.920 --> 03:51.270
Zul has its own thing.

03:51.300 --> 03:54.240
IBM, Microsoft, RedHat and SAP.

03:54.330 --> 03:57.090
They all have their own version of open JDK.

03:57.090 --> 04:01.230
And all of these vendors have this concept of long term support releases.

04:01.230 --> 04:06.870
The reason being, the long term support releases have a wide and extended support time frame compared

04:06.870 --> 04:07.680
to the other ones.

04:07.710 --> 04:13.830
Applications primarily run on these long term release or long term support releases, even though new

04:13.830 --> 04:15.780
version is released every six months.

04:15.810 --> 04:20.670
What I have seen from an organization perspective, they normally move from one Java version to other

04:20.670 --> 04:21.690
Java version.

04:21.720 --> 04:27.900
If there is a new long term support version is released, let's quickly take a look at the release model

04:27.900 --> 04:30.060
and where to find more information from it.

04:30.060 --> 04:32.550
So I'm going to use ChatGPT for this purpose.

04:32.550 --> 04:37.050
For those of you who are hearing about ChatGPT for the very first time, you can think of this like

04:37.080 --> 04:39.750
a super smart robot that can talk to you.

04:39.780 --> 04:43.170
It understands the questions and it can answer you those questions.

04:43.170 --> 04:50.340
It is pretty much trained on vast amounts of data, of books, internet data, websites, and it understands

04:50.340 --> 04:52.740
your question and gives you the response accordingly.

04:52.740 --> 04:57.090
So now what I'm going to do, I'm going to ask what are the different Java releases.

04:57.090 --> 05:01.110
This is going to be showing you the information based on what it is trained on.

05:01.140 --> 05:01.350
Okay.

05:01.380 --> 05:04.350
So it is going to give you starting from JDK one.

05:04.350 --> 05:07.520
And then it goes all the way until JDK 21.

05:07.550 --> 05:12.110
I assume there was the latest long term support version at the time of recording this lecture.

05:12.140 --> 05:14.570
So this basically stopped at this point, right.

05:14.600 --> 05:17.270
What I'm going to do I'm going to enable the web search.

05:17.270 --> 05:19.670
And then I'm going to ask the same question.

05:19.670 --> 05:21.800
Let's go to the top and then ask for it.

05:21.830 --> 05:23.900
What are the different Java releases.

05:23.930 --> 05:29.390
Now what this is going to do is this is going to go to the web and search the results and consolidate

05:29.390 --> 05:35.120
the results and provide that information to you in a nice, readable and digestible format.

05:35.150 --> 05:35.420
Okay.

05:35.420 --> 05:36.350
So there you go.

05:36.380 --> 05:37.310
I got the response.

05:37.340 --> 05:42.560
This response is directly coming from Wikipedia because if I go to the bottom, it gives you the source

05:42.560 --> 05:44.330
where it got the information from.

05:44.360 --> 05:48.770
So if you click on the sources you can see where this information is being retrieved from.

05:48.800 --> 05:51.530
So it got this information from all these portals.

05:51.560 --> 05:51.980
Okay.

05:52.010 --> 05:55.730
And this is the long term support releases that I talked about.

05:55.730 --> 06:03.110
So we have Java 17 and Java 21 which is the latest long term release version at the time of recording

06:03.110 --> 06:03.740
this lecture.

06:03.740 --> 06:08.120
So if you want to learn about the history of this one, you can go to this one and then take a look

06:08.150 --> 06:09.950
at the Java version history.

06:09.980 --> 06:13.580
While that is loading, what I'm going to do is I'm going to call out one more thing.

06:13.580 --> 06:15.080
So the modern error.

06:15.080 --> 06:16.730
So this is the scope of this course.

06:16.760 --> 06:19.370
The modern era started from Java eight.

06:19.370 --> 06:23.810
And then it goes all the way until 21 at the time of recording this lecture.

06:23.840 --> 06:24.260
Okay.

06:24.290 --> 06:29.960
So as long as there is a new LTS release is available, I'll be updating this course to reflect the

06:29.960 --> 06:30.320
same.

06:30.350 --> 06:30.680
Okay.

06:30.710 --> 06:33.920
So now if you go and open up this one, if you go to the bottom.

06:33.920 --> 06:40.340
So they talk about I believe the blocks that are highlighted in yellow are the long term support releases.

06:40.340 --> 06:43.670
So you have Java eight to start with and then Java 11.

06:43.670 --> 06:47.000
And if you go a little bit down we have Java 21.

06:47.000 --> 06:51.710
So the LTS release as you can see it is scheduled for September 2025.

06:51.740 --> 06:57.200
So when this is released that's when I'll go ahead and update the course with all the new features.

06:57.230 --> 07:02.210
Okay, I hope you all have a pretty good idea about what is modern Java and the release model that's

07:02.210 --> 07:02.660
tied to it.

07:02.690 --> 07:08.150
In the next lecture, we will go ahead and install the latest long term version of the Java in our machine.

07:08.150 --> 07:09.590
This marks the end of this lecture.

07:09.590 --> 07:10.460
Thank you for watching.
