We describe some concepts that will underlie the development of emerging distributed object based systems
|
What is the Web Document Object Model and why is Dynamic HTML (DHTML) intriguing and XML critical
|
Why is JavaScript non trivial as the language to capture changes in document object structure and to choose appropriate rendering
-
We stress constraints of cross disability interfaces
|
Where do CORBA and Jini fit in?
|
We define the Pragmatic Object Web as the emerging synthesis of multiple object models
|
We describe the importance of the Web as a source of information objects and as a mechanism for invoking general server side objects
|
We stress the important role of both Asynchronous and Synchronous collaboration and the web and web-based collaboration allows one to implement it.
|
We use ASC Gateway project as an example of hybrid object systems
|
We describe some concepts that will underlie the development of emerging distributed object based systems
|
What is the Web Document Object Model and why is Dynamic HTML (DHTML) intriguing and XML critical
|
Why is JavaScript non trivial as the language to capture changes in document object structure and to choose appropriate rendering
-
We stress constraints of cross disability interfaces
|
Where do CORBA and Jini fit in?
|
We define the Pragmatic Object Web as the emerging synthesis of multiple object models
|
We describe the importance of the Web as a source of information objects and as a mechanism for invoking general server side objects
|
We stress the important role of both Asynchronous and Synchronous collaboration and the web and web-based collaboration allows one to implement it.
|
We use ASC Gateway project as an example of hybrid object systems
|
Web Page objects
|
General Objects
|
Pragmatic Object Web
|
Multi Tier Object/Service Arch.
|
HTML
|
XML and XHTML
|
XML as a Database Serialization
|
JavaScript/ECMAScript
|
Dynamic HTML DHTML
|
CSS Cascading Style Sheets
|
Document Object Model DOM
|
Current DOM: JavaScript plus DHTML
|
W3C DOM
|
Jini and Service Architecture
|
XML as Web Template Language
|
CORBA and HPCC Examples
|
CORBA and Security
|
JWORB Pragmatic Object Web
|
Gateway and XML
|
Tango Architecture
|
Collaborative or Shared Objects
|
Universal Access
|
Web-linked Databases
|
Lotus Notes
|
Shared Web Pages are Everything
|
JavaScript Shared Browser
|
|
The Object Web Signifies the merger of distributed object and web technologies
|
The Pragmatic Object Web asks us to take the best of CORBA (Industry Standard) COM (Microsoft PC Standard) Java (Web Software Infrastructure) and W3C (XML)
|
An "object" is an entity that can be
-
registered, addressed, located
-
has properties and methods
|
The most common object is a Web Page
|
The richest available object model is the Web Document Object Model or DOM
|
JavaScript is one language to manipulate this DOM
|
Web Browsers render this object
|
Web Servers broker this object
|
As Web Pages are natural user interface to ALL objects, XML extensions to web pages reflects all objects ....
|
Contents of (relational) Databases -- give these a web interface and view as an XML (or HTML) stream
-
Web-linked databases use Java Software and W3C serialization (XML) and rendering technology (HTML)
|
Computer Programs -- from CGI Scripts to Servlets to CORBA IDL brokered Fortran Programs
|
(Large) data resources -- from file systems to archival storage
|
Devices -- from toasters, microsensors to surveillance cameras, PC's, Printers, Supercomputers, Telescopes
|
Electronic Mail Messages -- favorite form of collaboration
|
People
|
Web Page objects
|
General Objects
|
Pragmatic Object Web
|
Multi Tier Object/Service Arch.
|
HTML
|
XML and XHTML
|
XML as a Database Serialization
|
JavaScript/ECMAScript
|
Dynamic HTML DHTML
|
CSS Cascading Style Sheets
|
Document Object Model DOM
|
Current DOM: JavaScript plus DHTML
|
W3C DOM
|
Jini and Service Architecture
|
XML as Web Template Language
|
CORBA and HPCC Examples
|
CORBA and Security
|
JWORB Pragmatic Object Web
|
Gateway and XML
|
Tango Architecture
|
Collaborative or Shared Objects
|
Universal Access
|
Web-linked Databases
|
Lotus Notes
|
Shared Web Pages are Everything
|
JavaScript Shared Browser
|
|
HTML defines the display or rendering of documents
|
HTML 3.2 (Jan 97) introduced tables, applets, and other capabilities (approx. 70 tags)
|
The final spec for HTML 4.0 was released by W3C in December 1997
|
There are three flavors:
-
HTML 4.0 Strict -- Full use of Style Sheets
-
HTML 4.0 Transitional -- Adapt existing world
-
HTML 4.0 Frameset -- If need multiframe window
|
HTML 4.0 has 93 elements (10 deprecated) and 187 attributes (49 deprecated)
|
HTML represents an object model for document display
|
HTML does NOT define an object model for document content -- XML does this
|
XML = eXtensible Markup Language
|
XML is a subset of SGML -- Standard Generalized Markup Language, but unlike the latter, XML is specifically designed for the web
|
XML is used to define logical document structure
|
XML is not backward compatible with HTML, but the two coexist quite elegantly
|
XML can be thought of as an ASCII version of a database
|
XML can be used as an object IDL to access databases or any objects and so give web HTML templates to access web-linked databases / backend services
|
XML can be used as inter object data (serialization) format for any object model
|
XHTML is HTML4 written in XML syntax
|
Web Page objects
|
General Objects
|
Pragmatic Object Web
|
Multi Tier Object/Service Arch.
|
HTML
|
XML and XHTML
|
XML as a Database Serialization
|
JavaScript/ECMAScript
|
Dynamic HTML DHTML
|
CSS Cascading Style Sheets
|
Document Object Model DOM
|
Current DOM: JavaScript plus DHTML
|
W3C DOM
|
Jini and Service Architecture
|
XML as Web Template Language
|
CORBA and HPCC Examples
|
CORBA and Security
|
JWORB Pragmatic Object Web
|
Gateway and XML
|
Tango Architecture
|
Collaborative or Shared Objects
|
Universal Access
|
Web-linked Databases
|
Lotus Notes
|
Shared Web Pages are Everything
|
JavaScript Shared Browser
|
|
JavaScript (originally called LiveScript) is a web scripting language for clients and servers
|
Originally JavaScript was designed to do what you think Java should do -- elegant dynamic animation on the client side
|
Then along came Java and JavaScript was eclipsed as it was just Netscape and not so well designed
|
Netscape tried to make it a server side language (LiveWire) instead of Perl but Java was much better here as well
|
JavaScript lived on for simple arithmetic on client side to produce somewhat better frames (as clicking on a link can call a JavaScript function instead of just loading a URL) and to quickly check forms client side without going back to server which is slow
|
A serious weakness was that dynamic aspects of JavaScript could only be used at "load" time and other changes of JavaScript required a "reload" which is real ugly and slow
|
Then along came Microsoft and Netscape became distracted and quality of Java on the client side suffered and in fact is still problematical as Java in the browser has poor performance and lags Sun's version
|
Further the Web Consortium W3C never really liked Java butting in and thought HTML was the answer
|
JavaScript is Java with HTML and browser as AWT
|
W3C came along with XML and the DOM (Document Object Model)
|
In particular dynamic HTML extensions allowed one to get many benefits of JavaScript dynamically without reloading ....
|
Now all this was screwed up in version 4 browsers -- especially by Netscape -- and so the vision was obscured!
|
At least Microsoft's version 5 browser implements vision well
|
Typically, up to 106 C instructions may be executed in a few milliseconds (the time it takes a person to notice anything!) as one instruction in 1 clock cycle (say 108/sec)
|
A Java interpreter is roughly 50 times slower than C
|
Java "Just-In-Time" compiler is roughly 2–8 times slower than C whereas a native Java Compiler (and perhaps future JIT's) are about same speed as C
|
Perl is 500 times slower than C (an interpreter but analyses whole code before interpreting)
-
Runtime (e.g. I/O) can be as fast as C as it is C!
|
Tcl, JavaScript (true interpreters) are up to 5000 times slower than C
-
BUT If Java Script in browser invokes optimized C++ internal function, it can easily outperform Java
-
Just as Java itself can of course invoke through JNI C++ code.
-
Need C++ library to be built in as do not want to download
|
Web Page objects
|
General Objects
|
Pragmatic Object Web
|
Multi Tier Object/Service Arch.
|
HTML
|
XML and XHTML
|
XML as a Database Serialization
|
JavaScript/ECMAScript
|
Dynamic HTML DHTML
|
CSS Cascading Style Sheets
|
Document Object Model DOM
|
Current DOM: JavaScript plus DHTML
|
W3C DOM
|
Jini and Service Architecture
|
XML as Web Template Language
|
CORBA and HPCC Examples
|
CORBA and Security
|
JWORB Pragmatic Object Web
|
Gateway and XML
|
Tango Architecture
|
Collaborative or Shared Objects
|
Universal Access
|
Web-linked Databases
|
Lotus Notes
|
Shared Web Pages are Everything
|
JavaScript Shared Browser
|
|
CSS1 allows one to specify layout styles (size, color, position) and associate in flexible way with tags
|
Flexible placement of style information -- either in sheets (i.e. separate pages), attributes (style="..") or style statements in header of HTML page
|
Independence from specific scripting languages but natural link to JavaScript and works with XML and HTML
|
Cascading style sheets i.e. one can have a hierarchy of style definitions from general to organization specific to user specific
|
Example: A simple style sheet (in file "myStyle.css"): P.special { color: red; border: solid black; }
|
Now put a <LINK> tag in the <HEAD> to be able to access information: <LINK href="myStyle.css" rel="stylesheet" type="text/css">
|
In the <BODY> tag, type: <P class="special">A special paragraph!
|
Web Page objects
|
General Objects
|
Pragmatic Object Web
|
Multi Tier Object/Service Arch.
|
HTML
|
XML and XHTML
|
XML as a Database Serialization
|
JavaScript/ECMAScript
|
Dynamic HTML DHTML
|
CSS Cascading Style Sheets
|
Document Object Model DOM
|
Current DOM: JavaScript plus DHTML
|
W3C DOM
|
Jini and Service Architecture
|
XML as Web Template Language
|
CORBA and HPCC Examples
|
CORBA and Security
|
JWORB Pragmatic Object Web
|
Gateway and XML
|
Tango Architecture
|
Collaborative or Shared Objects
|
Universal Access
|
Web-linked Databases
|
Lotus Notes
|
Shared Web Pages are Everything
|
JavaScript Shared Browser
|
|
function WW_getlayer(idstring) { // Find layer with given label
|
if( WW_Netscape4 ) {
|
return eval("document." + idstring); }
|
else { // Microsoft
|
return eval("document.all." + idstring); }
|
} // End WW_getlayer()
|
function WW_layershiftto(obj,x,y) { // Move layer to given position
|
if(WW_Netscape4 ) {
|
obj.moveTo(x,y); }
|
else { // Microsoft
|
obj.style.pixelLeft = x;
|
obj.style.pixelTop = y; }
|
} // End WW_layershiftto(obj,x,y)
|
WW_messageobject = WW_getlayer('WWmessage1');
|
WW_layershiftto(WW_messageobject,parseInt(x),parseInt(y));
|
id attribute in <div> #WWmessage1 in STYLE
|
Returned by WW_getlayer
|
Read in from form as text
|
Decide on Browser
|
function WW_pageisloaded() { // Initialize when page loaded
|
if(WW_oldbrowser)
|
return;
|
if( WW_Netscape4 ) { // Netscape
|
window.captureEvents(Event.CLICK);
|
window.onclick=WW_processclick; }
|
else { // Microsoft
|
document.onclick=WW_processclick; }
|
WW_pointerlayer = WW_getlayer('WWpointerblock'); // Pointer
|
WW_pointerlayer.onmouseover = WW_overpointerblock; // Mouse Over
|
WW_pointerlayer.onmouseout = WW_offpointerblock; // Mouse Out
|
WW_pointermessageobject = WW_getlayer('WWpointermessage');
|
if(!WW_Netscape4 ) { // Microsoft set layer width
|
WW_pointermessageobject.style.width =200;
|
WW_pointerlayer.style.width=64; }
|
return;
|
} // End WW_pageisloaded()
|
Capture ALL Click events and set handler
|
Set event handlers for mouse events recognized
|
in conventional way
|
function WW_processclick(e) { // Process Mouse Click
|
var clickX = WW_eventx(e); // Extract Mouse Click Position
|
var clickY = WW_eventy(e);
|
// Position Top right of pointer at mouse click
|
var width = WW_getlayerwidth(WW_pointerlayer);
|
WW_layershiftto(WW_pointerlayer,clickX-width,clickY);
|
WW_layershow(WW_pointerlayer); // Make pointer visible
|
WW_layertotop(WW_pointerlayer); // set zindex=1000
|
WW_offpointerblock(); // remove stray mouseover messages
|
window.status = 'click'; // flag action
|
// true implies that you continue conventional processing i.e.
|
return true; // that clicks on links are recognized
|
} // End WW_processclick(e)
|
Web Page objects
|
General Objects
|
Pragmatic Object Web
|
Multi Tier Object/Service Arch.
|
HTML
|
XML and XHTML
|
XML as a Database Serialization
|
JavaScript/ECMAScript
|
Dynamic HTML DHTML
|
CSS Cascading Style Sheets
|
Document Object Model DOM
|
Current DOM: JavaScript plus DHTML
|
W3C DOM
|
Jini and Service Architecture
|
XML as Web Template Language
|
CORBA and HPCC Examples
|
CORBA and Security
|
JWORB Pragmatic Object Web
|
Gateway and XML
|
Tango Architecture
|
Collaborative or Shared Objects
|
Universal Access
|
Web-linked Databases
|
Lotus Notes
|
Shared Web Pages are Everything
|
JavaScript Shared Browser
|
|
Web Page objects
|
General Objects
|
Pragmatic Object Web
|
Multi Tier Object/Service Arch.
|
HTML
|
XML and XHTML
|
XML as a Database Serialization
|
JavaScript/ECMAScript
|
Dynamic HTML DHTML
|
CSS Cascading Style Sheets
|
Document Object Model DOM
|
Current DOM: JavaScript plus DHTML
|
W3C DOM
|
Jini and Service Architecture
|
XML as Web Template Language
|
CORBA and HPCC Examples
|
CORBA and Security
|
JWORB Pragmatic Object Web
|
Gateway and XML
|
Tango Architecture
|
Collaborative or Shared Objects
|
Universal Access
|
Web-linked Databases
|
Lotus Notes
|
Shared Web Pages are Everything
|
JavaScript Shared Browser
|
|
<!-- WW_CONNECT is a tag that establishes a connection to the database. Connection string may be supplied in the CONNECTION attribute, or if it is omitted (empty string) the default connection string is taken from properties.txt file for current template.-->
|
<WW_CONNECT CONNECTION=""/>
|
<html> <head> <title> Separate IMAGE for LOCAL foil
|
<!-- WW_FOILNUMBER tag takes the position of the current foil in the current presentation. -->
|
<WW_FOILNUMBER PARENTID="${PID}" FOILID="${FID}"/>
|
<!-- WW_TITLE is a tag that allows to insert title of a presentation or foil. The presentation/foil is identified by an ID supplied in FOILID attribute. PARENTID is not currently used by the WW_TITLE tag, but can be later used, e.g. to check the formatting properties, which can be defined on the presentation level. FID and PID were supplied by the servlet from query attributes of the URL -->
|
Yellow is ordinary HTML, Green XML, White Comments
|
Web Page objects
|
General Objects
|
Pragmatic Object Web
|
Multi Tier Object/Service Arch.
|
HTML
|
XML and XHTML
|
XML as a Database Serialization
|
JavaScript/ECMAScript
|
Dynamic HTML DHTML
|
CSS Cascading Style Sheets
|
Document Object Model DOM
|
Current DOM: JavaScript plus DHTML
|
W3C DOM
|
Jini and Service Architecture
|
XML as Web Template Language
|
CORBA and HPCC Examples
|
CORBA and Security
|
JWORB Pragmatic Object Web
|
Gateway and XML
|
Tango Architecture
|
Collaborative or Shared Objects
|
Universal Access
|
Web-linked Databases
|
Lotus Notes
|
Shared Web Pages are Everything
|
JavaScript Shared Browser
|
|
Web Page objects
|
General Objects
|
Pragmatic Object Web
|
Multi Tier Object/Service Arch.
|
HTML
|
XML and XHTML
|
XML as a Database Serialization
|
JavaScript/ECMAScript
|
Dynamic HTML DHTML
|
CSS Cascading Style Sheets
|
Document Object Model DOM
|
Current DOM: JavaScript plus DHTML
|
W3C DOM
|
Jini and Service Architecture
|
XML as Web Template Language
|
CORBA and HPCC Examples
|
CORBA and Security
|
JWORB Pragmatic Object Web
|
Gateway and XML
|
Tango Architecture
|
Collaborative or Shared Objects
|
Universal Access
|
Web-linked Databases
|
Lotus Notes
|
Shared Web Pages are Everything
|
JavaScript Shared Browser
|
|
This implies choosing a rendering method that best suits client user and respects
-
Any hardware constraints -- network bandwidth or screen resolution or client performance
-
Any sensory or physical limitations of user
|
e.g. Visually impaired would prefer audio rich rendering
|
e.g. Muscularly limited users would need appropriate interfaces
|
New Cascading Style Sheets can express this but need intelligent renderer to make correct decision and allow user to adjust choices
|
Further one needs decision at the stage of XML input and not after it has already been rendered into HTML
-
HTML expresses "meaning of document" by positioning and other means which are in general impossible to recognize and render in a cross disability fashion
|
Assume goal is equal and high quality rendering -- do not downgrade material to support cross disability rendering
|