ob: ANNOUNCE: CorbaScript 1.0 (fwd)




You prolly already know this, but if you don't.....

This would be an ideal way to control the application logic and for rapid
prototyping.


Benjamin Saller Bender 			<case@AppliedTheory.com>
AppliedTheory Communications		Software Engineering Group

---------- Forwarded message ----------
Date: Fri, 13 Mar 1998 18:34:52 +0100
From: Philippe.Merle@lifl.fr
To: ob@ooc.com
Subject: ob: ANNOUNCE: CorbaScript 1.0

-------------------------
ANNOUNCE: CorbaScript 1.0
-------------------------

CorbaScript is an interpreted object-oriented scripting language dedicated
to CORBA environments. Scripts (i.e. CorbaScript programs) can invoke any
operation, get and set any attribute of any Corba object. Moreover, any
OMG-IDL interface can be implemented by scripts. CorbaScript provides a
dynamic binding to OMG-IDL descriptions: no OMG-IDL stub or skeleton need
to be generated. OMG-IDL descriptions are extracted from the Interface
Repository and are made directly available to scripts. Invocations of
CORBA objects are achieved by the CORBA DII mechanism. The CORBA DSI is 
used to implement CORBA objects with CorbaScript. Moreover scripts can 
invoke any world-wide CORBA object through IIOP.

CorbaScript fully hides these complex CORBA mechanisms via a simple,
attractive and powerful scripting language.


-----------------------
Downloading CorbaScript
-----------------------

CorbaScript is an academic project available in full source form, free of 
charge for non-commercial use. Try it and give us feedback to improve it.

Go to the http://corbaweb.lifl.fr/CorbaScript/ page
to download CorbaScript 1.0 now!


------------
Availability
------------

The CorbaScript interpreter is written in C++ and is available on most common 
Unix-based operating systems. Moreover, it is built to be easily ported on any
ORB environment, operating system and C++ compiler. Currently, it has been
tested on the following configurations:

OmniBroker:	http://www.ooc.com/ob.html
MICO:		http://diamant-atm.vsb.cs.uni-frankfurt.de/~mico/

  ORB		  OS		  C++ Compiler			  NAME
------------------------------------------------------------------------------
OmniBroker 2.0.3  AIX 4.2	AIX C Set ++ (xlC 3.1.4.6)	OB_AIX_xlC

OmniBroker 2.0.3  HP-UX		aC++ A.01.00 and A.01.03	OB_HP_aCC

OmniBroker 2.0.3  Linux		GNU C++ Compiler 2.7.2		OB_LINUX_GCC

OmniBroker 2.0.3  Solaris	GNU C++ Compiler 2.7.2		OB_SUN_GCC

OmniBroker 2.0.3  Solaris	SUN C++ Compiler 4.1 & 4.2	OB_SUN_CC

OmniBroker 2.0.3  SGI	 	SGI C++ Compiler 7.0.1 and 7.1	OB_SGI_CC

MICO 2.0.4	  AIX	  	GNU C++ Compiler 2.7.2		MICO_AIX_GCC

MICO 2.0.4	  Linux	  	GNU C++ Compiler 2.7.2		MICO_LINUX_GCC

MICO 2.0.4	  Solaris  	GNU C++ Compiler 2.7.2		MICO_SUN_GCC
------------------------------------------------------------------------------

The following ports can be compiled but don't work correctly
(perhaps due to the broken exception handling in GNU C++ 2.7.2).

  ORB		  OS		  C++ Compiler			  NAME
------------------------------------------------------------------------------
OmniBroker 2.0.3  HP-UX		GNU C++ Compiler 2.7.2		OB_HP_GCC

OmniBroker 2.0.3  SGI	 	GNU C++ Compiler 2.7.2		OB_SGI_GCC

MICO 2.0.4	  SGI	  	GNU C++ Compiler 2.7.2		MICO_SGI_GCC
------------------------------------------------------------------------------

Unfortunatly, we didn't completly test CorbaScript with the GNU GCC 2.8.0 and egcs 
1.0.1 C++ compilers. We think that there are no major problems on these compilers.
However some external tests have be done on:

  ORB		  OS		  C++ Compiler			  NAME
------------------------------------------------------------------------------
MICO 2.0.4	  AIX		  egcs 1.0.1			MICO_GENERIC

MICO 2.0.4	  HP-UX		  egcs 1.0.1			MICO_GENERIC

