Portal:Java/Selected article

From Wikipedia, the free encyclopedia
Jump to: navigation, search

Nominating a new article[edit]

Please click here to nominate a new article.

Usage[edit]

  1. Add a new selected article to the next available subpage.
  2. Update "max=" to new total for its {{Random portal component}} on the main page.

Selected article list[edit]


Portal:Java/Selected article/1[edit]

WebLogic[edit]

Owned by Oracle Corporation, Oracle WebLogic consists of a JavaEE platform product family that includes:

Prior to co-founding WebLogic, Inc., in September 1995, Paul Ambrose and Carl Resnikoff had developed (pre-JDBC) Oracle, Sybase, and Microsoft SQL Server database-drivers for Java under the name dbKona, as well as a "three tier" server to permit applets to connect to these databases.

This WebLogic 1.48 server had the name T3Server (a bastardization of "3-Tier Server"). Concurrently, Pitman and Pasker had worked on network-management tools written in Java. Pasker had written an SNMP stack in Java and a W32 native method for ICMP ping, while Pitman worked on applets to display the management data.

The 1.48 server version had (among other hidden features) the ability to extend it by modifying a dispatcher and adding a handler for different types of messages. Pasker talked Ambrose into sending him the source code for the server, and Pasker extended it so that applets could make SNMP and PING requests on the network, and display the results.

At this point, the founders worked together to pursue what eventually became the "Application Server".

BEA Systems acquired WebLogic, Inc. in 1998, following which it became BEA WebLogic. Oracle acquired BEA in 2008, following which it became Oracle WebLogic.

See also Main article WebLogic, Inc.

Read more...


Portal:Java/Selected article/2[edit]

Java history[edit]

The Java platform and language began as an internal project at Sun Microsystems in December 1990, providing an alternative to the C++/C programming languages. Engineer Patrick Naughton had become increasingly frustrated with the state of Sun's C++ and C APIs (application programming interfaces) and tools. While considering moving to NeXT, Naughton 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 Naughton. Together with other engineers, they began work in a small office on Sand Hill Road in Menlo Park, California. They were attempting to develop a new technology for programming next generation smart appliances, which Sun expected to be a major new opportunity.

The team originally considered using C++, but it was rejected for several reasons. Because they were developing an embedded system with limited resources, they decided that C++ demanded too large a footprint and that its complexity led to developer errors. The language's lack of garbage collection meant that programmers had to manually manage system memory, a challenging and error-prone task. The team was also troubled by the language's 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.

Bill Joy had envisioned 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.

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, demonstrated on September 3, 1992, focused on building a PDA device named Star7 which had a graphical interface and a smart agent called "Duke" to assist the user. In November of that year, the Green Project was spun off to become firstperson, a wholly owned subsidiary of Sun Microsystems, and the team relocated to Palo Alto, California. The firstperson team was interested in building highly interactive devices, and when Time Warner issued an RFP 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. An additional deal with The 3DO Company for a set-top box also failed to materialize. Unable to generate interest within the TV industry, the company was rolled back into Sun.

Read more...


Portal:Java/Selected article/3[edit]

JavaBean[edit]

JavaBeans are reusable software components for Java that can be manipulated visually in a builder tool. Practically, they are classes written in the Java programming language conforming to a particular convention. They are used to encapsulate many objects into a single object (the bean), so that they can be passed around as a single bean object instead of as multiple individual objects. A JavaBean is a Java Object that is serializable, has a nullary constructor, and allows access to properties using getter and setter methods.

JavaBean conventions[edit]

In order to function as a JavaBean class, an object class must obey certain conventions about method naming, construction, and behavior. These conventions make it possible to have tools that can use, reuse, replace, and connect JavaBeans.

The required conventions are:

  • The class must have a public default constructor. This allows easy instantiation within editing and activation frameworks.
  • The class properties must be accessible using get, set, and other methods (accessor methods and mutator methods), following a standard naming convention. This allows easy automated inspection and updating of bean state within frameworks, many of which include custom editors for various types of properties.
  • The class should be serializable. This allows applications and frameworks to reliably save, store, and restore the bean's state in a fashion that is independent of the VM and platform.

Because these requirements are largely expressed as conventions rather than by implementing interfaces, some developers view JavaBeans as Plain Old Java Objects that follow specific naming conventions.

Read more...


Portal:Java/Selected article/4[edit]

