Extending Java for Secure, Distributed Applications

E extends Sun's Java programming language with some powerful enhancements, featuring distributed processing, enhanced security and a message-based language structure that support the development of applications for collaboration and commerce on the Internet. The strength of the E Extensions to Java is in their ability to let you to write secure communications-oriented applications easily and effectively.


Properties of E

E's unique capabilities are derived from the following four categories of communications-oriented properties:

Distributed communication --

provides a single messaging facility that allows an object to send a message to another object, even if the other object is in a different machine on the network. E lets you automatically establish connections between objects without having to deal directly with the underlying network protocols.

Capability semantics --

offers a security model based on the use of capabilities, which grant permissions to objects to send particular messages to particular objects in a distributed system. It is impossible for an object to send an unauthorized message. Capability semantics provides a simple, effective, and dependable tool for the construction of secure systems.

Optimistic computation --

allows execution to advance without waiting, thereby providing better use of parallel execution and load balancing. Through optimistic computation, problems of deadlock and race conditions are avoided.

Trust management --

provides a framework for cryptographic verification of the authorship and integrity of E classes and packages. In a networked world, users will want to download and run software from disparate sources on their machines. E provides a Trust Manager to verify the originator of a class or package and can verify that the class has not been altered or tampered with. In addition, classes and packages from unknown or untrusted sources are loaded only if they contain no references to capabilities the user has designated as restricted, and only classes and packages from sources trusted by the user will be loaded. These mechanisms can prohibit the spread of viruses or Trojan horses that may damage or misappropriate user data.

Features of E

The E compiler and runtime extend Java. Everything you can do in Java can be done using E. E-objects and Java objects can both send messages to E- objects. Both E-objects and Java objects can call Java objects.

In addition, E provides the following:

Automatic connection management

E's single messaging facility lets you automatically establish connections between objects without having to deal directly with the underlying network protocols.

Transparent object-to-object communications

E takes care of details related to network protocols and intersystem transmissions. A reference to an E-object is the same whether the object is on the same or remote machines; you do not need to code the network access details.

Non-blocking message passing

E's optimistic programming feature ensures that sending a message can never "hang" the requesting object. This is because unlike Java call/return semantics, an object can send a message to another E-object and immediately continue computing other code.

Deadlock and race avoidance

E's messaging model eliminates the need for threads and synchronization. Deadlock and race conditions are avoided because data can be encapsulated within an E-object and an E-object will only process one message at a time.

Latency compensation

When optimistic comutation is applied to a network, the likelihood of parallelism is increased and the likelihood of sequential delays is reduced.

Distributed references

E allows you to distribute references to E-objects over the network.

Persistent objects

E provides a persistent database object. This lets you store your objects to disk and later recall them to use in other applications.

Distributed garbage collection

E's distributed garbage collector can reclaim cycle structures, even when distributed across the network.

Access controlled messages and objects

E provides a set of standard classes and methods that let you restrict access to the file system and network environment, while retaining the level of features that you choose.

Electric Communities

Electric Communities, established in 1993, is a software development company based in Cupertino, California. The company develops enabling technologies that provide secure, scalable, and extensible foundations for commercial and social interaction on the Internet.

The E Programming Language can be downloaded from Electric Communities' Web site, http://www.communities.com/. For further information regarding the E Extensions to Java or to speak with us about our Business Partnership Program, please contact us at:

Electric Communities
10101 N. De Anza Boulevard
Cupertino, CA 95014
(408) 342-9500
electric@communities.com

The E logo, Electric Communities, and the Electric Communities logos are trademarks of Electric Communities. All other marks are owned by their respective owners.

© 1996 Electric Communities