ALT Linux Sisyphus discussions
 help / color / mirror / Atom feed
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."



  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