Printer Friendly
The Free Library
14,709,470 articles and books
Member login
User name  
Password 
 
Join us Forgot password?

Java programming language.


Java is a reflective, object-oriented programming language object-oriented programming language - object-oriented programming  developed initially by James Gosling and colleagues at Sun Microsystems. Initially called Oak (named after the oak trees outside Gosling's office), it was intended to replace C++, although the feature set better resembles that of Objective-C. Java should not be confused with JavaScript, which shares only the name and a similar C-like syntax. Sun Microsystems currently maintains and updates Java regularly.

Specifications of the Java language, the Java Virtual Machine A Java interpreter. The Java Virtual Machine (JVM) is software that converts the Java intermediate language (bytecode) into machine language and executes it. The original JVM came from the JavaSoft division of Sun.  (JVM See Java Virtual Machine.

JVM - Java Virtual Machine
) and the Java API are community-maintained through the Sun-managed Java Community Process Sun's system for allowing third parties to submit requests for new features to Java. JCP is a formal process that must be adhered to, and fees are involved. In 1999, Sun submitted Java to the ECMA standards body, but withdrew its J2SE specification later in the year. . Java was developed in 1991 by James Gosling and other Sun engineers, as part of the Green Project. After first being made public in 1994, it achieved prominence following the announcement at 1995's SunWorld that Netscape would be including support for it in their Navigator browser.

History

The Java platform and language began as an internal project at Sun Microsystems in December of 1990. Patrick Naughton, an engineer at Sun, had become increasingly frustrated with the state of Sun's C++ and C APIs and tools. While considering moving to NEXT, Patrick was offered a chance to work on new technology and thus the Stealth Project was started.

The Stealth Project was soon renamed to the Green Project with James Gosling and Mike Sheridan joining Patrick Nnughton. They, together with some other engineers, began work in a small office on Sand Hill Road in Menlo Park, California Menlo Park is a city in San Mateo County, California in the United States of America. It is located at latitude 37°29' North, longitude 122°9' East. Menlo Park had 30,785 inhabitants as of the 2000 U.S. Census.  to develop a new technology, aimed at programming next generation smart appliances such as microwaves, which Sun expected to be a big application of future technology. The team originally considered C++ as the language to use, but many of them as well as Sun's chief scientist, Bill Joy, found C++ and the available APIs problematic for several reasons.

Their platform was an embedded platform and had limited resources. Many members found that C++ was too complicated and that developers often misused it. They found C++'s lack of garbage collection a problem, as well as its lack of portable facilities for security, distributed programming, and threading. Finally, they wanted a platform that could be easily ported to all types of devices.

According to the available accounts, Bill Joy had ideas of a new language combining the best of Mesa and C. In a paper called Further, he proposed to Sun that its engineers should produce an object-oriented environment based on C++. Initially, Gosling attempted to modify and extend C++, which he referred to as C++ ++ --, but soon abandoned that in favor of creating an entirely new language, which he called Oak after the tree that stood just outside his office. Like many stealth projects working on new technology, the team worked long hours and by the summer of 1992, they were able to demonstrate portions of the new platform including the Green OS, the Oak language, the libraries, and the hardware. Their first attempt focused on building a PDA-like device named Star7 having a highly graphical interface and a smart agent called "Duke" to assist the user. h was demonstrated on September 3, 1992.

In November of that year, the Green Project was spun off to become FirstPerson, Inc. a wholly owned subsidiary Wholly Owned Subsidiary

A subsidiary whose parent company owns 100% of its common stock.

Notes:
In other words, the parent company owns the company outright and there are no minority owners.
 of Sun Microsystems, and the team relocated to Palo Alto. The FirstPerson team was interested in building highly interactive devices, and when Time Warner issued an RFP (Request For Proposal) A document that invites a vendor to submit a bid for hardware, software and/or services. It may provide a general or very detailed specification of the system.

1. (business) RFP - Request for Proposal.
2.
 for a set-top box, FirstPerson changed their target and responded with a proposal for a set-top box platform. However, the cable industry felt that their platform gave too much control to the user and FirstPerson lost their bid to SGI (SGI, Sunnyvale, CA, www.sgi.com) A manufacturer of workstations and servers, founded in 1982 by Jim Clark. The company was founded as Silicon Graphics, Inc., but changed to its acronym in 1999. . An additional deal with The 3DO Company for a set-top box also failed to materialize. Unable to generate any interest within the TV industry for their platform, the company was rolled back into Sun.

Java meets the Internet

In June and July of 1994, after a three-day brainstorming session with John Gage, James Gosling, Bill Joy, Patrick Naughton, Wayne Rosing, and Eric Schmidt, the team re-targeted its efforts yet again, this time to use the technology for the Web. They felt that with the advent of the Mosaic browser, the Internet was on its way to evolving into the same highly interactive vision that they had had for the cable TV network. As a prototype, Patrick Naughton wrote a small web browser The program that serves as your front end to the Web on the Internet. In order to view a site, you type its address (URL) into the browser's Location field; for example, www.computerlanguage.com, and the home page of that site is downloaded to you. , WebRunner, later renamed Hotjava.

It was also in 1994 that Oak was renamed Java. A trademark search revealed that the name Oak had already been taken by a video adaptor card manufacturer, so the team searched for a new name. The name Java was coined at a local coffee shop frequented by some of the members. It is not clear whether the name is an acronym or not. Most likely it is not, although some accounts claim that it stands for the names of James Gosling, Arthur Van Hoff, and Andy Bechtolsheim, or Just Another Vague Acronym. Lending credence to the idea that Java owes its name to the products sold at the coffee shop is the fact that the first 4 bytes of any class file spells out the words CAFE BABE if read in hexadecimal See hex.

(mathematics) hexadecimal - (Or "hex") Base 16. A number representation using the digits 0-9, with their usual meaning, plus the letters A-F (or a-f) to represent hexadecimal digits with values of (decimal) 10 to 15.
 

In October of 1994, Hot Java and the Java platform was demoed for Sun executives. Java 1.0 a was made available for download in 1994, but the first public release of Java and the Hot Java web browser came on May 23, 1995, at the SunWorld conference. The announcement was made by John Gage, the Director of Science for Sun Mierosystems. His announcement was accompanied by a surprise announcement by Marc Andreessen, Executive Vice President of Netscape, that Netscape would be including Java support in its browsers. In January of 1996, the JavaSoft business group was formed by Sun Microsystems to develop the technology.

Recent history

After several years of popularity, Java's place in the browser has steadily eroded. Its usage for simple interactive animations has been almost completely supplanted by Macromedia Flash, and as of 2005 it tends only to be used for more complex applications like Yahoo! Games. It has also suffered from opposition by Microsoft, which no longer plans to ship a Java platform with new versions of Internet Explorer or Windows.

By contrast, on the server-side of the Web, Java is far more popular than ever, with many websites using JavaServer Pages and other Java-based technologies in their front-ends. On the desktop, stand-None Java applications remain relatively unusual because of their large overhead.

However, with the great advances in computer power in the last decade, along with improvements in VM and compiler quality, several have gained widespread use, including the Eclipse IDE and the Azurcus BitTorrent client.

Version history

The Java language has undergone several changes since JDK (Java Development Kit) A Java software development environment from Sun. It includes the JVM, compiler, debugger and other tools for developing Java applets and applications. Each new version of the JDK adds features and enhancements to the language.  1.0 as well as numerous additions of packages to the standard library:

* 1.0 (1996)--Initial release.

* 1. 1 (1997)--Major additions, notably 'inner classes'.

* 1.2 (December 4, 1998)--Codename Playground. Major changes were made to the API (where reflection was introduced) and Sun's JVM (which was equipped with a JIT compiler), but these had little impact on the language itself.- the only change to the Java language was the addition of the keyword strictfp. This and subsequent releases were rebranded "Java 2", but this had no effect on any software version numbers.

* 1.3 (May 8, 2000)--Codename Kestrel kestrel

Any of several birds of prey (genus Falco) known for hovering while hunting. Kestrels prey on large insects, birds, and small mammals. The male is more colourful than the female. Kestrels are mainly Old World birds, but one species, the American kestrel (F.
. HotSpot JVM introduced. Minor changes and fixes.

* 1.4 (February 13, 2002)--Codename Merlin. As of 2004, the most widely used version. Added the assert keyword.

* 5.0 (September 29, 2004)--Codename Tiger. (Originally numbered 1.5, which is still used as the internal version number.) Added a number of significant new language features. One in particular, Annotations, has been argued to be modeled on Microsofts C#, which was itself modeled on earlier versions of Java:

* Generics--Provides compile-time type safety for collections and eliminates the need for most typecasts.

* Autoboxing/unboxing--Automatic conversions between primitive types (such as int) and wrapper types (such as Integer).

* Metadata--also called Annotations, allows language constructs such as classes and methods to be tagged with additional data, which can then be processed by metadata-aware utilities

* Enumerations--the enum keyword creates a typesafe, ordered list of values (such as Day.monday, Day.tuesday, etc.). Previously this could only be achieved by non-typesafe constant integers or manually constructed classes (typesafe enum pattern).

* Enhanced for loop--the for loop syntax is extended with special syntax for iterating ITerating.com is a Wiki-based software guide, where everyone can find, compare and give reviews to thousands of software products. Founded in October of 2005, and based in New York, ITerating.  over each member of an array or Collection, using a construct of the form:
   for (Widget w: box)
   {
   System. out.println (w) ;
   }


This example iterates over box, assigning each of its items in turn to the variable w, which is then printed to standard output. * 6.0 (currently in development estimated release date 2006) -Codenarne Mustang (https://mustang.dev.java.net/). An early development version of the Java SDK (Software Developer's Kit) See developer's toolkit and Windows SDK.

SDK - Software Developers Kit (or "Software Development Kit").
 version 6.0 (internal version 1.6) was made available in November 2004. New builds including enhancements and bug fixes are released on a regular basis.

* 7.0- Codename Dolphin. As of 2005 this is in the early planning stages [2]

In addition to the language changes, much more dramatic changes have been made to the Java class library The Java Class Library is a set of dynamically loadable libraries that Java applications can call at runtime. Because the Java Platform is not dependent on any specific operating system, applications cannot rely on any of the existing libraries.  over the years, which have grown from a few hundred classes in version 1.0 to over three thousand in Java 5.0. Entire new API's such as Swing and Java2D, have been introduced, and many of the original 1.0 classes and methods have been deprecated See deprecate.

deprecated - Said of a program or feature that is considered obsolescent and in the process of being phased out, usually in favour of a specified replacement. Deprecated features can, unfortunately, linger on for many years.
.

Language characteristics

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

* It should use the object-oriented programming methodology.

* It should allow the same program to be executed on multiple computer platforms.

* It should contain built-in support for using computer networks.

* It should be designed to execute code from remote sources securely.

* It should be easy to use and borrow the good parts of older Object

Oriented languages like C++. Especially for the latter part, however sometimes extensions are required, like Corba or OSGi.

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.

Another primary goal of OO programming is to develop more generic objects so that software can become more reusable between projects. It is easy to see why 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 "erect" projects largely from existing and well tested pieces, thus leading to a massive reduction in development times. However, the reality of software reusability has met with mixed results, mostly due to two difficulties: the design of truly generic objects remains a poorly-understood art, and a methodology for broad communication of reuse opportunities eludes the science. Some open source communities are now emerging whose primary mission is to help case the reuse problem by providing authors with ways to disseminate information about generally reusable objects and object libraries.

Platform independence

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. This is achieved by most compilers by compiling the Java language code "halfway" to 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 translates generic Java bytecode into usable code on the hardware. 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.

There are also implementations of Java compilers that compile to native object code, such as GCJ GCJ Google Code Jam , removing the intermediate bytecode stage, but the output of these compilers can only be run on a single architecture.

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 (Remote Method Invocation) A standard from Sun for distributed objects written in Java. RMI is a remote procedure call (RPC), which allows Java objects (software components) stored in the network to be run remotely.  and JNI (Java Native Interface) A programming interface (API) in Sun's Java Virtual Machine used for calling native platform elements such as GUI routines. RNI (Raw Native Interface) is the JNI counterpart in Microsoft's Java Virtual Machine.

JNI - Java Native Interface
 interfaces and had added platform-specific features of their own. Sun sued and won both damages (some $20 million dollars) 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 written in C or C++, so the language suffered a reputation for producing slow programs. More recent implementations of the Java VM produce programs that run much faster than before, using multiple techniques.

The first technique is to simply compile directly into native code like a more traditional compiler, skipping bytecodes entirely. This achieves great performance, but at the expense of portability. Another technique, known as just-in-time compilation (JIT JIT - dynamic translation ), compiles the Java bytecodes into native code at the time that the program is run. More sophisticated VMs use dynamic recompilation, in which the VM can analyze the behavior of the running program and selectively recompile To compile a program again. A program is recompiled after a change has been made to it in order to test and run the revised version. Programs are recompiled many times during the course of development and maintenance. See compile.  and optimize critical parts of the program. Both of these techniques allow the program to take advantage of the speed of native code without losing portability. 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".

Platform-independent Java is, however, very successful with server-side applications, such as web services, serviets, or Enterprise Java Beans--and meanwhile also with Embedded systems based on OSGI, using Embedded Java environments.

Automatic garbage collection

One argument against languages such as C++ is the burden of having to perform manual memory management. In C++, memory is allocated by the programmer to create an object, then deallocated to delete the object. Ira programmer forgets or is unsure when to deallocate, this can lead to a memory leak, where a program consumes more and more memory without cleaning up after itself Even worse, ira region of memory is deallocated twice, the program can become trustable and will likely crash.

In Java, this potential problem is avoided by automatic garbage collection. Objects are created and placed at an address on the heap. The program or other objects can reference an object by holding a reference to its address on the heap. When no references to an object remain, the Java garbage collector automatically deletes the object, freeing memory and preventing a memory leak. Memory leaks, however, can 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. But on the whole, Java's automatic garbage collection makes creation and deletion of objects in Java simpler and potentially safer than in C++.

It should be noted, however, that programmers have access to garbage collection in C++ via smart pointers, such as the ones provided by the Standard Template Library The Standard Template Library (STL) is a software library partially included in the C++ Standard Library. It provides containers, iterators, algorithms, and functors.  and Boost's library. However, smart pointers have significant overhead in both speed

Interfaces and classes

One thing that Java accommodates is creating an interface which classes can then implement. For example, an interface can be created like this:
   'public interface Deleteable {
   void delete() ;
   }


This code says that any class that implements the interface Deleteable will have a method named delete (). The exact implementation and function- of the method are determined by each class. There are many uses for this concept; for example, the following could be a class:

Then, in another class, the following is legal code:
   public class Fred implements Deleteable {
   //Must include the delete () method to satisfy the Deleteable
   interface
   public void delete() { //code implementation goes here
   }
   //Can also include other methods
   public void doOtherStuff() {
   }

   public void deleteAll (Deleteable [] list) {
   for (int i = 0; i < list.length; i++] {
   list[i] .delete() ;
   }
   }


because any objects in the array are guaranteed to have the delete () method. The Deleteable array may contain references to Fared objects, and the deleteAll () method needn't differentiate between the Fred objects and other Deleteable objects.

The purpose is to separate the details of the implementation of the interface from the code that uses the interface.

For example, the Collection interface contains methods that any collection of objects might want to implement, like retrieving or storing objects, but a specific collection could be a resizeable array, a linked list, or any of a number of different implementations.

The feature is a result of compromise. The designers of Java decided not to support multiple inheritance because of the difficulty of C++'s multiple inheritance, but interfaces give some of the benefit of multiple inheritance with less complexity. Java interfaces behave much like the concept of the Objective-C protocol.

Input/Output

Versions of Java prior to 1.4 only supported stream-based blocking I/O (Input/Output) The transfer of data between the CPU and a peripheral device. Every transfer is an output from one device and an input to another. See PC input/output.

I/O - Input/Output
. This required a thread per stream being handled, as no other processing could take place while the active thread blocked waiting for input or output. This was a major scalability and performance issue for anyone needing to implement any Java network service. Since the introduction of NIO NIO

In currencies, this is the abbreviation for the Nicaraguan Coroba Oro.

Notes:
The currency market, also known as the Foreign Exchange market, is the largest financial market in the world, with a daily average volume of over US $1 trillion.
 (New IO) in Java 1.4, this scalability problem has been rectified by the introduction of a non-blocking I/O framework (though there are a number of open issues in the NIO API as implemented by Sun). The non-blocking 10 framework, though considerably more complex than the original blocking 10 framework, allows any number of "channels" to be handled by a single thread. The framework is based on the Reactor Pattern.

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:

* Java 2 Platform Java 2 Platform - Java 2 Platform, Standard Edition , Micro Edition--targeting environments with limited resources,

* Java 2 Platform, Standard Edition--targeting workstation enviromnents, and

* Java 2 Platform, Enterprise Edition--targeting large distributed enterprise or Internet environments.

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.

The set of APIs is controlled by Sun Microsystems in cooperation with others through its 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.

In 2004, IBM (International Business Machines Corporation, Armonk, NY, www.ibm.com) The world's largest computer company. IBM's product lines include the S/390 mainframes (zSeries), AS/400 midrange business systems (iSeries), RS/6000 workstations and servers (pSeries), Intel-based servers (xSeries)  and BEA BEA - Basic programming Environment for interactive-graphical Applications, from Siemens-Nixdorf.  publicly supported the notion of creating an official open source implementation of Java but as of 2005, Sun Microsystems has refused.

Hello World example

For an explanation of the tradition of programming "Hello World", see Hello world program A "hello world" program is a computer program that prints out "Hello, World!" on a display device. It is used in many introductory tutorials for teaching a programming language. Such a program is typically one of the simplest programs possible in a computer language. .
   // The source file must be named WorldGreeting.java
   public class WorldGreeting {
   // The main method is passed an array of command-line
   parameters
   public static void main(String[] args) {
   System.out.println("Hello world!");
   }
   }


The above example merits a bit of explanation for those accustomed to languages with inherently relaxed security, weak typing, and weak object orientation.

* Everything in Java is a class, including stand-alone programs.

* Source files must be named the same as the class they contain, appending the suffixjava. (In this case, the class is WorldGreeting, therefore the source must be stored in a file called WorldGreetingjava).

* Programs to be executed as stand-alone must have a main() method.

* The keyword void indicates that the main() method does not return anything.

* The main method must accept an array of strings. By convention, it is referenced as "args" although any other legal variable name can be used.

* The keyword static indicates that the method is h class method, associated with the class rather than object instances. Main methods must be staac.

* The keyword public denotes that a method can be called by other classes, or that a class may be used by classes outside the class hierarchy.

* The printing facility, is part of the java standard library, the class method println().

Miscdlaneous

The language distinguishes between bytes and characters. Characters are stored internally using UCS-2 (though as of Java 5, the language also supports using UTF-16, with surrogates), and Java program source may contain any Unicode character. Although the language has special syntax for them, arrays and strings are not primitive types: they are reference types that can be assigned to java. lang .Object.

Criticism

Java was intended to serve as a novel way to manage software complexity. Most consider Java technology to deliver reasonably well on all these promises. However, Java is not without flaws, and it does not universally accommodate all programming styles, environments, or requirements.

* Not all projects or environments require enterprise-level complexity, such as stand-alone websites or sole- proprietorship programmers. Such individuals find Java's self-enforcing complexity management to be overkill.

* As object-oriented programming continues to supplant procedural programming, Java is often a focal point of discontent for those resistant to this paradigm shift.

* Some believe that Java's approach to object-oriented programming is not as pure as languages such as Ruby or Smalltalk.

* As a mature, established technology, Java inevitably invites comparison with younger languages such as Python, Groovy, and others. Commenting upon Java's proprietary nature, supposed inflexibility to change, and growing entrenchment in the corporate sector, some have said that Java is "the new COBOL COBOL: see programming language.
COBOL
 in full Common Business-Oriented Language.

High-level computer programming language, one of the first widely used languages and for many years the most popular language in the business community.
". Many consider this to be a somewhat hyperbolic hy·per·bol·ic   also hy·per·bol·i·cal
adj.
1. Of, relating to, or employing hyperbole.

2. Mathematics
a. Of, relating to, or having the form of a hyperbola.

b.
 assertion, although it does allude to some legitimate concerns with Java!s prospects for the future.

Language issues

* The division between primitive types and objects is disliked by programmers familiar with languages such as Smalltalk and Ruby where everything is an object.

* Java code is often more verbose Wordy; long winded. The term is often used as a switch to display the status of some operation. For example, a /v might mean "verbose mode."  than code written in other languages due to its frequent type declarations.

* Java is predominantly a single-paradigm language. Historically, it has not been very accommodating of paradigms other than object-oriented programming. As of version 5.0, the procedural paradigm is somewhat better supported in Java with the addition of the ability to import static methods and fields so that they can be used globally as one could do in, for example, C.

* Java is a single inheritance language. This causes consternation to programmers accustomed to multiple inheritance, which is available in many other languages. However, Java employs interface classes, which are intended to minimize the risks of multiple inheritance while retaining its benefits, consternation to programmers accustomed to multiple inheritance, which is available in many other languages. However, Java employs interface classes, which are intended to minimize the risks of multiple inheritance while retaining its benefits.

* Java does not support operator overloading.

* Versions of Java before 5.0 required many explicit casts to be written due to the lack of generic types.

* Java's support of text matching and manipulation is not as strong as languages such as pert or PHP (PHP Hypertext Preprocessor) A scripting language used to create dynamic Web pages. With syntax from C, Java and Perl, PHP code is embedded within HTML pages for server side execution. , although regular expressions were introducted in Java 1.4.

Library issues

The took and feel of GUI (Graphical User Interface) A graphics-based user interface that incorporates movable windows, icons and a mouse. The ability to resize application windows and change style and size of fonts are the significant advantages of a GUI vs. a character-based interface.  applications written in Java using the Swing platform is often different from native applications. While programmers can choose to use the AWT (Abstract Windowing Toolkit) A class library from Sun that provides an application framework and graphical user interface (GUI) routines for Java programmers. AWT was the first user interface development system included in the Java Foundation Classes (JFC).  toolkit that displays native widgets (and thus look like the operating platform), the AWT tool kit is unable to meet advanced GUI programming needs by wrapping around advanced widgets and not sacrificing portability across the various supported platforms, each of which have vastly different APIs especially for higher-level widgets. The Swing toolkit, written completely in Java, avoids this problem by reimplementing widgets using only the most basic drawing mechanisms that are guaranteed available on all platforms. The drawback is that extra effort is required to resemble the operating platform. While this is possible (using the Gtk+ and Windows Look-4nd-Feel), most users do not know how to change the default Metal Look-And-Feel to one that resembles their native platform, and as a result they are stuck with Java applications that look radically different from their native applications. Of note however, Apple Computer's own optimized version of the Java Runtime, which is included within the Mac OS X distribution, by default implements its "Aqua" Look-And-Feel, giving Swing applications instant familiarity to Mac users.

Some parts of the standard Java libraries are considered excessively complicated, or badly designed, but cannot be changed due to the need for backward compatibility.

Performance issues

Java was designed with emphasis on security and portability, so low-level features like hardware-specific data types and pointers to arbitrary memory were deliberately omitted. These features must be accessed by calling C code using the Java Native Interface (programming) Java Native Interface - (JNI) A native programming interface for Java that allows Java code running inside a Java Virtual Machine to interoperate with applications and libraries written in other programming languages such as C, C++ and assembly language.  (JNI), which is inconvenient and can be a performance bottleneck. Java array access can be slower than other languages due to range-checking.

The performance of Java programs can be difficult to predict due to dynamic compilation and garbage collection. This effect is magnified in programs which run only a short time. Additionally, Java programs often use more memory than programs written in other languages. Most major companies still use other languages for off-the-shelf software, as Java is typically considered too slow for major desktop applications. Many argue that this is a misconception based on old benchmarks and information produced by competitors. Whether or not Java is significantly slower than other languages is still hotly debated.

Java Runtime Environment The combination of the Java Virtual Machine, the core class library and supporting files, all of which are required to run a Java program. See Java and Java Virtual Machine.  

The Java Runtime Environment or JRE See Java Runtime Environment.

JRE - Java Run-Time Environment
 is the software required to run any application deployed on the Java platform End-users commonly use a JRE in software packages and plug-ins. Sun also distributes a superset A group of commands or functions that exceed the capabilities of the original specification. Software or hardware components designed for the original specification will also operate with the superset product. However, components designed for the superset will not work with the original.  of the JRE called the Java 2 SDK Java 2 SDK - Java 2 Software Development Kit  (more commonly known as the JDK), which includes development tools such as the Java compiler, Javadoc, and debugger.

Components of the JRE

* Java libraries--which are the compiled byte codes of source developed by the JRE irnplementor to support application development in Java. Examples of these libraries are:

* The core libraries, which include:

* Collection libraries which implement data structures such as lists, dictionaries, trees and sets

* XML XML
 in full Extensible Markup Language.

Markup language developed to be a simplified and more structural version of SGML. It incorporates features of HTML (e.g., hypertext linking), but is designed to overcome some of HTML's limitations.
 Parsing libraries

* Security

* Internationalization and Localization "Internationalization" redirects here. This term may also refer to the establishment of an independent free city.

In computing, Internationalization and localization are means of adapting computer software for non-native environments, especially other nations and cultures.
 libraries

* The integration libraries, which allow the application writer to communicate with external systems.

These libraries include:

* The Java Database Connectivity (database, programming) Java Database Connectivity - (JDBC) Part of the Java Development Kit which defines an application programming interface for Java for standard SQL access to databases from Java programs.

http://java.sun.com/products/jdk/1.1/docs/guide/jdbc/index.html.
 (JDBC (Java DataBase Connectivity) A programming interface that lets Java applications access a database via the SQL language. Since Java interpreters (Java Virtual Machines) are available for all major client platforms, this allows a platform-independent database ) API for database access

* Java Naming and Directory Interface The Java Naming and Directory Interface (JNDI) is an API for directory service that allows clients to discover and lookup data and objects via a name. Like all Java APIs that interface with host systems, JNDI is independent of the underlying implementation.  (JNDI (Java Naming and Directory Interface) A programming interface (API) from Sun for connecting Java programs to naming and directory services such as DNS, LDAP and NDS. ) for lookup and discovery * RMI and CORBA for distributed application development

* User Interface libraries, which include:

* The (heavyweight, or native) Abstract Windowing Toolkit See AWT.

Abstract Windowing Toolkit - Abstract Window Toolkit
 (AWT), which provides GUI components, the means for laying out those components and the means for handling events from those components

* The (lightweight) Swing libraries, which are built on AWT but provide (non-native) implementations of the AWT widgetry

* APIs for audio capture, processing, and playback

* A platform dependent implementation of Java virtual machine (JVM) which is the means by which the byte codes of the Java libraries and third party applications are executed

* Plugins, which enable applets to be run in web browsers

* Java Web Start A mechanism from Sun for delivering full-blown Java applications from a Web server. The programs are initially downloaded using the browser, but run outside of the browser. Contrast with Java applets, which require an open browser window to stay active. , which allows Java applications to be efficiently distributed to end users across the Internet * Licensing and docwnentation

Extensions and related architectures

Extensions and architectures closely tied to the Java programming language include:

* J2EE (Java 2 Platform, Enterprise Edition) A platform from Sun for building distributed enterprise applications. J2EE services are performed in the middle tier between the user's machine and the enterprise's databases and legacy information systems.  (Enterprise edition)

* J2ME (Java 2 Platform, Micro Edition) A version of Java 2 for cellphones, PDAs and consumer appliances. J2ME uses the K Virtual Machine (KVM), a specialized Java interpreter for devices with limited memory.  (Micro-Edition for PDAs and cellular phones)

* JMF JMF Java Media Framework (Sun Microsystems)
JMF Job Mix Formula
JMF Jeffrey Modell Foundation
JMF Job Messaging Format
JMF Joint Mission Force
JMF Japan Multimedia Forum
JMF Joint Marketing Funds
JMF Joint-Domain Matched Filtering
 (Java Media Framework The Java Media Framework (JMF) is a Java Library that enables audio, video and other time-based media to be added to Java applications and applets. This optional package, which can capture, playback, stream, and transcode multiple media formats, extends the Java Platform, Standard )

* JNDI (Java Naming and Directory Interface)

* JSML JSML Java Speech Markup Language
JSML Java Speech Api Markup Language
 (Java Speech API The Java Speech API specifies a cross-platform interface to support command and control recognizers, dictation systems and speech synthesizers. Although JSAPI defines an interface only there are several implementations created third parties, for example FreeTTS.  Markup Language)

* JDBC (Java Database Connectivity)

* JDO JDO Java Data Object(s)
JDO Jewish Defense Organization
JDO Java Data Objects
 (Java Data Objects Java Data Objects (JDO) is a specification of Java object persistence. One of its features is a transparency of the persistent services to the domain model. JDO persistent objects are ordinary Java programming language classes; there's no requirement for them to implement )

* JAIN (Java API for Integrated Networks)

* JDMK JDMK Java Dynamic Management Kit  (Java Dynamic Management Kit 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. )

* Jim (a network architecture for the construction of distributed systems)

* Jiro

* Java Card

* JavaSpaces

* JMI JMI Java Metadata Interface (Sun Microsystems)
JMI Japan Market Intelligence
JMI James Madison Institute
JMI Jim Moran Institute for Global Entrepreneurship (Florida State University) 
 (java Metadata Interface Java Metadata Interface (JMI) is a platform-neutral specification that defines the creation, access, lookup and exchange of metadata in the Java programming language. The JMI specification was developed under the Java Community Process and is defined by JSR 40. )

* JMX JMX Java Management Extensions
JMX Air Jamaica Express (ICAO code)
JMX Jumbogroup Multiplex
 (Java Management Extensions Java Management Extensions (JMX) is a Java technology that supplies tools for managing and monitoring applications, system objects, devices (e.g. printers) and service oriented networks. Those resources are represented by objects called MBeans (for Managed Bean). )

* JSP (JavaServer Page) An extension to the Java servlet technology from Sun that allows HTML to be combined with Java on the same page. The Java provides the processing, and the HTML provides the layout on the Web page.  (JavaServer Pages)

* JSF (JavaServerFaces) A standard framework of components for building rich user interfaces for Java applications. JavaServer Faces run on the server, but are displayed on the client.

JSF - JavaServer Faces
 (JavaServer Faces)

* JNI (Java Native Interface)

* JXA (Open Protocols for P2P See peer-to-peer and point-to-point.  Virtual Network)

* J3D (A high level API for 3D graphics programming)

* JOGL JOGL Java Open GL  (A low level API for 3D graphics programming, using OpenGL)

* OSGI (Dynamic Service Management and Remote Maintenance)

* SuperWaba (JavaVMs for handhelds)

See also

* Java virtual machine

* Comparison of Java to C++

* Optimization of Java

* Java Platform Debugger Architecture The Java Platform Debugger Architecture is a collection of APIs to debug Java code.
  • Java Debugger Interface (JDI) - defines a high-level Java language interface which developers can easily use to write remote debugger application tools.
 

* Join Java programming language

* List of Java-programs

* Java User Group A Java User Group (JUG) is a community of users of the Java programming language. Most JUGs are geographically-bound, such as the PhillyJUG (Philadelphia, USA) and the DFJUG (Brazil).

Typically, members of a JUG support each other through:
  • regular meetings (e.g.
 

* Java XML

* Java Servlet

* Java 2 Platform, Standard Edition (language, programming) Java 2 Platform, Standard Edition - (J2SE) Sun's Java programming platform aimed at network-oriented enterprise applications. J2SE comprises the Java 2 Software Development Kit (SDK) and the Java 2 Run-Time Environment.  (J2SE (Java 2 platform, Standard Edition) See Java 2.

J2SE - Java 2 Platform, Standard Edition
)

* List of Java scripting languages This is a list of scripting languages available for the Java platform:
  • the Bean Scripting Framework (BSF)
  • BeanShell
  • Groovy
  • Hecl
  • JavaScript (via Rhino)
  • Jelly (Programming Language)
  • JRuby
  • Jython
  • Judoscript
  • ObjectScript
  • Pnuts
  • Sleep
 

* Javapedia

* Java Community Process

* JavaOS

* Java keywords

* ZAAP ZAAP zSeries Application Assist Processor (IBM)
ZAAP Zone Annunciator Alarm Panel (Sprint)
ZAAP Z Application Assist Processors
 (Java processor)

* Microsoft J++ wilapedia.org
COPYRIGHT 2005 A.P. Publications Ltd.
No portion of this article can be reproduced without the express written permission from the copyright holder.
Copyright 2005, Gale Group. All rights reserved. Gale Group is a Thomson Corporation Company.

 Reader Opinion

Title:

Comment:



 

Article Details
Printer friendly Cite/link Email Feedback
Title Annotation:TEACH -IN
Publication:Database and Network Journal
Date:Oct 1, 2005
Words:4855
Previous Article:ADXSTUDIO CMS 2005 content management for ASP.NET 2.
Next Article:Haskell programming language.
Topics:



Related Articles
THE FUTURE OF "PURE JAVA".(Microsoft's Java plans in light of the court decision supporting Sun Microsystems' ownership of the programming...
Forte for Java, release 3.0. (Internet Focus).(Sun Microsystems)(Product Announcement)
Borland Starter Kits. (Software Tools).
Computer Science. (Senior Division 2002).
Java-based visualisation and numerical analysis tools. (Tools).
Getting started with JAVA.(Teach-In)
Java Reflection in Action.(Brief Article)(Book Review)
Computer science senior section.(Collegiate & Senior Divisions)
The present and future for past languages--COBOL.(DATABASE INTELLIGENCE)
Charles River Media.(Learning Java Through Applications: A Graphical Approach)(Creating Fractals)(Open Source for Windows Administrators)(Brief...

Terms of use | Copyright © 2009 Farlex, Inc. | Feedback | For webmasters | Submit articles