Note: You don't have to register for this course if you have already registered for my comprehensive Java course ~ Java In-Depth: Become a Complete Java Engineer!. The Java course includes all the content that is covered in this course. However, it is very likely that this course could be extended while the JVM related content in the Java course may not be any extended any further.
Update on May 20th, 2017: New coding exercise on Reflection has been added in Section 3 (Reflection). Quiz has also been added to Section 4.
To be a complete Java engineer, apart from having a strong background in Java & design patterns, it is also important to have a good understanding of the internal workings of JVM. Towards this end, this course is about helping you gain a solid understanding of how JVM works. Here is how the course is organized.
In section 1, we start off by discussing about why JVM (and Java) were created and then discuss JVM and it's architecture at a high-level. In the process, we will also take a look at how Just-in-time (JIT) compilation works.
Sections 2 - 4 delve into the real internals of JVM.
In section 2, we discuss the Lifetime of a Type, i.e., we look at what happens to a type since the time it is accessed for the very first time. class Loading & linking (Bytecode Verification) will be discussed in detail and everything will be demonstrated in code.
In section 3, we look at the reflection API.
In section 4, we look at the different memory areas (runtime data areas) that JVM deals with. Here, we will learn about things like method area, heap, method table, garbage collection, stacks and we will also look at some of the Java bytecode instructions too. In one of the demos, we will look at how we can tune the heap size and how it impacts garbage collection process. To learn about bytecode instructions, we will actually disassemble a .class file and we will inspect the bytecode instructions and learn about how they work.
The demo programs are available for download from the resources section of the corresponding lectures.
It is very likely that the course will also be updated to make it as comprehensive and as practical as possible.
A passionate software engineer and instructor, Dheeru has around 15 years of experience developing innovative software for start-ups in silicon valley and elsewhere. He is considered as one of the top instructors on Udemy and has reached out to thousands of students from over 100 countries. He holds a Ph.D. in Computer Science from University of Louisiana at Lafayette (USA). His expertise includes developing complex Web data integration & mining software with Java as the main programming language. Coming from the start-up world, he also has extensive end-to-end experience in developing Web applications using frameworks/tools such as Spring, Hibernate, Solr, MySql, etc. Dheeru is passionate about developing products that are easy-to-use, intelligent, and well-architected. Writing well-crafted code that follows the best design practices is of utmost importance to him. He brings the same level of passion and completeness to his teaching. Every concept is covered at a very in-depth level clearly explaining the motivation behind their introduction. He strongly believes in "learn by involving" teaching principle and thus his courses involve tons of live demos, an industry standard project, coding exercises that are auto-evaluated and several quizzes. Prior to his current gig at his start-up Semantic Square, Dheeru worked for around 5 years as a Principal Engineer for NimbleCommerce, an e-commerce start-up in Santa Clara, California. Before NimbleCommerce, he worked as a Research Scientist at Local Corporation, a local search company in Irvine, California. He also published and presented half-a-dozen research papers at top conferences and workshops such as International Conference on Data Mining (ICDM) and Geographic Information Retrieval (GIR). During his graduate-school days, as a teaching assistant for Search & Data Mining courses, he designed course assignments and often gave guest lectures on Web data mining.