Online Java Compiler is a system program which “translates” a program in a certain algorithmic language to one in a language close to an artificial language which is, to some extent, equivalent to the initial one. Compilers are being written both on the autocode, and in high level languages. Besides, there are also special languages of compilers design – the so-called “compilers of compilers”.
A compiler of compilers (CC) is a system which allows a compiler generation; there is a variety of grammars at the system input, and ideally, there is a program at the output. The CC is often being referred to as the programming language where the source code is a description of a language’s compiler, and the object program in the language compiler itself. The CC source code is just a formality used to describe compilers containing lexical or syntax analyzers, code generators and other parts of the compiler produced. Usually, the syntactical translation mechanism is being used in the CCs. Besides, some of them are special languages of a high level which are convenient to describe algorithms used in the production of compilers.
The history of compilers
Initially, compilers appeared at the beginning of the 1950s. It is difficult today to figure out when the first compiler appeared since at that time there were lots of experiments and layouts carried out by different groups. Primarily, the purpose of creating compilers was to transform mathematical formulae into the machine code.
The year 1957 can be considered a birth year for the compilers theory when the first compiler of the Fortran language appeared, which was created by Backus and providing a good working object code. The compiler worked on IBM 7040, IBM 360 and DEC PDP-11. In 1980 a new version was developed for IBM 360 and IBM PC, which supported the FORTRAN 77 standard. A year later Watcom was founded which in 1988 presented the C compiler. It immediately gained popularity among programmers as it was generating codes faster than all the others.
Most compilers morph the program from a certain high level programming language onto a machine code which can be directly executed by the central processor. Normally this code should also be executed in the specific operation system environment since it uses the opportunities provided (system calls, function libraries). The architecture (a set of program means) for which a compilation is executed is called an object machine.
Some compilers (e.g. Java) morph the program not into a machine code but into a program in a certain low level language. Such a language (a bite-code) can also be considered programming since it gets interpreted by an artificial machine. It is, for instance, JVM for JAVA (Java artificial machine language) or the so-called “Java bite code” (after Java all intermediate low-level languages are being called bite codes). It is MSIL (Microsoft Intermediate Language) for .NET Framework programming languages (C#, Managed C++, Visual Basic .NET, etc.)
A bite code program is to be interpreted by an artificial machine or to be compiled into a machine code right before an executing a program. The latter is named a “Just-In-Time compilation” (JIT) like a similar compiler for Java. The MSIL code is being compiled by the JIT-compiler into the object machine code, and .NET Framework libraries are being compiled in advanced.
For each object machine (IBM, Apple, etc.) and each operation system or operation systems family working on the object machine the compiler design is necessary. There are the so-called “cross-compilers” which allow obtaining a code using one machine and one operation system, the code itself is supposed to be executed using some other object machine or other OS. Besides that, compilers may be optimized to be used by various processor types of one family (by using the specific instructions for these processors). For instance, a code compiled to work with i686 processors can use specific instructions such as MMX, SSE, SSE2.
There are programs which do the opposite task – a transformation of a program from a low-level language into a high-level one. This process is called decompiling, and the software is called decompilers. However, since a compilation is a loss process, you cannot restore the source code on C++. The bite-code programs are being decompiled more efficiently; for instance, there is a reliable decompiler for Flash.
A compiler’s logical structure
Lexical analysis. A lexical analyzer recognizes the language lexical tokens and changes them for the relative codes. Lexical tokens are elementary units included in the sentence structure such as key words, constants, names, etc. The correctness of a sentence structure on the stage of a lexical analysis is not being checked. A series of lexical tokens (linking codes to tables) equivalent to the initial text is a result.
A syntactical analyzer is necessary to figure out whether the sentences of a source program comply with the grammar rules of that language. The process of a syntactical analysis can be regarded as a construction of a grammar tree for the sentences broadcasted. The grammar can be used to either design or recognize sentences of a certain language. The design begins with an initial concept of a grammar axiom. When recognized with the aid of grammar rules there appears a sentence which is then being compared to an input line. Along with that, the substitution rules application to bring forward the regular symbol depends on the results of a comparison of the previous symbols to the relative symbols of an input line. The result of analyzing the initial sentence in terms of grammatical clichés is more conveniently depicted in the shape of a tree. Such trees are usually being called syntactical ones. READ (VALUE).
Semantic analysis. At this stage the type and kind of all identificators and other operands are being controlled.
Optimization. There is a transformation of a source program to an intermediate record form. Intermediate code optimization implies the derivation the general subclauses and the calculation of constant subclauses. Optimization phase is determined to lessen the redundancy of a program in terms of time and memory. Depending on the translator projection criterion the processing stage can be excluded from the program processing cycle.
Memory distribution. At this stage the specific user addresses are being obtained as variables generated by a compiler.
Object (assembler) code generator substitutes the code samples in an output language with the relative intermediate program codes. A code generator may not require templates, on the whole it can be executed in procedures.
Machine-dependent compilation. It depends on what registers are used. The performance of this procedure depends on the agreements accepted for the executed program part. For instance, the basic register is being derived to record the current activity in a stack. In specific compiler uses this stages can be either divided or combined.
Translator is a program transforming the source program into the equivalent object program. If the object language is an autocode or some machine language, then the translator is a compiler.
One major historical specification of a compiler is that it could execute composition as well (so that it included two parts – a translator and a compositor). The reason for this is that separate compilation and composition as stages of assembling appeared much later than compilers, and many popular compilers (GCC, for example) are still combined with their compositors. In relation to this, a term “translator” is sometimes used instead of “a compiler” as a synonym: either in the obsolete literature or when authors want to highlight its ability to transform a program into a machine code (and vice versa, a term “compiler” is used to highlight its ability to combine files).
Best Free Online Java Compiler:
COMPILEJAVA.NET – Online Java IDE (javac 1.8.0_66). Simple, fast and secure Online Java IDE / Compiler.
IDEONE.COM – Online Compiler and IDE >> C/C++, Java, PHP, Python, Perl and 40+ other compilers and interpreters.
JDOODLE.COM – Online Java Compiler – Online Java Editor – Java Code Online – Online Java Runner.
COMPILEONLINE.COM – Compile and Execute Programs Online| Online IDE. Compile and Execute Programs Online – You can compile and run, execute your source code related to Java, JSP, Cold Fusion, C, C++, Pascal, Fortran, PHP, Perl, Ruby and Python programs onnline using your browsers, iPhone, iPad or any other online device like smart TV using this virtual Linux / Unix Server.
ONLINECOMPILER.NET – In online compilers (.net) you can find and use online many compilers ( GCC, MINGW, GFORTRAN, JAVA, GPC, FREEBASIC) for the mainstream languages that exist, you can search THE LINUX MANUAL (DEV MAN) PAGES, the JAVA & WIN32 API’S. Also, i have gathered some material to get you started with programming.
REMOTEINTERVIEW.IO – Online Java Compiler, IDE and Online Java Editor to conduct real time interviews, compile and run java online for free without making any installation at Codepad. Online Programming Screening Tests | Online Coding Interview Tool | Remote Interview. Get FREE demo of Remoteinterview, the best virtual interview tool for conducting online coding tests & interviews with collection of software developer interview questions.