November+4th+2016+by+Tom+Zhou

=Agenda for Nov. 4th, 2016:=
 * ==Distinguish between:==
 * 1) ===Compilers and interpreters===
 * 2) ===Dynamic languages and static languages===
 * 3) ===JDK, JRE, and JVM===
 * 4) ===Java EE, Java SE, and Java ME===

= = =Compiler and interpreter=

Because high-level programming languages cannot be understood by computers, they need to be 'translated' to machine code prior to execution. There are two different approaches which aim to do the same thing.

For compiler, the entire source code will be translated to machine code at once, generating a file that is directly executable. User can decide whether to run the program immediately or leave it there. For interpreter, however, the source code is translated to machine code line by line only when executing, which means interpretation and execution occurs simultaneously.

= = =Dynamic languages and static languages=

This is clearly explained in 'Jave for Python programmers'. See this link: http://fpl.cs.depaul.edu/jriely/java4python/java4python.start.html#why-java-dynamic-versus-static-languages = = = = =JDK, JRE, and JVM =

JVM means Jave virtual machine, which is an environment specifically designed for Java programs to execute. As the saying goes: 'program once, run everywhere'. Majority of platforms nowadays support Java programs, and one of the reason is that the environment inside the virtual machine is independent of the platforms themselves.

In order to run a Java program, JVM is not enough. JRE, Java runtime environment, contains JVM and some essential built-in (core) classes and plug-ins that help to construct a environment suitable for Java programs. As long as the correct version of JRE is installed in the corresponding platform, Java programs can be executed with no barriers.

JDK, an abbreviation which stands for Java development kit, is a package which contains tools that are necessary for Java developers. Generally, it composed of JRE, Java compiler, debugger and many other useful tools. For those who are writing Java programs, JDK is vital. It can be installed as IDE-specified version, or as an independent package.

=Java EE, Java SE, and Java ME =

They are three different categories of JDK. EE stands for enterprise version, and it contains the most tools and resources, which are helpful for systematic development. SE is the standard edition, which is the version that we normally use, on a common desktop platform. ME means micro edition. It's designed for mobile development, such as on Android devices.