JavaOne[edit]

Attendees at the 2004 JavaOne conference described their vision of the future of Java on a whiteboard.
"CommunityOne" redirects here. For the bank, see CommunityOne Bank.

JavaOne is an annual conference inaugurated in 1996 by Sun Microsystems to discuss Java technologies, primarily among Java developers. JavaOne is held in San Francisco, California typically running from Monday to Thursday. Technical sessions on a variety of topics are held during the day. In the evening, Birds of a Feather (BOF) sessions are held. BOF sessions allow people to focus on a particular aspect of Java technology.

Access to the technical sessions, keynote presentations, exhibits and BOF sessions requires a conference pass, which usually costs between $1795 to $1995 USD.

In 1999, the conference played host to an event called the Hackathon, a challenge set by John Gage. Attendees were to write a program in Java for the new Palm V using the infrared port to communicate with other Palm users and register the device on the Internet.

During the 2008 conference, 67 Moscone Center staff members and three attendees were sickened by an outbreak of norovirus.[1]

JavaOne 2010, the first conference to be run after the acquisition of Sun by Oracle Corporation, was held September 19–23, concurrently with Oracle OpenWorld. This was the first year that the conference was not held at Moscone Center, instead hosted at three hotels on nearby Mason Street, one block of which was closed and covered with a tent, which formed part of the conference venue. JavaOne 2011 was held in the same venue configuration as in 2010, and so was JavaOne 2012, from September 30 to October 4.

Show device[edit]

Java ring

Each year at the conference there is a hardware device highlighted, typically made available to attendees before it is sold to the general public, or at a steep discount.

CommunityOne[edit]

From 2007 to 2009, an associated one-day event, CommunityOne, was held, for the broader free and open-source developer community.

In 2009, CommunityOne expanded to New York City (CommunityOne East, March 18–19) and to Oslo, Norway (CommunityOne North, April 15). The third annual CommunityOne in San Francisco took place from June 1–3, 2009, at Moscone Center.

Tracks included:

  • Cloud Platforms – Development and deployment in the cloud
  • Social and Collaborative Platforms – Social networks and Web 2.0 trends
  • RIAs and Scripting – Rich Internet Applications, scripting and tools
  • Web Platforms – Dynamic languages, databases, and Web servers
  • Server-side Platforms – SOA, tools, application servers, and databases
  • Mobile Development – Mobile platforms, devices, tools and application development
  • Operating Systems and Infrastructure – Performance, virtualization, and native development
  • Free and Open – Open-source projects, business models, and trends

CommunityOne was discontinued after the acquisition of Sun by Oracle.

See also[edit]

References[edit]

  1. ^ Jordan Robertson (May 9, 2008). "70 people sickened during San Francisco conference". AP (breitbart.com). Retrieved 2008-05-11. 

External links[edit]

Read more...


Portal:Java/Selected article/5[edit]

Java Development Kit[edit]

The Java Development Kit (JDK) is an implementation of either one of the Java SE, Java EE or Java ME platforms[1] released by Oracle Corporation in the form of a binary product aimed at Java developers on Solaris, Linux, Mac OS X or Windows. The JDK includes a private JVM and a few other resources to finish the recipe to a Java Application.[2] Since the introduction of the Java platform, it has been by far the most widely used Software Development Kit (SDK).[citation needed] On 17 November 2006, Sun announced that it would be released under the GNU General Public License (GPL), thus making it free software. This happened in large part on 8 May 2007, when Sun contributed the source code to the OpenJDK.[3]

JDK contents[edit]

