1 00:00:00,000 --> 00:00:03,000 (piano music) 2 00:00:03,000 --> 00:00:05,000 -: So let's solve this problem. 3 00:00:05,000 --> 00:00:07,000 So we are not able to run this code, right? 4 00:00:07,000 --> 00:00:07,000 This is not working. 5 00:00:07,000 --> 00:00:10,000 We want to get hello world on the screen. 6 00:00:10,000 --> 00:00:11,000 It was working with J Shell 7 00:00:11,000 --> 00:00:13,000 because JShell says you just a parse a statement, 8 00:00:13,000 --> 00:00:14,000 I will work. 9 00:00:14,000 --> 00:00:15,000 But then when you build an application, 10 00:00:15,000 --> 00:00:16,000 when you run the application, 11 00:00:16,000 --> 00:00:18,000 how exactly it works behind the scene. 12 00:00:18,000 --> 00:00:21,000 Once we understand that, we can write this code. 13 00:00:21,000 --> 00:00:23,000 So in your machine you will be having something 14 00:00:23,000 --> 00:00:25,000 called JVM. 15 00:00:26,000 --> 00:00:30,000 Now by default, when you say Java is platform independent is 16 00:00:30,000 --> 00:00:33,000 because of JVM, because in your machine you will be having 17 00:00:33,000 --> 00:00:35,000 JVM irrespective of which OS you use. 18 00:00:35,000 --> 00:00:38,000 It can be Windows, Linux based OS, or Mac 19 00:00:38,000 --> 00:00:40,000 or whatever famous OS we have. 20 00:00:40,000 --> 00:00:42,000 It will have JVM installed. 21 00:00:42,000 --> 00:00:45,000 And of course if you have JVM, you can run Java application 22 00:00:45,000 --> 00:00:48,000 and if you don't have JVM, you can't run Java application. 23 00:00:48,000 --> 00:00:51,000 Okay, so we got JVM here, right, now what JVM says, 24 00:00:51,000 --> 00:00:52,000 hey, I will work. 25 00:00:52,000 --> 00:00:56,000 But then this one question, when you say JVM will work, 26 00:00:56,000 --> 00:00:58,000 but JVM works on which environment? 27 00:00:58,000 --> 00:01:00,000 So underlying we have your OS. 28 00:01:00,000 --> 00:01:01,000 So this is your OSS 29 00:01:02,000 --> 00:01:06,000 and then your OS is working on a hardware, right? 30 00:01:06,000 --> 00:01:08,000 So you'll be having an hardware, it can be a laptop, 31 00:01:08,000 --> 00:01:10,000 it can be a desktop, it can be a phone, doesn't matter, 32 00:01:10,000 --> 00:01:12,000 you have an hardware, on top of that we have an OS. 33 00:01:12,000 --> 00:01:15,000 On top of that we have something called JVM. 34 00:01:15,000 --> 00:01:19,000 Now, JVM says, okay, my job is to execute a Java code, okay. 35 00:01:19,000 --> 00:01:22,000 So whatever java code you create, JVM will execute that. 36 00:01:22,000 --> 00:01:26,000 But then JVM will not accept the code directly. 37 00:01:26,000 --> 00:01:28,000 See what happens is Java goes in multiple steps in Java 38 00:01:28,000 --> 00:01:31,000 application, when you as a programmer, 39 00:01:31,000 --> 00:01:33,000 so let's say you are a programmer here 40 00:01:33,000 --> 00:01:34,000 and when you write a code, 41 00:01:34,000 --> 00:01:36,000 you will not directly run write a code which will 42 00:01:36,000 --> 00:01:38,000 run on JVM, okay? 43 00:01:38,000 --> 00:01:40,000 And we don't even do that, right? 44 00:01:40,000 --> 00:01:41,000 We don't even write a code which directly works on the 45 00:01:41,000 --> 00:01:44,000 hardware and we don't even write a code which works 46 00:01:44,000 --> 00:01:45,000 directly on OS. 47 00:01:45,000 --> 00:01:48,000 Java says if you want to make it work, you have 48 00:01:48,000 --> 00:01:50,000 to run your code on JVM, 49 00:01:50,000 --> 00:01:52,000 but then JVM will not understand what you are talking about. 50 00:01:52,000 --> 00:01:54,000 And one more, one more thing we have talked about, right? 51 00:01:54,000 --> 00:01:57,000 Java is platform independent. 52 00:01:57,000 --> 00:01:59,000 So what does platform independence means? 53 00:01:59,000 --> 00:02:01,000 It simply means that you can run your application 54 00:02:01,000 --> 00:02:03,000 on any machine. 55 00:02:03,000 --> 00:02:04,000 So when you write a Java code, 56 00:02:04,000 --> 00:02:06,000 it will run on any machine irrespective 57 00:02:06,000 --> 00:02:07,000 of the hardware or the OS. 58 00:02:07,000 --> 00:02:09,000 But the only thing it requires is 59 00:02:09,000 --> 00:02:11,000 that machine need to have JVM. 60 00:02:11,000 --> 00:02:13,000 So irrespective of which platform I'm talking about, 61 00:02:13,000 --> 00:02:16,000 if it has JVM, your application becomes 62 00:02:16,000 --> 00:02:17,000 platform independent. 63 00:02:17,000 --> 00:02:20,000 But JVM itself is platform dependent, okay? 64 00:02:20,000 --> 00:02:23,000 So example, you can't run JVM on iOS. 65 00:02:23,000 --> 00:02:27,000 So we can't say Java is platform independent when JVM itself 66 00:02:27,000 --> 00:02:29,000 is dependent. 67 00:02:29,000 --> 00:02:33,000 So yes, your application is independent, JVM is not. 68 00:02:33,000 --> 00:02:36,000 So JVM need to be built for a particular OS. 69 00:02:36,000 --> 00:02:37,000 And let's say if it is windows in my, 70 00:02:37,000 --> 00:02:39,000 so in my machine it is Mac, 71 00:02:39,000 --> 00:02:41,000 but let's say if it is Windows, 72 00:02:41,000 --> 00:02:43,000 we have JVM available on Windows. 73 00:02:43,000 --> 00:02:46,000 So your JVM says, Hey, I will run your code 74 00:02:46,000 --> 00:02:49,000 but you have to submit me, not the Java code, 75 00:02:49,000 --> 00:02:51,000 but something called a byte code. 76 00:02:51,000 --> 00:02:55,000 So you have to convert your code into a unreadable format 77 00:02:55,000 --> 00:02:57,000 for a normal human being. 78 00:02:57,000 --> 00:02:59,000 And this is called a byte code 79 00:03:00,000 --> 00:03:03,000 because JVM only understands byte code. 80 00:03:03,000 --> 00:03:05,000 But can you write byte code? 81 00:03:05,000 --> 00:03:06,000 Of course not. 82 00:03:06,000 --> 00:03:08,000 You only understand English type of languages, right? 83 00:03:08,000 --> 00:03:09,000 So whatever we have return the code, 84 00:03:09,000 --> 00:03:12,000 we have a return system dot out dot print, 85 00:03:12,000 --> 00:03:14,000 it's English type language, right? 86 00:03:14,000 --> 00:03:17,000 So what you create is a Java code. 87 00:03:17,000 --> 00:03:20,000 So this is your Java file or Java code, 88 00:03:20,000 --> 00:03:22,000 and then you have to convert this Java code. 89 00:03:22,000 --> 00:03:25,000 So this is Java code, which is more of readable. 90 00:03:25,000 --> 00:03:26,000 This is not something which you can read. 91 00:03:26,000 --> 00:03:29,000 So basically you have to convert this into a Java 92 00:03:29,000 --> 00:03:31,000 code or byte code. 93 00:03:31,000 --> 00:03:33,000 So for that we have something in between here, 94 00:03:33,000 --> 00:03:35,000 which is called a compiler. 95 00:03:35,000 --> 00:03:38,000 Now since this is a Java compiler, we can call it 96 00:03:38,000 --> 00:03:41,000 as Java C, which is Java compiler. 97 00:03:41,000 --> 00:03:44,000 So basically you will write this code. 98 00:03:44,000 --> 00:03:47,000 So this code will be getting compiled into a byte code 99 00:03:47,000 --> 00:03:51,000 and that byte code goes on the JVM, it'll run. 100 00:03:51,000 --> 00:03:52,000 Makes sense, right? 101 00:03:52,000 --> 00:03:54,000 So that means when you write something it will 102 00:03:54,000 --> 00:03:55,000 go into byte code 103 00:03:55,000 --> 00:03:57,000 and then byte code will run on JVM. 104 00:03:57,000 --> 00:04:00,000 Now the only thing is see your project can be a big project, 105 00:04:00,000 --> 00:04:01,000 right, here I'm writing only one file. 106 00:04:01,000 --> 00:04:02,000 It can be 10 lines of code. 107 00:04:02,000 --> 00:04:05,000 It can ,it can be 10 files, it can be a hundred files, 108 00:04:05,000 --> 00:04:06,000 it can be thousand files. 109 00:04:06,000 --> 00:04:10,000 Out of all these files, there will be only one file 110 00:04:10,000 --> 00:04:12,000 with JVM will execute, okay? 111 00:04:12,000 --> 00:04:14,000 JVM will start with the first file 112 00:04:14,000 --> 00:04:16,000 and then of course that file will depend upon 113 00:04:16,000 --> 00:04:18,000 other files and it will execute. 114 00:04:18,000 --> 00:04:22,000 So JVM says you need to tell me what that file is, okay? 115 00:04:22,000 --> 00:04:24,000 So if you, even if you have thousand files which you want 116 00:04:24,000 --> 00:04:27,000 to run in your project, you have to give the first file. 117 00:04:27,000 --> 00:04:30,000 So in this case, what you will do is you will specify, hey, 118 00:04:30,000 --> 00:04:32,000 that's my first file. 119 00:04:32,000 --> 00:04:34,000 So when you run the code, you will specify the first file 120 00:04:34,000 --> 00:04:37,000 and also that file need 121 00:04:37,000 --> 00:04:40,000 to have something called a main method, okay? 122 00:04:40,000 --> 00:04:41,000 So as I, as I mentioned before, right? 123 00:04:41,000 --> 00:04:45,000 We have print in the same way we have main, so your file, 124 00:04:45,000 --> 00:04:48,000 the first file need to have a main method. 125 00:04:48,000 --> 00:04:50,000 So when I say first file, it is not like you have 126 00:04:50,000 --> 00:04:53,000 to follow a sequence, create this file, then that, 127 00:04:53,000 --> 00:04:56,000 that file, out of all the files in your project, 128 00:04:56,000 --> 00:05:00,000 the execution will start from the first file which you 129 00:05:00,000 --> 00:05:01,000 specify, okay? 130 00:05:01,000 --> 00:05:05,000 And that file need to have mean, not just mean, 131 00:05:05,000 --> 00:05:08,000 it is looking for a specific signature. 132 00:05:08,000 --> 00:05:11,000 Okay, so it has a signature, it means the entire method 133 00:05:11,000 --> 00:05:13,000 signature, the method name, 134 00:05:13,000 --> 00:05:16,000 what are the values you are parsing and all this stuff. 135 00:05:16,000 --> 00:05:18,000 And of course all this term you will, you will get used 136 00:05:18,000 --> 00:05:19,000 to in some of these sessions. 137 00:05:19,000 --> 00:05:20,000 Don't worry. 138 00:05:20,000 --> 00:05:21,000 So first you have to make sure 139 00:05:21,000 --> 00:05:25,000 that you provide a mean and mean has a particular signature. 140 00:05:25,000 --> 00:05:27,000 Again, what each word means, that we'll see later. 141 00:05:27,000 --> 00:05:32,000 So the signature is this, it is public static wide mean. 142 00:05:32,000 --> 00:05:35,000 So you have to remember, always parse this method. 143 00:05:35,000 --> 00:05:36,000 I know there are four words, 144 00:05:36,000 --> 00:05:38,000 but then this is the thing you have to remember 145 00:05:38,000 --> 00:05:42,000 and mean will accept some arguments, some parameters. 146 00:05:42,000 --> 00:05:45,000 So you have to parse string A. 147 00:05:45,000 --> 00:05:47,000 Now again, we'll discuss this, what this string is, 148 00:05:47,000 --> 00:05:49,000 what is public static void. 149 00:05:49,000 --> 00:05:50,000 We'll discuss that in some time, 150 00:05:50,000 --> 00:05:52,000 but mean is looking for the signature. 151 00:05:52,000 --> 00:05:55,000 So your code will not work without the signature. 152 00:05:55,000 --> 00:05:57,000 So remember this, so that makes sense. 153 00:05:57,000 --> 00:05:58,000 What are the steps you have to follow? 154 00:05:58,000 --> 00:05:59,000 So the first step is 155 00:05:59,000 --> 00:06:03,000 as a programmer you will be creating a Java file, okay? 156 00:06:03,000 --> 00:06:05,000 Now once your java file is ready, you will put 157 00:06:05,000 --> 00:06:08,000 that into compiler, then compiler will compile it. 158 00:06:08,000 --> 00:06:12,000 Then that code becomes a byte file, a byte code basically. 159 00:06:12,000 --> 00:06:15,000 Then you will take this byte code, you will run that on JVM. 160 00:06:15,000 --> 00:06:18,000 Now, once you, once your JVM says, okay, 161 00:06:18,000 --> 00:06:19,000 I'm running the code, JVM will look 162 00:06:19,000 --> 00:06:21,000 for this particular syntax. 163 00:06:21,000 --> 00:06:23,000 It should be there in your code 164 00:06:23,000 --> 00:06:25,000 and then you will get the output, right? 165 00:06:25,000 --> 00:06:26,000 Simple stuff, okay. 166 00:06:26,000 --> 00:06:27,000 Now there's a space in 167 00:06:27,000 --> 00:06:29,000 between here if you can see, this is a space I have left 168 00:06:29,000 --> 00:06:31,000 that space intentionally 169 00:06:31,000 --> 00:06:32,000 because we'll add certain things there. 170 00:06:32,000 --> 00:06:35,000 So at this point, just remember there's a space here, 171 00:06:35,000 --> 00:06:36,000 there's a box meaning here. 172 00:06:36,000 --> 00:06:38,000 We'll add that box in some time. 173 00:06:38,000 --> 00:06:41,000 Now once we have understood all those things, it's time 174 00:06:41,000 --> 00:06:43,000 to expand this code. 175 00:06:43,000 --> 00:06:44,000 Now if you remember, we have 176 00:06:44,000 --> 00:06:46,000 to write everything in a main, right? 177 00:06:46,000 --> 00:06:50,000 So this section should be a part of, 178 00:06:50,000 --> 00:06:52,000 remember what J will ask you for, 179 00:06:52,000 --> 00:06:54,000 J will ask you for mean. 180 00:06:54,000 --> 00:06:56,000 So we have to put that into mean. 181 00:06:56,000 --> 00:06:59,000 So why the syntax for mean, it's very simple, it is public, 182 00:06:59,000 --> 00:07:00,000 static wide mean. 183 00:07:00,000 --> 00:07:03,000 We have seen that, of course these words will define 184 00:07:03,000 --> 00:07:04,000 that words in the upcoming session. 185 00:07:04,000 --> 00:07:06,000 And once you understand all these terms, 186 00:07:06,000 --> 00:07:08,000 you are java programmer, right? 187 00:07:08,000 --> 00:07:11,000 And then this will say string A and that's it. 188 00:07:11,000 --> 00:07:13,000 This is a syntax you have to follow. 189 00:07:13,000 --> 00:07:14,000 Now there's one more thing. 190 00:07:14,000 --> 00:07:17,000 In Java, now Java is object oriented. 191 00:07:17,000 --> 00:07:19,000 Now what is object oriented means we'll discuss that later. 192 00:07:19,000 --> 00:07:20,000 But in simple terms, 193 00:07:20,000 --> 00:07:24,000 object oriented means everything should be an object. 194 00:07:24,000 --> 00:07:26,000 And to create object we need to class, okay? 195 00:07:26,000 --> 00:07:27,000 Again, we'll discuss all those 196 00:07:27,000 --> 00:07:29,000 things in the upcoming session. 197 00:07:29,000 --> 00:07:31,000 But a class is missing here. 198 00:07:31,000 --> 00:07:34,000 In fact, if you compile this code, this is what your 199 00:07:34,000 --> 00:07:35,000 Java say will tell you. 200 00:07:35,000 --> 00:07:38,000 Java say says, Hey, where is your class? 201 00:07:38,000 --> 00:07:39,000 Your class is missing. 202 00:07:39,000 --> 00:07:40,000 Okay, let's do that. 203 00:07:40,000 --> 00:07:43,000 So let's put that a class here and we'll give a class name. 204 00:07:43,000 --> 00:07:45,000 At this point we'll keep the class name and file them same. 205 00:07:45,000 --> 00:07:48,000 And we'll say, open bracket and close, 206 00:07:48,000 --> 00:07:50,000 and will give an indentation. 207 00:07:50,000 --> 00:07:51,000 So basically we have to follow this 208 00:07:51,000 --> 00:07:53,000 thing, always give a tab. 209 00:07:53,000 --> 00:07:55,000 So every time you open a (indiscernible), 210 00:07:55,000 --> 00:07:56,000 give a tab, it looks good, okay? 211 00:07:56,000 --> 00:07:57,000 There's no compulsion, it looks good 212 00:07:57,000 --> 00:08:01,000 and we love to build stuff which also runs and looks good. 213 00:08:01,000 --> 00:08:02,000 Okay, this looks good, right? 214 00:08:02,000 --> 00:08:04,000 Ignore this X and these suggestions, 215 00:08:04,000 --> 00:08:06,000 these are the suggestions coming from your VS code. 216 00:08:06,000 --> 00:08:07,000 But you know that part in fact is it 217 00:08:07,000 --> 00:08:09,000 because happening of this extension, 218 00:08:09,000 --> 00:08:10,000 let me just remove this. 219 00:08:10,000 --> 00:08:11,000 So let's not use that 220 00:08:11,000 --> 00:08:13,000 extension because it will give you a suggestion. 221 00:08:13,000 --> 00:08:15,000 It's good for development but not for teaching purpose. 222 00:08:15,000 --> 00:08:16,000 So it adds extra text there. 223 00:08:16,000 --> 00:08:17,000 Okay, cool. 224 00:08:17,000 --> 00:08:18,000 So this is how you write your code, okay? 225 00:08:18,000 --> 00:08:21,000 We got a class, a file name, 226 00:08:21,000 --> 00:08:23,000 and then public static void mean, in bracket 227 00:08:23,000 --> 00:08:24,000 you have to mention the parameters. 228 00:08:24,000 --> 00:08:26,000 Again, we'll discuss that later. 229 00:08:26,000 --> 00:08:27,000 And the only thing, 230 00:08:27,000 --> 00:08:30,000 important statement here is system.out.printHelloWorld. 231 00:08:31,000 --> 00:08:33,000 Okay, now let's see if this works. 232 00:08:33,000 --> 00:08:35,000 Let's create the screen and compile. 233 00:08:35,000 --> 00:08:37,000 You can see there's no error. 234 00:08:37,000 --> 00:08:38,000 But the moment I compiled, 235 00:08:38,000 --> 00:08:39,000 if you can see on the left hand side, 236 00:08:39,000 --> 00:08:41,000 we got this extra file. 237 00:08:41,000 --> 00:08:42,000 We got hello.class. 238 00:08:42,000 --> 00:08:44,000 Now this is your byte code. 239 00:08:44,000 --> 00:08:48,000 Remember we have talked about a byte code here. 240 00:08:48,000 --> 00:08:50,000 This is a file which got created automatically. 241 00:08:50,000 --> 00:08:52,000 So when you create a Java file, when you send it 242 00:08:52,000 --> 00:08:55,000 for the compilation, it will create the byte code, 243 00:08:55,000 --> 00:09:00,000 and the extension for the byte code is dot class file. 244 00:09:00,000 --> 00:09:03,000 The extension for java code is dot java file. 245 00:09:03,000 --> 00:09:05,000 And now it is compiled done. 246 00:09:05,000 --> 00:09:07,000 Right, now it's time to run your code. 247 00:09:07,000 --> 00:09:10,000 So remember when I mentioned to run, you have to use JVM, 248 00:09:10,000 --> 00:09:12,000 and for that you have to use a command, which is Java, 249 00:09:12,000 --> 00:09:15,000 and you have to mention the class name, not a file name 250 00:09:15,000 --> 00:09:17,000 this time, just a class name. 251 00:09:17,000 --> 00:09:18,000 The class name is hello. 252 00:09:18,000 --> 00:09:19,000 And say enter. 253 00:09:19,000 --> 00:09:21,000 You can see we got hello world. 254 00:09:21,000 --> 00:09:22,000 So yeah, that's how it works. 255 00:09:22,000 --> 00:09:25,000 So simple stuff, that's how we can able to complete our code 256 00:09:25,000 --> 00:09:27,000 and we are able to run this code. 257 00:09:27,000 --> 00:09:30,000 Now, if you have done until now, give round of applause 258 00:09:30,000 --> 00:09:33,000 or a pat on your back because you deserve it. 259 00:09:33,000 --> 00:09:34,000 So this makes sense, right? 260 00:09:34,000 --> 00:09:35,000 So there's a gap here, right? 261 00:09:35,000 --> 00:09:36,000 So let's remove this gap. 262 00:09:36,000 --> 00:09:39,000 So what we have here, so basically, you know when you, 263 00:09:39,000 --> 00:09:41,000 when you run your code, basically think about your cooking 264 00:09:41,000 --> 00:09:42,000 something in a kitchen, right? 265 00:09:42,000 --> 00:09:43,000 So where do we cook? 266 00:09:43,000 --> 00:09:44,000 Of course in a kitchen, right? 267 00:09:44,000 --> 00:09:46,000 Why not in a hall or in a bedroom? 268 00:09:46,000 --> 00:09:48,000 It's because in the kitchen to cook something, 269 00:09:48,000 --> 00:09:50,000 you need extra things, right? 270 00:09:50,000 --> 00:09:51,000 Example, if you make a bouillon, 271 00:09:51,000 --> 00:09:52,000 I don't know if you know the recipe, 272 00:09:52,000 --> 00:09:53,000 I don't know the recipe, 273 00:09:53,000 --> 00:09:54,000 but if you make a bouillon, 274 00:09:54,000 --> 00:09:56,000 you have to add extra ingredients. 275 00:09:56,000 --> 00:09:58,000 Now those things are kept in the shelf. 276 00:09:58,000 --> 00:10:00,000 So in the kitchen you'll not just have 277 00:10:00,000 --> 00:10:03,000 that resources which are there in the platform, 278 00:10:03,000 --> 00:10:05,000 but also you'll be having extra stuff. 279 00:10:05,000 --> 00:10:08,000 Now, the same way, if you want to run your Java application, 280 00:10:08,000 --> 00:10:11,000 you need extra libraries and you also need a runtime. 281 00:10:11,000 --> 00:10:12,000 The runtime is something which, 282 00:10:12,000 --> 00:10:14,000 where you can run things, right, 283 00:10:14,000 --> 00:10:16,000 now you can run something in a JVM. 284 00:10:16,000 --> 00:10:18,000 So that is part of run. 285 00:10:18,000 --> 00:10:20,000 But then what if you need some extra libraries? 286 00:10:20,000 --> 00:10:22,000 You have to, you need, you need a environment as well. 287 00:10:22,000 --> 00:10:26,000 So we have one more layer here, which is about your OS, 288 00:10:26,000 --> 00:10:29,000 which is called JRE. 289 00:10:29,000 --> 00:10:32,000 So when you want to run something, you use JRE to run it. 290 00:10:32,000 --> 00:10:36,000 Now JRE stands for Java Runtime Environment. 291 00:10:36,000 --> 00:10:38,000 And what is your JVMJ? 292 00:10:38,000 --> 00:10:42,000 JVM stands for Java Virtual Machine. 293 00:10:42,000 --> 00:10:44,000 Okay, so basically we have two things. 294 00:10:44,000 --> 00:10:47,000 We have a JVM and we have a JRE. 295 00:10:47,000 --> 00:10:49,000 Now JVM is a part of JRE. 296 00:10:49,000 --> 00:10:51,000 Now what else you'll be having inside your JVM, 297 00:10:51,000 --> 00:10:53,000 you will be having some libraries. 298 00:10:53,000 --> 00:10:57,000 So JVM with libraries is a part of JRE. 299 00:10:57,000 --> 00:11:00,000 So whenever you run something, it runs inside the JRE 300 00:11:00,000 --> 00:11:04,000 and JVM is actually responsible to run it. 301 00:11:04,000 --> 00:11:06,000 Okay, and by default, when you, when you want 302 00:11:06,000 --> 00:11:08,000 to run your application on any platform, it need 303 00:11:08,000 --> 00:11:10,000 to have JRE, which will have JVM. 304 00:11:10,000 --> 00:11:13,000 Now not every machine will have Java C. 305 00:11:13,000 --> 00:11:15,000 Java C is only for development purpose, right? 306 00:11:15,000 --> 00:11:18,000 So we can imagine this in this section. 307 00:11:18,000 --> 00:11:22,000 So basically we have an outer box, which is your JDK, 308 00:11:22,000 --> 00:11:23,000 which is used by developers. 309 00:11:23,000 --> 00:11:27,000 Inside, which you'll be having something called JRE. 310 00:11:27,000 --> 00:11:29,000 And in this you'll be having JVM. 311 00:11:29,000 --> 00:11:31,000 So as a developer you'll be installing JDK. 312 00:11:31,000 --> 00:11:32,000 JDK will have JRE. 313 00:11:32,000 --> 00:11:34,000 JRE will have JVM. 314 00:11:34,000 --> 00:11:36,000 But to run something on any other machine, 315 00:11:36,000 --> 00:11:38,000 let's say if you have made the application, you want 316 00:11:38,000 --> 00:11:40,000 to run this on your friends machine. 317 00:11:40,000 --> 00:11:41,000 Your friends machine will only have JRE 318 00:11:41,000 --> 00:11:43,000 and JVM. 319 00:11:43,000 --> 00:11:45,000 JDK is not required. 320 00:11:45,000 --> 00:11:48,000 And that's why we say Java is vora, which is write once 321 00:11:48,000 --> 00:11:50,000 and run anywhere, right? 322 00:11:50,000 --> 00:11:52,000 So you just have write on your machine, 323 00:11:52,000 --> 00:11:55,000 you can run it on any other machine, provided you have JRE 324 00:11:55,000 --> 00:11:56,000 and JVM installed. 325 00:11:56,000 --> 00:11:58,000 So that's how your Java works behind the scene. 326 00:11:58,000 --> 00:11:59,000 I hope it makes sense now 327 00:11:59,000 --> 00:12:02,000 and we'll write some more code in the upcoming videos.