MICO 2.0.4	  Solaris	  egcs 1.0.1			MICO_GENERIC
------------------------------------------------------------------------------

If you try to compile CorbaScript on these compilers, please report any problem
and/or success to us. 

This release contains an experimental CorbaScript port for OmniBroker on Windows 95/NT 
with Visual C++ 5.0. Demonstrations can only run with a GNU bash shell.
Please report us any configuration, compilation and execution problem.

In future releases, we plan to port CorbaScript on:

  * Other OmniBroker and MICO supported environments,

  * Windows 95/NT,

  * VisiBroker 3.x for C++, and

  * omniORB2 2.5.0.

Please contact us for other ports on another ORB, another OS or another C++
compiler. Note that there is no plan to support the Orbix ORB is not planned
to be supported because currently, it provides neither a CORBA 2.0 compliant 
Interface Repository and nor the DynAny API. However, Orbix servers can be 
invoked by a CorbaScript interpreter if they were compiled to support the
Internet Inter-Orb Protocol.


-----------------
The Hello Example
-----------------

Imagine the following well-known OMG-IDL interface:

  interface Hello {
    void hello ();
    void display (in string message);
  };

With CorbaScript, we can interactively invoke a CORBA object that implements
this OMG-IDL interface:

  unix_prompt> cssh
  CorbaScript 1.0 (Feb 14 1998) for OmniBroker
  Copyright 1996-98 LIFL, France
  >>> # the `hello' variable refers to a CORBA `Hello' object.
  >>> hello = Hello("IOR:....")
  >>> # the 'hello' operation is invoked on this CORBA object.
  >>> hello.hello()
  >>> # the 'display' operation is invoked on this CORBA object.
  >>> hello.display("Hello World!")

  >>> # we obtain the CORBA Naming Service.
  >>> NS = CORBA.ORB.resolve_initial_references ("NameService")
  >>> # we resolve a name into the CORBA Naming Service.
  >>> object = NS.resolve(CosNaming.Name(CosNaming.NameComponent("anHelloObject","")))
  >>> # we can use an easier syntax because CorbaScript can automatically
  >>> # convert array values into OMG-IDL sequences and structures.
  >>> object = NS.resolve ([["anHelloObject",""]])

  >>> # Now we can invoke OMG-IDL Hello operations on this object.
  >>> object.display("Hello World!")