The JDK has as its primary components a collection of programming tools, including:

  • appletviewer – this tool can be used to run and debug Java applets without a web browser
  • apt – the annotation-processing tool[4]
  • extcheck – a utility which can detect JAR-file conflicts
  • idlj – the IDL-to-Java compiler. This utility generates Java bindings from a given Java IDL file.
  • jabswitch – the Java Access Bridge. Exposes assistive technologies on Microsoft Windows systems.
  • java – the loader for Java applications. This tool is an interpreter and can interpret the class files generated by the javac compiler. Now a single launcher is used for both development and deployment. The old deployment launcher, jre, no longer comes with Sun JDK, and instead it has been replaced by this new java loader.
  • javac – the Java compiler, which converts source code into Java bytecode
  • javadoc – the documentation generator, which automatically generates documentation from source code comments
  • jar – the archiver, which packages related class libraries into a single JAR file. This tool also helps manage JAR files.
  • javafxpackager – tool to package and sign JavaFX applications
  • jarsigner – the jar signing and verification tool
  • javah – the C header and stub generator, used to write native methods
  • javap – the class file disassembler
  • javaws – the Java Web Start launcher for JNLP applications
  • JConsole – Java Monitoring and Management Console
  • jdb – the debugger
  • jhat – Java Heap Analysis Tool (experimental)
  • jinfo – This utility gets configuration information from a running Java process or crash dump. (experimental)
  • jmap – This utility outputs the memory map for Java and can print shared object memory maps or heap memory details of a given process or core dump. (experimental)
  • jmc – Java Mission Control
  • jps – Java Virtual Machine Process Status Tool lists the instrumented HotSpot Java Virtual Machines (JVMs) on the target system. (experimental)
  • jrunscript – Java command-line script shell.
  • jstack – utility which prints Java stack traces of Java threads (experimental)
  • jstat – Java Virtual Machine statistics monitoring tool (experimental)
  • jstatd – jstat daemon (experimental)
  • keytool – tool for manipulating the keystore
  • pack200 – JAR compression tool
  • policytool – the policy creation and management tool, which can determine policy for a Java runtime, specifying which permissions are available for code from various sources
  • VisualVM – visual tool integrating several command-line JDK tools and lightweight[clarification needed] performance and memory profiling capabilities
  • wsimport – generates portable JAX-WS artifacts for invoking a web service.
  • xjc – Part of the Java API for XML Binding (JAXB) API. It accepts an XML schema and generates Java classes.

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

The JDK also comes with a complete Java Runtime Environment, usually called a private runtime, due to the fact that it is separated from the "regular" JRE and has extra contents. It consists of a Java Virtual Machine and all of the class libraries present in the production environment, as well as additional libraries only useful to developers, such as the internationalization libraries and the IDL libraries.

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

Ambiguity between a JDK and an SDK[edit]

The JDK forms an extended subset of a software development kit (SDK). It includes "tools for developing, debugging, and monitoring Java applications".[5] Oracle strongly suggests that they now use the term "JDK" to refer to the Java SE Development Kit. The Java EE SDK is available with or without the "JDK", by which they specifically mean the Java SE 7 JDK.[6]

Other JDKs[edit]

In addition to the most widely used JDK discussed in this article, there are other JDKs commonly available for a variety of platforms, some of which started from the Sun JDK source and some which did not. All of them adhere to the basic Java specifications, but they often differ in explicitly unspecified areas, such as garbage collection, compilation strategies, and optimization techniques. They include:

In development or in maintenance mode:

Not being maintained or discontinued:

See also[edit]

References[edit]

  1. ^ "Java SE 7 Features and Enhancements". Oracle Corporation. Retrieved 1 January 2013. 
  2. ^ "OpenJDK homepage". Oracle Corporation and/or its affiliates. Retrieved 1 January 2013. 
  3. ^ "Sun's May 8th announcement of source code for JDK". 
  4. ^ "JDK 5.0 Java Annotation Processing Tool (APT)-related APIs & Developer Guides -- from Sun Microsystems". Retrieved 2012-08-05. 
  5. ^ "Java SE Downloads". Oracle. Retrieved 10 July 2013. 
  6. ^ "Java EE 7 SDK distributions require JDK 7" "Java Platform, Enterprise Edition 7 SDK - Installation Instructions". Installing the Software. Oracle. Retrieved 10 July 2013. 
  7. ^ "developerWorks : IBM developer kits : Downloads". Retrieved 2012-08-05. 
  8. ^ "JRockit Family Download page". Retrieved 2012-08-05. 
  9. ^ "Support at Apple". [dead link]
  10. ^ "Java Linux Contact Information". Archived from the original on 19 August 2007. Retrieved 2012-08-05. 
  11. ^ "Java-Linux Latest Information". Archived from the original on 19 October 1996. Retrieved 2012-08-05. 

External links[edit]

Read more...


Portal:Java/Selected article/6[edit]

Let's learn about the origins of the word Java...

