Java Development Kit
Encyclopedia



The Java Development Kit (JDK) is an Oracle Corporation
Oracle Corporation
Oracle Corporation is an American multinational computer technology corporation that specializes in developing and marketing hardware systems and enterprise software products – particularly database management systems...

 product aimed at Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...

 developers. Since the introduction of Java, it has been by far the most widely used Java SDK
Software development kit
A software development kit is typically a set of software development tools that allows for the creation of applications for a certain software package, software framework, hardware platform, computer system, video game console, operating system, or similar platform.It may be something as simple...

. On 17 November 2006, Sun announced that it would be released under the GNU General Public License
GNU General Public License
The GNU General Public License is the most widely used free software license, originally written by Richard Stallman for the GNU Project....

 (GPL), thus making it free software
Free software
Free software, software libre or libre software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions that only ensure that further recipients can also do...

. This happened in large part on 8 May 2007; Sun contributed the source code to the OpenJDK
OpenJDK
OpenJDK is a free and open source implementation of the Java programming language. It is the result of an effort Sun Microsystems began in 2006...

.

JDK contents

The JDK has as its primary components a collection of programming tools, including:
  • java – the loader
    Loader (computing)
    In computing, a loader is the part of an operating system that is responsible for loading programs. It is one of the essential stages in the process of starting a program, as it places programs into memory and prepares them for execution...

     for Java applications. This tool is an interpreter and can interpret the class files generated by the javac
    Javac
    javac is the primary Java compiler, included in the Java Development Kit from Oracle Corporation.The compiler accepts source code conforming to the Java language specification and produces bytecode conforming to the Java Virtual Machine Specification .javac is itself written in Java...

     compiler. Now a single launcher is used for both development and deployment. The old deployment launcher, jre, comes with Sun JDK, and instead it has been replaced by this new java loader.
  • javac
    Javac
    javac is the primary Java compiler, included in the Java Development Kit from Oracle Corporation.The compiler accepts source code conforming to the Java language specification and produces bytecode conforming to the Java Virtual Machine Specification .javac is itself written in Java...

     – the compiler
    Compiler
    A compiler is a computer program that transforms source code written in a programming language into another computer language...

    , which converts source code into Java bytecode
    Java bytecode
    Java bytecode is the form of instructions that the Java virtual machine executes. Each bytecode opcode is one byte in length, although some require parameters, resulting in some multi-byte instructions. Not all of the possible 256 opcodes are used. 51 are reserved for future use...

  • appletviewer
    AppletViewer
    AppletViewer is a standalone, command line program from Sun to run Java applets. Appletviewer is generally used by developers for testing their applets before being deployed to a website....

     – this tool can be used to run and debug Java applets without a web browser
  • apt – the annotation-processing tool
    Metadata facility for Java
    The Metadata Facility for Java is a specification for Java that defines an API for annotating fields, methods, and classes as having particular attributes that indicate they should be processed in specific ways by development tools, deployment tools, or run-time libraries.The specification was...

     http://download.oracle.com/javase/1.5.0/docs/guide/apt/index.html
  • extcheck – a utility which can detect JAR-file conflicts
  • idlj – the IDL-to-Java compiler. This utility generates Java bindings
    Language binding
    In computing, a binding from a programming language to a library or OS service is an API providing that service in the language.Many software libraries are written in systems programming languages such as C or C++...

     from a given Java IDL
    Java Interface Definition Language
    In software development, Java Interface Definition Language, or Java IDL, is an implementation of the CORBA specification and enables interoperability and connectivity with heterogeneous objects. It is basically an Object Request Broker provided with JDK...

     file.
  • javadoc
    Javadoc
    Javadoc is a documentation generator from Sun Microsystems for generating API documentation in HTML format from Java source code.The "doc comments" format used by Javadoc is the de facto industry standard for documenting Java classes. Some IDEs, such as Netbeans and Eclipse automatically generate...

     – the documentation generator, which automatically generates documentation from source code
    Source code
    In computer science, source code is text written using the format and syntax of the programming language that it is being written in. Such a language is specially designed to facilitate the work of computer programmers, who specify the actions to be performed by a computer mostly by writing source...

     comments
  • jar – the archiver, which packages related class libraries
    Library (computer science)
    In computer science, a library is a collection of resources used to develop software. These may include pre-written code and subroutines, classes, values or type specifications....

     into a single JAR file
    JAR (file format)
    In software, JAR is an archive file format typically used to aggregate many Java class files and associated metadata and resources into one file to distribute application software or libraries on the Java platform.JAR files are built on the ZIP file format and have the .jar file extension...

    . This tool also helps manage JAR files.
  • javah – the C header and stub generator, used to write native methods
  • javap – the class file disassembler
    Disassembler
    A disassembler is a computer program that translates machine language into assembly language—the inverse operation to that of an assembler. A disassembler differs from a decompiler, which targets a high-level language rather than an assembly language...

  • javaws – the Java Web Start
    Java Web Start
    In computing, Java Web Start is a framework developed by Sun Microsystems that allows users to start application software for the Java Platform directly from the Internet using a web browser....

     launcher for JNLP applications
  • jconsole – Java Monitoring and Management Console
  • jdb – the debugger
    Debugger
    A debugger or debugging tool is a computer program that is used to test and debug other programs . The code to be examined might alternatively be running on an instruction set simulator , a technique that allows great power in its ability to halt when specific conditions are encountered but which...

  • jhat – Java Heap Analysis Tool (experimental)
  • jinfo – This utility gets configuration information from a running Java process or crash dump. (experimental)
  • jmap – This utility outputs the memory map for Java and can print shared object memory maps or heap memory details of a given process or core dump. (experimental)
  • jps – Java Virtual Machine Process Status Tool lists the instrumented HotSpot Java Virtual Machines (JVMs) on the target system. (experimental)
  • jrunscript – Java command-line script
    Shell script
    A shell script is a script written for the shell, or command line interpreter, of an operating system. It is often considered a simple domain-specific programming language...

     shell
    Shell (computing)
    A shell is a piece of software that provides an interface for users of an operating system which provides access to the services of a kernel. However, the term is also applied very loosely to applications and may include any software that is "built around" a particular component, such as web...

    .
  • jstack – utility which prints Java stack trace
    Stack trace
    A stack trace is a report of the active stack frames at a certain point in time during the execution of a program.It is commonly used during interactive and post-mortem debugging...

    s of Java threads (experimental)
  • jstat – Java Virtual Machine
    Java Virtual Machine
    A Java virtual machine is a virtual machine capable of executing Java bytecode. It is the code execution component of the Java software platform. Sun Microsystems stated that there are over 4.5 billion JVM-enabled devices.-Overview:...

     statistics monitoring tool (experimental)
  • jstatd – jstat daemon (experimental)
  • policytool – the policy creation and management tool, which can determine policy for a Java runtime, specifying which permissions are available for code from various sources
  • VisualVM
    VisualVM
    VisualVM is a tool that provides a visual interface for viewing detailed information about Java applications while they are running on a Java Virtual Machine...

     – visual tool integrating several command-line
    Command-line interface
    A command-line interface is a mechanism for interacting with a computer operating system or software by typing commands to perform specific tasks...

     JDK tools and lightweight performance and memory profiling capabilities
  • wsimport – generates portable JAX-WS
    JAX-WS
    The Java API for XML Web Services is a Java programming language API for creating web services. It is part of the Java EE platform from Sun Microsystems. Like the other Java EE APIs, JAX-WS uses annotations, introduced in Java SE 5, to simplify the development and deployment of web service clients...

     artifacts for invoking a web service.
  • xjc – Part of the Java API for XML Binding (JAXB) API. It accepts an XML schema and generates Java classes.


