FACTOID # 29: 73.3% of America's gross operating surplus in motion picture and sound recording industries comes from California.
 
 Home   Encyclopedia   Statistics   States A-Z   Flags   Maps   FAQ   About 
   
 
WHAT'S NEW
 

SEARCH ALL

FACTS & STATISTICS    Advanced view

Search encyclopedia, statistics and forums:

 

 

(* = Graphable)

 

 


Encyclopedia > Java programming language
Java
Paradigm: object-oriented
Appeared in: 1990s
Designed by: Sun Microsystems
Typing discipline: strong, static
Major implementations: numerous
Influenced by: Objective-C, C++, Smalltalk, Eiffel
Influenced: C#, D, J#, VJ#

Java is an object-oriented programming language developed by James Gosling and colleagues at Sun Microsystems in the early 1990s. Unlike conventional languages which are generally either designed to be compiled to native (machine) code, or interpreted from source code at runtime, Java is compiled to a bytecode which is then run (generally using JIT compilation) by a Java virtual machine. Image File history File links Java_Logo. ... A programming paradigm is a paradigmatic style of programming (compare with a methodology, which is a paradigmatic style of doing software engineering). ... In computer science, object-oriented programming, OOP for short, is a computer programming paradigm. ... Sun Microsystems, Inc. ... In computer science, a type system defines how a programming language classifies values and expressions into types, how it can manipulate those types and how they interact. ... Objective-C, often referred to as ObjC or more seldomly as Objective C or Obj-C, is an object oriented programming language implemented as an extension to C. It is used primarily on Mac OS X and GNUstep, two environments based on the OpenStep standard, and is the primary language... C++ (generally pronounced see plus plus) is a general-purpose, high-level programming language. ... Smalltalk is an object-oriented, dynamically typed, reflective programming language designed at Xerox PARC by Alan Kay, Dan Ingalls, Ted Kaehler, Adele Goldberg, and others during the 1970s, influenced by Sketchpad and Simula. ... Eiffel is an object-oriented programming language which emphasizes the production of robust software. ... The title given to this article is incorrect due to technical limitations. ... D is an object-oriented, imperative system programming language designed by Walter Bright of Digital Mars as a re-engineering of C/C++. He has done this by re-designing many C++ features, and borrowing ideas from other programming languages. ... The J# (pronounced J-sharp) programming language is a transitional language for programmers of Suns Java and Microsofts J++ languages, so they may use their existing knowledge, and applications on Microsofts . ... The J# (pronounced J-sharp) programming language is a transitional language for programmers of Suns Java and Microsofts J++ languages, so they may use their existing knowledge, and applications on Microsofts . ... In computer science, object-oriented programming, OOP for short, is a computer programming paradigm. ... A programming language is an artificial language that can be used to control the behavior of a machine (often a computer). ... James Gosling James Gosling (born May 19, 1955 near Calgary, Alberta, Canada) is a famous software developer, best known as the father of the Java programming language. ... Sun Microsystems, Inc. ... Source code (commonly just source or code) is any series of statements written in some human-readable computer programming language. ... Byte-code is a sort of intermediate code that is more abstract than machine code. ... In computing, just-in-time compilation (JIT), also known as dynamic translation, is a technique for improving the performance of bytecode-compiled programming systems, by translating bytecode into native machine code at runtime. ... A Java Virtual Machine (JVM), originally developed by Sun Microsystems, is a virtual machine that executes Java bytecode. ...


The language itself borrows much syntax from C and C++ but has a simpler object model and fewer low-level facilities. The C Programming Language, Brian Kernighan and Dennis Ritchie, the original edition that served for many years as an informal specification of the language The C programming language (often, just C) is a general-purpose, procedural, imperative computer programming language developed in the early 1970s by Dennis Ritchie for use... C++ (generally pronounced see plus plus) is a general-purpose, high-level programming language. ...