Java
Native name: Jawa
Java Topography.png
Topography of Java
JavaLocatie-1-.png
Geography
Location Southeast Asia
Coordinates 7°30′10″S 111°15′47″E / 7.50278°S 111.26306°E / -7.50278; 111.26306
Archipelago Greater Sunda Islands
Area 138,794 km2 (53,589 sq mi)
Area rank 13th
Highest elevation 3,676 m (12,060 ft)
Highest point Semeru
Country
Largest city Jakarta
Demographics
Population 124 million (as of 2005)
Density 979
Ethnic groups Sundanese, Javanese, Tenggerese, Baduy, Osing, Bantenese, Cirebonese, Betawi, Madurese

Java Island[edit]

Java (Indonesian: Jawa) is an island of Indonesia and the site of its capital city, Jakarta. Once the centre of powerful Hindu-Buddhist kingdoms, Islamic sultanates, and the core of the colonial Dutch East Indies, Java now plays a dominant role in the economic and political life of Indonesia. Home to a population of 130 million in 2006, it is the most populous island in the world, ahead of Honshū, the main island of Japan. Java is also one of the most densely populated regions on Earth.

Formed mostly as the result of volcanic events, Java is the 13th largest island in the world and the fifth largest island in Indonesia. A chain of volcanic mountains forms an east-west spine along the island. It has three main languages, though Javanese is dominant and is the native language of 60 million people in Indonesia, most of whom live on Java. Most residents are bilingual, with Indonesian as their second language. While the majority of Javanese are Muslim, Java has a diverse mixture of religious beliefs and cultures.

Etymology[edit]

The origins of the name 'Java' are not clear. One possibility is that an early traveller from India named the island after the jáwa-wut plant, which was said to be common in the island during the time, and that prior to Indianization the island had different names. There are other possible sources: the word jaú and its variations mean "beyond" or "distant". And, in Sanskrit yava means barley, a plant for which the island was famous. Another source states that the "Java" word is derived from a Proto-Austronesian root word, meaning 'home'.

Geography[edit]

Java lies between Sumatra to the west and Bali to the east. Borneo lies to the north and Christmas Island to the south. It is the world's 13th largest island.

Java is almost entirely of volcanic origin; it contains no fewer than thirty-eight mountains forming an east-west spine which have at one time or another been active volcanoes. The highest volcano in Java is Mount Semeru (3,676 m). The most active volcano in Java and also in Indonesia is Mount Merapi (2,968 m). See Volcanoes of Java. Further mountains and highlands help to split the interior into a series of relatively isolated regions suitable for wet-rice cultivation; the rice lands of Java are among the richest in the world. Java was the first place where Indonesian coffee was grown, starting in 1699. Today, Coffea arabica is grown on the Ijen Plateau by small-holders and larger plantations.

The area of Java is approximately 139,000 km2. The island's longest river is the 600 km long Bengawan Solo River. The river rises from its source in central Java at the Lawu volcano, then flows north and eastwards to its mouth in the Java Sea near the city of Surabaya. The island is administratively divided into four provinces (Banten, West Java, Central Java, and East Java), one special region (Yogyakarta), and one special capital district (Jakarta).

Read more...


Portal:Java/Selected article/7[edit]

Virtual machine[edit]

A virtual machine (VM) is a software implementation of a machine (i.e. a computer) that executes programs like a physical machine. A virtual machine was originally defined by Popek and Goldberg as "an efficient, isolated duplicate of a real machine". Current use includes virtual machines which have no direct correspondence to any real hardware.

Virtual machines are separated into two major categories, based on their use and degree of correspondence to any real machine. A system virtual machine provides a complete system platform which supports the execution of a complete operating system (OS). In contrast, a process virtual machine is designed to run a single program, which means that it supports a single process. An essential characteristic of a virtual machine is that the software running inside is limited to the resources and abstractions provided by the virtual machine—it cannot break out of its virtual world.

Process virtual machines[edit]

A process VM, sometimes called an application virtual machine, runs as a normal application inside an OS and supports a single process. It is created when that process is started and destroyed when it exits. Its purpose is to provide a platform-independent programming environment that abstracts away details of the underlying hardware or operating system, and allows a program to execute in the same way on any platform.

A process VM provides a high-level abstraction — that of a high-level programming language (compared to the low-level ISA abstraction of the system VM). Process VMs are implemented using an interpreter; performance comparable to compiled programming languages is achieved by the use of just-in-time compilation.

This type of VM has become popular with the Java programming language, which is implemented using the Java virtual machine. Another example is the .NET Framework, which runs on a VM called the Common Language Runtime.