Experimental tools may not be available in future versions of the JDK.

The JDK also comes with a complete Java Runtime Environment, usually called a private runtime, due to the fact that it is separated from the "regular" JRE and has extra contents. It consists of a Java Virtual Machine
Java Virtual Machine
A Java virtual machine is a virtual machine capable of executing Java bytecode. It is the code execution component of the Java software platform. Sun Microsystems stated that there are over 4.5 billion JVM-enabled devices.-Overview:...

 and all of the class libraries present in the production environment, as well as additional libraries only useful to developers, such as the internationalization
Internationalization and localization
In computing, internationalization and localization are means of adapting computer software to different languages, regional differences and technical requirements of a target market...

 libraries and the IDL
Interface description language
An interface description language , or IDL for short, is a specification language used to describe a software component's interface...

 libraries.

Copies of the JDK also include a wide selection of example programs demonstrating the use of almost all portions of the Java API.

Ambiguity between a JDK and an SDK

The JDK forms an extended subset of a software development kit
Software development kit
A software development kit is typically a set of software development tools that allows for the creation of applications for a certain software package, software framework, hardware platform, computer system, video game console, operating system, or similar platform.It may be something as simple...

 (SDK). In the descriptions which accompany its recent releases for Java SE, EE, and ME, Sun acknowledges that under its terminology, the JDK forms the subset of the SDK which has the responsibility for the writing and running of Java programs. The remainder of the SDK comprises extra software, such as application servers, debuggers, and documentation.

