Compiled vs Interpreted Languages

Let us quickly look into compiled and interpreted languages and also where Java fits. 

 

High level language vs. Machine Language

Humans prefer to use high level languages like Java, C, C++ etc. that form an abstraction over the platform/operating system specific code and are closer to their speaking language like English. 

Compilers and interpreters are software that can convert a high level language like Java, C, C++ to a low level platform specific machine language before executing them.

 

Compiled vs. Interpreted Languages

In the case of compiled languages, the original source code is read over compile time, checked for syntax and converted to a platform specific binary executable. This executable is then executed again and again in its target platform.  There will be a different executable for every platform combinations like Windows 64 bit, Windows 32 bit, Linux, Mac etc.

In the case of interpreted languages, source program is translated into platform specific code and executed line by line, directly at the target machine.  Here, source program is directly executed on the target platform by an interpreter; so the same executable is shipped to every platform, and hence is portable. There will be only one version of the executable for every platform.

Examples of compiled languages include C++ and Fortran, and examples for interpreted languages include  PHP and perl. Where does Java fit in? We will see it in some time.

 

Pros for compiled languages:

  1. Speed – Since the source code is already converted into native platform specific code, the code can be executed directly without anymore translation.

  2. Type checking – Since compilation work in phases and has access to whole code and types declared, it can do syntax checks and type checking, and this avoiding any possible runtime errors due to type mismatch. If you have a variable of type int, and if you assign it any other type and then if you use an int operation, your code might throw a runtime exception. This is avoided by type checking of the compiler.

 

Pros for interpreted languages

  1. Portability – Since the source code itself or a platform independent executable is shipped to the target machine, the executable is platform independent and hence it is portable across platforms. However, note that there should be a platform specific interpreter installed in the target machine, that can convert this platform independent executable to that particular platform specific machine code and execute it.

 

Compiled Interpreted Languages

In Java, source code is compiled into a intermediate platform independent byte code, and this byte code (.class file) is then interpreted by Java's interpreter called Java Virtual Machine. 

Python is another compiled and interpreted language. The compiler output an intermediate bytecode (Python's .pyc files), which is then executed by a bytecode interpreter (Python virtual machine).

 

Comments

to overcome the disadvantages java is compiled then interpreted 

Was it useful?

For being compiled and interpreted, Java gain the reputation of being slow at runtime

Was it useful?

Things have chnaged a lot with JIT compilation. Please refer to

https://javajee.com/introduction-to-just-in-time-compilation-and-hotspot-jvm

 

Was it useful?

Quick Notes Finder Tags

Activities (1) advanced java (1) agile (3) App Servers (6) archived notes (2) Arrays (1) Best Practices (12) Best Practices (Design) (3) Best Practices (Java) (7) Best Practices (Java EE) (1) BigData (3) Chars & Encodings (6) coding problems (2) Collections (15) contests (3) Core Java (All) (55) course plan (2) Database (12) Design patterns (8) dev tools (3) downloads (2) eclipse (9) Essentials (1) examples (14) Exception (1) Exceptions (4) Exercise (1) exercises (6) Getting Started (18) Groovy (2) hadoop (4) hibernate (77) hibernate interview questions (6) History (1) Hot book (5) http monitoring (2) Inheritance (4) intellij (1) java 8 notes (4) Java 9 (1) Java Concepts (7) Java Core (9) java ee exercises (1) java ee interview questions (2) Java Elements (16) Java Environment (1) Java Features (4) java interview points (4) java interview questions (4) javajee initiatives (1) javajee thoughts (3) Java Performance (6) Java Programmer 1 (11) Java Programmer 2 (7) Javascript Frameworks (1) Java SE Professional (1) JPA 1 - Module (6) JPA 1 - Modules (1) JSP (1) Legacy Java (1) linked list (3) maven (1) Multithreading (16) NFR (1) No SQL (1) Object Oriented (9) OCPJP (4) OCPWCD (1) OOAD (3) Operators (4) Overloading (2) Overriding (2) Overviews (1) policies (1) programming (1) Quartz Scheduler (1) Quizzes (17) RabbitMQ (1) references (2) restful web service (3) Searching (1) security (10) Servlets (8) Servlets and JSP (31) Site Usage Guidelines (1) Sorting (1) source code management (1) spring (4) spring boot (3) Spring Examples (1) Spring Features (1) spring jpa (1) Stack (1) Streams & IO (3) Strings (11) SW Developer Tools (2) testing (1) troubleshooting (1) user interface (1) vxml (8) web services (1) Web Technologies (1) Web Technology Books (1) youtube (1)