A special case of process VMs are systems that abstract over the communication mechanisms of a (potentially heterogeneous) computer cluster. Such a VM does not consist of a single process, but one process per physical machine in the cluster. They are designed to ease the task of programming parallel applications by letting the programmer focus on algorithms rather than the communication mechanisms provided by the interconnect and the OS. They do not hide the fact that communication takes place, and as such do not attempt to present the cluster as a single parallel machine.

Unlike other process VMs, these systems do not provide a specific programming language, but are embedded in an existing language; typically such a system provides bindings for several languages (e.g., C and FORTRAN). Examples are PVM (Parallel Virtual Machine) and MPI (Message Passing Interface). They are not strictly virtual machines, as the applications running on top still have access to all OS services, and are therefore not confined to the system model provided by the "VM".

System virtual machines[edit]

System virtual machines (sometimes called hardware virtual machines) allow the sharing of the underlying physical machine resources between different virtual machines, each running its own operating system. The software layer providing the virtualization is called a virtual machine monitor or hypervisor. A hypervisor can run on bare hardware (Type 1 or native VM) or on top of an operating system (Type 2 or hosted VM).

The main advantages of system VMs are:

multiple OS environments can co-exist on the same computer, in strong isolation from each other the virtual machine can provide an instruction set architecture (ISA) that is somewhat different from that of the real machine application provisioning, maintenance, high availability and disaster recovery

The main disadvantage of system VMs is:

a virtual machine is less efficient than a real machine because it accesses the hardware indirectly Multiple VMs each running their own operating system (called guest operating system) are frequently used in server consolidation, where different services that used to run on individual machines in order to avoid interference are instead run in separate VMs on the same physical machine. This use is frequently called quality-of-service isolation (QoS isolation).

The desire to run multiple operating systems was the original motivation for virtual machines, as it allowed time-sharing a single computer between several single-tasking OSes. This technique requires a process to share the CPU resources between guest operating systems and memory virtualization to share the memory on the host.

The guest OSes do not have to be all the same, making it possible to run different OSes on the same computer (e.g., Microsoft Windows and Linux, or older versions of an OS in order to support software that has not yet been ported to the latest version). The use of virtual machines to support different guest OSes is becoming popular in embedded systems; a typical use is to support a real-time operating system at the same time as a high-level OS such as Linux or Windows.

Another use is to sandbox an OS that is not trusted, possibly because it is a system under development. Virtual machines have other advantages for OS development, including better debugging access and faster reboots.

Alternate techniques such as Solaris Zones provides a level of isolation within a single operating system. This does not have isolation as complete as a VM. A kernel exploit in a system with multiple zones will affect all zones. Achieving the same goal in a virtual machine implementation would require exploiting a weakness in the hypervisor. A hypervisor typically has a smaller "attack surface" than a complete operating system, making this more challenging. Further, a kernel exploit in a VM guest would not affect other VMs on the host, just as a successful intrusion into one zone would not necessarily affect other zones. Zones are not virtual machines, but an example of "operating-system virtualization". This includes other "virtual environments" (also called "virtual servers") such as Virtuozzo, FreeBSD Jails, Linux-VServer, chroot jail, and OpenVZ. These provide some form of encapsulation of processes within an operating system. These technologies have the advantages of being more resource-efficient than full virtualization and having better observability into multiple guests simultaneously; the disadvantage is that, generally, they can only run a single operating system and a single version/patch level of that operating system - so, for example, they cannot be used to run two applications, one of which only supports a newer OS version and the other only supporting an older OS version on the same hardware. However, Sun Microsystems has enhanced Solaris Zones to allow some zones to behave like Solaris 8 or Solaris 9 systems by adding a system call translator.

Read more...


Portal:Java/Selected article/8[edit]

Java applet that uses 3D hardware acceleration, downloading from the server 3D files in .pdb format to visualize
NASA World Wind (open source) is a second generation applet that heavily uses OpenGL and on-demand data downloading to provide detailed 3D map of the world.

Java applet[edit]

A Java applet is an applet delivered to the users in the form of Java bytecode. Java applets can run in a Web browser using a Java Virtual Machine (JVM), or in Sun's AppletViewer, a stand-alone tool for testing applets. Java applets were introduced in the first version of the Java language in 1995. Java applets are usually written in the Java programming language but they can also be written in other languages that compile to Java bytecode such as Jython, Ruby or Eiffel.

