From: Alexander Bokovoy <a.bokovoy@sam-solutions.net>
To: sisyphus@altlinux.ru
Subject: Re: [sisyphus] J2ME (was: Oracle9i)
Date: Wed, 6 Mar 2002 18:13:55 +0200
Message-ID: <20020306161354.GJ20511@sam-solutions.net> (raw)
In-Reply-To: <Pine.LNX.4.33.0203061905160.25991-100000@ontil.ihep.su>
On Wed, Mar 06, 2002 at 07:06:33PM +0300, Vitaly Lugovsky wrote:
> On Wed, 6 Mar 2002, Alexander Bokovoy wrote:
>
> > В J2ME (Micro Edition), вышедшей в феврале этого года, доступны на выбор
> > (compile time) три разных алгоритма GC: generational (default), semispace
> > и mark&sweep. Это, конечно, не сборка мусора на этапе компиляции, но
> > значительно лучше до сих пор использующегося в J2SE/J2EE. Подробности в
> > исходниках J2ME: cdcfoundation/doc/guide/gc.html
> >
> > На объемах памяти до 2Мб эта штука ведет себя очень приятно.
> А можно этот рантайм прикрутить к J2SE? Или нереально?
> Нужно только, чтоб оно умело гонять Resin+GNU Kawa+GNU BRL servlet...
Понимаю. Но видимо, пока что нереально. Никто не видел исходников J2SE?
Исходники J2ME доступны и в качестве виртуальной машины там используется
новая CVM. Вот только J2ME RMI Profile, который почти соответствует J2SE за
исключением Swing и некоторых других компонент, не доступен для скачивания
в страны СНГ.
С Вашего разрешения процитирую overview.html из J2ME, чтобы было понятно,
что в ней есть; я смотрел конфигурацию CDC.
----------------------------------------------------------------------------
Introduction
JavaTM 2 Platform, Micro Edition is the inner plumbing of Java technology
on the Go!
The JavaTM 2 Platform, Micro Edition (J2ME) technology is designed and
architected to address the needs of a broad range of consumer electronic
and embedded devices. J2ME supports environments targeted at consumer
products. It provudes a framework for effectively organizing categories of
devices and specifying environments for the categories.
Architecture Overview
The J2ME architecture is based on two fundamental elements:
* Configuration: a virtual machine and a minimal set of core class
libraries and APIs. A configuration specifies a generalized runtime
environment for consumer electronic and embedded devices.
* Profile: an industry-defined specification of the Java APIs used by
manufacturers and developers to address a type of consumer electronic
or embedded device.
Together, a configuration and a profile deliver a specification for
consumer electronics and embedded device manufactures to implement on
their products. They provide a Java Application Environment to which third
party developers can write their applications.
J2ME Configurations
Currently, J2ME offers two complementary configurations:
* Connected, Limited Device Configuration (CLDC)
* Connected Device Configuration (CDC)
Both are derived through the Java Community Process and targeted at
different ends of the consumer electronics and embedded devices industry.
CLDC Devices
The Connected, Limited Device Configuration (CLDC) is intended for
lower-end devices. Typically, these devices are battery powered, run a 16-
or 32-bit RISC/CISC microprocessor/controller, with as little as 160Kb -
512Kb of total memory; 128Kb for the storage of the K virtual machine and
libraries.
CLDC contains the K virtual machine (KVM). The KVM is a new virtual
machine designed from the ground up and optimized with the constraints of
inexpensive, lower-end devices. Named to reflect that its size is measured
in terms of kilobytes, the KVM is suitable for these resource-constrained
devices.
CDC Devices
The Connected Device Configuration (CLDC) is intended for higher-end,
emerging, next generation devices. Typically, these devices run a 32-bit
microprocessor/controller and contain more than 2.0Mb of total memory for
the storage of the C virtual machine and libraries.
CDC contains the C virtual machine (CVM). The CVM is a full-featured, Java
2 "Blue Book" virtual machine; designed for devices needing the
functionality of the Java 2 VM feature set. The CVM APIs are a superset of
the KVM
J2ME Profiles
Currently, the following industry-defined profiles are available.
Mobile Information Device Profile
The Mobile Information Device Profile (MIDp) is a set of Java APIs that
provide a complete J2ME application runtime environment targeted at mobile
information devices, such as cellular phones and two-way pagers. This
allows new applications and services to be dynamically deployed on the end
user devices. The MIDp specification addresses issues such as user
interface (UI), persistence storage, networking, and appliation model.
Foundation Profile
The Foundation Profile (FNDp) is a set of Java APIs intended for
higher-end devices requiring a custom user interface (UI), which is
typically provided by a device manufacturer. FNDp is designed to run with
the Connected Device Configuration (CDC).
Personal Profile
The J2ME Personal Profile provides the J2ME environment for those devices
with a need for a high degree of Internet connectivity and Web fidelity.
A Java Community Process (JCP) expert group has been convened to create an
industry-defined user interface (UI) profile. Tentatively, this is being
called the Personal Profile. This profile works in combination with CDC
and FNDp.
RMI Profile
The J2ME RMI Profile provides Java platform to Java platform remote method
invocation for Java devices and interoperates with J2SE RMI.
CVM Feature Set
The C Virtual Machine (CVM) is the basis for J2ME CDC and profiles. Many
JVMs for desktops and servers do not scale well to embedded and consumer
environments.
CVM is a new VM implementation for consumer and embedded systems.
* Complete Java 2 VM (Blue Book)
* Small and reliable
* More deterministic behavior
* Modular and tunable
* ~256KB with JNI, reflection, verification, and class loading
Optimized Interpreter
The CVM interpreter optimizes:
* Method calls and returns
* Java synchronization support
Fast Java Synchronization
The CVM uses light-weight locking if there is no contention. It uses just
a couple of bits.
Native Thread Support
The CVM supports native threads and arbitrary thread pre-emption at
machine instruction boundaries. It has proper internal synchronization,
and handles exact garbage collection and Java synchronization correctly in
the presence of pre-emptive native threading.
Memory System
The CVM memory system features the following:
* Exactness
* Small average garbage collection pause times
* Full separation of VM from the memory system
* Pluggable garbage collectors
* Generatinal garbage collection
ROMable Classes
The CVM runs with "pre-loaded", mostly read-only classes. This provides
better start-up time, less fragmentation, more data sharing, and the
ability to execute byte-codes out of ROM.
Small Class Footprint
The small class footprint reduces loaded and ROMized class footprints to a
minimum, about 40% compared to JDK classic and 17% compared to Personal
Java.
1.3 VM Support
CVM supports the 1.3 VM features and libraries, including weak references,
reflection, serialization, JNI, and RMI.
Java 2 Security
CVM supports Java 2 security.
JPDA Support
The JPDA support consists of:
* JVMDI support
* Remote debugging support
* Connect via Java Debug Wire Protocol (JDWP)
Portable
The CVM is implemented in C, with very little assembler.
Porting Layer
The CVM contains a rich, well-documented porting layer. It is RTOS-aware,
supports multiple porting options (for the tricky stuff), and provides the
bare minimum left to the porter for fast re-targeting.
Hardened System
The "hardened" system in low memory cases ensures that failures such as
out of memory and out of file descriptors are handled gracefully.
Stack Usage
The CVM utilizes deterministic and limited stack usage.
* Static analysis on the executable reduces C recursion to a minimum.
* Stack checks for the few remaining recursion cases prevent stack
overflow.
* Reduced native stack usage wherever possible.
Startup and Shutdown
The CVM provides ordered shutdown and re-startability.
* Clean shutdown and re-start of our VM in the same address space (e.g.,
on a RTOS), without help from a process model.
* Free up all our memory and stop all our threads without any leaks on
VM shutdown.
* Re-initialize correctly on VM re-start.
Interfaces
The CVM provides extensible and well-defined interfaces.
* The interfaces between components, like garbage collection, type
system, locking and interpreter are clearly defined, well-separated,
and well-documented.
* It is much easier to add new features to CVM compared to the previous
Personal Java Virtual Machine.
----------------------------------------------------------------------
Copyright © 2000 Sun Microsystems, Inc. All Rights Reserved. Sun
------------------------------------------------------------------------------
--
/ Alexander Bokovoy
Software architect and analyst // SaM-Solutions Ltd.
---
QOTD:
"I've always wanted to work in the Federal Mint. And then go on
strike. To make less money."
next prev parent reply other threads:[~2002-03-06 16:13 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-02-28 19:31 [sisyphus] Исповедь извращенца, или вопрос про chroot Vitaly Lugovsky
2002-02-28 21:38 ` [sisyphus] " cornet
2002-03-01 10:09 ` Igor Homyakov
2002-03-01 13:45 ` Vitaly Lugovsky
2002-03-01 13:51 ` "Баталов Григорий"
2002-03-01 14:05 ` Vitaly Lugovsky
2002-03-01 14:09 ` "Баталов Григорий"
2002-03-01 14:42 ` Andrey S. Pankov
2002-03-01 14:54 ` [sisyphus] " cornet
2002-03-01 16:10 ` Vitaly Lugovsky
2002-03-01 14:57 ` [sisyphus] " Artem K. Jouravsky
2002-03-01 16:01 ` [sisyphus] " Dmitry V. Levin
2002-03-04 8:02 ` Re: [sisyphus] Исповедь Sergey S. Skulachenko
2002-03-04 8:22 ` [JT] ML (was Re: [sisyphus] Исповедь...) Dmitry V. Levin
2002-03-04 8:25 ` [sisyphus] " Sergey S. Skulachenko
2002-03-04 8:44 ` thread filter (was: Re: [JT] ML (was Re: [sisyphus] Исповедь...)) Vyt
2002-03-04 12:38 ` Re: [sisyphus] Исповедь Vitaly Lugovsky
2002-03-04 12:43 ` Sergey S. Skulachenko
2002-03-04 13:30 ` Vitaly Lugovsky
2002-03-05 14:20 ` [sisyphus] Oracle 9i und Sisyphus (Was: Исповедь...) Alexei Takaseev
2002-03-05 15:48 ` Igor Homyakov
2002-03-05 15:41 ` Alexei Takaseev
2002-03-06 10:13 ` [sisyphus] " Mikhail Zabaluev
2002-03-06 14:04 ` Vitaly Lugovsky
2002-03-06 15:32 ` Alexander Bokovoy
2002-03-06 15:54 ` [sisyphus] Re[2]: " michael
2002-03-06 15:53 ` Alexander Bokovoy
2002-03-06 16:26 ` [sisyphus] Re[2]: " michael
2002-03-06 16:06 ` [sisyphus] J2ME (was: Oracle9i) Vitaly Lugovsky
2002-03-06 16:13 ` Alexander Bokovoy [this message]
2002-03-06 15:52 ` [sisyphus] Re: Oracle 9i und Sisyphus (Was: Исповедь...) Marat Khairullin
2002-03-07 8:36 ` [sisyphus] " Vlad Harchev
2002-03-07 13:09 ` [sisyphus] Re: Informix: [was] " Marat Khairullin
2002-03-07 15:27 ` [sisyphus] Re: [sisyphus] " Vitaly Lugovsky
2002-03-07 15:55 ` Marat Khairullin
2002-03-08 8:33 ` [sisyphus] " Vlad Harchev
2002-03-06 17:16 ` Roman S
2002-03-06 22:03 ` [sisyphus] Re: [JT] " Mikhail Zabaluev
2002-03-07 15:24 ` Vitaly Lugovsky
2002-03-09 12:28 ` Mikhail Zabaluev
2002-03-06 15:32 ` [sisyphus] " Anton Farygin
2002-03-06 15:33 ` Korshunov Ilya
2002-03-06 16:09 ` [sisyphus] [JT] " Anton Farygin
2002-03-06 17:10 ` [sisyphus] " Roman S
2002-03-01 16:23 ` [sisyphus] Re: [sisyphus] Исповедь извращенца, или вопрос про chroot Vlad Harchev
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20020306161354.GJ20511@sam-solutions.net \
--to=a.bokovoy@sam-solutions.net \
--cc=sisyphus@altlinux.ru \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
ALT Linux Sisyphus discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/sisyphus/0 sisyphus/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 sisyphus sisyphus/ http://lore.altlinux.org/sisyphus \
sisyphus@altlinux.ru sisyphus@altlinux.org sisyphus@lists.altlinux.org sisyphus@lists.altlinux.ru sisyphus@lists.altlinux.com sisyphus@linuxteam.iplabs.ru sisyphus@list.linux-os.ru
public-inbox-index sisyphus
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.sisyphus
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git