java deep introduction

Upload: fa

Post on 06-Jul-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/17/2019 Java Deep Introduction

    1/20

    Java (programming language) From Wikipedia, the free encyclopedia"Java language" redirects here. For the natural language from the Indonesian island of Java,see Javanese language. 

    This article is about a programming language. For the software package downloaded from java.com,see Java SE. 

    Not to be confused with JavaScript. 

    Java

    Paradigm Multi-paradigm: Object-oriented  (class-

     based ),structured , imperative,generic, reflective, concurrent 

    Designed by   James Gosling  

    Developer  Sun Microsystems (now acquired by Oracle Corporation) 

    First appeared May 23, 1995; 20 years ago[1] 

    Typing discipline   Static, strong, safe,nominative, manifest 

    License  GNU General Public License,Java Community Process 

    Filename extensions   .java , .class, .jar  

    https://en.wikipedia.org/wiki/Javanese_languagehttps://en.wikipedia.org/wiki/Javanese_languagehttps://en.wikipedia.org/wiki/Javanese_languagehttps://en.wikipedia.org/wiki/Java_SEhttps://en.wikipedia.org/wiki/Java_SEhttps://en.wikipedia.org/wiki/Java_SEhttps://en.wikipedia.org/wiki/JavaScripthttps://en.wikipedia.org/wiki/JavaScripthttps://en.wikipedia.org/wiki/JavaScripthttps://en.wikipedia.org/wiki/Programming_paradigmhttps://en.wikipedia.org/wiki/Programming_paradigm#Multi-paradigmhttps://en.wikipedia.org/wiki/Programming_paradigm#Multi-paradigmhttps://en.wikipedia.org/wiki/Object-orientedhttps://en.wikipedia.org/wiki/Object-orientedhttps://en.wikipedia.org/wiki/Object-orientedhttps://en.wikipedia.org/wiki/Class-based_programminghttps://en.wikipedia.org/wiki/Class-based_programminghttps://en.wikipedia.org/wiki/Class-based_programminghttps://en.wikipedia.org/wiki/Class-based_programminghttps://en.wikipedia.org/wiki/Structured_programminghttps://en.wikipedia.org/wiki/Structured_programminghttps://en.wikipedia.org/wiki/Structured_programminghttps://en.wikipedia.org/wiki/Imperative_programminghttps://en.wikipedia.org/wiki/Imperative_programminghttps://en.wikipedia.org/wiki/Generic_programminghttps://en.wikipedia.org/wiki/Generic_programminghttps://en.wikipedia.org/wiki/Generic_programminghttps://en.wikipedia.org/wiki/Reflection_(computer_programming)https://en.wikipedia.org/wiki/Reflection_(computer_programming)https://en.wikipedia.org/wiki/Reflection_(computer_programming)https://en.wikipedia.org/wiki/Concurrent_computinghttps://en.wikipedia.org/wiki/Concurrent_computinghttps://en.wikipedia.org/wiki/Concurrent_computinghttps://en.wikipedia.org/wiki/Software_designhttps://en.wikipedia.org/wiki/Software_designhttps://en.wikipedia.org/wiki/James_Goslinghttps://en.wikipedia.org/wiki/James_Goslinghttps://en.wikipedia.org/wiki/Software_developerhttps://en.wikipedia.org/wiki/Software_developerhttps://en.wikipedia.org/wiki/Sun_Microsystemshttps://en.wikipedia.org/wiki/Sun_Microsystemshttps://en.wikipedia.org/wiki/Oracle_Corporationhttps://en.wikipedia.org/wiki/Oracle_Corporationhttps://en.wikipedia.org/wiki/Oracle_Corporationhttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-1https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-1https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-1https://en.wikipedia.org/wiki/Type_systemhttps://en.wikipedia.org/wiki/Type_systemhttps://en.wikipedia.org/wiki/Type_systemhttps://en.wikipedia.org/wiki/Nominal_type_systemhttps://en.wikipedia.org/wiki/Nominal_type_systemhttps://en.wikipedia.org/wiki/Nominal_type_systemhttps://en.wikipedia.org/wiki/Manifest_typinghttps://en.wikipedia.org/wiki/Manifest_typinghttps://en.wikipedia.org/wiki/Manifest_typinghttps://en.wikipedia.org/wiki/Software_licensehttps://en.wikipedia.org/wiki/Software_licensehttps://en.wikipedia.org/wiki/GNU_General_Public_Licensehttps://en.wikipedia.org/wiki/Java_Community_Processhttps://en.wikipedia.org/wiki/Java_Community_Processhttps://en.wikipedia.org/wiki/Java_Community_Processhttps://en.wikipedia.org/wiki/Filename_extensionhttps://en.wikipedia.org/wiki/Filename_extensionhttps://en.wikipedia.org/wiki/Java_class_filehttps://en.wikipedia.org/wiki/Java_class_filehttps://en.wikipedia.org/wiki/Java_class_filehttps://en.wikipedia.org/wiki/JAR_(file_format)https://en.wikipedia.org/wiki/JAR_(file_format)https://en.wikipedia.org/wiki/JAR_(file_format)https://en.wikipedia.org/wiki/File:Java_logo.pnghttps://en.wikipedia.org/wiki/JAR_(file_format)https://en.wikipedia.org/wiki/Java_class_filehttps://en.wikipedia.org/wiki/Filename_extensionhttps://en.wikipedia.org/wiki/Java_Community_Processhttps://en.wikipedia.org/wiki/GNU_General_Public_Licensehttps://en.wikipedia.org/wiki/Software_licensehttps://en.wikipedia.org/wiki/Manifest_typinghttps://en.wikipedia.org/wiki/Nominal_type_systemhttps://en.wikipedia.org/wiki/Type_systemhttps://en.wikipedia.org/wiki/Type_systemhttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-1https://en.wikipedia.org/wiki/Oracle_Corporationhttps://en.wikipedia.org/wiki/Sun_Microsystemshttps://en.wikipedia.org/wiki/Software_developerhttps://en.wikipedia.org/wiki/James_Goslinghttps://en.wikipedia.org/wiki/Software_designhttps://en.wikipedia.org/wiki/Concurrent_computinghttps://en.wikipedia.org/wiki/Reflection_(computer_programming)https://en.wikipedia.org/wiki/Generic_programminghttps://en.wikipedia.org/wiki/Imperative_programminghttps://en.wikipedia.org/wiki/Structured_programminghttps://en.wikipedia.org/wiki/Class-based_programminghttps://en.wikipedia.org/wiki/Class-based_programminghttps://en.wikipedia.org/wiki/Object-orientedhttps://en.wikipedia.org/wiki/Programming_paradigm#Multi-paradigmhttps://en.wikipedia.org/wiki/Programming_paradigmhttps://en.wikipedia.org/wiki/JavaScripthttps://en.wikipedia.org/wiki/Java_SEhttps://en.wikipedia.org/wiki/Javanese_language

  • 8/17/2019 Java Deep Introduction

    2/20

    Website  java.net 

    Major implementations 

    OpenJDK , GNU Compiler for Java(gcj), many others 

    Dialects 

    Generic Java, Pizza 

    Influenced by

    Ada 83, C++, C#,[2] Eiffel,[3] Generic Java,Mesa,[4] Modula-3,[5] Oberon,[6] Objective-C,[7]UCSD Pascal,[8][9] Object Pascal[10] 

    Influenced

    Ada

    2005, BeanShell, C#, Chapel,[11] Clojure,ECMAScript, Fantom, Groovy, Hack ,[12] Haxe,J#, JavaScript, Kotlin, PHP, Python,

     Scala,Seed7, Vala 

      Java Programming at Wikibooks

    Java is a general-purpose computer programming language that is concurrent, class-based, object-oriented,[13] and specifically designed to have as few implementation dependencies as possible. It isintended to let application developers"write once, run anywhere" (WORA),[14] meaningthat compiled Java code can run on all platforms that support Java without the need forrecompilation.[15] Java applications are typically compiled to bytecode that can run on any Java virtualmachine (JVM) regardless of computer architecture. As of 2016, Java is one of the most popularprogramming languages in use,[16][17][18][19] particularly for client-server web applications, with areported 9 million developers.[citation needed] Java was originally developed by James Gosling at SunMicrosystems (which has since been acquired by Oracle Corporation) and released in 1995 as acore component of Sun Microsystems'Java platform. The language derives much ofits syntax from C and C++, but it has fewer  low-level facilities than either of them.

    The original and reference implementation Java compilers, virtual machines, and class libraries wereoriginally released by Sun under proprietary licences. As of May 2007, in compliance with thespecifications of the Java Community Process, Sun relicensed most of its Java technologies underthe GNU General Public License. Others have also developed alternative implementations of theseSun technologies, such as the GNU Compiler for Java (bytecode compiler), GNUClasspath (standard libraries), and IcedTea-Web (browser plugin for applets).

    The latest version is Java 8, which is the only version currently supported for free by Oracle,although earlier versions are supported both by Oracle and other companies on a commercial basis.

    http://java.net/http://java.net/https://en.wikipedia.org/wiki/Programming_language_implementationhttps://en.wikipedia.org/wiki/Programming_language_implementationhttps://en.wikipedia.org/wiki/Programming_language_implementationhttps://en.wikipedia.org/wiki/OpenJDKhttps://en.wikipedia.org/wiki/OpenJDKhttps://en.wikipedia.org/wiki/GNU_Compiler_for_Javahttps://en.wikipedia.org/wiki/GNU_Compiler_for_Javahttps://en.wikipedia.org/wiki/GNU_Compiler_for_Javahttps://en.wikipedia.org/wiki/Category:Java_virtual_machinehttps://en.wikipedia.org/wiki/Category:Java_virtual_machinehttps://en.wikipedia.org/wiki/Category:Java_virtual_machinehttps://en.wikipedia.org/wiki/Dialect_(computing)https://en.wikipedia.org/wiki/Dialect_(computing)https://en.wikipedia.org/wiki/Generic_Javahttps://en.wikipedia.org/wiki/Generic_Javahttps://en.wikipedia.org/wiki/Pizza_(programming_language)https://en.wikipedia.org/wiki/Pizza_(programming_language)https://en.wikipedia.org/wiki/Pizza_(programming_language)https://en.wikipedia.org/wiki/Ada_(programming_language)https://en.wikipedia.org/wiki/Ada_(programming_language)https://en.wikipedia.org/wiki/C%2B%2Bhttps://en.wikipedia.org/wiki/C%2B%2Bhttps://en.wikipedia.org/wiki/C%2B%2Bhttps://en.wikipedia.org/wiki/C_Sharp_(programming_language)https://en.wikipedia.org/wiki/C_Sharp_(programming_language)https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-2https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-2https://en.wikipedia.org/wiki/Eiffel_(programming_language)https://en.wikipedia.org/wiki/Eiffel_(programming_language)https://en.wikipedia.org/wiki/Eiffel_(programming_language)https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-3https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-3https://en.wikipedia.org/wiki/Generic_Javahttps://en.wikipedia.org/wiki/Generic_Javahttps://en.wikipedia.org/wiki/Mesa_(programming_language)https://en.wikipedia.org/wiki/Mesa_(programming_language)https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-4https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-4https://en.wikipedia.org/wiki/Modula-3https://en.wikipedia.org/wiki/Modula-3https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-5https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-5https://en.wikipedia.org/wiki/Oberon_(programming_language)https://en.wikipedia.org/wiki/Oberon_(programming_language)https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-6https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-6https://en.wikipedia.org/wiki/Objective-Chttps://en.wikipedia.org/wiki/Objective-Chttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-7https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-7https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-7https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-8https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-8https://en.wikipedia.org/wiki/Object_Pascalhttps://en.wikipedia.org/wiki/Object_Pascalhttps://en.wikipedia.org/wiki/Object_Pascalhttps://en.wikipedia.org/wiki/Object_Pascalhttps://en.wikipedia.org/wiki/Ada_(programming_language)https://en.wikipedia.org/wiki/Ada_(programming_language)https://en.wikipedia.org/wiki/Ada_(programming_language)https://en.wikipedia.org/wiki/BeanShellhttps://en.wikipedia.org/wiki/BeanShellhttps://en.wikipedia.org/wiki/BeanShellhttps://en.wikipedia.org/wiki/C_Sharp_(programming_language)https://en.wikipedia.org/wiki/C_Sharp_(programming_language)https://en.wikipedia.org/wiki/C_Sharp_(programming_language)https://en.wikipedia.org/wiki/Chapel_(programming_language)https://en.wikipedia.org/wiki/Chapel_(programming_language)https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-chplspec-11https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-chplspec-11https://en.wikipedia.org/wiki/Clojurehttps://en.wikipedia.org/wiki/Clojurehttps://en.wikipedia.org/wiki/Clojurehttps://en.wikipedia.org/wiki/ECMAScripthttps://en.wikipedia.org/wiki/ECMAScripthttps://en.wikipedia.org/wiki/ECMAScripthttps://en.wikipedia.org/wiki/Fantom_(programming_language)https://en.wikipedia.org/wiki/Fantom_(programming_language)https://en.wikipedia.org/wiki/Fantom_(programming_language)https://en.wikipedia.org/wiki/Groovy_(programming_language)https://en.wikipedia.org/wiki/Groovy_(programming_language)https://en.wikipedia.org/wiki/Groovy_(programming_language)https://en.wikipedia.org/wiki/Hack_(programming_language)https://en.wikipedia.org/wiki/Hack_(programming_language)https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-12https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-12https://en.wikipedia.org/wiki/Haxe_(programming_language)https://en.wikipedia.org/wiki/Haxe_(programming_language)https://en.wikipedia.org/wiki/Haxe_(programming_language)https://en.wikipedia.org/wiki/J_Sharphttps://en.wikipedia.org/wiki/J_Sharphttps://en.wikipedia.org/wiki/J_Sharphttps://en.wikipedia.org/wiki/JavaScripthttps://en.wikipedia.org/wiki/JavaScripthttps://en.wikipedia.org/wiki/JavaScripthttps://en.wikipedia.org/wiki/Kotlin_(programming_language)https://en.wikipedia.org/wiki/Kotlin_(programming_language)https://en.wikipedia.org/wiki/Kotlin_(programming_language)https://en.wikipedia.org/wiki/PHPhttps://en.wikipedia.org/wiki/PHPhttps://en.wikipedia.org/wiki/PHPhttps://en.wikipedia.org/wiki/Python_(programming_language)https://en.wikipedia.org/wiki/Python_(programming_language)https://en.wikipedia.org/wiki/Python_(programming_language)https://en.wikipedia.org/wiki/Scala_(programming_language)https://en.wikipedia.org/wiki/Scala_(programming_language)https://en.wikipedia.org/wiki/Seed7https://en.wikipedia.org/wiki/Seed7https://en.wikipedia.org/wiki/Seed7https://en.wikipedia.org/wiki/Vala_(programming_language)https://en.wikipedia.org/wiki/Vala_(programming_language)https://en.wikipedia.org/wiki/Vala_(programming_language)https://en.wikibooks.org/wiki/Java_Programminghttps://en.wikibooks.org/wiki/Java_Programminghttps://en.wikipedia.org/wiki/Programming_languagehttps://en.wikipedia.org/wiki/Programming_languagehttps://en.wikipedia.org/wiki/Programming_languagehttps://en.wikipedia.org/wiki/Concurrent_computinghttps://en.wikipedia.org/wiki/Concurrent_computinghttps://en.wikipedia.org/wiki/Concurrent_computinghttps://en.wikipedia.org/wiki/Class-based_programminghttps://en.wikipedia.org/wiki/Class-based_programminghttps://en.wikipedia.org/wiki/Class-based_programminghttps://en.wikipedia.org/wiki/Object-oriented_programminghttps://en.wikipedia.org/wiki/Object-oriented_programminghttps://en.wikipedia.org/wiki/Object-oriented_programminghttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-FOOTNOTEGoslingJoySteeleBracha20141-13https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-FOOTNOTEGoslingJoySteeleBracha20141-13https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-FOOTNOTEGoslingJoySteeleBracha20141-13https://en.wikipedia.org/wiki/Write_once,_run_anywherehttps://en.wikipedia.org/wiki/Write_once,_run_anywherehttps://en.wikipedia.org/wiki/Write_once,_run_anywherehttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-14https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-14https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-14https://en.wikipedia.org/wiki/Compilerhttps://en.wikipedia.org/wiki/Compilerhttps://en.wikipedia.org/wiki/Compilerhttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-design_goals-15https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-design_goals-15https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-design_goals-15https://en.wikipedia.org/wiki/Java_bytecodehttps://en.wikipedia.org/wiki/Java_bytecodehttps://en.wikipedia.org/wiki/Java_bytecodehttps://en.wikipedia.org/wiki/Java_virtual_machinehttps://en.wikipedia.org/wiki/Java_virtual_machinehttps://en.wikipedia.org/wiki/Java_virtual_machinehttps://en.wikipedia.org/wiki/Java_virtual_machinehttps://en.wikipedia.org/wiki/Computer_architecturehttps://en.wikipedia.org/wiki/Computer_architecturehttps://en.wikipedia.org/wiki/Computer_architecturehttps://en.wikipedia.org/wiki/Measuring_programming_language_popularityhttps://en.wikipedia.org/wiki/Measuring_programming_language_popularityhttps://en.wikipedia.org/wiki/Measuring_programming_language_popularityhttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-16https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-16https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-languagepopularity2013-18https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-languagepopularity2013-18https://en.wikipedia.org/wiki/Wikipedia:Citation_neededhttps://en.wikipedia.org/wiki/Wikipedia:Citation_neededhttps://en.wikipedia.org/wiki/Wikipedia:Citation_neededhttps://en.wikipedia.org/wiki/James_Goslinghttps://en.wikipedia.org/wiki/James_Goslinghttps://en.wikipedia.org/wiki/James_Goslinghttps://en.wikipedia.org/wiki/Sun_Microsystemshttps://en.wikipedia.org/wiki/Sun_Microsystemshttps://en.wikipedia.org/wiki/Sun_Microsystemshttps://en.wikipedia.org/wiki/Sun_Microsystemshttps://en.wikipedia.org/wiki/Sun_acquisition_by_Oraclehttps://en.wikipedia.org/wiki/Sun_acquisition_by_Oraclehttps://en.wikipedia.org/wiki/Sun_acquisition_by_Oraclehttps://en.wikipedia.org/wiki/Java_(software_platform)https://en.wikipedia.org/wiki/Java_(software_platform)https://en.wikipedia.org/wiki/Java_(software_platform)https://en.wikipedia.org/wiki/Syntax_(programming_languages)https://en.wikipedia.org/wiki/Syntax_(programming_languages)https://en.wikipedia.org/wiki/Syntax_(programming_languages)https://en.wikipedia.org/wiki/C_(programming_language)https://en.wikipedia.org/wiki/C_(programming_language)https://en.wikipedia.org/wiki/C_(programming_language)https://en.wikipedia.org/wiki/C%2B%2Bhttps://en.wikipedia.org/wiki/C%2B%2Bhttps://en.wikipedia.org/wiki/C%2B%2Bhttps://en.wikipedia.org/wiki/Low-level_programming_languagehttps://en.wikipedia.org/wiki/Low-level_programming_languagehttps://en.wikipedia.org/wiki/Low-level_programming_languagehttps://en.wikipedia.org/wiki/Reference_implementationhttps://en.wikipedia.org/wiki/Reference_implementationhttps://en.wikipedia.org/wiki/Reference_implementationhttps://en.wikipedia.org/wiki/Compilerhttps://en.wikipedia.org/wiki/Compilerhttps://en.wikipedia.org/wiki/Compilerhttps://en.wikipedia.org/wiki/Library_(computing)https://en.wikipedia.org/wiki/Library_(computing)https://en.wikipedia.org/wiki/Library_(computing)https://en.wikipedia.org/wiki/Java_Community_Processhttps://en.wikipedia.org/wiki/Java_Community_Processhttps://en.wikipedia.org/wiki/Java_Community_Processhttps://en.wikipedia.org/wiki/GNU_General_Public_Licensehttps://en.wikipedia.org/wiki/GNU_General_Public_Licensehttps://en.wikipedia.org/wiki/GNU_General_Public_Licensehttps://en.wikipedia.org/wiki/GNU_Compiler_for_Javahttps://en.wikipedia.org/wiki/GNU_Compiler_for_Javahttps://en.wikipedia.org/wiki/GNU_Compiler_for_Javahttps://en.wikipedia.org/wiki/GNU_Classpathhttps://en.wikipedia.org/wiki/GNU_Classpathhttps://en.wikipedia.org/wiki/GNU_Classpathhttps://en.wikipedia.org/wiki/GNU_Classpathhttps://en.wikipedia.org/wiki/IcedTeahttps://en.wikipedia.org/wiki/IcedTeahttps://en.wikipedia.org/wiki/IcedTeahttps://en.wikipedia.org/wiki/IcedTeahttps://en.wikipedia.org/wiki/GNU_Classpathhttps://en.wikipedia.org/wiki/GNU_Classpathhttps://en.wikipedia.org/wiki/GNU_Compiler_for_Javahttps://en.wikipedia.org/wiki/GNU_General_Public_Licensehttps://en.wikipedia.org/wiki/Java_Community_Processhttps://en.wikipedia.org/wiki/Library_(computing)https://en.wikipedia.org/wiki/Compilerhttps://en.wikipedia.org/wiki/Reference_implementationhttps://en.wikipedia.org/wiki/Low-level_programming_languagehttps://en.wikipedia.org/wiki/C%2B%2Bhttps://en.wikipedia.org/wiki/C_(programming_language)https://en.wikipedia.org/wiki/Syntax_(programming_languages)https://en.wikipedia.org/wiki/Java_(software_platform)https://en.wikipedia.org/wiki/Sun_acquisition_by_Oraclehttps://en.wikipedia.org/wiki/Sun_Microsystemshttps://en.wikipedia.org/wiki/Sun_Microsystemshttps://en.wikipedia.org/wiki/James_Goslinghttps://en.wikipedia.org/wiki/Wikipedia:Citation_neededhttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-languagepopularity2013-18https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-languagepopularity2013-18https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-16https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-16https://en.wikipedia.org/wiki/Measuring_programming_language_popularityhttps://en.wikipedia.org/wiki/Measuring_programming_language_popularityhttps://en.wikipedia.org/wiki/Computer_architecturehttps://en.wikipedia.org/wiki/Java_virtual_machinehttps://en.wikipedia.org/wiki/Java_virtual_machinehttps://en.wikipedia.org/wiki/Java_bytecodehttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-design_goals-15https://en.wikipedia.org/wiki/Compilerhttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-14https://en.wikipedia.org/wiki/Write_once,_run_anywherehttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-FOOTNOTEGoslingJoySteeleBracha20141-13https://en.wikipedia.org/wiki/Object-oriented_programminghttps://en.wikipedia.org/wiki/Object-oriented_programminghttps://en.wikipedia.org/wiki/Class-based_programminghttps://en.wikipedia.org/wiki/Concurrent_computinghttps://en.wikipedia.org/wiki/Programming_languagehttps://en.wikibooks.org/wiki/Java_Programminghttps://en.wikipedia.org/wiki/Vala_(programming_language)https://en.wikipedia.org/wiki/Seed7https://en.wikipedia.org/wiki/Scala_(programming_language)https://en.wikipedia.org/wiki/Python_(programming_language)https://en.wikipedia.org/wiki/PHPhttps://en.wikipedia.org/wiki/Kotlin_(programming_language)https://en.wikipedia.org/wiki/JavaScripthttps://en.wikipedia.org/wiki/J_Sharphttps://en.wikipedia.org/wiki/Haxe_(programming_language)https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-12https://en.wikipedia.org/wiki/Hack_(programming_language)https://en.wikipedia.org/wiki/Groovy_(programming_language)https://en.wikipedia.org/wiki/Fantom_(programming_language)https://en.wikipedia.org/wiki/ECMAScripthttps://en.wikipedia.org/wiki/Clojurehttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-chplspec-11https://en.wikipedia.org/wiki/Chapel_(programming_language)https://en.wikipedia.org/wiki/C_Sharp_(programming_language)https://en.wikipedia.org/wiki/BeanShellhttps://en.wikipedia.org/wiki/Ada_(programming_language)https://en.wikipedia.org/wiki/Ada_(programming_language)https://en.wikipedia.org/wiki/Object_Pascalhttps://en.wikipedia.org/wiki/Object_Pascalhttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-8https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-8https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-7https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-7https://en.wikipedia.org/wiki/Objective-Chttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-6https://en.wikipedia.org/wiki/Oberon_(programming_language)https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-5https://en.wikipedia.org/wiki/Modula-3https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-4https://en.wikipedia.org/wiki/Mesa_(programming_language)https://en.wikipedia.org/wiki/Generic_Javahttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-3https://en.wikipedia.org/wiki/Eiffel_(programming_language)https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-2https://en.wikipedia.org/wiki/C_Sharp_(programming_language)https://en.wikipedia.org/wiki/C%2B%2Bhttps://en.wikipedia.org/wiki/Ada_(programming_language)https://en.wikipedia.org/wiki/Pizza_(programming_language)https://en.wikipedia.org/wiki/Generic_Javahttps://en.wikipedia.org/wiki/Dialect_(computing)https://en.wikipedia.org/wiki/Category:Java_virtual_machinehttps://en.wikipedia.org/wiki/GNU_Compiler_for_Javahttps://en.wikipedia.org/wiki/OpenJDKhttps://en.wikipedia.org/wiki/Programming_language_implementationhttp://java.net/

  • 8/17/2019 Java Deep Introduction

    3/20

    Contents

    [hide] 

      1History o  1.1Principles 

    o  1.2Versions 

      2Practices 

    o  2.1Java platform 

      2.1.1Implementations 

      2.1.2Performance 

    o  2.2Automatic memory management 

      3Syntax 

      4Examples 

    o  4.1"Hello, world!" program 

    o  4.2Comprehensive example 

      5Special classes 

    o  5.1Applet 

    o  5.2Servlet 

    o  5.3JavaServer Pages 

    o  5.4Swing application 

    o  5.5Generics 

      6Criticism 

      7Use on unofficial software platforms 

    o  7.1Google 

      8Class libraries 

      9Documentation 

      10Editions 

      11See also 

    o  11.1Comparison of Java with other languages 

      12Notes   13References 

      14External links 

    HistorySee also: Java (software platform) § History 

    https://en.wikipedia.org/wiki/Java_(programming_language)https://en.wikipedia.org/wiki/Java_(programming_language)https://en.wikipedia.org/wiki/Java_(programming_language)https://en.wikipedia.org/wiki/Java_(programming_language)#Historyhttps://en.wikipedia.org/wiki/Java_(programming_language)#Historyhttps://en.wikipedia.org/wiki/Java_(programming_language)#Principleshttps://en.wikipedia.org/wiki/Java_(programming_language)#Principleshttps://en.wikipedia.org/wiki/Java_(programming_language)#Versionshttps://en.wikipedia.org/wiki/Java_(programming_language)#Versionshttps://en.wikipedia.org/wiki/Java_(programming_language)#Practiceshttps://en.wikipedia.org/wiki/Java_(programming_language)#Practiceshttps://en.wikipedia.org/wiki/Java_(programming_language)#Java_platformhttps://en.wikipedia.org/wiki/Java_(programming_language)#Java_platformhttps://en.wikipedia.org/wiki/Java_(programming_language)#Implementationshttps://en.wikipedia.org/wiki/Java_(programming_language)#Implementationshttps://en.wikipedia.org/wiki/Java_(programming_language)#Performancehttps://en.wikipedia.org/wiki/Java_(programming_language)#Performancehttps://en.wikipedia.org/wiki/Java_(programming_language)#Automatic_memory_managementhttps://en.wikipedia.org/wiki/Java_(programming_language)#Automatic_memory_managementhttps://en.wikipedia.org/wiki/Java_(programming_language)#Syntaxhttps://en.wikipedia.org/wiki/Java_(programming_language)#Syntaxhttps://en.wikipedia.org/wiki/Java_(programming_language)#Exampleshttps://en.wikipedia.org/wiki/Java_(programming_language)#Exampleshttps://en.wikipedia.org/wiki/Java_(programming_language)#.22Hello.2C_world.21.22_programhttps://en.wikipedia.org/wiki/Java_(programming_language)#.22Hello.2C_world.21.22_programhttps://en.wikipedia.org/wiki/Java_(programming_language)#Comprehensive_examplehttps://en.wikipedia.org/wiki/Java_(programming_language)#Comprehensive_examplehttps://en.wikipedia.org/wiki/Java_(programming_language)#Special_classeshttps://en.wikipedia.org/wiki/Java_(programming_language)#Special_classeshttps://en.wikipedia.org/wiki/Java_(programming_language)#Applethttps://en.wikipedia.org/wiki/Java_(programming_language)#Applethttps://en.wikipedia.org/wiki/Java_(programming_language)#Servlethttps://en.wikipedia.org/wiki/Java_(programming_language)#Servlethttps://en.wikipedia.org/wiki/Java_(programming_language)#JavaServer_Pageshttps://en.wikipedia.org/wiki/Java_(programming_language)#JavaServer_Pageshttps://en.wikipedia.org/wiki/Java_(programming_language)#Swing_applicationhttps://en.wikipedia.org/wiki/Java_(programming_language)#Swing_applicationhttps://en.wikipedia.org/wiki/Java_(programming_language)#Genericshttps://en.wikipedia.org/wiki/Java_(programming_language)#Genericshttps://en.wikipedia.org/wiki/Java_(programming_language)#Criticismhttps://en.wikipedia.org/wiki/Java_(programming_language)#Criticismhttps://en.wikipedia.org/wiki/Java_(programming_language)#Use_on_unofficial_software_platformshttps://en.wikipedia.org/wiki/Java_(programming_language)#Use_on_unofficial_software_platformshttps://en.wikipedia.org/wiki/Java_(programming_language)#Googlehttps://en.wikipedia.org/wiki/Java_(programming_language)#Googlehttps://en.wikipedia.org/wiki/Java_(programming_language)#Class_librarieshttps://en.wikipedia.org/wiki/Java_(programming_language)#Class_librarieshttps://en.wikipedia.org/wiki/Java_(programming_language)#Documentationhttps://en.wikipedia.org/wiki/Java_(programming_language)#Documentationhttps://en.wikipedia.org/wiki/Java_(programming_language)#Editionshttps://en.wikipedia.org/wiki/Java_(programming_language)#Editionshttps://en.wikipedia.org/wiki/Java_(programming_language)#See_alsohttps://en.wikipedia.org/wiki/Java_(programming_language)#See_alsohttps://en.wikipedia.org/wiki/Java_(programming_language)#Comparison_of_Java_with_other_languageshttps://en.wikipedia.org/wiki/Java_(programming_language)#Comparison_of_Java_with_other_languageshttps://en.wikipedia.org/wiki/Java_(programming_language)#Noteshttps://en.wikipedia.org/wiki/Java_(programming_language)#Noteshttps://en.wikipedia.org/wiki/Java_(programming_language)#Referenceshttps://en.wikipedia.org/wiki/Java_(programming_language)#Referenceshttps://en.wikipedia.org/wiki/Java_(programming_language)#External_linkshttps://en.wikipedia.org/wiki/Java_(programming_language)#External_linkshttps://en.wikipedia.org/wiki/Java_(software_platform)#Historyhttps://en.wikipedia.org/wiki/Java_(software_platform)#Historyhttps://en.wikipedia.org/wiki/Java_(software_platform)#Historyhttps://en.wikipedia.org/wiki/Java_(software_platform)#Historyhttps://en.wikipedia.org/wiki/Java_(programming_language)#External_linkshttps://en.wikipedia.org/wiki/Java_(programming_language)#Referenceshttps://en.wikipedia.org/wiki/Java_(programming_language)#Noteshttps://en.wikipedia.org/wiki/Java_(programming_language)#Comparison_of_Java_with_other_languageshttps://en.wikipedia.org/wiki/Java_(programming_language)#See_alsohttps://en.wikipedia.org/wiki/Java_(programming_language)#Editionshttps://en.wikipedia.org/wiki/Java_(programming_language)#Documentationhttps://en.wikipedia.org/wiki/Java_(programming_language)#Class_librarieshttps://en.wikipedia.org/wiki/Java_(programming_language)#Googlehttps://en.wikipedia.org/wiki/Java_(programming_language)#Use_on_unofficial_software_platformshttps://en.wikipedia.org/wiki/Java_(programming_language)#Criticismhttps://en.wikipedia.org/wiki/Java_(programming_language)#Genericshttps://en.wikipedia.org/wiki/Java_(programming_language)#Swing_applicationhttps://en.wikipedia.org/wiki/Java_(programming_language)#JavaServer_Pageshttps://en.wikipedia.org/wiki/Java_(programming_language)#Servlethttps://en.wikipedia.org/wiki/Java_(programming_language)#Applethttps://en.wikipedia.org/wiki/Java_(programming_language)#Special_classeshttps://en.wikipedia.org/wiki/Java_(programming_language)#Comprehensive_examplehttps://en.wikipedia.org/wiki/Java_(programming_language)#.22Hello.2C_world.21.22_programhttps://en.wikipedia.org/wiki/Java_(programming_language)#Exampleshttps://en.wikipedia.org/wiki/Java_(programming_language)#Syntaxhttps://en.wikipedia.org/wiki/Java_(programming_language)#Automatic_memory_managementhttps://en.wikipedia.org/wiki/Java_(programming_language)#Performancehttps://en.wikipedia.org/wiki/Java_(programming_language)#Implementationshttps://en.wikipedia.org/wiki/Java_(programming_language)#Java_platformhttps://en.wikipedia.org/wiki/Java_(programming_language)#Practiceshttps://en.wikipedia.org/wiki/Java_(programming_language)#Versionshttps://en.wikipedia.org/wiki/Java_(programming_language)#Principleshttps://en.wikipedia.org/wiki/Java_(programming_language)#Historyhttps://en.wikipedia.org/wiki/Java_(programming_language)

  • 8/17/2019 Java Deep Introduction

    4/20

     

    Duke, the Java mascot

    James Gosling, the creator of Java (2008)

    The TIOBE programming language popularity index graph from 2002 to 2015. Over the course of a decade

    Java (blue) and C (black) competing for the top position.

    James Gosling, Mike Sheridan, and Patrick Naughton initiated the Java language project in June1991.[20] Java was originally designed for interactive television, but it was too advanced for the digitalcable television industry at the time.[21] The language was initially called Oak after an oaktree thatstood outside Gosling's office. Later the project went by the nameGreen and was finally

    https://en.wikipedia.org/wiki/James_Goslinghttps://en.wikipedia.org/wiki/James_Goslinghttps://en.wikipedia.org/wiki/TIOBE_indexhttps://en.wikipedia.org/wiki/TIOBE_indexhttps://en.wikipedia.org/wiki/Measuring_programming_language_popularityhttps://en.wikipedia.org/wiki/Measuring_programming_language_popularityhttps://en.wikipedia.org/wiki/Measuring_programming_language_popularityhttps://en.wikipedia.org/wiki/James_Goslinghttps://en.wikipedia.org/wiki/James_Goslinghttps://en.wikipedia.org/wiki/Patrick_Naughtonhttps://en.wikipedia.org/wiki/Patrick_Naughtonhttps://en.wikipedia.org/wiki/Patrick_Naughtonhttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-20https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-20https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-20https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-21https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-21https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-21https://en.wikipedia.org/wiki/Oak_(programming_language)https://en.wikipedia.org/wiki/Oak_(programming_language)https://en.wikipedia.org/wiki/Oak_(programming_language)https://en.wikipedia.org/wiki/Oakhttps://en.wikipedia.org/wiki/Oakhttps://en.wikipedia.org/wiki/Oakhttps://en.wikipedia.org/wiki/File:Tiobeindex.pnghttps://en.wikipedia.org/wiki/File:James_Gosling_2008.jpghttps://en.wikipedia.org/wiki/File:Wave.svghttps://en.wikipedia.org/wiki/Oakhttps://en.wikipedia.org/wiki/Oak_(programming_language)https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-21https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-20https://en.wikipedia.org/wiki/Patrick_Naughtonhttps://en.wikipedia.org/wiki/James_Goslinghttps://en.wikipedia.org/wiki/Measuring_programming_language_popularityhttps://en.wikipedia.org/wiki/TIOBE_indexhttps://en.wikipedia.org/wiki/James_Gosling

  • 8/17/2019 Java Deep Introduction

    5/20

    renamed Java, from Java coffee.[22] Gosling designed Java with a C/C++-style syntax that systemand application programmers would find familiar .[23] 

    Sun Microsystems released the first public implementation as Java 1.0 in 1995.[24] It promised "WriteOnce, Run Anywhere" (WORA), providing no-cost run-times on popular  platforms. Fairly secure andfeaturing configurable security, it allowed network- and file-access restrictions. Major  webbrowsers soon incorporated the ability to run Java applets within web pages, and Java quicklybecame popular, while mostly outside of browsers, that wasn't the original plan. In January 2016,Oracle announced that Java runtime environments based on JDK 9 will discontinue the browserplugin.[25] The Java 1.0 compiler was re-written in Java by  Arthur van Hoff  to comply strictly with theJava 1.0 language specification.[26] With the advent of Java 2 (released initially as J2SE 1.2 inDecember 1998 – 1999), new versions had multiple configurations built for different types ofplatforms. J2EE included technologies and APIs for enterprise applications typically run in serverenvironments, while J2ME featured APIs optimized for mobile applications. The desktop version wasrenamed J2SE. In 2006, for marketing purposes, Sun renamed newJ2 versions as Java EE, JavaME, and Java SE, respectively.

    In 1997, Sun Microsystems approached the ISO/IEC JTC 1 standards body and later the EcmaInternational to formalize Java, but it soon withdrew from the process.[27][28][29] Java remains a defacto standard, controlled through the Java Community Process.[30]  At one time, Sun made most of

    its Java implementations available without charge, despite their  proprietary software status. Sungenerated revenue from Java through the selling of licenses for specialized products such as theJava Enterprise System.

    On November 13, 2006, Sun released much of its Java virtual machine (JVM) as free and open-source software, (FOSS), under the terms of the GNU General Public License (GPL). On May 8,2007, Sun finished the process, making all of its JVM's core code available under  freesoftware/open-source distribution terms, aside from a small portion of code to which Sun did not holdthe copyright.[31] 

    Sun's vice-president Rich Green said that Sun's ideal role with regard to Java was as an"evangelist".[32] Following Oracle Corporation's acquisition of Sun Microsystems in 2009 –10, Oraclehas described itself as the "steward of Java technology with a relentless commitment to fostering acommunity of participation and transparency".[33] This did not prevent Oracle from filing a lawsuitagainst Google shortly after that for using Java inside the Android SDK (see Google section below).Java software runs on everything from laptops to data centers, game consoles toscientific supercomputers.[34] On April 2, 2010, James Gosling resigned from Oracle.[35] 

    Principles

    There were five primary goals in the creation of the Java language:[15] 

    1. It must be "simple, object-oriented, and familiar".2. It must be "robust and secure".

    3. It must be "architecture-neutral and portable".

    4. It must execute with "high performance".

    5. It must be "interpreted, threaded, and dynamic".VersionsMain article: Java version history 

     As of 2015, only Java 8 is supported ("publicly"). Major release versions of Java, along with theirrelease dates:

      JDK 1.0 (January 21, 1996)

      JDK 1.1 (February 19, 1997)

    https://en.wikipedia.org/wiki/Java_coffeehttps://en.wikipedia.org/wiki/Java_coffeehttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-22https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-22https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-22https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-23https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-23https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-23https://en.wikipedia.org/wiki/Sun_Microsystemshttps://en.wikipedia.org/wiki/Sun_Microsystemshttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-oraclejavahistory-24https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-oraclejavahistory-24https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-oraclejavahistory-24https://en.wikipedia.org/wiki/Computing_platformhttps://en.wikipedia.org/wiki/Computing_platformhttps://en.wikipedia.org/wiki/Computing_platformhttps://en.wikipedia.org/wiki/Web_browserhttps://en.wikipedia.org/wiki/Web_browserhttps://en.wikipedia.org/wiki/Web_browserhttps://en.wikipedia.org/wiki/Web_browserhttps://en.wikipedia.org/wiki/Java_applethttps://en.wikipedia.org/wiki/Java_applethttps://en.wikipedia.org/wiki/Java_applethttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-25https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-25https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-25https://en.wikipedia.org/wiki/Bootstrapping_(compilers)https://en.wikipedia.org/wiki/Bootstrapping_(compilers)https://en.wikipedia.org/wiki/Bootstrapping_(compilers)https://en.wikipedia.org/wiki/Arthur_van_Hoffhttps://en.wikipedia.org/wiki/Arthur_van_Hoffhttps://en.wikipedia.org/wiki/Arthur_van_Hoffhttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-26https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-26https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-26https://en.wikipedia.org/wiki/Java_Platform,_Enterprise_Editionhttps://en.wikipedia.org/wiki/Java_Platform,_Enterprise_Editionhttps://en.wikipedia.org/wiki/Java_Platform,_Enterprise_Editionhttps://en.wikipedia.org/wiki/Java_Platform,_Micro_Editionhttps://en.wikipedia.org/wiki/Java_Platform,_Micro_Editionhttps://en.wikipedia.org/wiki/Java_Platform,_Micro_Editionhttps://en.wikipedia.org/wiki/Java_Platform,_Micro_Editionhttps://en.wikipedia.org/wiki/Java_Platform,_Standard_Editionhttps://en.wikipedia.org/wiki/Java_Platform,_Standard_Editionhttps://en.wikipedia.org/wiki/Java_Platform,_Standard_Editionhttps://en.wikipedia.org/wiki/ISO/IEC_JTC_1https://en.wikipedia.org/wiki/ISO/IEC_JTC_1https://en.wikipedia.org/wiki/ISO/IEC_JTC_1https://en.wikipedia.org/wiki/Ecma_Internationalhttps://en.wikipedia.org/wiki/Ecma_Internationalhttps://en.wikipedia.org/wiki/Ecma_Internationalhttps://en.wikipedia.org/wiki/Ecma_Internationalhttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-27https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-27https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-29https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-29https://en.wikipedia.org/wiki/De_facto_standardhttps://en.wikipedia.org/wiki/De_facto_standardhttps://en.wikipedia.org/wiki/De_facto_standardhttps://en.wikipedia.org/wiki/De_facto_standardhttps://en.wikipedia.org/wiki/De_facto_standardhttps://en.wikipedia.org/wiki/Java_Community_Processhttps://en.wikipedia.org/wiki/Java_Community_Processhttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-30https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-30https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-30https://en.wikipedia.org/wiki/Proprietary_softwarehttps://en.wikipedia.org/wiki/Proprietary_softwarehttps://en.wikipedia.org/wiki/Proprietary_softwarehttps://en.wikipedia.org/wiki/Free_and_open-source_softwarehttps://en.wikipedia.org/wiki/Free_and_open-source_softwarehttps://en.wikipedia.org/wiki/Free_and_open-source_softwarehttps://en.wikipedia.org/wiki/Free_and_open-source_softwarehttps://en.wikipedia.org/wiki/GNU_General_Public_Licensehttps://en.wikipedia.org/wiki/GNU_General_Public_Licensehttps://en.wikipedia.org/wiki/GNU_General_Public_Licensehttps://en.wikipedia.org/wiki/Free_softwarehttps://en.wikipedia.org/wiki/Free_softwarehttps://en.wikipedia.org/wiki/Free_softwarehttps://en.wikipedia.org/wiki/Free_softwarehttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-31https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-31https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-31https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-32https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-32https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-32https://en.wikipedia.org/wiki/Oracle_Corporationhttps://en.wikipedia.org/wiki/Oracle_Corporationhttps://en.wikipedia.org/wiki/Oracle_Corporationhttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-33https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-33https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-33https://en.wikipedia.org/wiki/Laptophttps://en.wikipedia.org/wiki/Laptophttps://en.wikipedia.org/wiki/Laptophttps://en.wikipedia.org/wiki/Data_centerhttps://en.wikipedia.org/wiki/Data_centerhttps://en.wikipedia.org/wiki/Data_centerhttps://en.wikipedia.org/wiki/Video_game_consolehttps://en.wikipedia.org/wiki/Video_game_consolehttps://en.wikipedia.org/wiki/Video_game_consolehttps://en.wikipedia.org/wiki/Supercomputerhttps://en.wikipedia.org/wiki/Supercomputerhttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-34https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-34https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-34https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-35https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-35https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-35https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-design_goals-15https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-design_goals-15https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-design_goals-15https://en.wikipedia.org/wiki/Java_version_historyhttps://en.wikipedia.org/wiki/Java_version_historyhttps://en.wikipedia.org/wiki/Java_version_historyhttps://en.wikipedia.org/wiki/Java_version_historyhttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-design_goals-15https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-35https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-34https://en.wikipedia.org/wiki/Supercomputerhttps://en.wikipedia.org/wiki/Video_game_consolehttps://en.wikipedia.org/wiki/Data_centerhttps://en.wikipedia.org/wiki/Laptophttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-33https://en.wikipedia.org/wiki/Oracle_Corporationhttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-32https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-31https://en.wikipedia.org/wiki/Free_softwarehttps://en.wikipedia.org/wiki/Free_softwarehttps://en.wikipedia.org/wiki/GNU_General_Public_Licensehttps://en.wikipedia.org/wiki/Free_and_open-source_softwarehttps://en.wikipedia.org/wiki/Free_and_open-source_softwarehttps://en.wikipedia.org/wiki/Proprietary_softwarehttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-30https://en.wikipedia.org/wiki/Java_Community_Processhttps://en.wikipedia.org/wiki/De_facto_standardhttps://en.wikipedia.org/wiki/De_facto_standardhttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-29https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-27https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-27https://en.wikipedia.org/wiki/Ecma_Internationalhttps://en.wikipedia.org/wiki/Ecma_Internationalhttps://en.wikipedia.org/wiki/ISO/IEC_JTC_1https://en.wikipedia.org/wiki/Java_Platform,_Standard_Editionhttps://en.wikipedia.org/wiki/Java_Platform,_Micro_Editionhttps://en.wikipedia.org/wiki/Java_Platform,_Micro_Editionhttps://en.wikipedia.org/wiki/Java_Platform,_Enterprise_Editionhttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-26https://en.wikipedia.org/wiki/Arthur_van_Hoffhttps://en.wikipedia.org/wiki/Bootstrapping_(compilers)https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-25https://en.wikipedia.org/wiki/Java_applethttps://en.wikipedia.org/wiki/Web_browserhttps://en.wikipedia.org/wiki/Web_browserhttps://en.wikipedia.org/wiki/Computing_platformhttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-oraclejavahistory-24https://en.wikipedia.org/wiki/Sun_Microsystemshttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-23https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-22https://en.wikipedia.org/wiki/Java_coffee

  • 8/17/2019 Java Deep Introduction

    6/20

      J2SE 1.2 (December 8, 1998)

      J2SE 1.3 (May 8, 2000)

      J2SE 1.4 (February 6, 2002)

      J2SE 5.0 (September 30, 2004)

      Java SE 6 (December 11, 2006)

      Java SE 7 (July 28, 2011)

      Java SE 8 (March 18, 2014)

    PracticesJava platformMain articles: Java (software platform) and Java virtual machine 

    Java Control Panel, version 7

    One design goal of Java is portability, which means that programs written for the Java platform mustrun similarly on any combination of hardware and operating system with adequate runtime support.This is achieved by compiling the Java language code to an intermediate representation called Javabytecode, instead of directly to architecture-specific machine code. Java bytecode instructions areanalogous to machine code, but they are intended to be executed by a virtual machine (VM) writtenspecifically for the host hardware. End userscommonly use a Java Runtime Environment (JRE)installed on their own machine for standalone Java applications, or in a web browser forJava applets. 

    Standard libraries provide a generic way to access host-specific features such asgraphics, threading, and networking. 

    The use of universal bytecode makes porting simple. However, the overhead of interpretingbytecode into machine instructions makes interpreted programs almost always run more slowly thannative executables. However,  just-in-time (JIT) compilers that compile bytecodes to machine code

    during runtime were introduced from an early stage. Java itself is platform-independent, and isadapted to the particular platform it is to run on by a Java virtual machine for it, which translatesthe Java bytecode into the platform's machine language.[36] 

    ImplementationsSee also: Free Java implementations 

    Oracle Corporation is the current owner of the official implementation of the Java SE platform,following their acquisition of  Sun Microsystems on January 27, 2010. This implementation is basedon the original implementation of Java by Sun. The Oracle implementation is available for  Microsoft

    https://en.wikipedia.org/wiki/Java_(software_platform)https://en.wikipedia.org/wiki/Java_(software_platform)https://en.wikipedia.org/wiki/Java_(software_platform)https://en.wikipedia.org/wiki/Java_virtual_machinehttps://en.wikipedia.org/wiki/Java_virtual_machinehttps://en.wikipedia.org/wiki/Java_virtual_machinehttps://en.wikipedia.org/wiki/Java_bytecodehttps://en.wikipedia.org/wiki/Java_bytecodehttps://en.wikipedia.org/wiki/Java_bytecodehttps://en.wikipedia.org/wiki/Java_bytecodehttps://en.wikipedia.org/wiki/Machine_codehttps://en.wikipedia.org/wiki/Machine_codehttps://en.wikipedia.org/wiki/Machine_codehttps://en.wikipedia.org/wiki/Virtual_machinehttps://en.wikipedia.org/wiki/Virtual_machinehttps://en.wikipedia.org/wiki/Virtual_machinehttps://en.wikipedia.org/wiki/End_userhttps://en.wikipedia.org/wiki/End_userhttps://en.wikipedia.org/wiki/End_userhttps://en.wikipedia.org/wiki/Java_virtual_machinehttps://en.wikipedia.org/wiki/Java_virtual_machinehttps://en.wikipedia.org/wiki/Java_virtual_machinehttps://en.wikipedia.org/wiki/Applethttps://en.wikipedia.org/wiki/Applethttps://en.wikipedia.org/wiki/Applethttps://en.wikipedia.org/wiki/Thread_(computing)https://en.wikipedia.org/wiki/Thread_(computing)https://en.wikipedia.org/wiki/Thread_(computing)https://en.wikipedia.org/wiki/Computer_networkhttps://en.wikipedia.org/wiki/Computer_networkhttps://en.wikipedia.org/wiki/Computer_networkhttps://en.wikipedia.org/wiki/Executablehttps://en.wikipedia.org/wiki/Executablehttps://en.wikipedia.org/wiki/Executablehttps://en.wikipedia.org/wiki/Just-in-time_compilationhttps://en.wikipedia.org/wiki/Just-in-time_compilationhttps://en.wikipedia.org/wiki/Just-in-time_compilationhttps://en.wikipedia.org/wiki/Java_virtual_machinehttps://en.wikipedia.org/wiki/Java_virtual_machinehttps://en.wikipedia.org/wiki/Java_virtual_machinehttps://en.wikipedia.org/wiki/Java_bytecodehttps://en.wikipedia.org/wiki/Java_bytecodehttps://en.wikipedia.org/wiki/Java_bytecodehttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-36https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-36https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-36https://en.wikipedia.org/wiki/Free_Java_implementationshttps://en.wikipedia.org/wiki/Free_Java_implementationshttps://en.wikipedia.org/wiki/Free_Java_implementationshttps://en.wikipedia.org/wiki/Oracle_Corporationhttps://en.wikipedia.org/wiki/Oracle_Corporationhttps://en.wikipedia.org/wiki/Sun_Microsystemshttps://en.wikipedia.org/wiki/Sun_Microsystemshttps://en.wikipedia.org/wiki/Sun_Microsystemshttps://en.wikipedia.org/wiki/Microsoft_Windowshttps://en.wikipedia.org/wiki/Microsoft_Windowshttps://en.wikipedia.org/wiki/File:Java_Control_Panel.JPGhttps://en.wikipedia.org/wiki/Microsoft_Windowshttps://en.wikipedia.org/wiki/Sun_Microsystemshttps://en.wikipedia.org/wiki/Oracle_Corporationhttps://en.wikipedia.org/wiki/Free_Java_implementationshttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-36https://en.wikipedia.org/wiki/Java_bytecodehttps://en.wikipedia.org/wiki/Java_virtual_machinehttps://en.wikipedia.org/wiki/Just-in-time_compilationhttps://en.wikipedia.org/wiki/Executablehttps://en.wikipedia.org/wiki/Computer_networkhttps://en.wikipedia.org/wiki/Thread_(computing)https://en.wikipedia.org/wiki/Applethttps://en.wikipedia.org/wiki/Java_virtual_machinehttps://en.wikipedia.org/wiki/End_userhttps://en.wikipedia.org/wiki/Virtual_machinehttps://en.wikipedia.org/wiki/Machine_codehttps://en.wikipedia.org/wiki/Java_bytecodehttps://en.wikipedia.org/wiki/Java_bytecodehttps://en.wikipedia.org/wiki/Java_virtual_machinehttps://en.wikipedia.org/wiki/Java_(software_platform)

  • 8/17/2019 Java Deep Introduction

    7/20

    Windows (still works for XP, while only later versions currently "publicly" supported), Mac OSX, Linux and Solaris. Because Java lacks any formal standardization recognized by EcmaInternational, ISO/IEC, ANSI, or other third-party standards organization, the Oracle implementationis the de facto standard. 

    The Oracle implementation is packaged into two different distributions: The Java RuntimeEnvironment (JRE) which contains the parts of the Java SE platform required to run Java programsand is intended for end users, and the Java Development Kit (JDK), which is intended for softwaredevelopers and includes development tools such as the Java compiler ,Javadoc, Jar , anda debugger . 

    OpenJDK is another notable Java SE implementation that is licensed under the GNU GPL. Theimplementation started when Sun began releasing the Java source code under the GPL. As of JavaSE 7, OpenJDK is the official Java reference implementation.

    The goal of Java is to make all implementations of Java compatible. Historically, Sun's trademarklicense for usage of the Java brand insists that all implementations be "compatible". This resulted ina legal dispute with Microsoft after Sun claimed that the Microsoft implementation did notsupport RMI or  JNI and had added platform-specific features of their own. Sun sued in 1997, and in2001 won a settlement of US$20 million, as well as a court order enforcing the terms of the license

    from Sun.[37]

      As a result, Microsoft no longer ships Java with Windows. Platform-independent Java is essential to Java EE, and an even more rigorous validation is requiredto certify an implementation. This environment enables portable server-side applications.

    PerformanceMain article: Java performance 

    Programs written in Java have a reputation for being slower and requiring more memory than thosewritten in C++.[38][39] However, Java programs' execution speed improved significantly with theintroduction of   just-in-time compilation in 1997/1998 for  Java 1.1,[40] the addition of language featuressupporting better code analysis (such as inner classes, the StringBuilder class, optional assertions,etc.), and optimizations in the Java virtual machine, such as HotSpot becoming the default for Sun'sJVM in 2000. With Java 1.5, the performance was improved with the addition of the

     java.util.concurrent package, including Lock free implementations of the ConcurrentMaps and othermulti-core collections, and it was improved further Java 1.6.

    Some platforms offer direct hardware support for Java; there are microcontrollers that can run Javain hardware instead of a software Java virtual machine, and  ARM based processors can havehardware support for executing Java bytecode through their  Jazelle option (while its support ismostly dropped in current implementations of ARM).

     Automat ic memory management

    Java uses an automatic garbage collector  to manage memory in the object lifecycle. Theprogrammer determines when objects are created, and the Java runtime is responsible forrecovering the memory once objects are no longer in use. Once no references to an object remain,the unreachable memory becomes eligible to be freed automatically by the garbage collector.Something similar to a memory leak may still occur if a programmer's code holds a reference to anobject that is no longer needed, typically when objects that are no longer needed are stored incontainers that are still in use. If methods for a nonexistent object are called, a "null pointerexception" is thrown.[41][42] 

    One of the ideas behind Java's automatic memory management model is that programmers can bespared the burden of having to perform manual memory management. In some languages, memoryfor the creation of objects is implicitly allocated on the stack, or explicitly allocated and deallocatedfrom the heap. In the latter case the responsibility of managing memory resides with theprogrammer. If the program does not deallocate an object, a memory leak occurs. If the program

    https://en.wikipedia.org/wiki/Microsoft_Windowshttps://en.wikipedia.org/wiki/Microsoft_Windowshttps://en.wikipedia.org/wiki/OS_Xhttps://en.wikipedia.org/wiki/OS_Xhttps://en.wikipedia.org/wiki/OS_Xhttps://en.wikipedia.org/wiki/OS_Xhttps://en.wikipedia.org/wiki/Linuxhttps://en.wikipedia.org/wiki/Linuxhttps://en.wikipedia.org/wiki/Linuxhttps://en.wikipedia.org/wiki/Solaris_(operating_system)https://en.wikipedia.org/wiki/Solaris_(operating_system)https://en.wikipedia.org/wiki/Solaris_(operating_system)https://en.wikipedia.org/wiki/Ecma_Internationalhttps://en.wikipedia.org/wiki/Ecma_Internationalhttps://en.wikipedia.org/wiki/Ecma_Internationalhttps://en.wikipedia.org/wiki/Ecma_Internationalhttps://en.wikipedia.org/wiki/De_facto_standardhttps://en.wikipedia.org/wiki/De_facto_standardhttps://en.wikipedia.org/wiki/De_facto_standardhttps://en.wikipedia.org/wiki/Java_Development_Kithttps://en.wikipedia.org/wiki/Java_Development_Kithttps://en.wikipedia.org/wiki/Java_Development_Kithttps://en.wikipedia.org/wiki/Java_compilerhttps://en.wikipedia.org/wiki/Java_compilerhttps://en.wikipedia.org/wiki/Javadochttps://en.wikipedia.org/wiki/Javadochttps://en.wikipedia.org/wiki/Javadochttps://en.wikipedia.org/wiki/JAR_(file_format)https://en.wikipedia.org/wiki/JAR_(file_format)https://en.wikipedia.org/wiki/JAR_(file_format)https://en.wikipedia.org/wiki/Debuggerhttps://en.wikipedia.org/wiki/Debuggerhttps://en.wikipedia.org/wiki/Debuggerhttps://en.wikipedia.org/wiki/OpenJDKhttps://en.wikipedia.org/wiki/OpenJDKhttps://en.wikipedia.org/wiki/Microsofthttps://en.wikipedia.org/wiki/Microsofthttps://en.wikipedia.org/wiki/Microsofthttps://en.wikipedia.org/wiki/Java_remote_method_invocationhttps://en.wikipedia.org/wiki/Java_remote_method_invocationhttps://en.wikipedia.org/wiki/Java_remote_method_invocationhttps://en.wikipedia.org/wiki/Java_Native_Interfacehttps://en.wikipedia.org/wiki/Java_Native_Interfacehttps://en.wikipedia.org/wiki/Java_Native_Interfacehttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-37https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-37https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-37https://en.wikipedia.org/wiki/Microsoft_Windowshttps://en.wikipedia.org/wiki/Microsoft_Windowshttps://en.wikipedia.org/wiki/Microsoft_Windowshttps://en.wikipedia.org/wiki/Java_Platform,_Enterprise_Editionhttps://en.wikipedia.org/wiki/Java_Platform,_Enterprise_Editionhttps://en.wikipedia.org/wiki/Java_Platform,_Enterprise_Editionhttps://en.wikipedia.org/wiki/Java_performancehttps://en.wikipedia.org/wiki/Java_performancehttps://en.wikipedia.org/wiki/Java_performancehttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-38https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-38https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-38https://en.wikipedia.org/wiki/Just-in-time_compilationhttps://en.wikipedia.org/wiki/Just-in-time_compilationhttps://en.wikipedia.org/wiki/Just-in-time_compilationhttps://en.wikipedia.org/wiki/Java_version_historyhttps://en.wikipedia.org/wiki/Java_version_historyhttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-40https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-40https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-40https://en.wikipedia.org/wiki/HotSpothttps://en.wikipedia.org/wiki/HotSpothttps://en.wikipedia.org/wiki/HotSpothttps://en.wikipedia.org/wiki/Lock_freehttps://en.wikipedia.org/wiki/Lock_freehttps://en.wikipedia.org/wiki/Lock_freehttps://en.wikipedia.org/wiki/Java_ConcurrentMaphttps://en.wikipedia.org/wiki/Java_ConcurrentMaphttps://en.wikipedia.org/wiki/Java_ConcurrentMaphttps://en.wikipedia.org/wiki/ARM_architecturehttps://en.wikipedia.org/wiki/ARM_architecturehttps://en.wikipedia.org/wiki/ARM_architecturehttps://en.wikipedia.org/wiki/Jazellehttps://en.wikipedia.org/wiki/Jazellehttps://en.wikipedia.org/wiki/Jazellehttps://en.wikipedia.org/wiki/Garbage_collection_(computer_science)https://en.wikipedia.org/wiki/Garbage_collection_(computer_science)https://en.wikipedia.org/wiki/Garbage_collection_(computer_science)https://en.wikipedia.org/wiki/Object_lifetimehttps://en.wikipedia.org/wiki/Object_lifetimehttps://en.wikipedia.org/wiki/Object_lifetimehttps://en.wikipedia.org/wiki/Unreachable_memoryhttps://en.wikipedia.org/wiki/Unreachable_memoryhttps://en.wikipedia.org/wiki/Unreachable_memoryhttps://en.wikipedia.org/wiki/Memory_leakhttps://en.wikipedia.org/wiki/Memory_leakhttps://en.wikipedia.org/wiki/Memory_leakhttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-41https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-41https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-41https://en.wikipedia.org/wiki/Stack_(abstract_data_type)https://en.wikipedia.org/wiki/Stack_(abstract_data_type)https://en.wikipedia.org/wiki/Stack_(abstract_data_type)https://en.wikipedia.org/wiki/Memory_management#DYNAMIChttps://en.wikipedia.org/wiki/Memory_management#DYNAMIChttps://en.wikipedia.org/wiki/Memory_management#DYNAMIChttps://en.wikipedia.org/wiki/Memory_leakhttps://en.wikipedia.org/wiki/Memory_leakhttps://en.wikipedia.org/wiki/Memory_leakhttps://en.wikipedia.org/wiki/Memory_leakhttps://en.wikipedia.org/wiki/Memory_management#DYNAMIChttps://en.wikipedia.org/wiki/Stack_(abstract_data_type)https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-41https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-41https://en.wikipedia.org/wiki/Memory_leakhttps://en.wikipedia.org/wiki/Unreachable_memoryhttps://en.wikipedia.org/wiki/Object_lifetimehttps://en.wikipedia.org/wiki/Garbage_collection_(computer_science)https://en.wikipedia.org/wiki/Jazellehttps://en.wikipedia.org/wiki/ARM_architecturehttps://en.wikipedia.org/wiki/Java_ConcurrentMaphttps://en.wikipedia.org/wiki/Lock_freehttps://en.wikipedia.org/wiki/HotSpothttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-40https://en.wikipedia.org/wiki/Java_version_historyhttps://en.wikipedia.org/wiki/Just-in-time_compilationhttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-38https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-38https://en.wikipedia.org/wiki/Java_performancehttps://en.wikipedia.org/wiki/Java_Platform,_Enterprise_Editionhttps://en.wikipedia.org/wiki/Microsoft_Windowshttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-37https://en.wikipedia.org/wiki/Java_Native_Interfacehttps://en.wikipedia.org/wiki/Java_remote_method_invocationhttps://en.wikipedia.org/wiki/Microsofthttps://en.wikipedia.org/wiki/OpenJDKhttps://en.wikipedia.org/wiki/Debuggerhttps://en.wikipedia.org/wiki/JAR_(file_format)https://en.wikipedia.org/wiki/Javadochttps://en.wikipedia.org/wiki/Java_compilerhttps://en.wikipedia.org/wiki/Java_Development_Kithttps://en.wikipedia.org/wiki/De_facto_standardhttps://en.wikipedia.org/wiki/Ecma_Internationalhttps://en.wikipedia.org/wiki/Ecma_Internationalhttps://en.wikipedia.org/wiki/Solaris_(operating_system)https://en.wikipedia.org/wiki/Linuxhttps://en.wikipedia.org/wiki/OS_Xhttps://en.wikipedia.org/wiki/OS_Xhttps://en.wikipedia.org/wiki/Microsoft_Windows

  • 8/17/2019 Java Deep Introduction

    8/20

    attempts to access or deallocate memory that has already been deallocated, the result is undefinedand difficult to predict, and the program is likely to become unstable and/or crash. This can bepartially remedied by the use of smart pointers, but these add overhead and complexity. Note thatgarbage collection does not prevent "logical" memory leaks,i.e., those where the memory is stillreferenced but never used.

    Garbage collection may happen at any time. Ideally, it will occur when a program is idle. It isguaranteed to be triggered if there is insufficient free memory on the heap to allocate a new object;this can cause a program to stall momentarily. Explicit memory management is not possible in Java.

    Java does not support C/C++ style pointer arithmetic, where object addresses and unsigned integers(usually long integers) can be used interchangeably. This allows the garbage collector to relocatereferenced objects and ensures type safety and security.

     As in C++ and some other object-oriented languages, variables of Java's primitive data types areeither stored directly in fields (for objects) or on the stack (for methods) rather than on the heap, asis commonly true for non-primitive data types (but see escape analysis). This was a consciousdecision by Java's designers for performance reasons.

    Java contains multiple types of garbage collectors. By default,[citation needed] HotSpot uses the parallelscavenge garbage collector . However, there are also several other garbage collectors that can be

    used to manage the heap. For 90% of applications in Java, the Concurrent Mark-Sweep (CMS)garbage collector is sufficient.[43] Oracle aims to replace CMS with the Garbage-First collector  (G1).[44] 

    SyntaxMain article: Java syntax 

    The syntax of Java is largely influenced by C++. Unlike C++, which combines the syntax forstructured, generic, and object-oriented programming, Java was built almost exclusively as anobject-oriented language.[15]  All code is written inside classes, and every data item is an object, withthe exception of the primitive data types, i.e. integers, floating-point numbers, boolean values, andcharacters, which are not objects for performance reasons. Java reuses some popular aspects ofC++ (such as printf() method).

    Unlike C++, Java does not support operator overloading[45] or  multiple inheritance for classes, thoughmultiple inheritance is supported for  interfaces.[46] This simplifies the language and aids in preventingpotential errors and anti-pattern design.

    Java uses comments similar to those of C++. There are three different styles of comments: a singleline style marked with two slashes (// ), a multiple line style opened with /*and closed with */ ,

    and the Javadoc commenting style opened with /**  and closed with */ . The Javadoc style of

    commenting allows the user to run the Javadoc executable to create documentation for the program.

    Example: 

    // This is an example of a single line comment using two slashes 

    /* This is an example of a multiple line comment using the slash and

    asterisk. 

    This type of comment can be used to hold a lot of information or deactivate 

    code, but it is very important to remember to close the comment. */  

     package fibsandlies; 

    https://en.wikipedia.org/wiki/Smart_pointerhttps://en.wikipedia.org/wiki/Smart_pointerhttps://en.wikipedia.org/wiki/Smart_pointerhttps://en.wikipedia.org/wiki/Pointer_(computer_programming)https://en.wikipedia.org/wiki/Pointer_(computer_programming)https://en.wikipedia.org/wiki/Pointer_(computer_programming)https://en.wikipedia.org/wiki/Primitive_data_typehttps://en.wikipedia.org/wiki/Primitive_data_typehttps://en.wikipedia.org/wiki/Primitive_data_typehttps://en.wikipedia.org/wiki/Stack-based_memory_allocationhttps://en.wikipedia.org/wiki/Stack-based_memory_allocationhttps://en.wikipedia.org/wiki/Stack-based_memory_allocationhttps://en.wikipedia.org/wiki/Escape_analysishttps://en.wikipedia.org/wiki/Escape_analysishttps://en.wikipedia.org/wiki/Escape_analysishttps://en.wikipedia.org/wiki/Wikipedia:Citation_neededhttps://en.wikipedia.org/wiki/Wikipedia:Citation_neededhttps://en.wikipedia.org/wiki/Wikipedia:Citation_neededhttps://en.wikipedia.org/w/index.php?title=Parallel_scavenge_garbage_collector&action=edit&redlink=1https://en.wikipedia.org/w/index.php?title=Parallel_scavenge_garbage_collector&action=edit&redlink=1https://en.wikipedia.org/w/index.php?title=Parallel_scavenge_garbage_collector&action=edit&redlink=1https://en.wikipedia.org/w/index.php?title=Parallel_scavenge_garbage_collector&action=edit&redlink=1https://en.wikipedia.org/wiki/Concurrent_mark_sweep_collectorhttps://en.wikipedia.org/wiki/Concurrent_mark_sweep_collectorhttps://en.wikipedia.org/wiki/Concurrent_mark_sweep_collectorhttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-43https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-43https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-43https://en.wikipedia.org/w/index.php?title=Garbage-First_collector&action=edit&redlink=1https://en.wikipedia.org/w/index.php?title=Garbage-First_collector&action=edit&redlink=1https://en.wikipedia.org/w/index.php?title=Garbage-First_collector&action=edit&redlink=1https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-44https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-44https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-44https://en.wikipedia.org/wiki/Java_syntaxhttps://en.wikipedia.org/wiki/Java_syntaxhttps://en.wikipedia.org/wiki/Java_syntaxhttps://en.wikipedia.org/wiki/C%2B%2Bhttps://en.wikipedia.org/wiki/C%2B%2Bhttps://en.wikipedia.org/wiki/C%2B%2Bhttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-design_goals-15https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-design_goals-15https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-design_goals-15https://en.wikipedia.org/wiki/Boolean_data_typehttps://en.wikipedia.org/wiki/Boolean_data_typehttps://en.wikipedia.org/wiki/Boolean_data_typehttps://en.wikipedia.org/wiki/Operator_overloadinghttps://en.wikipedia.org/wiki/Operator_overloadinghttps://en.wikipedia.org/wiki/Operator_overloadinghttps://en.wikipedia.org/wiki/Operator_overloadinghttps://en.wikipedia.org/wiki/Multiple_inheritancehttps://en.wikipedia.org/wiki/Multiple_inheritancehttps://en.wikipedia.org/wiki/Multiple_inheritancehttps://en.wikipedia.org/wiki/Interface_(Java)https://en.wikipedia.org/wiki/Interface_(Java)https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-oracle_multiple_inheritance-46https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-oracle_multiple_inheritance-46https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-oracle_multiple_inheritance-46https://en.wikipedia.org/wiki/Anti-patternhttps://en.wikipedia.org/wiki/Anti-patternhttps://en.wikipedia.org/wiki/Anti-patternhttps://en.wikipedia.org/wiki/Javadochttps://en.wikipedia.org/wiki/Javadochttps://en.wikipedia.org/wiki/Javadochttps://en.wikipedia.org/wiki/Javadochttps://en.wikipedia.org/wiki/Anti-patternhttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-oracle_multiple_inheritance-46https://en.wikipedia.org/wiki/Interface_(Java)https://en.wikipedia.org/wiki/Multiple_inheritancehttps://en.wikipedia.org/wiki/Operator_overloadinghttps://en.wikipedia.org/wiki/Operator_overloadinghttps://en.wikipedia.org/wiki/Boolean_data_typehttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-design_goals-15https://en.wikipedia.org/wiki/C%2B%2Bhttps://en.wikipedia.org/wiki/Java_syntaxhttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-44https://en.wikipedia.org/w/index.php?title=Garbage-First_collector&action=edit&redlink=1https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-43https://en.wikipedia.org/wiki/Concurrent_mark_sweep_collectorhttps://en.wikipedia.org/w/index.php?title=Parallel_scavenge_garbage_collector&action=edit&redlink=1https://en.wikipedia.org/w/index.php?title=Parallel_scavenge_garbage_collector&action=edit&redlink=1https://en.wikipedia.org/wiki/Wikipedia:Citation_neededhttps://en.wikipedia.org/wiki/Escape_analysishttps://en.wikipedia.org/wiki/Stack-based_memory_allocationhttps://en.wikipedia.org/wiki/Primitive_data_typehttps://en.wikipedia.org/wiki/Pointer_(computer_programming)https://en.wikipedia.org/wiki/Smart_pointer

  • 8/17/2019 Java Deep Introduction

    9/20

    import java.util.HashMap; 

    /** 

    * This is an example of a Javadoc comment; Javadoc can compile documentation 

    * from this text. Javadoc comments must immediately precede the class,

    method, or field being documented. 

    */  

     public class FibCalculator extends Fibonacci implements Calculator { 

     private static Map memoized = new HashMap(); 

    /* 

    * The main method written as follows is used by the JVM as a starting

     point for the program. 

    */  

     public static void main(String[] args) { 

    memoized.put(1, 1); 

    memoized.put(2, 1); 

    System.out.println(fibonacci(12)); //Get the 12th Fibonacci number

    and print to console 

    /** 

    * An example of a method written in Java, wrapped in a class. 

    * Given a non-negative number FIBINDEX, returns 

    * the Nth Fibonacci number, where N equals FIBINDEX. 

    * @param fibIndex The index of the Fibonacci number  

    * @return The Fibonacci number  

    */  

     public static int fibonacci(int fibIndex) { 

    if (memoized.containsKey(fibIndex)) { 

    return memoized.get(fibIndex); 

    } else { 

    int answer = fibonacci(fibIndex - 1) + fibonacci(fibIndex - 2); memoized.put(fibIndex, answer); 

    return answer; 

  • 8/17/2019 Java Deep Introduction

    10/20

    Examples"Hello, world!" program

    The traditional "Hello, world!" program can be written in Java as:[47] 

    class HelloWorldApp { 

     public static void main(String[] args) { 

    System.out.println("Hello World!"); // Prints the string to the

    console. 

    Source files must be named after the public class they contain, appending the suffix.java , for

    example, HelloWorldApp.java . It must first be compiled into bytecode, using aJava compiler , 

    producing a file named HelloWorldApp.class . Only then can it be executed, or "launched". The

    Java source file may only contain one public class, but it can contain multiple classes with other thanpublic access and any number of public inner classes. When the source file contains multipleclasses, make one class "public" and name the source file with that public class name.

     A class  that is not declared public  may be stored in any .java file. The compiler will generate a

    class file for each class defined in the source file. The name of the class file is the name of the class,with .class appended. For class file generation, anonymous classes are treated as if their name werethe concatenation of the name of their enclosing class, a$, and an integer.

    The keyword  public  denotes that a method can be called from code in other classes, or that a

    class may be used by classes outside the class hierarchy. The class hierarchy is related to the nameof the directory in which the .java file is located. This is called an access level modifier. Other accesslevel modifiers include the keywords private  and protected .

    The keyword static  in front of a method indicates a static method, which is associated only with

    the class and not with any specific instance of that class. Only static methods can be invoked withouta reference to an object. Static methods cannot access any class members that are not also static.Methods that are not designated static are instance methods, and require a specific instance of aclass to operate.

    The keyword void  indicates that the main method does not return any value to the caller. If a Java

    program is to exit with an error code, it must call System.exit() explicitly.

    The method name "main " is not a keyword in the Java language. It is simply the name of the

    method the Java launcher calls to pass control to the program. Java classes that run in managedenvironments such as applets and Enterprise JavaBeans do not use or need a main()  method. A

    Java program may contain multiple classes that havemain  methods, which means that the VMneeds to be explicitly told which class to launch from.

    The main method must accept an array of  String  objects. By convention, it is referenced

    as args  although any other legal identifier name can be used. Since Java 5, the main method can

    also use variable arguments, in the form of public static void main(String... args) ,

    allowing the main method to be invoked with an arbitrary number of String  arguments. The effect

    https://en.wikipedia.org/wiki/%22Hello,_world!%22_programhttps://en.wikipedia.org/wiki/%22Hello,_world!%22_programhttps://en.wikipedia.org/wiki/%22Hello,_world!%22_programhttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-47https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-47https://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-47https://en.wikipedia.org/wiki/Java_compilerhttps://en.wikipedia.org/wiki/Java_compilerhttps://en.wikipedia.org/wiki/Inner_classhttps://en.wikipedia.org/wiki/Inner_classhttps://en.wikipedia.org/wiki/Inner_classhttps://en.wikipedia.org/wiki/Class_(computer_programming)#Unnamedhttps://en.wikipedia.org/wiki/Class_(computer_programming)#Unnamedhttps://en.wikipedia.org/wiki/Class_(computer_programming)#Unnamedhttps://en.wikipedia.org/wiki/List_of_Java_keywordshttps://en.wikipedia.org/wiki/List_of_Java_keywordshttps://en.wikipedia.org/wiki/List_of_Java_keywordshttps://en.wikipedia.org/wiki/Method_(computer_programming)#Static_methodshttps://en.wikipedia.org/wiki/Method_(computer_programming)#Static_methodshttps://en.wikipedia.org/wiki/Method_(computer_programming)#Static_methodshttps://en.wikipedia.org/wiki/Enterprise_JavaBeanshttps://en.wikipedia.org/wiki/Enterprise_JavaBeanshttps://en.wikipedia.org/wiki/Enterprise_JavaBeanshttps://en.wikipedia.org/wiki/Array_data_typehttps://en.wikipedia.org/wiki/Array_data_typehttps://en.wikipedia.org/wiki/Array_data_typehttps://docs.oracle.com/javase/8/docs/api/java/lang/String.htmlhttps://docs.oracle.com/javase/8/docs/api/java/lang/String.htmlhttps://en.wikipedia.org/wiki/Variadic_functionhttps://en.wikipedia.org/wiki/Variadic_functionhttps://en.wikipedia.org/wiki/Variadic_functionhttps://en.wikipedia.org/wiki/Variadic_functionhttps://docs.oracle.com/javase/8/docs/api/java/lang/String.htmlhttps://en.wikipedia.org/wiki/Array_data_typehttps://en.wikipedia.org/wiki/Enterprise_JavaBeanshttps://en.wikipedia.org/wiki/Method_(computer_programming)#Static_methodshttps://en.wikipedia.org/wiki/List_of_Java_keywordshttps://en.wikipedia.org/wiki/Class_(computer_programming)#Unnamedhttps://en.wikipedia.org/wiki/Inner_classhttps://en.wikipedia.org/wiki/Java_compilerhttps://en.wikipedia.org/wiki/Java_(programming_language)#cite_note-47https://en.wikipedia.org/wiki/%22Hello,_world!%22_program

  • 8/17/2019 Java Deep Introduction

    11/20

    of this alternate declaration is semantically identical (theargs  parameter is still an array

    of String  objects), but it allows an alternative syntax for creating and passing the array.

    The Java launcher launches Java by loading a given class (specified on the command line or as anattribute in a JAR) and starting its public static void main(String[])method. Stand-alone

    programs must declare this method explicitly. The String[] args  parameter is

    an array of  String  objects containing any arguments passed to the class. The parameters

    to main  are often passed by means of a command line. 

    Printing is part of a Java standard library: The System  class defines a public static field called out .

    The out  object is an instance of the PrintStream  class and provides many methods for printing

    data to standard out, including  println(String)  which also appends a new line to the passed

    string.

    The string "Hello World!" is automatically converted to a String object by the compiler.

    Comprehensive example

    [hide]This section has multiple issues. Please help improve it (see how) or discuss these i

    This section does not cite any sources. (May 2013) 

    This section contains instructions, advice, or how-to content. (May 2013) 

    // OddEven.java 

    import javax.swing.JOptionPane; 

     public class OddEven { 

     private int userInput; // a whole number("int" means integer) 

    /** 

    * This is the constructor method. It gets called when an object of the

    OddEven type 

    * is being created. 

    */  

     public OddEven() { 

    /* 

    * In most Java programs constructors can initialize objects with

    default values, or create 

    * other objects that this object might use to perform its functions.

    In some Java programs, the 

    * constructor may simply be an empty function if nothing needs to be

    initialized prior to the 

    * functioning of the object. In this program's case, an empty

    constructor would suffice. 

    https://en.wikipedia.org/wiki/JAR_(file_format)https://en.wikipedia.org/wiki/JAR_(file_format)https://en.wikipedia.org/wiki/JAR_(file_format)https://en.wikipedia.org/wiki/Array_data_typehttps://en.wikipedia.org/wiki/Array_data_typehttps://en.wikipedia.org/wiki/Array_data_typehttps://docs.oracle.com/javase/8/docs/api/java/lang/String.htmlhttps://docs.oracle.com/javase/8/docs/api/java/lang/String.htmlhttps://en.wikipedia.org/wiki/Command-line_interfacehttps://en.wikipedia.org/wiki/Command-line_interfacehttps://en.wikipedia.org/wiki/Command-line_interfacehttps://docs.oracle.com/javase/8/docs/api/java/lang/System.htmlhttps://docs.oracle.com/javase/8/docs/api/java/lang/System.htmlhttps://docs.oracle.com/javase/8/docs/api/java/lang/System.html#outhttps://docs.oracle.com/javase/8/docs/api/java/lang/System.html#outhttps://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.htmlhttps://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.htmlhttps://en.wikipedia.org/wiki/Standard_streamshttps://en.wikipedia.org/wiki/Standard_streamshttps://en.wikipedia.org/wiki/Standard_streamshttps://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html#println(java.lang.String)https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html#println(java.lang.String)https://en.wikipedia.org/wiki/Java_(programming_language)https://en.wikipedia.org/wiki/Java_(programming_language)https://en.wikipedia.org/wiki/Java_(programming_language)https://en.wikipedia.org/w/index.php?title=Java_(programming_language)&action=edithttps://en.wikipedia.org/w/index.php?title=Java_(programming_language)&action=edithttps://en.wikipedia.org/w/index.php?title=Java_(programming_language)&action=edithttps://en.wikipedia.org/wiki/Help:Maintenance_template_removalhttps://en.wikipedia.org/wiki/Help:Maintenance_template_removalhttps://en.wikipedia.org/wiki/Help:Maintenance_template_removalhttps://en.wikipedia.org/wiki/Wikipedia:Citing_sourceshttps://en.wikipedia.org/wiki/Wikipedia:Citing_sourceshttps://en.wikipedia.org/wiki/Wikipedia:Citing_sourceshttps://en.wikipedia.org/wiki/Wikipedia:Verifiabilityhttps://en.wikipedia.org/wiki/Wikipedia:Verifiabilityhttps://en.wikipedia.org/wiki/Wikipedia:Verifiabilityhttps://en.wikipedia.org/wiki/Wikipedia:What_Wikipedia_is_not#NOTHOWTOhttps://en.wikipedia.org/wiki/Wikipedia:What_Wikipedia_is_not#NOTHOWTOhttps://en.wikipedia.org/wiki/Wikipedia:What_Wikipedia_is_not#NOTHOWTOhttps://en.wikipedia.org/wiki/Wikipedia:What_Wikipedia_is_not#NOTHOWTOhttps://en.wikipedia.org/wiki/Wikipedia:Verifiabilityhttps://en.wikipedia.org/wiki/Wikipedia:Citing_sourceshttps://en.wikipedia.org/wiki/Help:Maintenance_template_removalhttps://en.wikipedia.org/w/index.php?title=Java_(programming_language)&action=edithttps://en.wikipedia.org/wiki/Java_(programming_language)https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html#println(java.lang.String)https://en.wikipedia.org/wiki/Standard_streamshttps://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.htmlhttps://docs.oracle.com/javase/8/docs/api/java/lang/System.html#outhttps://docs.oracle.com/javase/8/docs/api/java/lang/System.htmlhttps://en.wikipedia.org/wiki/Command-line_interfacehttps://docs.oracle.com/javase/8/docs/api/java/lang/String.htmlhttps://en.wikipedia.org/wiki/Array_data_typehttps://en.wikipedia.org/wiki/JAR_(file_format)

  • 8/17/2019 Java Deep Introduction

    12/20

      * A constructor must exist; however, if the user doesn't put one in

    then the compiler  

    * will create an empty one. 

    */  

    /** 

    * This is the main method. It gets called when this class is run through

    a Java interpreter. 

    * @param args command line arguments (unused) 

    */  

     public static void main(final String[] args) { 

    /* 

    * This line of code creates a new instance of this class called

    "number" (also known as an 

    * Object) and initializes it by calling the constructor. The next

    line of code calls 

    * the "showDialog()" method, which brings up a prompt to ask you for

    a number. 

    */  

    OddEven number = new OddEven(); 

    number.showDialog(); 

     public void showDialog() { 

    /* 

    * "try" makes sure nothing goes wrong. If something does, 

    * the interpreter skips to "catch" to see what it should do. 

    */  

    try { 

    /* 

    * The code below brings up a JOptionPane, which is a dialog box  

    * The String returned by the "showInputDialog()" method is

    converted into * an integer, making the program treat it as a number instead of

    a word. 

    * After that, this method calls a second method, calculate()

    that will 

    * display either "Even" or "Odd." 

    */  

  • 8/17/2019 Java Deep Introduction

    13/20

      userInput = Integer.parseInt(JOptionPane.showInputDialog("Please

    enter a number.")); 

    calculate(); 

    } catch (final NumberFormatException e) { 

    /* 

    * Getting in the catch block means that there was a problem with

    the format of  

    * the number. Probably some letters were typed in instead of a

    number. 

    */  

    System.err.println("ERROR: Invalid input. Please type in a

    numerical value."); 

    /** 

    * When this gets called, it sends a message to the interpreter. 

    * The interpreter usually shows it on the command prompt (For Windows

    users) 

    * or the terminal (For *nix users).(Assuming it's open) 

    */  

     private void calculate() { 

    if ((userInput % 2) == 0) { 

    JOptionPane.showMessageDialog(null, "Even"); } else { 

    JOptionPane.showMessageDialog(null, "Odd"); 

      The import statement imports the JOptionPane  class from the javax.swing  package. 

      The OddEven  class declares a single  private  field of type int  named userInput . Every

    instance of the OddEven  class has its own copy of the userInput  field. The private declaration

    means that no other class can access (read or write) the userInput  field.

      OddEven()  is a public  constructor . Constructors have the same name as the enclosing class

    they are declared in, and unlike a method, have no return type. A constructor is used to initializean object that is a newly created instance of the class.

      The calculate()  method is declared without the static  keyword. This means that the

    method is invoked using a specific instance of the OddEven  class. (The referenceused to invoke

    the method is passed as an undeclared parameter of typeOddEven  named this .) The method

    https://en.wikipedia.org/wiki/List_of_Java_keywords#importhttps://en.wikipedia.org/wiki/List_of_Java_keywords#importhttps://en.wikip