Applets are used to provide interactive features to web applications that cannot be provided by HTML alone. They can capture mouse input (like rotating 3D object) and also have controls like buttons or check boxes. In response to the user action an applet can change the provided graphic content. This makes applets well suitable for demonstration, visualization and teaching purposes. For instance, a complete suite for ordinary differential equations course has been written. An applet can also be text area only, providing, for instance, cross platform command-line interface to some remote system. If needed, applet can leave the dedicated area and run as separate window. However applets have very little control on web page content outside the applet dedicated area, so they are less useful for improving the site appearance in general (while applets like news tickers or WYSIWYG editors are also known). Applet can also play media in formats that are not natively supported by the browser.

Java applets run at a speed that is comparable to (but generally slower than) other compiled languages such as C++, but many times faster than JavaScript. In addition they can use 3D hardware acceleration that is available from Java. This makes applets well suitable for non trivial, computation intensive visualizations.

HTML page may embed parameters that are passed to the applet. Hence the same applet may appear differently depending on that parameters were passed. First implementations were downloading an applet class by class. While classes are small files, there are frequently a lot of them, so applets got a reputation of slow loading components. However since jars were introduced an applet is usually delivered as a single file that has a size of the bigger image (hundreds of kilobytes to several megabytes).

Since Java's bytecode is platform independent, Java applets can be executed by browsers for many platforms, including Windows, Unix, Mac OS and Linux. It is also trivial to run Java applet as an application with very little extra code. This has the advantage of running a Java applet in offline mode without the need for internet browser software and also directly from the development IDE.

Many Java developers, blogs and magazines are recommending that the Java Web Start technology be used in place of Applets.

A Java Servlet is sometimes informally compared to be "like" a server-side applet, but it is different in its language, functions, and in each of the characteristics described here about applets.

Java is the most used application of eLearning for engineering education because of its high value of visualization.

Read more...


Portal:Java/Selected article/9[edit]

Java Platform, Standard Edition[edit]

Java Platform, Standard Edition or Java SE is a widely used platform for programming in the Java language. It is the Java Platform used to deploy portable applications for general use. In practical terms, Java SE consists of a virtual machine, which must be used to run Java programs, together with a set of libraries (or "packages") needed to allow the use of file systems, networks, graphical interfaces, and so on, from within those programs.

Nomenclature, standards and specifications[edit]

Java SE was known as Java 2 Platform, Standard Edition or J2SE from version 1.2 until version 1.5. The "SE" is used to distinguish the base platform from Java EE and Java ME. The "2" was originally intended to emphasize the major changes introduced in version 1.2, but was removed in version 1.6. The naming convention has been changed several times over the Java version history. Starting with J2SE 1.4 (Merlin), Java SE has been developed under the Java Community Process. JSR 59 was the umbrella specification for J2SE 1.4 and JSR 176 specified J2SE 5.0 (Tiger). Java SE 6 (Mustang) was released under JSR 270.

Java Platform, Enterprise Edition is a related specification which includes all of the classes in Java SE, plus a number which are more useful to programs which run on servers as opposed to workstations. Java Platform, Micro Edition is a related specification intended to provide a certified collection of Java APIs for the development of software for small, resource-constrained devices such as cell phones, PDAs and set-top boxes.

The JRE and JDK are the actual files that are downloaded and installed on a computer in order to run or develop java programs, respectively.

Read more...


Portal:Java/Selected article/10[edit]

Java Platform, Micro Edition[edit]

Java Platform, Micro Edition, or Java ME, is a Java platform designed for embedded systems (mobile devices are one kind of such systems). Target devices range from industrial controls to mobile phones (especially feature phones) and set-top boxes. Java ME was formerly known as Java 2 Platform, Micro Edition (J2ME).

Java ME was designed by Sun Microsystems, acquired by Oracle Corporation in 2010; the platform replaced a similar technology, PersonalJava. Originally developed under the Java Community Process as JSR 68, the different flavors of Java ME have evolved in separate JSRs. Sun provides a reference implementation of the specification, but has tended not to provide free binary implementations of its Java ME runtime environment for mobile devices, rather relying on third parties to provide their own.

As of 22 December 2006, the Java ME source code is licensed under the GNU General Public License, and is released under the project name phoneME.