Other JDKs

There are other JDKs commonly available for a variety of platforms, some of which started from the Sun JDK source and some which did not. All of them adhere to the basic Java specifications, but they often differ in explicitly unspecified areas, such as garbage collection, compilation strategies, and optimization techniques. They include:
  • GNU
    GNU
    GNU is a Unix-like computer operating system developed by the GNU project, ultimately aiming to be a "complete Unix-compatible software system"...

    's GCJ (The GNU Compiler for Java)
  • IBM J9
    IBM J9
    J9 is a Java Virtual Machine developed by IBM. The J9 VM is the basis of multiple IBM Java offerings, including WebSphere Micro Edition, as well as the basis of all IBM Java Development kits since version 5...

     JDK, for AIX, Linux, Windows, MVS, OS/400, Pocket PC, z/OS http://www-128.ibm.com/developerworks/java/jdk/
  • Oracle Corporation
    Oracle Corporation
    Oracle Corporation is an American multinational computer technology corporation that specializes in developing and marketing hardware systems and enterprise software products – particularly database management systems...

    's JRockit
    JRockit
    JRockit, a proprietary Java Virtual Machine originally developed by Appeal Virtual Machines and acquired by BEA Systems in 2002, became part of Oracle Fusion Middleware in 2008....

    JDK, for Windows, Linux and Solaris http://www.oracle.com/appserver/jrockit/index.html
  • Blackdown Java
    Blackdown Java
    Blackdown Java was a Linux port of Sun Microsystems's Java virtual machine, developed by a group of volunteers led by Karl Asha and Juergen Kreileder. It predated Sun's official Linux port, and supported Linux on architectures that the official version did not, including SPARC and PowerPC...

     – The Blackdown Group's port of Sun's JDK for Linux
  • Apple
    Apple Computer
    Apple Inc. is an American multinational corporation that designs and markets consumer electronics, computer software, and personal computers. The company's best-known hardware products include the Macintosh line of computers, the iPod, the iPhone and the iPad...

    's Mac OS Runtime for Java
    Mac OS Runtime for Java
    Mac OS Runtime for Java is Apple's proprietary virtual machine for Java-based applications in "Classic" Mac OS...

     JVM/JDK for Classic Mac OS
    Mac OS
    Mac OS is a series of graphical user interface-based operating systems developed by Apple Inc. for their Macintosh line of computer systems. The Macintosh user experience is credited with popularizing the graphical user interface...

     http://docs.info.apple.com/article.html?artnum=120209
  • Apache Harmony
    Apache Harmony
    Apache Harmony was an open source, free Java implementation, developed by the Apache Software Foundation. It was announced in early May 2005 and on October 25, 2006, the Board of Directors voted to make Apache Harmony a top-level project...

  • RedHat IcedTea
    IcedTea
    IcedTea is a build and integration project for OpenJDK launched by Red Hat in June 2007. The initial goal was to make the Java OpenJDK software which Sun Microsystems released as free software in 2007 usable without requiring any other software that is not free software and hence make it possible...

     , replacing the proprietary classpath in OpenJDK
    OpenJDK
    OpenJDK is a free and open source implementation of the Java programming language. It is the result of an effort Sun Microsystems began in 2006...


See also

  • Classpath (Java)
    Classpath (Java)
    Classpath is a parameter—set either on the command-line, or through an environment variable—that tells the Java Virtual Machine or the compiler where to look for user-defined classes and packages.-Overview and architecture:...

  • Java platform
  • Java version history
    Java version history
    The Java language has undergone several changes since JDK 1.0 as well as numerous additions of classes and packages to the standard library. Since J2SE 1.4, the evolution of the Java language has been governed by the Java Community Process , which uses Java Specification Requests to propose and...


External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK