Find JSRs
Submit this Search


Ad Banner
 
 
 
 

JSRs: Java Specification Requests
JSR 278: Resource Management API for JavaTM ME

This JSR has been Dormant
Reason: The Executive Committee voted to list this JSR as dormant in May 2012.

Updates to the Original JSR

The following sections have been updated from the original request.

2006.01.19:

2.1 Please describe the proposed Specification:

Traditionally, Java platforms that run in a single operating system process do not provide explicit management of resources since it is taken care of by the operating system s intrinsic features. The only resource management facility provided by the virtual machine is the Garbage Collector which is solely responsible of managing memory for all Java objects (regardless of which application they belong to) within a virtual machine. The main limitation of the garbage collector is its inability to handle native resources such as files, sockets, and native memory allocated by JNI native methods. Furthermore, reachability of Java objects may not be sufficient for determining whether an object is indeed alive or not, since an object may be reachable through a shared collection of objects (or repository) and yet be bound to a particular application whose lifecycle determines the liveness of the object.

However, several containment frameworks such as Xlet engines typically run in a single virtual machine within a single operating system process and provide an environment that can initiate, run, and terminate multiple applications. When these containment frameworks are embedded in systems requiring high availability, they necessitate explicit management of resources in order to provide a robust and long running environment.

The core of this API is an interface called ResourceManager which defines an interface that all resource managers must provide. The functionality provided by ResourceManager is the ability to force the reclamation of all resources bound to a specific application execution environment. Also, resource managers (classes implementing the ResourceManager interface) may be dynamically added to a repository of resource managers which is responsible for controlling the resource reclamation of all resources bound to a specific application. This way, the Resource Management API provides extensibility, by which new profiles can be added to the Java platform and benefit from the integrated resource management features.

The extensibility feature of this API is the most important factor for proposing it in the standard JCP process. Any existing or newly profiles that utilizes this API will benefit from its functionality and reversely, any Java platform that supports this API will be able to provide robustness as long as any plug-in profiles support this API.

This API assumes (or may include) the definition of application execution environment, which provides a unique isolated computing environment within a virtual machine that is particular to each application. The Application Isolation API Specification (JSR-121) is particularly well-fit to serve this purpose. It clearly states that resource control is not within its scope.

This API particularly targets J2ME platforms. It basically targets support for explicit resource management feature within single process virtual machines, but the same API may be used to provide inter-process resource management capability for multiprocess virtual machines as well.

This API will focus on the ability to control the usage of resources among different applications within a single or multi-process Java Virtual Machines. RM API will have a resource manager for each resource such as file, thread, socket, image, etc. These resource managers will be kept alive as long as the Java VM is running. All the resources which are bound to a specific application execution environment will be freed by the resource managers upon termination of the environment. The resource managers should be bookkeeping all the resources.

The unit of management for the RM API is an application execution environment. The abstraction introduced by the Application Isolation API (JSR 121) best serves this feature.

2.2 What is the target Java platform? (i.e., desktop, server, personal, embedded, card, etc.)

It targets both J2ME CLDC and CDC based Java platforms. Typical J2ME CDC-based Home devices include Digital TV, Digital Set-top boxes, and Home gateways. J2ME CLDC-based devices include mobile phones.

2.3 The Executive Committees would like to ensure JSR submitters think about how their proposed technology relates to all of the Java platform editions. Please provide details here for which platform editions are being targeted by this JSR, and how this JSR has considered the relationship with the other platform editions.

The RM API JSR targets both J2ME CLDC and CDC.

2.5 What need of the Java community will be addressed by the proposed specification?

Containment frameworks such as Xlet engines require support for robust application management and resource control particularly if they are embedded in a system requiring high availability.
J2ME CDC-based middlewares such as OCAP (Open Cable Application Platform) and MHP (Multimedia Home Platform) necessitate a robust Xlet execution environment that provides efficient resource management facilities for dynamic and responsive application execution and lifecycle control.
J2ME CLDC-based containment frameworks require the same level of robustness support as in CDC-based middlewares.

2.7 Please give a short description of the underlying technology or technologies:

The technology used to implement this API will vary widely depending on the level of control in the resource management functionality. Native implementation is mandatory to support efficient management and reclamation of native resources. On the other hand, simple Java-based implementations are also viable to support simple resource management functionalities.
Also, this API is closely tied to the underlying technologies to implement JSR-121. Application termination should trigger the reclamation of all resources bound to a specific application execution environment.

2.8 Is there a proposed package name for the API Specification? (i.e., javapi.something, org.something, etc.)

javax.microedtion.rm, java.lang.rm

2.13 Please describe the anticipated schedule for the development of this specification.

January 2006: EG formed
February 2006: Early Draft Review
April 2006: Public Review
July 2006: Proposed Final Draft
August 2006: Final Approval Ballot


Original Java Specification Request (JSR)

Identification | Request | Contributions

Section 1. Identification

Submitting Member: Samsung Electronics Corporation

Name of Contact Person: Ho An

E-Mail Address: ho.an@samsung.com

Telephone Number: +82 2 3416 0594

Fax Number: +82 2 3416 0303


Specification Lead: Ho An

E-Mail Address: ho.an@samsung.com

Telephone Number: +82 2 3416 0594

Fax Number: +82 2 3416 0303


Initial Expert Group Membership:

Sun Microsystems, Inc

Supporting this JSR:

Sun Microsystems, Inc



Section 2: Request

2.1 Please describe the proposed Specification:

NOTE that this information has been updated from this original request.

Traditionally, Java platforms that run in a single operating system process do not provide explicit management of resources since it is taken care of by the operating system?s intrinsic features. The only resource management facility provided by the virtual machine is the Garbage Collector which is solely responsible of managing memory for all Java objects (regardless of which application they belong to) within a virtual machine. The main limitation of the garbage collector is its inability to handle native resources such as files, sockets, and native memory allocated by JNI native methods. Furthermore, reachability of Java objects may not be sufficient for determining whether an object is indeed "alive" or not, since an object may be reachable through a shared collection of objects (or repository) and yet be bound to a particular application whose lifecycle determines the liveness of the object.

However, several containment frameworks such as Xlet engines typically run in a single virtual machine within a single operating system process and provide an environment that can initiate, run, and terminate multiple applications. When these containment frameworks are embedded in systems requiring high availability, they necessitate explicit management of resources in order to provide a robust and long running environment.

The core of this API is an interface called ResourceManager which defines an interface that all resource managers must provide. The functionality provided by ResourceManager is the ability to force the reclamation of all resources bound to a specific application execution environment. Also, resource managers (classes implementing the ResourceManager interface) may be dynamically added to the framework. This provides extensibility which allows new profiles to be added to the Java platform and still benefit from the integrated resource management framework.

The extensibility feature of this API is the most important factor for proposing this API in the standard JCP process. Any existing or newly profiles that utilizes this API will benefit from its functionality and reversely, any Java platform that supports this API will be able to provide robustness as long as any plug-in profiles support this API.

This API assumes (or may include) the definition of application execution environment, which provides a unique isolated computing environment within a virtual machine that is particular to each application. The Application Isolation API Specification (JSR-121) is particularly well-fit to serve this purpose. It clearly states that resource control is not within its scope.

This API particularly targets J2ME platforms that run in a single process environment. Hence, multi-process virtual machines (mostly in J2SE or J2EE platforms and even in some J2ME platforms) may not benefit from providing this API.

Resource Management Framework (RMF) API will be an optional package for the J2ME configurations CDC.
This framework will focus on the ability to control the usage of resources among different applications within a single Java Virtual Machine. RMF will have a resource manager for each resource such as file, thread, socket, image, etc. These resource managers will be kept alive as long as the Java VM is running. All the resources which are bound to a specific application execution environment will be freed by the resource managers upon termination of the environment. The resource managers should be bookkeeping all the resources.
The unit of management for the RMF API is an application execution environment. The abstraction introduced by the Application Isolation API (JSR 121) best serves this feature.

2.2 What is the target Java platform? (i.e., desktop, server, personal, embedded, card, etc.)

NOTE that this information has been updated from this original request.

J2ME CDC-based Home devices such as iDigital TV, STB Digital Set-top boxes, Home gateways, etc.

2.3 The Executive Committees would like to ensure JSR submitters think about how their proposed technology relates to all of the Java platform editions. Please provide details here for which platform editions are being targeted by this JSR, and how this JSR has considered the relationship with the other platform editions.

NOTE that this information has been updated from this original request.

RMF JSR currently targets J2ME CDC only. However EG will consider the same RMF API is applicable to CLDC to avoid further unnecessary fragmentation.

2.4 Should this JSR be voted on by both Executive Committees?

No

2.5 What need of the Java community will be addressed by the proposed specification?

NOTE that this information has been updated from this original request.

Containment frameworks such as Xlet engines require support for robust application management and resource control particularly if they are embedded in a system requiring high availability. J2ME based middlewares such as OCAP (Open Cable Application Platform) and MHP (Multimedia Home Platform) necessitate a robust Xlet execution environment that provides efficient resource management facilities for dynamic and responsive application execution and lifecycle control.

2.6 Why isn't this need met by existing specifications?

The Application Isolation API Specification (JSR-121) defines the features for supporting isolation of application execution environments, but resource management is not covered within its scope. Other API specifications are either irrelevant or inappropriate for J2ME platforms.

2.7 Please give a short description of the underlying technology or technologies:

NOTE that this information has been updated from this original request.

The technology used to implement this API will vary widely depending on the level of control in the resource management functionality. Native implementation is mandatory to support efficient management and reclamation of native resources. On the other hand, simple Java-based implementations are also viable to support simple resource management functionalities.
Also, this API is closely tied to the underlying technologies to implement JSR-121 in a single process virtual machine. Application termination should trigger the reclamation of all resources bound to a specific application execution environment.

2.8 Is there a proposed package name for the API Specification? (i.e., javapi.something, org.something, etc.)

NOTE that this information has been updated from this original request.

javax.microedtion.rmf, java.lang.rmf

2.9 Does the proposed specification have any dependencies on specific operating systems, CPUs, or I/O devices that you know of?

No

2.10 Are there any security issues that cannot be addressed by the current security model?

No

2.11 Are there any internationalization or localization issues?

No

2.12 Are there any existing specifications that might be rendered obsolete, deprecated, or in need of revision as a result of this work?

No

2.13 Please describe the anticipated schedule for the development of this specification.

NOTE that this information has been updated from this original request.

July 2005: EG formed
October 2005: Early Draft Review
January 2006: Public Review
March 2006: Proposed Final Draft
May 2006: Final Approval Ballot

2.14 Please describe the anticipated working model for the Expert Group working on developing this specification.

It is anticipated that a combination of email discussion, feedback on regular drafts, conference calls and face-to-face meetings will work well.

2.15 It is important to the success of the community and each JSR that the work of the Expert Group be handled in a manner which provides the community and the public with insight into the work the Expert Group is doing, and the decisions that the Expert Group has made. The Executive Committees would like to ensure Spec Leads understand the value of this transparency and ask that each JSR have an operating plan in place for how their JSR will address the involvement of the community and the public. Please provide your plan here, and refer to the Spec Lead Guide for a more detailed description and a set of example questions you may wish to answer in your plan.

Interim drafts of the specification will be made available on the JSR community page. The schedule will be defined by the expert group.

2.16 Please describe how the RI and TCK will de delivered, i.e. as part of a profile or platform edition, or stand-alone, or both. Include version information for the profile or platform in your answer.

RI and TCK will be produced as a part of this JSR with each being licensed separately.

2.17 Please state the rationale if previous versions are available stand-alone and you are now proposing in 2.13 to only deliver RI and TCK as part of a profile or platform edition (See sections 1.1.5 and 1.1.6 of the JCP 2 document).

N/A

2.18 Please provide a description of the business terms for the Specification, RI and TCK that will apply when this JSR is final.

We will license to all interested parties. TCK and RI will be licensed separately.
For TCK we will charge a single one time fee of max $50000 USD and an annual maintenance fee, max $20000 USD/pa. TCK will include the binary environment and source code of the test suite. Maintenance fee covers limited basic support, first level TCK appeals process, bug fixes and updates, which are due to changes in the specification, and when made available by the specification lead. Major new releases (esp. follower JSR) might be subject to additional single one time fee.
For RI in source code form we will charge one time access fee, and annual maintenance fee. Maintenance covers bug fixes, updates and new releases necessary due to spec changes, and when made generally available by specification lead.





Section 3: Contributions

3.1 Please list any existing documents, specifications, or implementations that describe the technology. Please include links to the documents if they are publicly available.

JSR 121: Application Isolation API Specification

3.2 Explanation of how these items might be used as a starting point for the work.

JSR 121: Application Isolation API Specification