As of 2008, all Java ME platforms are currently restricted to JRE 1.3 features and use that version of the class file format (internally known as version 47.0). Should Oracle ever declare a new round of Java ME configuration versions that support the later class file formats and language features, such as those corresponding to JRE 1.5 or 1.6 (notably, generics), it will entail extra work on the part of all platform vendors to update their JREs.[speculation?]

Java ME devices implement a profile. The most common of these are the Mobile Information Device Profile aimed at mobile devices, such as cell phones, and the Personal Profile aimed at consumer products and embedded devices like set-top boxes and PDAs. Profiles are subsets of configurations, of which there are currently two: the Connected Limited Device Configuration (CLDC) and the Connected Device Configuration (CDC).[1]

There are more than 2.1 billion Java ME enabled mobile phones and PDAs.[2] It is popular in sub $200 devices such as Nokia's Series 40. It was also used on the Bada operating system and on Symbian OS along with native software. Also, there are implementations for Windows CE, Windows Mobile, Maemo, MeeGo and Android available for separate download.[3][4]

Connected Limited Device Configuration[edit]

The Connected Limited Device Configuration (CLDC) contains a strict subset of the Java-class libraries, and is the minimum amount needed for a Java virtual machine to operate. CLDC is basically used for classifying myriad devices into a fixed configuration.

A configuration provides the most basic set of libraries and virtual-machine features that must be present in each implementation of a J2ME environment. When coupled with one or more profiles, the Connected Limited Device Configuration gives developers a solid Java platform for creating applications for consumer and embedded devices. The configuration is designed for devices with 160KB to 512KB total memory, which has a minimum of 160KB of ROM and 32KB of RAM available for the Java platform.

Mobile Information Device Profile[edit]

Designed for mobile phones, the Mobile Information Device Profile includes a GUI, and a data storage API, and MIDP 2.0 includes a basic 2D gaming API. Applications written for this profile are called MIDlets. Almost all new cell phones come with a MIDP implementation, and it is now the de facto standard for downloadable cell phone games. However, many cellphones can run only those MIDlets that have been approved by the carrier, especially in North America.[citation needed]

JSR 271: Mobile Information Device Profile 3 (Final release on 09 Dec, 2009) specified the 3rd generation Mobile Information Device Profile (MIDP3), expanding upon the functionality in all areas as well as improving interoperability across devices. A key design goal of MIDP3 is backward compatibility with MIDP2 content.

Information Module Profile[edit]

The Information Module Profile (IMP) is a profile for embedded, "headless" devices such as vending machines, industrial embedded applications, security systems, and similar devices with either simple or no display and with some limited network connectivity.

Originally introduced by Siemens Mobile and Nokia as JSR-195, IMP 1.0 is a strict subset of MIDP 1.0 except that it doesn't include user interface APIs — in other words, it doesn't include support for the Java package javax.microedition.lcdui. JSR-228, also known as IMP-NG, is IMP's next generation that is based on MIDP 2.0, leveraging MIDP 2.0's new security and networking types and APIs, and other APIs such as PushRegistry and platformRequest(), but again it doesn't include UI APIs, nor the game API.

Connected Device Configuration[edit]

The Connected Device Configuration is a subset of Java SE, containing almost all the libraries that are not GUI related. It is richer than CLDC.

Foundation Profile[edit]

The Foundation Profile is a Java ME Connected Device Configuration (CDC) profile. This profile is intended to be used by devices requiring a complete implementation of the Java virtual machine up to and including the entire Java Platform, Standard Edition API. Typical implementations will use some subset of that API set depending on the additional profiles supported. This specification was developed under the Java Community Process.

Personal Basis Profile[edit]

The Personal Basis Profile extends the Foundation Profile to include lightweight GUI support in the form of an AWT subset. This is the platform that BD-J is built upon.

Implementations[edit]

Sun provides a reference implementation of these configurations and profiles for MIDP and CDC. Starting with the JavaME 3.0 SDK, a NetBeans-based IDE will support them in a single IDE.

In contrast to the numerous binary implementations of the Java Platform built by Sun for servers and workstations, Sun does not provide any binaries for the platforms of Java ME targets with the exception of an MIDP 1.0 JRE (JVM) for Palm OS.[5] Sun provides no J2ME JRE for the Microsoft Windows Mobile (Pocket PC) based devices, despite an open-letter campaign to Sun to release a rumored internal implementation of PersonalJava known by the code name "Captain America".[6] Third party implementations like JBlend and JBed are widely used by Windows Mobile vendors like HTC and Samsung.

Operating systems targeting Java ME have been implemented by DoCoMo in the form of DoJa, and by SavaJe as SavaJe OS. The latter company was purchased by Sun in April 2007 and now forms the basis of Sun's JavaFX Mobile. The company IS2T provides a Java ME virtual machine (MicroJvm) for any RTOS and even with no RTOS (then qualified as baremetal). When baremetal, the virtual machine is the OS/RTOS: the device boots in Java.[7]

MicroEmulator provides an open source (LGPL) implementation of an MIDP emulator. This is a Java Applet based emulator and can be embedded in web pages.

The open-source Mika VM aims to implement JavaME CDC/FP, but is not certified as such (certified implementations are required to charge royalties, which is impractical for an open-source project). Consequently devices which use this implementation are not allowed to claim JavaME CDC compatibility.

JSRs (Java Specification Requests)[edit]

Foundation[edit]

JSR # Name Description
68 J2ME Platform Specification
30 CLDC 1.x
37 MIDP 1.0
118 MIDP 2.x
139 CLDC 1.1
271 MIDP 3.0 Java ME 3.4 and earlier only, Last Specification for Mobile Phones, Java Language features as Java SE 1.3
360 CLDC 8 New in Java ME 8
[1] MEEP 8 New in Java ME 8, Language feature as Java SE 8, for Internet of Everything devices

Main extensions[edit]

JSR # Name Description MSA
75 File Connection and PIM File system, contacts, calendar, to-do Yes
82 Bluetooth Yes
120 Wireless Messaging API (WMA)
135 Mobile Media API (MMAPI) Audio, video, multimedia Yes
172 Web Services Yes
177 Security and Trust Services Yes
179 Location API Yes
180 SIP API Yes
184 Mobile 3D Graphics High level 3D graphics Yes
185 Java Technology for the Wireless Industry (JTWI) General
205 Wireless Messaging 2.0 (WMA)
211 Content Handler API Yes
226 Scalable 2D Vector Graphics API for J2ME Yes
228 Information Module Profile - Next Generation
229 Payment API Yes
234 Advanced Multimedia Supplements (AMMS) MMAPI extensions Yes
238 Mobile Internationalization API Yes
239 Java Bindings for the OpenGL ES API
248 Mobile Service Architecture Yes
253 Mobile Telephony API
256 Mobile Sensor API
257 Contactless Communication API
258 Mobile User Interface Customization API
272 Mobile Broadcast Service API for Handheld Terminals
280 XML API for Java ME
281 IMS Services API
287 Scalable 2D Vector Graphics API 2.0 for Java ME
293 Location API 2.0
298 Telematics API for Java ME
300 DRM API for Java ME
325 IMS Communication Enablers

Future[edit]

JSR # Name Description
297 Mobile 3D Graphics API (M3G) 2.0

ESR[edit]

The ESR consortium is devoted to Standards for embedded Java. Especially cost effective Standards. Typical applications domains are industrial control, machine-to-machine, medical, e-metering, home automation, consumer, human-to-machine-interface, ...

ESR # Name Description
001 B-ON (Beyond CLDC) B-ON serves as a very robust foundation for implementing embedded Java software. It specifies a reliable initialization phase of the Java device, and 3 kind of objects: immutable, immortal and regular (mortal) objects.
002 MicroUI MicroUI defines an enhanced architecture to enable an open, third-party, application development environment for embedded HMI devices. Such devices typically have some form of display, some input sensors and potentially some sound rendering capabilities. This specification spans a potentially wide set of devices.
011 MWT MWT defines three distinct roles: Widget Designers, Look and Feel Designers, and Application Designers. MWT allows a binary HMI application to run the same on all devices that provide a compliant MWT framework (embedded devices, cellphones, set-top box TV's, PC's, etc...) allowing for true consistency and ubiquity of applications across product lines (ME, SE, EE).
015 ECLASSPATH ECLASSPATH unifies CLDC, CDC, Foundation, SE, and EE execution environments with a set of around 300 classes API. Compiling against CLDC1.1/ECLASSPATH makes binary code portable across all Java execution environments.

See also[edit]

Notes[edit]

Bibliography[edit]

External links[edit]

 Read more...