If any one wants to know why main method is void so the short answer is because it does not return anything but if you want to know in depth about why main method in java returns void but in C/C++ it returns 0, then this is the reason behind it :- The C and C++ program which return int from main method are processes of operating system . The int value returned from the main in C and C++ is exit code or exit status. Exit Code 0 --> means successful termination Exit Code non-zero ---> indicates an error The parent process of any child process keeps waiting for the exit status of the child and after receiving that exit status of child it clears up the child process from the process table and free the resources allocated to it . That is why it becomes mandatory for C and C++ program to pass their exit status . However, the java program runs as a main thread in JVM. The java program is not even a process of operating system directly this is why main method of java is not designed to return an exit status. However, JVM is a process of Operating system and JVM can be terminated with a certain exit status with help of System.exit(int status).
Thankyou so much for this series. Why i am learning from you and not the big channels, because I see that experienced engineer in you,which even i look forward to be in the future. I believe, knowledge with experience is something really amazing. Currently preparing for my on-campus placements and this series is really helping. Just a question, if i buy your membership, are more JAVA videos available there? thanks.
I am working from rival for PayPal, which until now written core components in c++, with influx from folks from PayPal we are now moving to Microservices. Hence forced to learn java and spring.Hope this one will ramp me up. :(. Thanks for the content.
Nice lecture dude. One question: if JVM reads the code line by line and converts to machine code( which is a definition of an interpreter ), could you tell why is it called "Just in time compiler".
Good question buddy: Let me try to explain: Generally JVM convert the bytecode to machine code using Interpretor. But internally JVM also maintains the counter for each method, and once it identifies that's particular method is called very frequently, it passes that method to JIT(just in time compiler). JIT has capability to do certain optimization (like removing dead code etc ) and another capability is Reusing of frequently used method machine code (not need to interpret again and again). So it helps in increasing the performance of JVM a lot and hence name JIT :) Hope it clear or we can discuss more
If jre already has class libraries then what is meant by "jdk has programming language"? jdk has compiler and debugger and that is a valid point but not able to understand difference between class libraries in jre and programming language in jdk?
umm, Programming Language (Java), Refers to the syntax, semantics, and core libraries used to write Java applications. The JDK provides the tools to write (using the language), compile, and debug Java code.
Hi Srayansh, may be it is not a valid question but still let me ask it. If the jvm converts the bytecode to machine code and cpu will execute the machine code, then how JVM invokes/calls the main method at runtime? It should be CPU that calls the main method r8?
Hi Sumit, Machine code is in binary form 0 and 1. CPU do not understand high level language or bytecode. It understand sequence of instructions in binary form 0 and 1. So calling main method is not possible for CPU as all instructions it's in 0 and 1 only.
My doubt is machine code will execute finally to display the output then at runtime with the machine code level why we are talking about "JVM will invoke the main method "?
@@sumitbasu5146 sorry did not get it. Jvm is the one which invoke main method at Runtime and convert it to machine code (0 and 1) which CPU will execute directly.
@@sumitbasu5146 JVM interprets bytecode line by line and converts it to machine code for execution, thus JVM calls main method, converts it into machine code and passes to cpu for execution.
Hey Srayansh, Great video. Just a small query, does JRE contains bytecode of class libraries or will the java code contained in them will be converted to Byte code by java compiler ?
.java is platform dependent what i know. bytecode( .class file )is platform indpendent. Because byteocde only java is called platform independent laguage. please anyone confirm
If any one wants to know why main method is void so the short answer is because it does not return anything but if you want to know in depth about why main method in java returns void but in C/C++ it returns 0, then this is the reason behind it :- The C and C++ program which return int from main method are processes of operating system . The int value returned from the main in C and C++ is exit code or exit status.
Exit Code 0 --> means successful termination
Exit Code non-zero ---> indicates an error
The parent process of any child process keeps waiting for the exit status of the child and after receiving that exit status of child it clears up the child process from the process table and free the resources allocated to it . That is why it becomes mandatory for C and C++ program to pass their exit status . However, the java program runs as a main thread in JVM. The java program is not even a process of operating system directly this is why main method of java is not designed to return an exit status. However, JVM is a process of Operating system and JVM can be terminated with a certain exit status with help of System.exit(int status).
Thank you for sharing!
www.youtube.com/@thecoderstv22
Thanks a ton for sharing this.
are you brother of D E Shaw? (its pun)
Thankyou so much for this series. Why i am learning from you and not the big channels, because I see that experienced engineer in you,which even i look forward to be in the future. I believe, knowledge with experience is something really amazing. Currently preparing for my on-campus placements and this series is really helping. Just a question, if i buy your membership, are more JAVA videos available there? thanks.
hi Priyam, with just 159rs, the whole playlist will get open, till now uploaded 28 videos of in depth java, and more going to add soon.
Hi priyam can you suggest good TH-cam channel for operating system, dbms and web development.
I am working from rival for PayPal, which until now written core components in c++, with influx from folks from PayPal we are now moving to Microservices. Hence forced to learn java and spring.Hope this one will ramp me up. :(. Thanks for the content.
It will for sure buddy
undeerstood clearly.
Nice
excellent. great teaching
Please add exception handling
already there in the playlist
bro, pls put a specific videos about jar, war and ear files
ack
great
Nice lecture dude. One question: if JVM reads the code line by line and converts to machine code( which is a definition of an interpreter ), could you tell why is it called "Just in time compiler".
Good question buddy:
Let me try to explain:
Generally JVM convert the bytecode to machine code using Interpretor.
But internally JVM also maintains the counter for each method, and once it identifies that's particular method is called very frequently, it passes that method to JIT(just in time compiler).
JIT has capability to do certain optimization (like removing dead code etc ) and another capability is Reusing of frequently used method machine code (not need to interpret again and again).
So it helps in increasing the performance of JVM a lot and hence name JIT :)
Hope it clear or we can discuss more
@@ConceptandCoding its clear :-). Thank you
good question. we need more such
Hi Shreyansh, which ide are you using in this video? Can you recommend an IDE for Windows?
intellij is best
Hi Shrayansh, Which drawing tool you are using?
Started today, let's see how far I go.🤞
Happy Learning
Video 5 learning continues
If jre already has class libraries then what is meant by "jdk has programming language"? jdk has compiler and debugger and that is a valid point but not able to understand difference between class libraries in jre and programming language in jdk?
umm, Programming Language (Java), Refers to the syntax, semantics, and core libraries used to write Java applications. The JDK provides the tools to write (using the language), compile, and debug Java code.
can i have notes of these lecture for quick interview revision ?
i will try to add in description section
www.youtube.com/@thecoderstv22
For LLD WILL U ADD VIDEOS OF PAYMENTS APP AND FOODING APPS( ZOMATO SWIGGY DESIGN)
yes i will.
Hi Srayansh, may be it is not a valid question but still let me ask it.
If the jvm converts the bytecode to machine code and cpu will execute the machine code, then how JVM invokes/calls the main method at runtime? It should be CPU that calls the main method r8?
Hi Sumit, Machine code is in binary form 0 and 1.
CPU do not understand high level language or bytecode. It understand sequence of instructions in binary form 0 and 1. So calling main method is not possible for CPU as all instructions it's in 0 and 1 only.
My doubt is machine code will execute finally to display the output then at runtime with the machine code level why we are talking about "JVM will invoke the main method "?
@@sumitbasu5146 sorry did not get it.
Jvm is the one which invoke main method at Runtime and convert it to machine code (0 and 1) which CPU will execute directly.
Now I got it..Thank you so much 👍
@@sumitbasu5146 JVM interprets bytecode line by line and converts it to machine code for execution, thus JVM calls main method, converts it into machine code and passes to cpu for execution.
Hi Anish here. Done with this video
Hey Srayansh, Great video.
Just a small query, does JRE contains bytecode of class libraries or will the java code contained in them will be converted to Byte code by java compiler ?
Those libraries are already compiled and have .class files also. JVM does the linking and use them.
Understood , Thanks!
How to get the .class file from a .java file in eclipse
if my code doesnt use any java lib it would just need jvm to run right ?
Yup
.java is platform dependent what i know.
bytecode( .class file )is platform indpendent.
Because byteocde only java is called platform independent laguage. please anyone confirm
Hello Shrayansh,
I have one doubt...If I have written a program in Java and wants to run it in a mobile phone...does the phone require JVM or JRE ???
There are Java emulator software you need buddy, through which you can run Java code on phone
in JRE , jvm will be there. you need JRE only to run bytecode