Then invoking CORBA objects becomes very simple and user-friendly with CorbaScript.
But, how could we implement the `Hello' interface with CorbaScript?

  unix_prompt> cssh
  CorbaScript 1.0 (Feb 14 1998) for OmniBroker
  Copyright 1996-98 LIFL, France
  >>> # we define a script class.
  >>> class HelloImpl
      {
        # This is the constructor.
        proc __HelloImpl__(self)
        {
        }
        # This is the implementation of the OMG-IDL `hello' operation.
        proc hello (self)
        {
          println ("The OMG-IDL `hello' operation is invoked.")
        }
         # This is the implementation of the OMG-IDL `display' operation.
        proc display (self,message)
        {
          println (message)
        }
      }
  >>> # we create an HelloImpl instance.
  >>> hello = HelloImpl()
  >>> # We can locally invoke this instance.
  >>> hello.hello()
  The OMG-IDL `hello' operation is invoked.
  >>> hello.display("Hello World!")
  Hello World!

  >>> # Now we connect it to the CORBA bus and fix what
  >>> # OMG-IDL interface this instance implements.
  >>> CORBA.ORB.connect(hello,Hello)
  >>> # we register it into the CORBA Naming Service.
  >>> NS = CORBA.ORB.resolve_initial_references ("NameService")
  >>> NS.bind ([["anHelloObject",""]],hello._this)

  >>> # Now, this instance is an available CORBA object.

What do you think about this small example?
Could you invoke and implement CORBA objects more easily than with CorbaScript?
More complex examples are provided in the CorbaScript distribution like
a CORBA Naming Service shell and a CORBA CosNaming implementation.


--------------------
CorbaScript Features
--------------------

The syntax of this new language looks like the C++ and Java languages but
type checking is done at runtime. It reuses some interesting features of
the Python and SmallTalk languages: everything is an object, source code
is translated into a pseudo code executed by a Virtual Object Oriented
Machine that includes a simple garbage collector.
Current CorbaScript features are:


  ------------------------
  Basic Scripting Features
  ------------------------

  * interpreted language.
  * interactive or batch shell.
  * dynamic type checking at runtime.

  * basic value types: long, double, boolean, char, string, array.
  * variables and scopes.
  * control flow management: if-else, while, do-while, for-in.
  * exception management: throw, try-catch-finally.
  * procedures.
  * modules: reusable scripts.
  * classes: polymorphism, multiple inheritance.

  * simple garbage collecting based on reference counting.

  ------------------------
  CORBA Scripting Features
  ------------------------

  * invocation of any Corba object through the CORBA DII (the Dynamic
    Invocation Interface) to implement Corba client programs or tools.

  * implementation of any Corba object through the CORBA DSI (the Dynamic
    Skeleton Interface) to implement Corba server programs.

  * access to any IDL description, calls with any OMG-IDL argument types
    like basic types and also complex types (struct,union,array,sequence),
    in, out and inout modes supported. Complex OMG-IDL types are managed by
    the CORBA DynAny API.

  * type checking done thanks to the CORBA IR (the Interface Repository).

  * an IR cache to improve the performance of type checking.

  * OMG-IDL information displaying to, for instance, view functionalities
    provided by an OMG-IDL interface.

  ---------------------------
  Advanced Scripting Features
  ---------------------------

  * an extensible runtime: add your own code or new objects in C++.

  * access to any dynamic C library (under work).

  * access to a Java virtual machine (under work).


---------------------------
Changes since first release
---------------------------

- A Naming Service shell, see demo/naming/nssh.cs.

- CorbaScript is now ported on new OmniBroker supported architectures:

    * on AIX 4.2 with AIX C Set ++ (xlC 3.1.4.6) compiler
    * on Solaris with SUN C++ Compiler 4.1 and 4.2
    * on SGI with SGI C++ Compiler 7.0.1 and 7.1
    * on HP-UX with aC++ A.01.00 and A.01.03

- CorbaScript is now ported on the MICO ORB:

    * on AIX with GNU 2.7.2 C++ Compiler
    * on Linux with GNU 2.7.2 C++ Compiler
    * on Solaris with GNU 2.7.2 C++ Compiler

- Some syntactical changes:

    * the 'print' instruction is now a function.
      i.e. print "hello world!" - becomes -> print ("hello world!")
      There is also a `println' function.

    * CSOA scope does not exist any more:
        CSOA.create	- becomes -> CORBA.ORB.connect
        CSOA.dispose	- becomes -> CORBA.ORB.disconnect
        CSOA.run	- becomes -> CORBA.ORB.run
        CSOA.stop	- becomes -> CORBA.ORB.shutdown

- A first documentation is in 'doc/omg-rfp.ps'. This document is our
  reply to the current OMG CORBA Scripting Language RFP.
  Warning, this documentation doesn't into take account the previous
  mentionned syntactical changes and it is not fully correct regarding
  the current CorbaScript implementation.
  A new document is under work :-)

- The dynamic C library management changed completly. See the
  modules/posix.cs, modules/math.cs and demo/Clibrary for examples.
  Currently, it just works fine on Solaris and Linux OS.

- Reorganisation of Make, source and include files.

- Many bug fixes.


------------
Getting Help
------------

You should not have any problems compiling the source, but do not 
hesitate to send requests for assistance.
Just send an e-mail to "mailto:goode-support@lifl.fr".
And we will add new needed users features.

There is also a CorbaScript mailing list. To subscribe, just send an
e-mail to "listserv@univ-lille1.fr" with the command:

SUB goode Your_Name

in the body of your e-mail message. To post a message to the mailing
list, send your message as an e-mail to `goode@univ-lille1.fr'.

You can find the latest information on CorbaScript on our Web-Site
"http://corbaweb.lifl.fr".

Have fun with CorbaScript. 

Regards,
Philippe Merle
--
________________________________________________________________________________
Philippe Merle
Universite des Sciences et Technologies de Lille
URA 369 CNRS
Laboratoire d'Informatique Fondamentale de Lille  Tel:    (33) 03 20 43 47 21
U.F.R. I.E.E.A. batiment M3                       Fax:    (33) 03 20 43 65 66
59655 Villeneuve d'Ascq CEDEX France              E-Mail: merle@lifl.fr
						  Web: http://www.lifl.fr/~merle
________________________________________________________________________________



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]