Java is only distantly related to JavaScript, though they have similar names and share a C-like syntax. JavaScript is the name of Netscape Communications Corporations implementation of ECMAScript, a scripting programming language based on the concept of prototypes. ... The C Programming Language, Brian Kernighan and Dennis Ritchie, the original edition that served for many years as an informal specification of the language The C programming language (often, just C) is a general-purpose, procedural, imperative computer programming language developed in the early 1970s by Dennis Ritchie for use... {{ Categories: | | ...

Contents


History

Java was started as a project called "Oak" by James Gosling in June 1991. Gosling's goals were to implement a virtual machine and a language that had a familiar C-like notation but with greater uniformity and simplicity than C/C++. The first public implementation was Java 1.0 in 1995. It made the promise of "Write Once, Run Anywhere" (WORA), free runtimes on popular platforms. It was fairly secure and its security was configurable, allowing for network and file access to be limited. The major web browsers soon incorporated it into their standard configurations in a secure "applet" configuration. It became popular quickly. New versions for large and small platforms (J2EE and J2ME) soon were designed with the advent of "Java 2". Sun has not announced any plans for a "Java 3". In general terms, a virtual machine in computer science is software that creates a virtualized environment between the computer platform and the end user in which the end user can operate software. ... Write once, run anywhere (WORA), or sometimes also Write once, run everywhere (WORE), is a slogan created by Sun Microsystems to illustrate the cross-platform benefits of the Java language. ...


In 1997, Sun approached the ISO/IEC JTC1 standards body and later the Ecma International to formalize Java, but it soon withdrew from the process.[1][2][3] Java remains a proprietary de facto standard that is controlled through the Java Community Process [4]. Sun makes most of its Java implementations available without charge, with revenue being generated by specialized products such as Java Enterprise System. Sun distinguishes between its Software Development Kit (SDK) and Runtime Environment (JRE) which is a subset of the SDK, the primary distinction being that the compiler is not present. Ecma International - European association for standardising information and communication systems came into existence in 1994, when the European Computer Manufacturers Association (ECMA) changed its name in order to reflect the international activities of the organisation (the long form of ECMA was dropped then, and capitalization changed to reflect this). ... HotSpot is the primary Java Virtual Machine for desktops and servers produced by Sun Microsystems. ...


The Sun Java SDK is available at no charge, and Java is the language often used in introductory computer programming courses.


Philosophy

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

  1. It should use the object-oriented programming methodology.
  2. It should allow the same program to be executed on multiple operating systems.
  3. It should contain built-in support for using computer networks.
  4. It should be designed to execute code from remote sources securely.
  5. It should be easy to use by selecting what was considered the good parts of other object-oriented languages.

To achieve the goals of networking support and remote code execution, Java programmers sometimes find it necessary to use extensions such as CORBA, Internet Communications Engine, or OSGi. In computer science, object-oriented programming, OOP for short, is a computer programming paradigm. ... A computer network is a system for communication between computers. ... In computing, Common Object Request Broker Architecture (CORBA) is a standard for software componentry, created and controlled by the Object Management Group (OMG). ... The Internet Communications Engine, or Ice, is a Remote Procedure Call and object middleware system developed by ZeroC and dual-licensed under the GNU GPL and a proprietary license. ... The OSGi Alliance (formerly known as the Open Services Gateway initiative) is an open standards organization. ...


Object orientation

The first characteristic, object orientation ("OO"), refers to a method of programming and language design. Although there are many interpretations of OO, one primary distinguishing idea is to design software so that the various types of data it manipulates are combined together with their relevant operations. Thus, data and code are combined into entities called objects. An object can be thought of as a self-contained bundle of behavior (code) and state (data). The principle is to separate the things that change from the things that stay the same; often, a change to some data structure requires a corresponding change to the code that operates on that data, or vice versa. This separation into coherent objects provides a more stable foundation for a software system's design. The intent is to make large software projects easier to manage, thus improving quality and reducing the number of failed projects. In computer science, object-oriented programming, OOP for short, is a computer programming paradigm. ... In strictly mathematical branches of computer science the term object is used in a purely mathematical sense to refer to any thing. While this interpretation is useful in the discussion of abstract theory, it is not concrete enough to serve as a primitive datatype in the discussion of more concrete...


Another primary goal of OO programming is to develop more generic objects so that software can become more reusable between projects. A generic "customer" object, for example, should in theory have roughly the same basic set of behaviors between different software projects, especially when these projects overlap on some fundamental level as they often do in large organizations. In this sense, software objects can hopefully be seen more as pluggable components, helping the software industry build projects largely from existing and well tested pieces, thus leading to a massive reduction in development times. Software reusability has met with mixed practical results, with two main difficulties: the design of truly generic objects is poorly-understood, and a methodology for broad communication of reuse opportunities is lacking. Some open source communities want to help ease the reuse problem, by providing authors with ways to disseminate information about generally reusable objects and object libraries. Software component representations: above the representation used in UML, below the representation commonly used by Microsofts COM objects. ... Open source refers to projects that are open to the public and which draw on other projects that are freely available to the general public. ...


Platform independence

The look and feel of Java Swing GUIs is independent of the platform on which they are running
The look and feel of Java Swing GUIs is independent of the platform on which they are running

The second characteristic, platform independence, means that programs written in the Java language must run similarly on diverse hardware. One should be able to write a program once and run it anywhere. Download high resolution version (726x686, 81 KB)Captured from 5. ... Download high resolution version (726x686, 81 KB)Captured from 5. ... Look and feel refers to design aspects of a graphical user interface - in terms of both colours, shapes, layout, typefaces, etc (the look); and, the behaviour of dynamic elements such as buttons, boxes, and menus (the feel). It is used in reference to both software and websites. ... This article or section needs a complete rewrite for the reasons listed on the talk page. ... A cross-platform (or platform independent) programming language, software application or hardware device works on more than one system platform (e. ... The terms computer program, software program, applications program, system software, or just program are used to refer to either an executable program by both lay people and computer programmers or the collection of source code from which an executable program is created (eg, compiled). ...


This is achieved by most Java compilers by compiling the Java language code "halfway" to bytecode (specifically Java bytecode)—simplified machine instructions specific to the Java platform. The code is then run on a virtual machine (VM), a program written in native code on the host hardware that interprets and executes generic Java bytecode. Further, standardized libraries are provided to allow access to features of the host machines (such as graphics, threading and networking) in unified ways. Note that, although there's an explicit compiling stage, at some point, the Java bytecode is interpreted or converted to native machine instructions by the JIT compiler. A diagram of the operation of a typical multi-language compiler. ... Byte-code is a sort of intermediate code that is more abstract than machine code. ... Java bytecode is the form of instructions that the Java virtual machine executes. ... In general terms, a virtual machine in computer science is software that creates a virtualized environment between the computer platform and the end user in which the end user can operate software. ... An interpreter is a computer program that executes other programs. ... A thread in computer science is short for a thread of execution. ... A computer network is a system for communication between computers. ... It has been suggested that Assembler be merged into this article or section. ... In computing, just-in-time compilation (JIT), also known as dynamic translation, is a technique for improving the performance of bytecode-compiled programming systems, by translating bytecode into native machine code at runtime. ...


There are also implementations of Java compilers that compile to native object code, such as GCJ, removing the intermediate bytecode stage, but the output of these compilers can only be run on a single architecture. In computer science, object file or object code is an intermediate representation of code generated by a compiler after it processes a source code file. ... The GNU Compiler for Java (GCJ) is a compiler for the Java programming language that is part of the GNU Compiler Collection (GCC). ... In computer engineering, computer architecture is the conceptual design and fundamental operational structure of a computer system. ...


Sun's license for Java insists that all implementations be "compatible". This resulted in a legal dispute with Microsoft after Sun claimed that the Microsoft implementation did not support the RMI and JNI interfaces and had added platform-specific features of their own. Sun sued and won both damages (some $20 million) and a court order enforcing the terms of the license from Sun. In response, Microsoft no longer ships Java with Windows, and in recent versions of Windows, Internet Explorer cannot support Java applets without a third-party plugin. However, Sun and others have made available Java run-time systems at no cost for those and other versions of Windows.


The first implementations of the language used an interpreted virtual machine to achieve portability. These implementations produced programs that ran more slowly than programs compiled to native executables, for instance written in C or C++, so the language suffered a reputation for poor performance. More recent JVM implementations produce programs that run significantly faster than before, using multiple techniques. In computer science, porting is the adaptation of a piece of software so that it will function in a different computing environment to that for which it was originally written. ...


The first technique is to simply compile directly into native code like a more traditional compiler, skipping bytecodes entirely. This achieves good performance, but at the expense of portability. Another technique, known as just-in-time compilation (JIT), translates the Java bytecodes into native code at the time that the program is run which results in a program that executes faster than interpreted code but also incurs compilation overhead during execution. More sophisticated VMs use dynamic recompilation, in which the VM can analyze the behavior of the running program and selectively recompile and optimize critical parts of the program. Dynamic recompilation can achieve optimizations superior to static compilation because the dynamic compiler can base optimizations on knowledge about the runtime environment and the set of loaded classes. JIT compilation and dynamic recompilation allow Java programs to take advantage of the speed of native code without losing portability. It has been suggested that Dynarec be merged into this article or section. ...


Portability is a technically difficult goal to achieve, and Java's success at that goal has been mixed. Although it is indeed possible to write programs for the Java platform that behave consistently across many host platforms, the large number of available platforms with small errors or inconsistencies led some to parody Sun's "Write once, run anywhere" slogan as "Write once, debug everywhere". Write once, run anywhere (WORA), or sometimes also Write once, run everywhere (WORE), is a slogan created by Sun Microsystems to illustrate the cross-platform benefits of the Java language. ... Debugging is a methodical process of finding and reducing the number of bugs, or defects, in a computer program or a piece of electronic hardware thus making it behave as expected. ...


Platform-independent Java is however very successful with server-side applications, such as Web services, servlets, and Enterprise JavaBeans, as well as with Embedded systems based on OSGi, using Embedded Java environments. According to the W3C a Web service[1] is a software system designed to support interoperable machine-to-machine interaction over a network. ... The Java Servlet API allows a software developer to add dynamic content to a web server using the Java platform. ... This article or section is in need of attention from an expert on the subject. ... A router, an example of an embedded system. ... The OSGi Alliance (formerly known as the Open Services Gateway initiative) is an open standards organization. ... In discussions of J2ME Java specifications, such as the CDC/CLDC device capability sets and the MIDP profile definition, attention needs to be given to Embedded Java, which additionally requires very specialized, optimized JVMs, and the means to update the installed software and services such as OSGi. ...


Automatic garbage collection

One idea behind Java's automatic memory management model is that programmers should be spared the burden of having to perform manual memory management. In some languages the programmer allocates memory to create any object stored on the heap and is responsible for later manually deallocating that memory to delete any such objects. If a programmer forgets to deallocate memory or writes code that fails to do so in a timely fashion, a memory leak can occur: the program will consume a potentially arbitrarily large amount of memory. In addition, if a region of memory is deallocated twice, the program can become unstable and may crash. Finally, in non garbage collected environments, there is a certain degree of overhead and complexity of user-code to track and finalize allocations. Often developers may box themselves into certain designs to provide reasonable assurances that memory leaks will not occur. Memory management is the act of managing computer memory. ... It has been suggested that this article or section be merged with Memory allocation. ... A memory leak is a particular kind of unnecessary memory consumption by a computer program, where the program fails to release memory that is no longer needed. ...


In Java, this potential problem is avoided by automatic garbage collection. The programmer determines when objects are created and the Java runtime is responsible for managing the objects' lifecycle. The program or other objects can reference an object by holding a reference to it (which, from a low-level point of view, is its address on the heap). When no references to an object remain, the Java garbage collector automatically deletes the unreachable object, freeing memory and preventing a memory leak. Memory leaks may still occur if a programmer's code holds a reference to an object that is no longer needed—in other words, they can still occur but at higher conceptual levels. In computer science, garbage collection (also known as GC) is a form of automatic memory management. ... In computer science, the object lifetime (or life cycle) of an object in object-oriented programming is the time between an objects creation (also known as instantiation or construction) till the object is no longer used, and is destructed or freed. ... In computer science, unreachable memory is a block of memory allocated dynamically where the program that allocated the memory no longer has any reachable pointer that refers to it. ...


The use of garbage collection in a language can also affect programming paradigms. If, for example, the developer assumes that the cost of memory allocation/recollection is low, they may choose to more freely construct objects instead of pre-initializing, holding and reusing them. With the small cost of potential performance penalities (inner-loop construction of large/complex objects), this facilitates thread-isolation (no need to synchronize as different threads work on different object instances) and data-hiding. The use of transient immutable Value-objects minimizes side-effect programming.


Comparing Java and C++, it is possible in C++ to implement similar functionality (for example, a memory management model for specific classes can be designed in C++ to improve speed and lower memory fragmentation considerably), with the possible cost of extra development time and some application complexity. In Java, garbage collection is built in and virtually invisible to the developer. That is, developers may have no notion of when garbage collection will take place as it may not necessarily correlate with any actions being explicitly performed by the code they write. Depending on intended application, this can be beneficial or diadvantageous: the programmer is freed from performing low-level tasks but at the same time lose the option of writing lower level code. C++ (generally pronounced see plus plus) is a general-purpose, high-level programming language. ...


Syntax

Main article: Java syntax

The syntax of Java is largely derived from C++. However, unlike C++, which combines the syntax for structured, generic, and object-oriented programming, Java was built from the ground up to be virtually fully object-oriented: everything in Java is an object with the exceptions of atomic datatypes (ordinal and real numbers, boolean values, and characters) and everything in Java is written inside a class. This article describes the syntax of programming languages. ...


Hello world

For an explanation of the tradition of programming "Hello World" see: Hello world program.

A hello world program is a software program that prints out Hello, world! on a display device. ...

Stand-alone application

 // Hello.java public class Hello { public static void main(String[] args) { System.out.println("Hello, world!"); } } 

This is a minimal usage of the JVM, but it does not demonstrate object-oriented programmming very well. No object is explicitly created in the above example since the keyword new is never used. The class "Hello" merely provides a namespace for the static "main" routine. Technically, the object System.out is used, but it is implicitly created by the JVM before the main routine is called.


Applet

Main article: Java applet

Java applets are programs that are embedded in other applications, typically in a Web page displayed in a Web browser. A Java applet is an applet delivered in the form of Java bytecode. ... Icons for Web browser shortcuts on an Apple computer (Safari, Internet Explorer, and Firefox). ...

 // Hello.java import java.applet.Applet; import java.awt.Graphics; public class Hello extends Applet { public void paint(Graphics gc) { gc.drawString("Hello, world!", 65, 95); } } 

This applet will simply draw a diagonal line in the rectangle within which the applet will run. This is a slightly better example of using Java's OO features in that the class explicitly extends the basic "Applet" class, that it overrides the "paint" method and that it uses import statements.

 <!-- Hello.html --> <html> <head> <title>Hello World Applet</title> </head> <body> <applet code="Hello" width="200" height="200"> </applet> </body> </html> 

An applet is placed in an HTML document using the <applet> HTML element. The applet tag has three attributes set: code="Hello" specifies the name of the Applet class and width="200" height="200" sets the pixel width and height of the applet. (Applets may also be embedded in HTML using either the object or embed element, although support for these elements by Web browsers is inconsistent.[1][2]) An excerpt of HTML code with syntax highlighting In computing, HyperText Markup Language (HTML) is a markup language designed for the creation of web pages with hypertext and other information to be displayed in a web browser. ... In computing, an HTML element indicates structure in an HTML document. ...


Servlet

Main article: Java Servlet

Java servlets are server-side Java EE components that generate responses to requests from clients. The Java Servlets API, invented by Sun Microsystems [1], allows a software developer to add dynamic content to a web server using the Java platform. ... In computer networking, the term server-side refers to operations that are performed by the server in a client-server relationship. ... In computing, a client is a system that accesses a (remote) service on another computer by some kind of network. ...

 // Hello.java import java.io.*; import javax.servlet.*; 
 public class Hello extends GenericServlet { public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter pw = response.getWriter(); pw.println("Hello, world!"); pw.close(); } } 

The import statements direct the Java compiler to include all of the public classes and interfaces from the java.io and javax.servlet packages in the compilation. lkfnfj cdac ... A Java package is a Java programming language mechanism for organizing classes into namespaces. ...


The Hello class extends the GenericServlet class; the GenericServlet class provides the interface for the server to forward requests to the servlet and control the servlet's lifecycle. In information technology, a server is a computer system that provides services to other computing systems—called clients—over a network. ...


The Hello class overrides the service(ServletRequest, ServletResponse) method defined by the Servlet interface to provide the code for the service request handler. The service() method is passed a ServletRequest object that contains the request from the client and a ServletResponse object used to create the response returned to the client. The service() method declares that it throws the exceptions ServletException and IOException if a problem prevents it from responding to the request. lkfnfj cdac ... Exception handling is a programming language construct or computer hardware mechanism designed to handle the occurrence of some condition that changes the normal flow of execution. ...


The setContentType(String) method in the response object is called to set the MIME content type of the returned data to "text/html". The getWriter() method in the response returns a PrintWriter object that is used to write the data that is sent to the client. The println(String) method is called to write the "Hello, world!" string to the response and then the close() method is called to close the print writer, which causes the data that has been written to the stream to be returned to the client. Multipurpose Internet Mail Extensions (MIME) is an Internet Standard that extends the format of e-mail to support text in character sets other than US-ASCII, non-text attachments, multi-part message bodies, and header information in non-ASCII character sets. ...


Swing application

Swing is the advanced graphical user interface library for the Java SE platform. Example Swing widgets Swing is a GUI toolkit for Java. ... Illustration of an application which may use libvorbisfile. ...

 // Hello.java import javax.swing.*; public class Hello extends JFrame { Hello() { setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); add(new JLabel("Hello, world!")); pack(); } public static void main(String[] args) { new Hello().setVisible(true); } } 

The import statement directs the Java compiler to include all of the public classes and interfaces from the javax.swing package in the compilation.


The Hello class extends the JFrame class; the JFrame class implements a window with a title bar with a close control. An example of a graphical user interface in Windows XP, with the My Music window displayed In computing, a window is a visual area, usually rectangular in shape, containing some kind of user interface, displaying the output of and allowing input for one of a number of simultaneously running computer... The title bar is that part of a window where the title of the window appears. ... A widget (or control) is an interface component that a computer user interacts with, such as a window or a text box. ...


The Hello() constructor initializes the frame by first calling the setDefaultCloseOperation(int) method inherited from JFrame to set the default operation when the close control on the title bar is selected to WindowConstants.DISPOSE_ON_CLOSE—this causes the JFrame to be disposed of when the frame is closed (as opposed to merely hidden), which allows the JVM to exit and the program to terminate. Next a new JLabel is created for the string "Hello, world!" and the add(Component) method inherited from the Container superclass is called to add the label to the frame. The pack() method inherited from the Window superclass is called to size the window and layout its contents. In object-oriented programming, a constructor in a class is a special method (function) that can be used to create objects of the class and never has a return type. ... Layout, in publishing, is the process of arranging editorial content, advertising, graphics and other information in a manner that creates an effective presentation. ...


The main() method is called by the JVM when the program starts. It instantiates a new Hello frame and causes it to be displayed by calling the setVisible(boolean) method inherited from the Component superclass with the boolean parameter true. Note that once the frame is displayed, exiting the main method does not cause the program to terminate because the AWT event dispatching thread remains active until all of the Swing top-level windows have been disposed. In object-oriented programming, an instance is an object that belongs to a class. ... The event dispatching thread (EDT) is a background thread used in Java to process events from the Abstract Windowing Toolkit (AWT) graphical user interface event queue. ...


Criticism

Main article: Java criticisms

Java was intended to serve as a novel way to manage software complexity. Most consider Java technology to deliver reasonably well on this promise. Java does not universally accommodate all programming styles, environments. See Java criticisms for a thorough analysis of common criticisms about the language. The Java programming language was intended to serve as a novel way to manage software complexity. ... The Java programming language was intended to serve as a novel way to manage software complexity. ...


Performance

Partly due to the early versions of the language, Java has often been perceived as significantly slower, and more memory-consuming, than natively compiled languages such as C or C++. Performance has increased substantially since then, and relative performance of JIT compilers as compared to native compilers has in tests been shown to be quite similar. However, these claims and the performed tests are common subjects of debate and controversy. The C Programming Language, Brian Kernighan and Dennis Ritchie, the original edition that served for many years as an informal specification of the language The C programming language (often, just C) is a general-purpose, procedural, imperative computer programming language developed in the early 1970s by Dennis Ritchie for use... C++ (generally pronounced see plus plus) is a general-purpose, high-level programming language. ... See also Just in time for the business technique In computing, just-in-time compilation (JIT), also known as dynamic translation, is a technique for improving the performance of interpreted programs. ...


Look and feel

The default look and feel of GUI applications written in Java using the Swing toolkit is very different from native applications. It is possible to specify a different look and feel through the pluggable look and feel system. Clones of Windows, GTK and Motif are supplied by Sun. Apple also provides an Aqua look and feel for Mac OS X. Though prior implementations of these look and feels have been considered lacking, Java SE 6 addresses this problem by using more native widget drawing routines of the underlying platforms. Look and feel refers to design aspects of a graphical user interface - in terms of both colours, shapes, layout, typefaces, etc (the look); and, the behaviour of dynamic elements such as buttons, boxes, and menus (the feel). It is used in reference to both software and websites. ... This article or section needs a complete rewrite for the reasons listed on the talk page. ... Example Swing widgets Swing is a GUI toolkit for Java. ... Pluggable look and feel is a mecanism used in some Widget toolkits allowing to change the look and feel of a graphical user interface at runtime. ... Microsoft Windows is a family of operating systems by Microsoft for use on personal computers, although versions of Windows designed for servers, embedded devices, and other platforms also exist. ... The title given to this article is incorrect due to technical limitations. ... Motif (or capitalized MOTIF) is a graphical widget toolkit for building graphical user interfaces under the X Window System on UNIX and other POSIX-compliant systems. ... Apple Computer, Inc. ... Mac OS X 10. ... Mac OS X is the latest version of the Mac OS operating system for Macintosh computers. ...


Lack of OO purity

Java's primitive types are not objects. Primitive types hold their values in the stack rather than being references to values. This was a conscious decision by Java's designers for performance reasons. Because of this, Java is not considered to be a pure object-oriented programming language. However, as of Java 5.0, autoboxing enables programmers to write as if primitive types are their wrapper classes, and freely interchange between them for improved flexibility. To meet Wikipedias quality standards, this article or section may require cleanup. ... In computer science, an object type (a. ...


Java designers decided not to implement certain features present in other OO languages, including:

  • multiple inheritance
  • operator overloading
  • class properties
  • tuples

Single-paradigm language

Java is predominantly a single-paradigm language. However, with the addition of static imports in Java 5.0 the procedural paradigm is better accommodated than in earlier versions of Java. A programming paradigm is a paradigmatic style of programming (compare with a methodology, which is a paradigmatic style of doing software engineering). ...


Resources

Java Runtime Environment

The Java Runtime Environment or JRE is the software required to run any application deployed on the Java Platform. End-users commonly use a JRE in software packages and Web browser plugins. Sun also distributes a superset of the JRE called the Java 2 SDK (more commonly known as the JDK), which includes development tools such as the Java compiler, Javadoc, and debugger. Java is an object-oriented programming language developed primarily by James Gosling and colleagues at Sun Microsystems. ... Application software is a loosely defined subclass of computer software that employs the capabilities of a computer directly to a task that the user wishes to perform. ... Economics and commerce define an end-user as the person who uses a product. ... A software package is a bundle of one or several files that either are necessary for the distribution and installation of a computer program, or which will upgrade and install additional features for an existing program already installed on a computer. ... A plugin (or plug-in) is a computer program that interacts with a main application (a web browser or an email program, for example) to provide a certain, usually very specific, function. ... A Software Development Kit, or SDK for short, is typically a set of development tools that allows a software engineer to create applications for a certain software package, software framework, hardware platform, computer system, operating system or similar. ... A diagram of the operation of a typical multi-language compiler. ... Javadoc is a computer software tool from Sun Microsystems for generating API documentation into HTML format from Java source code. ... A debugger is a computer program that is used to debug (and sometimes test or optimize) other programs. ...


Components

Illustration of an application which may use libvorbisfile. ... It has been suggested that this article or section be merged with Managed code. ... Source code (commonly just source or code) is any series of statements written in some human-readable computer programming language. ... A binary tree, a simple type of branching linked data structure. ... Look up list in Wiktionary, the free dictionary. ... It has been suggested that Map (C++ container) be merged into this article or section. ... A tree structure is a way of representing the hierarchical nature of a structure in a graphical form. ... In computer science, the set is a collection of certain values without any particular order. ... The Extensible Markup Language (XML) is a W3C-recommended general-purpose markup language for creating special-purpose markup languages, capable of describing many different kinds of data. ... In computer science, parsing is the process of analyzing an input sequence (read from a file or a keyboard, for example) in order to determine its grammatical structure with respect to a given formal grammar. ... Internationalization and localization are means of adapting products such as publications or software for non-native environments, especially other nations and cultures. ... Java Database Connectivity, or JDBC, is an API for the Java programming language that defines how a client may access a database. ... An application programmatic interface (API) is the interface that a computer system, library or application provides in order to allow requests for services to be made of it by other computer programs, and/or to allow data to be exchanged between them. ... The Java Naming and Directory Interface (JNDI) is an API for directory services. ... The Java Remote Method Invocation API, or RMI, is a Java application programming interface for performing remote procedural calls. ... In computing, Common Object Request Broker Architecture (CORBA) is a standard for software componentry, created and controlled by the Object Management Group (OMG). ... The user interface is the part of a system exposed to users. ... The term native mode is used in computing as follows. ... The Abstract Windowing Toolkit (AWT) is Javas platform_independent windowing, graphics, and user_interface widget toolkit. ... This article or section needs a complete rewrite for the reasons listed on the talk page. ... Example Swing widgets Swing is a GUI toolkit for Java. ... A Java Virtual Machine (JVM), originally developed by Sun Microsystems, is a virtual machine that executes Java bytecode. ... A Java applet is an applet delivered in the form of Java bytecode. ... Icons for Web browser shortcuts on an Apple computer (Safari, Internet Explorer, and Firefox). ... Java Web Start, introduced in Java 2, allows provisioning applications over the Web by clicking a desktop icon or a link on a website. ... Economics and commerce define an end-user as the person who uses a product. ...

APIs

Sun has defined three platforms targeting different application environments and segmented many of its APIs so that they belong to one of the platforms. The platforms are: An application programmatic interface (API) is the interface that a computer system, library or application provides in order to allow requests for services to be made of it by other computer programs, and/or to allow data to be exchanged between them. ...

The classes in the Java APIs are organized into separate groups called packages. Each package contains a set of related interfaces, classes and exceptions. Refer to the separate platforms for a description of the packages available. Java Micro Edition (Java ME or as it used to be referred to J2ME), is a runtime and collection of Java APIs for the development of software for resource contrained devices such as PDAs, cell phones and other consumer appliances. ... Java Platform, Standard Edition or Java SE (formerly known up to version 5. ... Java Platform, Enterprise Edition or Java EE (formerly known as Java 2 Platform, Enterprise Edition or J2EE up to version 1. ... In object-oriented programming, classes are used to group related variables and functions. ... A Java package is a Java programming language mechanism for organizing classes into namespaces. ... lkfnfj cdac ... Exception handling is a programming language construct or computer hardware mechanism designed to handle the occurrence of some condition that changes the normal flow of execution. ...


The set of APIs is controlled by Sun Microsystems in cooperation with others through the Java Community Process program. Companies or individuals participating in this process can influence the design and development of the APIs. This process has been a subject of controversy. The Java Community Process or JCP, established in 1995, is a formalized process which allows interested parties to be involved in the definition of future versions and features of the Java platform. ...


In 2004, IBM and BEA publicly supported the notion of creating an official open source implementation of Java. As of 2006, Sun has agreed that they will eventually open source Java, the When and How are still to be defined.


Extensions and related architectures

The extensions to standard Java are typically in javax.* packages. They are not included in the JDK or JRE. Extensions and architectures closely tied to the Java programming language include: This page talks about the programming concept; for other meanings, see extension. ...

  • Java EE (previously J2EE) (Java Platform, Enterprise Edition—for distributed enterprise applications)
  • Java ME (previously J2ME) (Java Platform, Micro Edition—for PDAs and cellular phones)
  • JMF (Java Media Framework)
  • JNDI (Java Naming and Directory Interface)
  • JSML (Java Speech API Markup Language)
  • JDBC (Java Database Connectivity)
  • JDO (Java Data Objects)
  • JAI (Java Advanced Imaging)
  • JAIN (Java API for Integrated Networks)
  • JDMK (Java Dynamic Management Kit)
  • Jini (a network architecture for the construction of federated distributed systems)
  • Jiro
  • Java Card
  • JavaSpaces
  • JML (Java Modeling Language)
  • JMI (Java Metadata Interface)
  • JMX (Java Management Extensions)
  • JSP (JavaServer Pages)
  • JSF (JavaServer Faces)
  • JNI (Java Native Interface)
  • JXTA (Open Protocols for Peer-to-Peer (P2P) Virtual Network)
  • Java 3D (A high level API for 3D graphics programming)
  • JOGL (Java OpenGL—A low level API for 3D graphics programming, using OpenGL)
  • LWJGL (Light Weight Java Game Library—A low level API providing access to OpenGL, OpenAL and various input devices)
  • OSGi (Dynamic Service Management and Remote Maintenance)

Java Platform, Enterprise Edition or Java EE (formerly known as Java 2 Platform, Enterprise Edition or J2EE up to version 1. ... Java Micro Edition (Java ME or as it used to be referred to J2ME), is a runtime and collection of Java APIs for the development of software for resource contrained devices such as PDAs, cell phones and other consumer appliances. ... The Java Media Framework API (JMF) enables audio, video and other time-based media to be added to applications and applets built on Java technology. ... The Java Naming and Directory Interface (JNDI) is an API for directory services. ... JSML is an acronym for the Java Speech API Markup Language Specification. ... Java Database Connectivity, or JDBC, is an API for the Java programming language that defines how a client may access a database. ... Java Data Objects, or JDO, is a specification of Java object persistence. ... Java Advanced Imaging (JAI) is a Java platform extension API which provides a set of object-oriented interfaces that support a simple, high-level programming model which lets you manipulate images easily. ... JAIN is an activity within the Java Community Process, developing APIs for the creation of telephony (voice and data) services. ... The Java Dynamic Management Kit or JDMK is a Java technology that provides a Java API and a collection of software tools for developing and designing JMX based applications. ... Jiniâ„¢ (pronounced like genie) is a network architecture for the construction of distributed systems where scale, rate of change and complexity of interactions within and between networks are extremely important and cannot be satisfactorily addressed by existing technologies. ... This article is about federal states. ... This article or section should be merged with Distributed computing In computer science, a distributed system is an application that consists of components running on different computers concurrently. ... Jiro, or Ziro, is the name of a town in Lower Subansiri, Arunachal Pradesh, India. ... Java Card refers to a technology that allows small Java-based applications (applets) to be run securely on smart cards and similar devices. ... JavaSpaces is a service specification. ... The Java Modeling Language (JML) follows the design by contract paradigm. ... Java Metadata Interface or JMI is a platform neutral specification that defines the creation, access, storage, lookup and exchange of metadata. ... Java Management Extensions or JMX is a Java technology that supplies tools for managing and monitoring applications, system objects, devices (e. ... JavaServer Pages (JSP) is a Java technology that allows software developers to dynamically generate HTML, XML or other types of documents in response to a Web client request. ... JavaServer Faces (aka JSF) is a Java-based web application framework that simplifies the development of user interfaces for J2EE applications. ... The Java Native Interface (JNI) is a programming framework that allows Java code running in the Java virtual machine (VM) to call and be called by native applications (programs specific to a hardware and operating system platform) and libraries written in other languages, such as C, C++ and assembly. ... JXTA (Juxtapose) is Open Source peer-to-peer platform created by Sun Microsystems in 2001. ... A peer-to-peer (or P2P) computer network is a network that relies on the computing power and bandwidth of the participants in the network rather than concentrating it in a relatively few servers. ... Java 3D is a scene graph based 3D API for the Java platform from Sun Microsystems. ... Java OpenGL (JOGL) is one of many wrapper libraries that allow OpenGL to be used in the Java programming language. ... OpenGL official logo OpenGL (Open Graphics Library) is a standard specification defining a cross-language cross-platform API for writing applications that produce 3D computer graphics (and 2D computer graphics as well). ... The Lightweight Java Game Library (LWJGL) is a solution aimed directly at professional and amateur Java programmers alike to enable commercial quality games to be written in Java. ... OpenGL official logo OpenGL (Open Graphics Library) is a standard specification defining a cross-language cross-platform API for writing applications that produce 3D computer graphics (and 2D computer graphics as well). ... OpenAL logo OpenAL (Open Audio Library) is a cross-platform audio API. It is designed for efficient rendering of multichannel three dimensional positional audio. ... The OSGi Alliance (formerly known as the Open Services Gateway initiative) is an open standards organization. ...

See also

This article describes the syntax of programming languages. ... The following is a list of Java keywords. ... A Java Virtual Machine (JVM), originally developed by Sun Microsystems, is a virtual machine that executes Java bytecode. ... The Java platform is the name for a computing environment, or platform, from Sun Microsystems which can run applications developed using the Java programming language and set of development tools. ... A Java applet is an applet delivered in the form of Java bytecode. ... The Classpath is an argument set on the command-line that tells the Java Virtual Machine where to look for user-defined classes and packages in Java programs. ... Java Platform, Standard Edition or Java SE (formerly known up to version 5. ... JavaOS is an operating system with a Java virtual machine as a fundamental component. ... To meet Wikipedias quality standards, this article may require cleanup. ... This article or section seems not to be written in the formal tone expected of an encyclopedia entry. ... Programming languages are used for controlling the behavior of a machine (often a computer). ... A Java User Group (JUG) is a community of users of the Java programming language. ... The Java Community Process or JCP, established in 1995, is a formalized process which allows interested parties to be involved in the definition of future versions and features of the Java platform. ... JavaOne is an annual conference (since 1996) put on by Sun Microsystems to discuss Java technologies, primarily among Java developers. ... Join Java is a programming language that extends the standard Java programming language with the Join Semantics of the Join Calculus. ... Javapedia is a project openly inspired by Wikipedia. ...

Books about Java

The Java Tutorial, Fourth Edition
The Java Tutorial, Fourth Edition
  • The Java Tutorial, Fourth Edition, Sharon Zakhour, Addison-Wesley Professional, Sep. 29, 2006. ISBN 0-321-33420-5

Image File history File links Zakhour_java. ... Image File history File links Zakhour_java. ...

Lists

This is a list of scripting languages available for the Java platform: Groovy JavaScript (via Rhino) Jython Jelly BeanShell JRuby Tcl/Java Sleep ObjectScript Pnuts Judoscript the Bean Scripting Framework (BSF) Yoix Hecl A more comprehensive list (along with other languages beyond scripting) is available on the Languages for the... This is a list of Java Virtual Machines. ...

Notes

  1. ^ Java Study Group
  2. ^ Why Java™ Was - Not - Standardized Twice
  3. ^ What is ECMA--and why Microsoft cares
  4. ^ Java Community Process website

References

April 22 is the 112th day of the year in the Gregorian calendar (113th in leap years). ... 2005 (MMV) was a common year starting on Saturday of the Gregorian calendar. ... James Gosling James Gosling (born May 19, 1955 near Calgary, Alberta, Canada) is a famous software developer, best known as the father of the Java programming language. ... April 22 is the 112th day of the year in the Gregorian calendar (113th in leap years). ... 2005 (MMV) was a common year starting on Saturday of the Gregorian calendar. ... James Gosling James Gosling (born May 19, 1955 near Calgary, Alberta, Canada) is a famous software developer, best known as the father of the Java programming language. ... William Nelson Joy (born 1954), commonly known as Bill Joy, co-founded Sun Microsystems in 1982 along with Vinod Khosla, Scott McNealy and Andy Bechtolsheim, and served as chief scientist at the company until 2003. ... Guy Lewis Steele, Jr. ...

External links

Wikibooks
Wikibooks Programming has more about this subject:
Java
Wikibooks
Wikibooks has a book on the topic of

Image File history File links Wikibooks-logo-en. ... Image File history File links Wikibooks-logo-en. ... Wikibooks logo Wikibooks, previously called Wikimedia Free Textbook Project and Wikimedia-Textbooks, is part of the Wikimedia Foundation. ...

Sun

Java Specification Requests

There are several JSRs related to the Java Language and core API packages. The Java Community Process or JCP, established in 1995, is a formalized process which allows interested parties to be involved in the definition of future versions and features of the Java platform. ...

  • JSR 14 Add Generic Types To The Java Programming Language (J2SE 5.0)
  • JSR 41 A Simple Assertion Facility (J2SE 1.4)
  • JSR 47 Logging API Specification (J2SE 1.4)
  • JSR 51 New I/O APIs for the Java Platform (J2SE 1.4)
  • JSR 59 J2SE Merlin Release Contents (J2SE 1.4)
  • JSR 121 Application Isolation API (not yet included)
  • JSR 133 Java Memory Model and Thread Specification Revision (J2SE 5.0)
  • JSR 166 Concurrency Utilities (J2SE 5.0)
  • JSR 175 A Metadata Facility for the Java Programming Language (J2SE 5.0)
  • JSR 176 J2SE 5.0 (Tiger) Release Contents (J2SE 5.0)
  • JSR 201 Extending the Java Programming Language with Enumerations, Autoboxing, Enhanced for loops and Static Import (J2SE 5.0)
  • JSR 203 More New I/O APIs for the Java Platform ("NIO.2") (Java SE 7)
  • JSR 204 Unicode Supplementary Character Support (J2SE 5.0) – support for Unicode 3.1
  • JSR 270 Java SE 6 ("Mustang") Release Contents (Java SE 6)
  • JSR 275 Physical Units/Quantities Support (Java SE) (reference implementation from JScience)
  • JSR 901 Java Language Specification (J2SE 5.0)

In computer science, generics is a technique that allows one value to take different datatypes (so-called polymorphism) as long as certain contracts such as subtypes and signature are kept. ... In computing, New I/O, usually called NIO, is a collection of APIs in Java programming language that offers features for intensive I/O operations. ... The Application Isolation API (JSR 121) provides a specification for isolating and controlling Java application life cycles within a single Java Virtual Machine (JVM) or between multiple JVMs. ... A Metadata Facility for the Java Programming Language, commonly referred to as JSR-175, is specification developed through the Java Community Process defining an API for annotating fields, methods, and classes as having particular attributes that indicate they should be processed in special ways by development tools, deployment tools, or... Due to technical limitations, some web browsers may not display some special characters in this article. ... JScience is a comprehensive Java library for the scientific community. ...

Resources

  • Computer-Books.us A collection of Java books available for free download
  • Javapedia project
  • The Java.net Wiki
  • Sun Certification Resource
  • JavaRSS.com Portal of Java websites
  • developerWorks Java Zone—Java resource community
  • JavaWhat.com Java resource directory
  • Java at CodeCodex A wiki collection of Java source code

Java Integrated Development Environments

The following Integrated Development Environments (IDEs) can be used to create Java programs. An integrated development environment (IDE), also known as integrated design environment and integrated debugging environment, is a type of computer software that assists computer programmers to develop software. ...

BEA Systems (NASDAQ: BEAS) is a company that specializes in application infrastructure software. ... BEA WebLogic is a J2EE application server and also an HTTP web server by BEA Systems of San Jose, California, for Unix, Linux, Microsoft Windows, and other platforms. ... The GNU free software logo Free software, as defined by the Free Software Foundation, is software which can be used, copied, studied, modified and redistributed without restriction. ... BlueJ running on Mac OS X BlueJ is an interactive Java development environment, developed mainly for educational purposes, but also suitable for small-scale development. ... Open source refers to projects that are open to the public and which draw on other projects that are freely available to the general public. ... Eclipse is a free software / open source platform-independent software framework for delivering what the project calls rich-client applications, as opposed to thin client browser-based applications. ... The Eclipse Foundation leads the development of Eclipse, the open-source Java application platform and IDE. History In 2003 - 2004, the Eclipse Consortium, an unofficial consortium of software industry vendors led by IBM created The Eclipse Foundation, a not-for-profit legal entity to lead and develop Eclipse. ... IntelliJ IDEA is a commercial Java IDE by the company JetBrains. ... JetBrains is a Czech software development company with offices in Prague, Czech Republic; Saint Petersburg, Russia and Boston, USA. It is known for its Java IDE, IntelliJ IDEA. JetBrains was founded in 2000 as a private company. ... JBuilder is a Java IDE from Borland. ... Borland Software Corporation is a software company headquartered in California. ... The current version of the article or section reads like an advertisement. ... JDeveloper - Wikipedia, the free encyclopedia /**/ @import /skins-1. ... Oracle Corporation (NASDAQ: ORCL) is one of the major companies developing database management systems, tools for database development, enterprise resource planning software, customer relationship management software (CRM) and supply chain planning (SCM) software. ... Oracle Application Server 10g (g is for Grid), is an integrated, standards-based software platform. ... NetBeans refers to both a platform for the development of Java desktop applications, and an integrated development environment (IDE) developed using the NetBeans Platform. ... Big Blue redirects here. ... IBM WebSphere Application Server is built using open standards such as the Java 2 Platform, Enterprise Edition (J2EE), XML and Web Services. ...

History

  • Java™ Technology: The Early Years
  • A Brief History of the Green Project
  • Java Was Strongly Influenced by Objective-C
  • The Java Saga
  • The Java Platform: Five Years in Review
  • A history of Java

Java Implementations

Proprietary

The Sun is the star at the center of our solar system. ... Big Blue redirects here. ... A Java virtual machine or JVM is a virtual machine that runs Java byte code. ... BEA Systems (NASDAQ: BEAS) is a company that specializes in application infrastructure software. ... Linux (also known as GNU/Linux) is a Unix-like computer operating system. ... Mozilla logo Mozilla Firefox is a computer term that has had many different uses, though all of them have been related to Netscape Communications Corporation and its related application software. ...

Open source

  • GNU Classpath from GNU - currently being merged with libgcj of the GNU Compiler for Java
  • Apache Harmony (see Harmony) an Apache Software Foundation proposed implementation of the Java programming language, starting with J2SE 5.0

GNU (pronounced ) is a free software operating system consisting of a kernel, libraries, system tools, compilers and many end-user applications. ... Merging is the act of reconciling multiple changes made to different copies of the same file. ... Apache Harmony is a proposed free implementation of the Java programming language, starting with J2SE 5. ... The Apache Software Foundation (ASF) is a non-profit corporation (classified as 501(c)3 in the United States) to support Apache software projects, including the Apache HTTP Server. ...

Criticism

  • Free But Shackled—The Java Trap, by Richard Stallman, April 12, 2004. (James Gosling's response)
  • Is Java the language you would have designed if you didn't have to be compatible with C?, by Bjarne Stroustrup
  • Softpanorama Java Critique Page: Java vs Scripting Languages, by Nikolai Bezroukov
  • Java's Cover by Paul Graham
  • The Perils of JavaSchools by Joel Spolsky (criticism of the use of Java to teach computer science in college)
  • How Java’s Floating-Point Hurts Everyone Everywhere, by W. Kahan und Joseph D. Darcy at the ACM 1998 Workshop on Java for High–Performance Network Computing

Richard Matthew Stallman (frequently abbreviated to RMS) (born March 16, 1953) is the founder of the free software movement, the GNU Project, the Free Software Foundation, and the League for Programming Freedom. ... April 12 is the 102nd day of the year in the Gregorian calendar (103rd in leap years). ... 2004 (MMIV) was a leap year starting on Thursday of the Gregorian calendar. ... Bjarne Stroustrup Bjarne Stroustrup (born December 30, 1950 in Aarhus, Denmark) is a computer scientist and the College of Engineering Chair Professor of Computer Science at Texas A&M University. ... Paul Graham For Paul Graham the photographer, see Paul Graham (photographer). ... It has been suggested that this article or section be merged with Joel on Software (weblog). ...

Java-like languages

  • The Nice programming language, a language whose goal is to overcome many of Java's shortcomings while staying true to its Java roots
Preceding:
Subsequent: Mandarax, Nice

  Results from FactBites:
 
Java programming language - Wikipedia, the free encyclopedia (4219 words)
Unlike conventional languages which are generally designed to be compiled to native code, Java is compiled to a bytecode which is then run (generally using JIT compilation) by a Java virtual machine.
Java servlets are server-side Java EE components that generate responses to requests from clients.
Because of this, Java is not considered to be a pure object-oriented programming language.
What is Java? - A Word Definition From the Webopedia Computer Dictionary (881 words)
Java is an object-oriented language similar to C++, but simplified to eliminate language features that cause common programming errors.
Java is a general purpose programming language with a number of features that make the language well suited for use on the World Wide Web.
The Java Language specification has a whole chapter dedicated to explaining how threads and the Java memory model works, but the implementation details of the memory model are minimal and cause a lot of confusion.
  More results at FactBites »

 
 

COMMENTARY     


Share your thoughts, questions and commentary here
Your name
Your comments

Want to know more?
Search encyclopedia, statistics and forums:

 


Press Releases |  Feeds | Contact
The Wikipedia article included on this page is licensed under the GFDL.
Images may be subject to relevant owners' copyright.
All other elements are (c) copyright NationMaster.com 2003-5. All Rights Reserved.
Usage implies agreement with terms, 1022, m